From: Till Paala Date: Wed, 2 Sep 2009 07:19:40 +0000 (+0300) Subject: Merge branch 'lilypond/translation' of ssh://git.sv.gnu.org/srv/git/lilypond into... X-Git-Tag: release/2.13.4-1~51^2~1 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=cb01be4028886109ecc4772234452965ce7dfb66;hp=84bfb1842102e006af0722d76d14f1fb68c259fd;p=lilypond.git Merge branch 'lilypond/translation' of ssh://git.sv.gnu.org/srv/git/lilypond into lilypond/translation --- diff --git a/COPYING b/COPYING index 32f7714f79..3ad000743c 100644 --- a/COPYING +++ b/COPYING @@ -75,7 +75,7 @@ patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. - + GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION @@ -130,7 +130,7 @@ above, provided that you also meet all of these conditions: License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) - + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in @@ -188,7 +188,7 @@ access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. - + 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is @@ -245,7 +245,7 @@ impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - + 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License @@ -298,7 +298,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS - + Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest diff --git a/Documentation/GNUmakefile b/Documentation/GNUmakefile index 0384e4c64a..f62631f4d5 100644 --- a/Documentation/GNUmakefile +++ b/Documentation/GNUmakefile @@ -90,11 +90,6 @@ include $(depth)/make/stepmake.make OUT_TXT_FILES = $(addprefix $(outdir)/, $(addsuffix .txt, $(README_TOP_FILES))) ### Web site idiosyncrases -## No big page -OUT_HTML_FILES := $(subst $(outdir)/general-big-page.html,,$(OUT_HTML_FILES)) - -$(outdir)/essay/index.html: TEXI2HTML_INIT = $(WEB_TEXI2HTML_INIT) -D=shallow_toc -$(outdir)/essay/index.html: TEXI2HTML_SPLIT = $(WEB_TEXI2HTML_SPLIT) $(outdir)/general/index.html: TEXI2HTML_INIT = $(WEB_TEXI2HTML_INIT) $(outdir)/general/index.html: TEXI2HTML_SPLIT = $(WEB_TEXI2HTML_SPLIT) diff --git a/Documentation/application.tely b/Documentation/application.tely index 2aaddcbb25..f8c8d8ef1e 100644 --- a/Documentation/application.tely +++ b/Documentation/application.tely @@ -11,10 +11,12 @@ @documentlanguage en @include macros.itexi +@c This produces the unified index +@syncodeindex fn cp +@syncodeindex vr cp @afourpaper - @c don't remove this comment. @ignore @omfcreator Han-Wen Nienhuys, Jan Nieuwenhuizen and Graham Percival @@ -25,98 +27,64 @@ @end ignore -@ifnottex -@node Top -@top GNU LilyPond --- Application Usage -@c HJJ: Info needs `@top', which is a synonym for `@unnumbered' in TeX. -@end ifnottex +@copying +Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, +2006, 2007, 2008, 2009 by the authors. +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 +or any later version published by the Free Software Foundation; +with no Invariant Sections. +A copy of the license is included in the section entitled ``GNU +Free Documentation License''. +@end quotation +@end copying -@ifhtml -@ifclear bigpage -This document is also available as a -@uref{source/Documentation/application.pdf,PDF} and as -@uref{source/Documentation/application-big-page.html,one big page}. -@end ifclear -@ifset bigpage -This document is also available as a -@uref{source/Documentation/application.pdf,PDF} and as -@uref{source/Documentation/application/index.html,HTML indexed multiple pages}. -@end ifset -@end ifhtml +@macro introText +@cartouche +This file explains how to execute the programs distributed with +GNU LilyPond version @version{}. In addition, it suggests some +@qq{best practices} for efficient usage. +For more information about how this fits with the other +documentation, or to read this manual in other formats, see +@rgeneral{Manuals}. +@end cartouche +@end macro -@c This produces the unified index -@syncodeindex fn cp -@syncodeindex vr cp +@c TITLE PAGE +@ifnottex +@node Top +@top GNU LilyPond --- Learning Manual +@end ifnottex @finalout @titlepage @title LilyPond @subtitle The music typesetter -@titlefont{Program usage} +@titlefont{Learning Manual} @author The LilyPond development team +@vskip 100pt -Copyright @copyright{} 1999--2009 by the authors +@introText{} -@quotation -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 -or any later version published by the Free Software Foundation; -with no Invariant Sections. -A copy of the license is included in the section entitled ``GNU -Free Documentation License''. -@end quotation +@vskip 0pt plus 1filll +@c @vskip 20pt -@vskip 20pt +@insertcopying{} For LilyPond version @version{} @end titlepage -@copying -Copyright @copyright{} 1999--2009 by the authors -@quotation -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 -or any later version published by the Free Software Foundation; -with no Invariant Sections. -A copy of the license is included in the section entitled ``GNU -Free Documentation License''. -@end quotation -@end copying +@c TOC -- non-tex @ifnottex -This file documents GNU LilyPond program usage. - -Copyright 1999--2009 by the authors - -@quotation -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 -or any later version published by the Free Software Foundation; -with no Invariant Sections. -A copy of the license is included in the section entitled ``GNU -Free Documentation License''. -@end quotation -@end ifnottex - -@ifnottex -This is the Application Usage (AU) manual for GNU LilyPond version @version{}. -For more information about how this fits with the other -documentation, see -FIXME FIXME FIXME -@c @rlearning{About the documentation}. - -@cindex web site -@cindex URL - -More information can be found at -@uref{http://@/www@/.lilypond@/.org/}. The website contains on-line copies -of this and other documentation. +@introText{} @c * Install:: How to install or compile. @c * Setup:: Using LilyPond with other programs. diff --git a/Documentation/application/running.itely b/Documentation/application/running.itely index 23ab331f3f..966e226b62 100644 --- a/Documentation/application/running.itely +++ b/Documentation/application/running.itely @@ -25,10 +25,8 @@ This chapter details the technicalities of running LilyPond. @node Normal usage @section Normal usage -Most users run LilyPond through a GUI; see -FIXME FIXME FIXME -@c @rlearning{First steps} if -you have not read this already. +Most users run LilyPond through a GUI; see @rlearning{First steps} +if you have not read this already. @node Command-line usage @@ -41,10 +39,9 @@ as @code{midi2ly}) which are only available on the command-line. By @q{command-line}, we mean the command line in the operating system. Windows users might be more familiar with the terms @q{DOS shell} or -@q{command shell}; MacOS@tie{}X users might be more familiar with the terms -@q{terminal} or @q{console}. They should also consult -FIXME -@c @ref{Setup for MacOS X}. +@q{command shell}. MacOS@tie{}X users might be more familiar with the terms +@q{terminal} or @q{console}. Some additional setup is required +for MacOS@tie{}X users; please see @rgeneral{MacOS X}. Describing how to use this part of an operating system is outside the scope of this manual; please consult other documentation on this topic @@ -57,9 +54,10 @@ if you are unfamiliar with the command-line. @end menu @node Invoking lilypond -@subsection Invoking @command{lilypond} +@unnumberedsubsec Invoking @command{lilypond} -The @command{lilypond} executable may be called as follows from the command line. +The @command{lilypond} executable may be called as follows from +the command line. @example lilypond [@var{option}]@dots{} @var{file}@dots{} @@ -76,7 +74,7 @@ they will each be processed independently. @footnote{The status of GUILE is not reset after processing a @code{.ly} file, so be careful not to change any system defaults from within Scheme.} -If @file{filename.ly} contains more than one @code{\score} +If @file{filename.ly} contains more than one @code{\book} block, then the rest of the scores will be output in numbered files, starting with @file{filename-1.pdf}. In addition, the value of @code{output-suffix} will be inserted between the basename and the @@ -95,7 +93,7 @@ will output @var{base}@file{-violin.pdf} and @node Command line options for lilypond -@subsection Command line options for @command{lilypond} +@unnumberedsubsec Command line options for @command{lilypond} @cindex Invoking @command{lilypond} @cindex command line options for @command{lilypond} @@ -387,7 +385,7 @@ Show the warranty with which GNU LilyPond comes. (It comes with @end table @node Environment variables -@subsection Environment variables +@unnumberedsubsec Environment variables @cindex LANG @@ -428,12 +426,12 @@ However, warnings usually indicate that something is wrong with the input file. @item Error +@cindex error Something is definitely wrong. The current processing step (parsing, interpreting, or formatting) will be finished, but the next step will be skipped. @item Fatal error -@cindex error @cindex fatal error Something is definitely wrong, and LilyPond cannot continue. This happens rarely. The most usual cause is misinstalled fonts. @@ -455,6 +453,7 @@ ignored. Sometimes, they come in such big quantities that they obscure other output. @item Aborted (core dumped) +@cindex Aborted (core dumped) This signals a serious programming error that caused the program to crash. Such errors are considered critical. If you stumble on one, send a bug-report. @@ -485,5 +484,6 @@ when something unexpected happens. If you can't see an error in the indicated line of your input file, try checking one or two lines above the indicated position. +More information about errors is given in @ref{Common errors}. diff --git a/Documentation/application/updating.itely b/Documentation/application/updating.itely index 7403c56751..71bb0edfcb 100644 --- a/Documentation/application/updating.itely +++ b/Documentation/application/updating.itely @@ -23,11 +23,47 @@ the program @command{convert-ly} can be used to deal with most of the syntax changes between LilyPond versions. @menu +* Why does the syntax change?:: * Invoking convert-ly:: * Command line options for convert-ly:: -* Problems with convert-ly:: +* Problems running convert-ly:: +* Manual conversions:: @end menu + +@node Why does the syntax change? +@section Why does the syntax change? + +@cindex convert-ly +@cindex updating old input files + +The LilyPond input syntax occasionally changes. As LilyPond +itself improves, the syntax (input language) is modified +accordingly. Sometimes these changes are made to make the input +easier to read and write or sometimes the changes are made to +accommodate new features of LilyPond. + +For example, all @code{\paper} and @code{\layout} property names +are supposed to be written in the form @code{first-second-third}. +However, in version 2.11.60, we noticed that the +@code{printallheaders} property did not follow this convention. +Should we leave it alone (confusing new users who must deal with +an inconsistent input format), or change it (annoying old users +with existing scores)? In this case, we decided to change the +name to @code{print-all-headers}. Fortunately, this change can be +automated with our @command{convert-ly} tool. + +Unfortunately, @code{convert-ly} cannot handle all input changes. +For example, in LilyPond 2.4 and earlier, accents and non-English +letters were entered using LaTeX -- displaying the French word for +Christmas was entered as @code{No\"el}. But in LilyPond +@c keep "-matching straight in fancy editors +2.6 and above, the special @code{ë} must be entered directly into +the LilyPond file as an UTF-8 character. @code{convert-ly} cannot +change all the LaTeX special characters into UTF-8 characters; you +must manually update your old LilyPond input files. + + @node Invoking convert-ly @section Invoking @command{convert-ly} @@ -44,6 +80,11 @@ in the directory containing the file. This will upgrade @code{myfile.ly} in-place and preserve the original file in @code{myfile.ly~}. +@warning{@command{convert-ly} always converts up to the last +syntax change handled by it. This means that the @code{\version} +number left in the file is usually lower than the version of +@command{convert-ly} itself.} + To convert all the input files in a directory together use @example @@ -58,27 +99,22 @@ use convert-ly myfile.ly > mynewfile.ly @end example -@command{convert-ly} always converts up to the last syntax change -handled by it. This means that the @code{\version} number left in -the file is usually lower than the version of @command{convert-ly} -itself. - The program will list the version numbers for which conversions have been made. If no version numbers are listed the file is already up to date. -@noindent MacOS@tie{}X users may execute these commands under the menu entry @code{Compile > Update syntax}. -Windows users should enter these commands in a Command Prompt window, -which is usually found under +Windows users should enter these commands in a Command Prompt +window, which is usually found under @code{Start > Accessories > Command Prompt}. + @node Command line options for convert-ly @section Command line options for @command{convert-ly} -In general, the program is invoked as follows: +The program is invoked as follows: @example convert-ly [@var{option}]@dots{} @var{filename}@dots{} @@ -125,8 +161,8 @@ convert-ly --from=... --to=... -s @end example -@node Problems with convert-ly -@section Problems with @code{convert-ly} +@node Problems running convert-ly +@section Problems running @code{convert-ly} When running convert-ly in a Command Prompt window under Windows on a file which has spaces in the filename or in the path to it, @@ -157,14 +193,25 @@ specified. Automatically updating scheme and LilyPond scheme interfaces is quite unlikely; be prepared to tweak scheme code manually. -@verbatim -There are a few things that the convert-ly cannot handle. Here's a list -of limitations that the community has complained about. -This bug report structure has been chosen because convert-ly has a -structure that doesn't allow to smoothly implement all needed changes. -Thus this is just a wishlist, placed here for reference. +@node Manual conversions +@section Manual conversions + +In theory, a program like @command{convert-ly} could handle any +syntax change. After all, a computer program interprets the old +version and the new version, so another computer program can +translate one file into another@footnote{At least, this is +possible in any LilyPond file which does not contain scheme. If +there is scheme in the file, then the LilyPond file contains a +Turing-complete language, and we run into problems with the famous +@qq{Halting Problem} in computer science.}. +However, the LilyPond project has limited resources: not all +conversions are performed automatically. Below is a list of known +problems. + + +@verbatim 1.6->2.0: Doesn't always convert figured bass correctly, specifically things like {< >}. Mats' comment on working around this: diff --git a/Documentation/application/working.itely b/Documentation/application/working.itely index 8b15cbafb1..f8504556f7 100644 --- a/Documentation/application/working.itely +++ b/Documentation/application/working.itely @@ -28,43 +28,10 @@ this chapter. @section When things don't work @menu -* Updating old input files:: * Common errors:: * Troubleshooting (taking it all apart):: -* Minimal examples:: @end menu -@node Updating old input files -@subsection Updating old input files - -@cindex convert-ly -@cindex updating old input files - -The LilyPond input syntax occasionally changes. As LilyPond itself -improves, the syntax (input language) is modified accordingly. Sometimes -these changes are made to make the input easier to read and write or -sometimes the changes are made to accommodate new features of LilyPond. - -LilyPond comes with a file that makes this updating easier: -@code{convert-ly}. For details about how to run this program, see -@rprogram{Updating files with convert-ly}. - -Unfortunately, @code{convert-ly} cannot handle all input changes. It -takes care of simple search-and-replace changes (such as @code{raggedright} -becoming @code{ragged-right}), but some changes are too -complicated. The syntax changes that @code{convert-ly} cannot handle -are listed in @rprogram{Updating files with convert-ly}. - -For example, in LilyPond 2.4 and earlier, accents and non-English -letters were entered using LaTeX -- for example, -@code{No\"el} (this would print the French word for -@c keep "-matching straight in fancy editors -@q{Christmas}). In LilyPond 2.6 and above, the special -@code{ë} must be entered directly into the LilyPond file as an -UTF-8 character. @code{convert-ly} cannot change all the LaTeX -special characters into UTF-8 characters; you must manually update -your old LilyPond input files. - @node Common errors @subsection Common errors @@ -259,47 +226,7 @@ Now start slowly uncommenting more and more of the @code{bass} part until you find the problem line. Another very useful debugging technique is constructing -FIXME FIXME @c @ref{Minimal examples}. - - -@node Minimal examples -@subsection Minimal examples - -A minimal example is an example which is as small as possible. These -examples are much easier to understand than long examples. Minimal -examples are used for - -@itemize -@item Bug reports -@item Sending a help request to mailing lists -@item Adding an example to the @uref{http://lsr.dsi.unimi.it/, -LilyPond Snippet Repository} -@end itemize - -To construct an example which is as small as possible, the rule is -quite simple: remove anything which is not necessary. When trying to -remove unnecessary parts of a file, it is a very good idea to comment -out lines instead of deleting them. That way, if you discover that you -actually @emph{do} need some lines, you can uncomment them, instead of -typing them in from scratch. - -There are two exceptions to the @qq{as small as possible} rule: - -@itemize -@item Include the @code{\version} number. -@item If possible, use @code{\paper@{ ragged-right=##t @}} at the -top of your example. -@end itemize - -The whole point of a minimal example is to make it easy to read: - -@itemize -@item Avoid using complicated notes, keys, or time signatures, unless you -wish to demonstrate something is about the behavior of those items. -@item Do not use @code{\override} commands unless that is the point of the -example. -@end itemize - +@rgeneral{Tiny examples}. @node Make and Makefiles diff --git a/Documentation/changes.tely b/Documentation/changes.tely index 98c22f58dc..da96f0b5a5 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -62,6 +62,17 @@ which scares away people. @end ignore +@item +A version of the breve notehead has been added with two vertical lines on each side. +@lilypond +\relative c'' { + \time 4/2 + \override Staff.NoteHead #'style = #'altdefault + c\breve b\breve +} +@end lilypond + + @item Instrument names and vocal names now take into account the extent of system start delimiters in other staves for their positioning, diff --git a/Documentation/contributor/git-starting.itexi b/Documentation/contributor/git-starting.itexi index d3886c525a..7981b054f9 100644 --- a/Documentation/contributor/git-starting.itexi +++ b/Documentation/contributor/git-starting.itexi @@ -2,17 +2,19 @@ @node Starting with git @chapter Starting with git -To complete or present in another form the introduction to Git usage -in this chapter, it may be a good idea to look for Git documentation -at @uref{http://git-scm.com/documentation}, +The goal of this chapter is to provide all the git commands that +contributors should know for basic lilypond development. However, +to complete or present in another form the introduction to Git +usage in this chapter, it may be a good idea to look at the other +Git documentation listed in @ref{Other git documentation}. @menu * Getting the source code:: * Updating the source code:: * Sharing your changes:: * Advanced git stuff:: -* Git on Windows:: -* Development inside VirtualBox (compiling on Windows):: +* Git on Windows:: +* Other git documentation:: @end menu @@ -42,10 +44,6 @@ repository by @ref{Updating the source code}. command-line version of Git 1.5 or higher. Windows users should skip to @ref{Git on Windows}.} -Some sections of this guide will redirect to specific Git man pages; -however, if you think you need to understand more of Git, you might want -to read the book @uref{http://progit.org/,Pro Git}. - @node Git user configuration @subsection Git user configuration @@ -55,7 +53,6 @@ paste the following section: @example git config --global color.ui auto -git config --global branch.autosetuprebase always @end example To configure git to automatically use your name and email address @@ -87,8 +84,7 @@ git checkout -b master origin/master @node Documentation translations source code @subsection Documentation translations source code -To translate the documentation (@emph{not} the website), -FIXME: when website is integrated, modify this. +To translate the documentation, @smallexample mkdir lilypond-translation; cd lilypond-translation @@ -102,7 +98,8 @@ git checkout -b lilypond/translation origin/lilypond/translation @subsection Other branches Most contributors will never need to touch the other branches. If -you wish to do so, you will need more familiarity with git. +you wish to do so, you will need more familiarity with git; please +see @ref{Other git documentation}. @itemize @@ -178,8 +175,9 @@ git pull -r @noindent The @code{-r} option is short for @code{--rebase}. If you don't -want to type @code{-r} every time, add @code{rebase = true} to the -master branch in your @file{.git/config}, like so: +edit translated documentation and don't want to type @code{-r} +every time, add @code{rebase = true} to the master branch in your +@file{.git/config}, like so: @example [branch "master"] @@ -188,14 +186,15 @@ master branch in your @file{.git/config}, like so: rebase = true @end example -@warning{translators and documentation editors, if you have changed -committishes in the head of translated files using commits you have not -yet pushed to @code{git.sv.gnu.org}, please do not rebase. If you want -to avoid wondering whether you should rebase each time you pull, please -always use committishes from master and/or lilypond/translation branch -on @code{git.sv.gnu.org}, which in particular implies that you must push -your changes to documentation except committishes updates (possibly -after having rebased), then update the committishes and push them.} +@warning{translators and documentation editors, if you have +changed committishes in the head of translated files using commits +you have not yet pushed to @code{git.sv.gnu.org}, please do not +rebase. If you want to avoid wondering whether you should rebase +each time you pull, please always use committishes from master +and/or lilypond/translation branch on @code{git.sv.gnu.org}, which +in particular implies that you must push your changes to +documentation except committishes updates (possibly after having +rebased), then update the committishes and push them.} @c FIXME: when committishes automatic conditional update have been @c tested and documented, append the following to the warning above: @@ -216,6 +215,10 @@ If you need some documentation to understand and resolve conflicts, see paragraphs @emph{How conflicts are presented} and @emph{How to resolve conflicts} in @command{git merge} man page. +If all else fails, you can follow the instructions in +@ref{Reverting all local changes}. Be aware that this eliminates +any changes you have made! + @node Sharing your changes @section Sharing your changes @@ -272,6 +275,17 @@ a developer will review and apply the patches to the main repository. If your patch is some translation work, you may send it to @email{translations@@lilynet.net} instead. +To check if you have correctly added any new files, use: + +@example +git status +@end example + +@noindent +If this command lists any @emph{Changed but not updated} files, +you should do a @command{git commit}. If it lists any +@emph{Untracked files}, then you should do a @command{git add}. + @node Committing directly @subsection Committing directly @@ -618,14 +632,15 @@ git reset --hard origin/master @section Git on Windows @c Some of this may duplicate stuff in other sections -@c Clear this up later -td +@c But it is probably best for windows users to have it all together +@c If necessary, clear this up later -td @subsection Background to nomenclature Git is a system for tracking the changes made to source files by a distributed set of editors. It is designed to work without a master repository, but we have chosen to have a master respository -for LilyPond files. Editors hold local copies of the master +for LilyPond files. Editors hold a local copy of the master repository together with any changes they have made locally. Local changes are held in a local @q{branch}, of which there may be several, but these instructions assume you are using just one. The @@ -635,13 +650,14 @@ on the currently @q{checked out} local branch. Files are edited on a local branch, and in that state the changes are said to be @q{unstaged}. When editing is complete, the changes are moved to being @q{staged for commit}, and finally the -changes are @q{committed} to the local branch. Once -committed, the changes are given a unique reference number called the -@q{Committish} which identifies them to Git. Such committed changes -can be sent to the master repository by @q{pushing} them (if you -have write permission) or by sending them by email to someone who -has, either complete or as a @q{diff} or @q{patch} (which send -just the differences from master). +changes are @q{committed} to the local branch. Once committed, the +changes (called a @q{commit}) are given a unique 40-digit hexadecimal +reference number called the @q{Committish} or @q{SHA1 ID} which +identifies the commit to Git. Such committed changes can be sent to +the master repository by @q{pushing} them (if you have write +permission) or by sending them by email to someone who has, either +as a complete file or as a @q{diff} or @q{patch} (which send just +the differences from the master repository). @subsection Installing git @@ -665,8 +681,10 @@ and are terminated by keying a newline. Decide where you wish to place your local Git repository, creating the folders in Windows as necessary. Here we -call the folder to contain the repository [path]/Git. -You will need to have space for around 150Mbytes. +call the folder to contain the repository @code{[path]/Git}, but +if you intend using Git for other projects a directory name like +@code{lilypond-git} might be better. You will need to have space +for around 100Mbytes. Start the Git bash shell by clicking on the desk-top icon installed with Git and type @@ -706,24 +724,28 @@ and the $ prompt.} We now need to generate a local copy of the downloaded files in a new local branch. Your local branch needs to have a -name, here we call it @q{lily-local} - you may wish to make up -your own. +name. It is usual to call it @q{master} and we shall do that +here. -Then, finally, type +To do this, type @example -git checkout -b lily-local origin/master +git checkout -b master origin/master @end example -to create the lily-local branch containing the local copies of the -master files. You will be advised your local branch has been set -up to track the remote branch. +This creates a second branch called @q{master}. You will see +two warnings (ignore these), and a message advising you that +your local branch @q{master} has been set up to track the remote +branch. You now have two branches, a local branch called +@q{master}, and a tracking branch called @q{origin/master}, +which is a shortened form of @q{remotes/origin/master}. Return to Windows Explorer and look in your Git repository. You should see lots of folders. For example, the LilyPond documentation -can be found in Git/Documentation/user. +can be found in [path]/Git/Documentation/. -Terminate the Git bash shell by typing @code{exit}. +The Git bash shell is terminated by typing @code{exit} or by +clicking on the usual Windows close-window widget. @subsection Git GUI @@ -742,16 +764,18 @@ and 7 pull-down menus. At this stage do not use any of the commands under Branch, Commit, Merge or Remote. These will be explained later. -The two panels on the left contain the names of files which -you are in the process of editing (Unstaged Changes), and +The top panel on the left contains the names of files which +you are in the process of editing (Unstaged Changes), and the +lower panel on the left contains the names of files you have finished editing and have staged ready for -committing (Staged Changes). At this stage these panels will +committing (Staged Changes). At present, these panels will be empty as you have not yet made any changes to any file. After a file has been edited and saved the top panel on the right will display the differences between the edited file selected -in one of the panels on the left and the last version committed. +in one of the panels on the left and the last version committed +on the current branch. -The final panel at bottom right is used to enter a descriptive +The panel at bottom right is used to enter a descriptive message about the change before committing it. The Git GUI is terminated by entering CNTL-Q while it is the @@ -788,21 +812,21 @@ both identical. To see them click on Branch -> Checkout @end example -You should have one local branch called @w{lily-local} and one -tracking branch called @w{origin/master}. The latter is your -local copy of the @w{remote/origin/master} branch in the master -LilyPond repository. The @w{lily-local} branch is where you +You should have one local branch called @q{master} and one +tracking branch called @q{origin/master}. The latter is your +local copy of the @q{remotes/origin/master} branch in the master +LilyPond repository. The local @q{master} branch is where you will make your local changes. When a particular branch is selected, i.e., checked out, the files visible in your repository are changed to reflect the state of the files on that branch. -@subsection Updating files from @w{remote/origin/master} +@subsection Updating files from @q{remote/origin/master} -Before starting the editing of a file, ensure your local branches -contain the latest version in @w{remote/origin/master} by first -clicking +Before starting the editing of a file, ensure your local repository +contains the latest version of the files in the remote repository +by first clicking @example Remote -> Fetch from -> origin @@ -812,13 +836,13 @@ Remote -> Fetch from -> origin in the Git GUI. This will place the latest version of every file, including all the -changes made by others, -into the @q{origin/master} branch of the tracking branches -in your git repository. You can see these files by checking -out this branch. This will not affect any files you have -modified in your local branch. +changes made by others, into the @q{origin/master} branch of the +tracking branches in your git repository. You can see these files +by checking out this branch, but you must @emph{never} edit any +files while this branch is checked out. Check out your local +@q{master} branch again. -You then need to merge these fetched files into your local +You then need to merge these fetched files into your local @q{master} branch by clicking on @example @@ -826,32 +850,31 @@ Merge -> Local Merge @end example @noindent -and if necessary select the local branch into which the merge -is to be made. +and if necessary select the local @q{master} branch. -Note that a merge cannot be completed if there are any local -uncommitted changes on the lily-local branch. +Note that a merge cannot be completed if you have made any local +changes which have not yet been committed. -This will update all the files in that branch to reflect the -current state of the @w{origin/master} branch. If any of the -changes conflict with changes you have made yourself recently +This merge will update all the files in the @q{master} branch to +reflect the current state of the @q{origin/master} branch. If any +of the changes conflict with changes you have made yourself recently you will be notified of the conflict (see below). @subsection Editing files -First ensure your lily-local branch is checked out, then +First ensure your @q{master} branch is checked out, then simply edit the files in your local Git repository with your favourite editor and save them back there. If any file contains non-ASCII characters ensure you save it in UTF-8 format. Git will detect any changes whenever you restart Git GUI and the file names will then be listed in the Unstaged Changes panel. Or you can click the Rescan button to refresh the panel -contents at any time. You may break off and resume at -editing any time. +contents at any time. You may break off and resume editing any +time. -The changes you have made may be displayed in diff form -in the top right-hand panel by clicking on the name in -Git GUI. +The changes you have made may be displayed in diff form in the top +right-hand panel of Git GUI by clicking on the file name shown in +one of the left panels. When your editing is complete, move the files from being Unstaged to Staged by clicking the document symbol to @@ -860,7 +883,7 @@ be moved back by clicking on the ticked box to the left of the name. Finally the changes you have made may be committed to -your lily-local branch by entering a brief message in +your @q{master} branch by entering a brief message in the Commit Message box and clicking the Commit button. If you wish to amend your changes after a commit has been @@ -872,7 +895,7 @@ Commit -> Amend Last Commit @end example @noindent -or by checking the Amend Last Commit radio button at bottom left. +or by checking the Amend Last Commit radio button at bottom right. This will return the changes to the Staged state, so further editing made be carried out within that commit. This must only be done @emph{before} the changes have been Pushed or sent to your @@ -880,10 +903,10 @@ mentor for Pushing - after that it is too late and corrections have to be made as a separate commit. -@subsection Sending changes to remote/origin/master +@subsection Sending changes to @q{remotes/origin/master} -If you do not have write access to @w{remote/origin/master} you will -need to send your changes by email to someone who does. +If you do not have write access to @q{remotes/origin/master} you +will need to send your changes by email to someone who does. First you need to create a diff or patch file containing your changes. To create this, the file must first be @@ -901,19 +924,19 @@ git format-patch origin @end example This will create a patch file for all the locally committed files -which differ from @w{origin/master}. The patch file can be found -in [path]/Git and will have a name formed from n and the commit +which differ from @q{origin/master}. The patch file can be found +in [path]/Git and will have a name formed from the commit message. @subsection Resolving merge conflicts -As soon as you have committed a changed file your local -branch has diverged from @w{origin/master}, and will +As soon as you have committed a changed file your local @q{master} +branch has diverged from @q{origin/master}, and will remain diverged until your changes have been committed -in @w{remote/origin/master} and Fetched back into your -@w{origin/master}. Similarly, if a new commit has been made -to @w{remote/origin/master} by someone else and Fetched, your -lily-local branch is divergent. You can detect a divergent +in @q{remotes/origin/master} and Fetched back into your +@q{origin/master} branch. Similarly, if a new commit has been made +to @q{remotes/origin/master} by someone else and Fetched, your +local @q{master} branch is divergent. You can detect a divergent branch by clicking on @example @@ -921,28 +944,28 @@ Repository -> Visualise all branch history @end example This opens up a very useful new window called @q{gitk}. -Use this to browse all the commits made by others. +Use this to browse all the commits made by yourself and others. If the diagram at top left of the resulting window -does not show your branch's tag on the same node as -the @w{remote/origins/master} tag your branch has diverged from -@w{origin/master}. This is quite normal if files you have modified -yourself have not yet been Pushed to @w{remote/origin/master} and +does not show your @q{master} tag on the same node as +the @q{remotes/origin/master} tag your branch has diverged from +@q{origin/master}. This is quite normal if files you have modified +yourself have not yet been Pushed to @q{remotes/origin/master} and Fetched, or if files modified and committed by others have been -Fetched since you last Merged @w{origin/master} into your lily-local -branch. +Fetched since you last Merged @q{origin/master} into your local +@q{master} branch. -If a file being merged from @w{origin/master} differs from +If a file being merged from @q{origin/master} differs from one you have modified in a way that cannot be resolved automatically by git, Merge will report a Conflict which you must resolve by editing the file to create the version you wish to keep. -This could happen if the person updating @w{remote/origin/master} +This could happen if the person updating @q{remotes/origin/master} for you has added some changes of his own before -committing your changes to @w{remote/origin/master}, or if someone +committing your changes to @q{remotes/origin/master}, or if someone else has changed the same file since you last -fetched the file from @w{remote/origin/master}. +fetched the file from @q{remotes/origin/master}. Open the file in your editor and look for sections which are delimited with ... @@ -971,9 +994,19 @@ Once familiarity with using git on Windows has been gained the standard git manuals can be used to learn about these. -@node Development inside VirtualBox (compiling on Windows) -@section Development inside VirtualBox (compiling on Windows) +@node Other git documentation +@section Other git documentation +@itemize + +@item +Official git man pages: @uref{http://www.kernel.org/pub/software/scm/git/docs/} +@item +More in-depth tutorials: @uref{http://git-scm.com/documentation} +@item +Book about git: @uref{http://progit.org/,Pro Git} + +@end itemize diff --git a/Documentation/css/lilypond-web.css b/Documentation/css/lilypond-web.css index 73a8750691..285dc463a9 100644 --- a/Documentation/css/lilypond-web.css +++ b/Documentation/css/lilypond-web.css @@ -49,7 +49,7 @@ div#tocframe { top: 0; left: 0; right: 0; - background: url(../pictures/nav-bg.jpg) repeat-x top left; + background: url(../pictures/nav-bg.png) repeat-x top left; max-width: 70em; font-size: 100%; line-height: 1; @@ -73,6 +73,9 @@ div#tocframe { #tocframe > ul:first-child > li:first-child a { text-indent: -999em; + /* only css3 */ + /*background: url(nav-bg.png) top left repeat-x, +url(../pictures/lily-home.png) no-repeat 50% 50%, #582007;*/ background: url(../pictures/lily-home-nav-bg.png) no-repeat 50% 50%; width: 9%; /* css3 no go yet? */ @@ -114,7 +117,7 @@ div#tocframe { #tocframe li form { float: left; width: 17%; - background: url(nav-bg.jpg); + background: url(../pictures/nav-bg.png); font-size: 100%; padding: 0.5em 0.8%; margin: 0; @@ -135,8 +138,12 @@ div#tocframe { } #tocframe li form input[type="hidden"] { - visibility: hidden; - background: #f00; + position: relative; + height: 0; + overflow: hidden; + text-indent: -999em; + padding: 0; + margin: 0; } #tocframe li a { @@ -144,19 +151,19 @@ div#tocframe { width: 18%; text-align: center; font-weight: bold; - padding: 0.85em 0; + padding: 0.71em 0; margin: 0; - background: url(nav-bg.jpg); + background: url(../pictures/nav-bg.png); } #tocframe li a:hover { - background: url(nav-hover.jpg); + background: url(../pictures/nav-hover.png); text-decoration: underline; } #tocframe li.toc_current a, #tocframe li.toc_current a:hover { - background: url(nav-active.jpg); + background: url(../pictures/nav-active.png); color:#000; text-decoration: underline; } @@ -222,21 +229,25 @@ div#tocframe { #tocframe .toc .toc li.color1 a { text-decoration: none; background: #9ccc7c; + background: url(../pictures/color1-bg.png) repeat-x top left; } #tocframe .toc .toc li.color2 a { text-decoration: none; background: #bbcf81; + background: url(../pictures/color2-bg.png) repeat-x top left; } #tocframe .toc .toc li.color3 a { text-decoration: none; background: #dbd286; + background: url(../pictures/color3-bg.png) repeat-x top left; } #tocframe .toc .toc li.color4 a { text-decoration: none; background: #fad58c; + background: url(../pictures/color4-bg.png) repeat-x top left; } /* having this useless style makes the perl init file easier */ @@ -245,50 +256,62 @@ div#tocframe { #tocframe .toc .toc li.color1 a:hover { background: #addd8d; + background: url(../pictures/color1-hover.png) repeat-x top left; } #tocframe .toc .toc li.color2 a:hover { background: #ccdf92; + background: url(../pictures/color2-hover.png) repeat-x top left; } #tocframe .toc .toc li.color3 a:hover { background: #ece297; + background: url(../pictures/color3-hover.png) repeat-x top left; } #tocframe .toc .toc li.color4 a:hover { background: #fbe69d; + background: url(../pictures/color4-hover.png) repeat-x top left; } #tocframe .toc .toc li.color1.toc_current a { background: #beee9e; + background: url(../pictures/color1-active.png) repeat-x top left; } #tocframe .toc .toc li.color1.toc_current a:hover { background: #beee9e; + background: url(../pictures/color1-active.png) repeat-x top left; } #tocframe .toc .toc li.color2.toc_current a { background: #ddefa3; + background: url(../pictures/color2-active.png) repeat-x top left; } #tocframe .toc .toc li.color2.toc_current a:hover { background: #ddefa3; + background: url(../pictures/color2-active.png) repeat-x top left; } #tocframe .toc .toc li.color3.toc_current a { background: #fdf4a8; + background: url(../pictures/color3-active.png) repeat-x top left; } #tocframe .toc .toc li.color3.toc_current a:hover { background: #fdf4a8; + background: url(../pictures/color3-active.png) repeat-x top left; } #tocframe .toc .toc li.color4.toc_current a { background: #fcf7ae; + background: url(../pictures/color4-active.png) repeat-x top left; } #tocframe .toc .toc li.color4.toc_current a:hover { background: #fcf7ae; + background: url(../pictures/color4-active.png) repeat-x top left; } /* third level toc (unnumberedsubsec) */ @@ -406,6 +429,13 @@ div#quickSummary { margin: 0; } +div.separator { + background: transparent url(../pictures/squiggle.jpg) no-repeat 40% 60%; + height: 36px; + clear: both; + padding: 10px; +} + div#news { padding: 0; margin: 0 13em 1em 0; @@ -619,7 +649,7 @@ div.float-right a.clickable { .column-center-top { float: left; width: 99.5%; - text-align: center; + text-align: left; border: 1px solid #8bbb6b; margin: 1em auto; } @@ -691,7 +721,6 @@ div.float-right a.clickable { /* color4 */ .column-center-bottom h3 { background: #fad58c; - text-align: left; border-bottom: 1px solid #e9c47b; } @@ -710,6 +739,7 @@ div.float-right a.clickable { .column-left-bottom h3, .column-right-top h3, .column-right-bottom h3 { + text-align: left; padding: 0 0.5em; margin: 0; } @@ -720,6 +750,7 @@ div.float-right a.clickable { .column-left-bottom h4, .column-right-top h4, .column-right-bottom h4 { + text-align: left; padding: 0.5em 0.5em 0; margin: 0 0 0.5em 0; } diff --git a/Documentation/essay/engraving.itely b/Documentation/essay/engraving.itely index baf8d60b2f..ace6cc1c08 100644 --- a/Documentation/essay/engraving.itely +++ b/Documentation/essay/engraving.itely @@ -33,54 +33,62 @@ LilyPond. @cindex plate engraving @cindex music engraving -The art of music typography is called @emph{(plate) engraving}. -The term derives from the traditional process of music printing. -Just a few decades ago, sheet music was made by cutting and -stamping the music into a zinc or pewter plate in mirror image. -The plate would be inked, and the depressions caused by the cutting -and stamping would hold ink. An image was formed by pressing -paper to the plate. The stamping and cutting was done completely -by hand. Making a correction was cumbersome, if possible at all, -so the engraving had to be perfect in one go. Engraving was a -highly specialized skill; a craftsman had to complete around five -years of training before earning the title of master engraver, and -another five years of experience were necessary to become truly -skilled. - -Nowadays, all newly printed music is produced with computers. -This has obvious advantages: prints are cheaper to make, and -editorial work can be delivered by email. Unfortunately, the -pervasive use of computers has also decreased the graphical -quality of scores. Computer printouts have a bland, mechanical -look, which makes them unpleasant to play from. - - -@c introduce illustrating aspects of engraving, font... -The images below illustrate the difference between traditional -engraving and typical computer output, and the third picture shows -how LilyPond mimics the traditional look. The left picture shows -a scan of a flat symbol from an edition published in 2000. The -center depicts a symbol from a hand-engraved Bärenreiter edition -of the same music. The left scan illustrates typical flaws of -computer print: the staff lines are thin, the weight of the flat -symbol matches the light lines and it has a straight layout with -sharp corners. By contrast, the Bärenreiter flat has a bold, -almost voluptuous rounded look. Our flat symbol is designed -after this one, among others. It is rounded, and its weight -harmonizes with the thickness of our staff lines, which are also -much thicker than lines in the computer edition. - -@multitable @columnfractions .125 .25 .25 .25 .125 -@item @tab -@ifnotinfo +The art of music typography is called @emph{(plate) engraving}. The term +derives from the traditional process of music printing. Just a few +decades ago, sheet music was made by cutting and stamping the music into +a zinc or pewter plate in mirror image. The plate would be inked, and +the depressions caused by the cutting and stamping would hold ink. An +image was formed by pressing paper to the plate. The stamping and +cutting was done completely by hand. Making a correction was cumbersome, +so the engraving had to be nearly perfect in one go. Engraving was a +highly specialized skill; a craftsman had to complete around five years +of training before earning the title of master engraver, and another +five years of experience were necessary to become truly skilled. + +@quotation @iftex -@image{pictures/henle-flat-gray,,4cm} +@image{pictures/hader-slaan,,7cm} @end iftex @ifnottex -@image{pictures/henle-flat-gray,,,png} +@sourceimage{hader-slaan,,,jpg} @end ifnottex +@end quotation -@tab +Nowadays, all newly printed music is produced with computers. This has +obvious advantages: prints are cheaper to make, editorial work can be +delivered by email, and the original data can be easily stored. +Unfortunately, computer-generated scores rarely match the quality of +hand-engraved scores. Instead, computer printouts have a bland, +mechanical look, which makes them unpleasant to play from. + +From the beginning, we designed LilyPond to mimic the beauty of +traditional music engraving. Along the way, we have learned a great deal +about the work that goes into a well-engraved score. Below we describe +several of those aspects that we have tried to imitate in LilyPond. + +@menu +* Music Fonts:: +* Optical Spacing:: +* Ledger Lines:: +* Slurs:: +* Why work so hard?:: +@end menu + +@node Music Fonts +@unnumberedsubsec Music Fonts + +The images below illustrate the difference between traditional engraving +and typical computer output. The left picture shows a scan of a flat +symbol from a hand-engraved Bärenreiter edition, while the right picture +depicts a symbol from an edition of the same music published in 2000. +Although both images are printed in the shame shade of ink, the earlier +version looks darker: the staff lines are heavier, and the Bärenreiter +flat has a bold, almost voluptuous rounded look. The right scan, on the +other hand, has thinner lines and a straight layout with sharp corners. + +@multitable @columnfractions .25 .25 .25 .25 +@item @tab +@ifnotinfo @iftex @image{pictures/baer-flat-gray,,4cm} @end iftex @@ -90,43 +98,80 @@ much thicker than lines in the computer edition. @tab @iftex -@image{pictures/lily-flat-bw,,4cm} +@image{pictures/henle-flat-gray,,4cm} @end iftex @ifnottex -@image{pictures/lily-flat-bw,,,png} +@image{pictures/henle-flat-gray,,,png} @end ifnottex + @end ifnotinfo @ifinfo -@image{lilypond/pictures/henle-flat-bw,,,,png} @image{lilypond/pictures/baer-flat-bw,,,,png} +@image{lilypond/pictures/henle-flat-bw,,,,png} +@image{lilypond/pictures/baer-flat-bw,,,,png} @image{lilypond/pictures/lily-flat-bw,,,,png} @end ifinfo + @item @tab -Henle (2000) -@tab Bärenreiter (1950) @tab -LilyPond Feta font (2003) +Henle (2000) @end multitable - @cindex musical symbols @cindex font @cindex blackness @cindex balance -@c introduce illustrating aspects of engraving, spacing... +When we wanted to write a computer program to create music typography, +there were no musical fonts freely available that could match the +elegance of our favorite scores. Not let down, we created a font of +musical symbols, relying on nice printouts of hand-engraved music. The +experience helped develop a typographical taste, and it made us +appreciate subtle design details. Without that experience, we would not +have realized how ugly the fonts were that we admired at first. + +Below is a sample of two music fonts: the upper set is the default font +in the Sibelius software (the @emph{Opus} font), and the lower set is +our own LilyPond font. + +@quotation +@iftex +@image{pictures/pdf/OpusAndFeta,,,} +@end iftex +@ifnottex +@sourceimage{OpusAndFeta,,,png} +@end ifnottex +@end quotation + +The LilyPond symbols are heavier and their weight is more consistent, +which makes them easier to read. Fine endings, such as the one on the +bottom of the quarter rest, should not end in sharp points, but rather +in rounded shapes. This is because sharp corners of the punching dies +are fragile and quickly wear out when stamping in metal. Taken together, +the blackness of the font must be carefully tuned together with the +thickness of lines, beams and slurs to give a strong yet balanced +overall impression. + +Also, notice that our half-notehead is not elliptic but slightly diamond +shaped. The vertical stem of a flat symbol is slightly brushed, becoming +wider at the top. The sharp and the natural are easier to distinguish +from a distance because their angled lines have different slopes and the +vertical strokes are heavier. + +@node Optical Spacing +@unnumberedsubsec Optical Spacing + In spacing, the distribution of space should reflect the durations between notes. However, many modern scores adhere to the durations with mathematical precision, which leads to poor -results. In the next example a motive is printed twice: once -using exact mathematical spacing, and once with corrections. Can -you spot which fragment is which? +results. In the next example a motive is printed twice: the first time +using exact mathematical spacing, and the second with corrections. +Which do you prefer? @cindex optical spacing -@c file spacing-optical. -@c need to include it here, because we want two images. + @lilypond \paper { ragged-right = ##t @@ -140,14 +185,15 @@ music = { \stemNeutral e'8[ e'8 e'8 e'8] } - \score { \music \layout { \context { \Staff - \override NoteSpacing #'stem-spacing-correction = #0.6 + \override NoteSpacing #'stem-spacing-correction = #0.0 + \override NoteSpacing #'same-direction-correction = #0.0 + \override StaffSpacing #'stem-spacing-correction = #0.0 } } } @@ -166,15 +212,14 @@ music = { \stemNeutral e'8[ e'8 e'8 e'8] } + \score { \music \layout { \context { \Staff - \override NoteSpacing #'stem-spacing-correction = #0.0 - \override NoteSpacing #'same-direction-correction = #0.0 - \override StaffSpacing #'stem-spacing-correction = #0.0 + \override NoteSpacing #'stem-spacing-correction = #0.6 } } } @@ -193,9 +238,54 @@ up-stem/@/down-stem combination should be put farther apart, and the notes of a down-stem/@/up-stem combination should be put closer together, all depending on the combined vertical positions of the notes. The upper two measures are printed with this -correction, the lower two measures, however, form -down-stem/@/up-stem clumps of notes. +correction, the lower two measures, however, form down-stem/@/up-stem +clumps of notes. A master engraver would adjust the spacing as needed to +please the eye. + +Another example of optical spacing is the visual interplay between the +stems and the bar lines. When an up-stem precedes the bar line, a little +more space is needed to keep it from feeling crowded: +@lilypond +\paper { + ragged-right = ##t +} + +\score { + { + c''8 c'' c'' c'' c'' c'' c'' c'' \break + a' a' a' a' a' a' a' a' + } + \layout { + \context { + \Staff + \remove "Time_signature_engraver" + \override NoteSpacing #'stem-spacing-correction = #0.7 + } + } +} +@end lilypond + +@node Ledger Lines +@unnumberedsubsec Ledger Lines + +@ifnotinfo +@iftex +@image{pictures/baer-ledger,4cm} +@end iftex +@ifnottex +@image{pictures/baer-ledger,,,png} +@end ifnottex +@end ifnotinfo +@ifinfo +@image{lilypond/pictures/baer-ledger,,,,png} +@end ifinfo + +@node Slurs +@unnumberedsubsec Slurs + +@node Why work so hard? +@unnumberedsubsec Why work so hard? Musicians are usually more absorbed with performing than with studying the looks of a piece of music, so nitpicking @@ -238,6 +328,69 @@ to see and love to play from. @cindex engraving, automated @cindex automated engraving +@menu +* Beauty contests:: +* Notation benchmarking:: +* Flexible architecture:: +@end menu + +@node Beauty contests +@unnumberedsubsec Beauty contests + +@node Notation benchmarking +@unnumberedsubsec Notation benchmarking + +Bärenreiter: + +@ifnotinfo +@iftex +@image{pictures/baer-sarabande,16cm} +@end iftex +@ifnottex +@image{pictures/baer-sarabande,,,png} +@end ifnottex +@end ifnotinfo +@ifinfo +@image{lilypond/pictures/baer-sarabande,,,,png} +@end ifinfo + +LilyPond 1.4: + +@ifnotinfo +@iftex +@image{pictures/lily14-sarabande,16cm} +@end iftex +@ifnottex +@image{pictures/lily14-sarabande,,,png} +@end ifnottex +@end ifnotinfo +@ifinfo +@image{lilypond/pictures/lily14-sarabande,,,,png} +@end ifinfo + +LilyPond @version{}: + +@lilypond[relative=0,staffsize=19,line-width=16\cm] +{ + \clef "bass" + \key d \minor + \time 3/4 + \mergeDifferentlyDottedOn + << {d8. e16 e4. d16 e} \\ {d4 a2} >> + 4. e8 d c + bes g' f e16( f g a bes d,) + cis4. b8 a g + << {d'8. e16 e4. d16 e} \\ {4 a2} >> +} +@end lilypond + +[LilyPond snippet above not finished] + +[a few bars of LilyPond vs. Finale can go here] + +@node Flexible architecture +@unnumberedsubsec Flexible architecture + How do we go about implementing typography? If craftsmen need over ten years to become true masters, how could we simple hackers ever write a program to take over their jobs? diff --git a/Documentation/general.texi b/Documentation/general.texi index 9ccac7e952..f011440799 100644 --- a/Documentation/general.texi +++ b/Documentation/general.texi @@ -96,6 +96,9 @@ Read more in our @ref{Introduction}! @divEnd @divEnd +@divClass{separator} +@divEnd + @divId{news} FIXME: process news items like the old web site: diff --git a/Documentation/general/community.itexi b/Documentation/general/community.itexi index 74db1e3a0a..ea18b72982 100644 --- a/Documentation/general/community.itexi +++ b/Documentation/general/community.itexi @@ -225,8 +225,6 @@ guidelines for @ref{Bug reports}.} @subheading What are @qq{Tiny examples}? A tiny example is an example from which nothing can be removed. - -These used to be called @qq{minimal examples}. @divEnd @divClass{column-left-bottom} @@ -413,7 +411,7 @@ generally. Right now it's (deliberately) website-specific. @heading Development materials for LilyPond 2.13.3 @warning{These are @emph{unstable development} versions. If you -have the slighest doubt about how to use or install LilyPond, we +have the slightest doubt about how to use or install LilyPond, we urge you to use the stable @ref{Download}, and read the stable @ref{Manuals}.} @@ -452,31 +450,48 @@ lilypond-2.13.3-1.mingw-exe} @subheading Manuals -LM: +FIXME: these need the automatic symlinks or something. Maybe even +a hard-coded url to lilypond.org/docs/2.13 or something?? + +Learning: @uref{lm-html, html} +@uref{lm-big-html, big html} @uref{lm-pdf, pdf} -MG: +Glossary: @uref{mg-html, html} +@uref{mg-big-html, big html} @uref{mg-pdf, pdf} -AE: -@uref{ae-html, html} -@uref{ae-pdf, pdf} +Essay: +@uref{essay-html, html} +@uref{essay-big-html, big html} +@uref{essay-pdf, pdf} -@smallspace +Notation: +@uref{notation-html, html} +@uref{notation-big-html, big html} +@uref{notation-pdf, pdf} -NR: -@uref{nr-html, html} -@uref{nr-pdf, pdf} +Usage: +@uref{usage-html, html} +@uref{usage-big-html, big html} +@uref{usage-pdf, pdf} -...etc... -SL-link -AU-link +Snippets: +@uref{snippets-html, html} +@uref{snippets-big-html, big html} +@uref{snippets-pdf, pdf} -FAQ-link (? maybe?) -Changes-link -IR-link +Changes: +@uref{changes-html, html} +@uref{changes-big-html, big html} +@uref{changes-pdf, pdf} + +Internals: +@uref{internals-html, html} +@uref{internals-big-html, big html} +@uref{internals-pdf, pdf} @divEnd @@ -484,7 +499,32 @@ IR-link @divClass{column-right-bottom} @subheading Contributors' Guide -FIXME write CG intro + links. +LilyPond development is a fairly complicated matter. LilyPond is +a large, (mostly) stable project. At any point in time, we have +between 5 and 25 active contributors. In order to help new +contributors, and to keep the whole system (mostly) stable, we +have written a manual for contributors. + +@divClass{keep-bullets} +@itemize + +@item @uref{../contributor/index.html, Contributor's guide (split HTML)}: +the manual is split between many HTML pages. +@emph{(small download for each page)} + +@item @uref{../contributor-big-page.html, Contributor's guide (big HTML)}: +read this manual as one huge HTML page. +@emph{(large single download, around 10? Mb)} + +@item @uref{../contributor.pdf, contributor.pdf}: +download as a PDF file. +@emph{(large single download, 2.8 Mb)} + +@item @uref{FIXME, contributor.info}: +GNU info format for documentation. FIXME, link broken. + +@end itemize +@divEnd @divEnd diff --git a/Documentation/general/introduction.itexi b/Documentation/general/introduction.itexi index 76da24be2f..2d627b6f7e 100644 --- a/Documentation/general/introduction.itexi +++ b/Documentation/general/introduction.itexi @@ -446,11 +446,9 @@ scholarships. @divClass{column-center-bottom} @subheading Where now? -Still not convinced? Read about some of our users' -@ref{Productions} and sheet music. If you've already decided to -try LilyPond, first read about our @ref{Text input}. - -FIXME: rewrite for Background. +Still not convinced? Read our extensive essay about our engraving +philosophy in @ref{Background}. If you've already decided to try +LilyPond, first read about our @ref{Text input}. @divEnd @@ -461,14 +459,11 @@ FIXME: rewrite for Background. @subheading Background essay We have an extensive essay describing computational aesthetics: -the art of creating beauty with a computer. FIXME blah blah. - -FIXME: simplify the verbosity below. +the art of creating beauty with a computer. If you just want a quick introduction to LilyPond, the essay might be too much material to read. If you would like to read it now, please progress to @ref{Essay}. - @divEnd @divClass{column-center-bottom} @@ -799,23 +794,16 @@ Some editing environments include syntax highlighting, automatic command completion, and pre-made templates. Other programs actually provide a GUI which allows direct manipulation of a graphical score. For more information, see our documentation -about @@ref@{FIXME alternate editing environments@}. +about @ref{Alternate input}. @divClass{column-center-bottom} @subheading Where now? -You are now ready to @ref{Download, Download LilyPond}. +You are now ready to @ref{Download, Download LilyPond}. Still not +convinced? Read about easier editing environments in +@ref{Alternate input}. -Still not convinced? Many composers, musicians, and conductors -have learned how to write music in our input format. Experienced -users even report that they can enter a full score in LilyPond -faster than with a piano keyboard or mouse+GUI! Perhaps you would -like to review the @ref{Features}, @ref{Examples}, or -@ref{Freedom} that LilyPond provides, or read about users' -@ref{Productions} and @ref{Testimonials}. In addition, our -approach to the computational aesthetics of classical engraving is -explained in our @ref{Background}. FIXME @divEnd @@ -864,7 +852,23 @@ FIXME: insert text and a graphic(s) @divEnd + @divClass{column-center-bottom} +@subheading Where now? + +You are now ready to @ref{Download, Download LilyPond}. + +Still not convinced? Many composers, musicians, and conductors +have learned how to write music in our input format. Experienced +users even report that they can enter a full score in LilyPond +faster than with a piano keyboard or mouse+GUI! Perhaps you would +like to review the @ref{Features}, @ref{Examples}, or the +@ref{Freedom} that LilyPond provides, or read about users' +@ref{Productions} and @ref{Testimonials}. In addition, our +approach to the computational aesthetics of classical engraving is +explained in our @ref{Background}. + + @subheading Legalese @divClass{legal} diff --git a/Documentation/general/manuals.itexi b/Documentation/general/manuals.itexi index 4eb4f41f75..3e3f985cb0 100644 --- a/Documentation/general/manuals.itexi +++ b/Documentation/general/manuals.itexi @@ -181,190 +181,214 @@ GNU info format for documentation. FIXME, link broken. @divEnd @divEnd -@ignore -@itemize -@item -@item -@rlearning{Tutorial}: gives a gentle introduction to typesetting music. -First time users should start here. +@node Glossary +@unnumberedsec Glossary -@item -@rlearning{Fundamental concepts}: explains some general concepts about -the LilyPond file format. If you are not certain where to place a -command, read this chapter! +@divClass{column-left-top} +@subheading Glossay -@item -@rlearning{Tweaking output}: shows how to change the default engraving -that LilyPond produces. +This explains musical terms, and includes translations to various +languages. If you are not familiar with music notation or music +terminology (especially if you are a non-native English speaker), +it is highly advisable to consult the glossary. + +@divEnd + +@divClass{column-right-top} +@subheading Read it now + +@itemize @item -@rlearning{Working on LilyPond projects}: discusses practical uses of -LilyPond and how to avoid some common problems. Read this before -undertaking large projects! +@rglosnamed{Top,Music glossary}: +read this manual in the same format as this one. @end itemize +@divEnd -The Learning also contains appendices which are not part of the -recommended linear reading. They may be useful for later -viewing: +@divClass{column-center-bottom} +@subheading Other formats +@divClass{keep-bullets} @itemize -@item -@rlearning{Templates}: shows ready-made templates of LilyPond pieces. -Just cut and paste a template into a file, add notes, and you're -done! - -@item -@rlearning{Scheme tutorial}: presents a short introduction to Scheme, -the programming language that music functions use. This is -material for advanced tweaks; many users never touch Scheme at -all. +@item @uref{../glossary/index.html, Glossary (split HTML)}: +the manual is split between many HTML pages. +@emph{(small download for each page)} -@end itemize -@end ignore +@item @uref{../glossary-big-page.html, Glossay (big HTML)}: +read this manual as one huge HTML page. +@emph{(large single download, around 10? Mb)} +@item @uref{../glossary.pdf, glossary.pdf}: +download as a PDF file. +@emph{(large single download, 2.8 Mb)} -@node Glossary -@unnumberedsec Glossary +@item @uref{FIXME, glossary.info}: +GNU info format for documentation. FIXME, link broken. -@rglosnamed{Top,Music glossary} -this explains musical terms, and includes translations to various -languages. If you are not familiar with music notation or music -terminology (especially if you are a non-native English speaker), -it is highly advisable to consult the glossary. +@end itemize +@divEnd +@divEnd @node Essay @unnumberedsec Essay -blah +@divClass{column-left-top} +@subheading Essay + +This book gives a brief history of music typography, followed by +an examination of LilyPond's engraving techniques. A comparison +between LilyPond and other music engraving systems is given. + +@divEnd + +@divClass{column-right-top} +@subheading Read it now + +@itemize + +@item @ressaynamed{Top,Essay}: +read this manual in the same format as this one. + +@end itemize +@divEnd + +@divClass{column-center-bottom} +@subheading Other formats + +@divClass{keep-bullets} +@itemize + +@item @uref{../essay/index.html, Essay (split HTML)}: +the manual is split between many HTML pages. +@emph{(small download for each page)} + +@item @uref{../essay-big-page.html, Essay (big HTML)}: +read this manual as one huge HTML page. +@emph{(large single download, around FIXME? Mb)} + +@item @uref{../essay.pdf, essay.pdf}: +download as a PDF file. +@emph{(large single download, FIXME? Mb)} + +@item @uref{FIXME, essay.info}: +GNU info format for documentation. FIXME, link broken. + +@end itemize +@divEnd +@divEnd @node Notation @unnumberedsec Notation +@divClass{column-left-top} +@subheading Notation reference + This book explains all the LilyPond commands which produce notation. @warning{The Notation assumes that the reader knows basic material covered in the Learning and is familiar with the English musical terms presented in the Musical Glossary.} +@divEnd -@ignore -@itemize - -@item -@ruser{Musical notation}: -discusses topics grouped by notation construct. This section -gives details about basic notation that will be useful in almost -any notation project. - -@item -@ruser{Specialist notation}: -discusses topics grouped by notation construct. This section -gives details about special notation that will only be useful for -particular instrument (or vocal) groups. - -@item -@ruser{General input and output}: -discusses general information about LilyPond input files and -controlling output. - -@item -@ruser{Spacing issues}: -discusses issues which affect the global output, such as selecting -paper size or specifying page breaks. +@divClass{column-right-top} +@subheading Read it now -@item -@ruser{Changing defaults}: -explains how to tweak LilyPond to produce exactly the notation you -want. +@itemize -@item -@ruser{Interfaces for programmers}: -explains how to create music functions with scheme. +@item @rusernamed{Top,Notation}: +read this manual in the same format as this one. @end itemize +@divEnd -The Notation also contains appendices with useful -reference charts. +@divClass{column-center-bottom} +@subheading Other formats +@divClass{keep-bullets} @itemize -@item -@ruser{Literature list}: -contains a set of useful reference books for those who wish to -know more on notation and engraving. - -@item -@ruser{Notation manual tables}: -are a set of tables showing the chord names, MIDI instruments, a -list of color names, and the Feta font. +@item @uref{../notation/index.html, Notation (split HTML)}: +the manual is split between many HTML pages. +@emph{(small download for each page)} -@item -@ruser{Cheat sheet}: -is a handy reference of the most common LilyPond commands. +@item @uref{../notation-big-page.html, Notation (big HTML)}: +read this manual as one huge HTML page. +@emph{(large single download, around 10? Mb)} -@item -@ruser{LilyPond command index}: -an index of all LilyPond @code{\commands}. +@item @uref{../notation.pdf, notation.pdf}: +download as a PDF file. +@emph{(large single download, 2.8 Mb)} -@item -@ruser{LilyPond index}: -a complete index. +@item @uref{FIXME, notation.info}: +GNU info format for documentation. FIXME, link broken. @end itemize -@end ignore +@divEnd +@divEnd @node Usage @unnumberedsec Usage -This book explains how to execute the programs and how to integrate -LilyPond notation with other programs. +@divClass{column-left-top} +@subheading Learning manual + +This book explains how to execute the programs, how to integrate +LilyPond notation with other programs, and suggests @qq{best +practices} for efficient use. It is recommended reading before +attempting any large projects. +@divEnd + +@divClass{column-right-top} +@subheading Read it now -@ignore @itemize -@item -@rprogram{Install}: -explains how to install LilyPond, including compilation if -desired. +@item @rprogramnamed{Top,Usage}: +read this manual in the same format as this one. -@item -@rprogram{Setup}: -describes how to configure your computer for optimum LilyPond -usage, such as using special environments for certain text -editors. +@end itemize +@divEnd -@item -@rprogram{Running LilyPond}: -shows how to run LilyPond and its helper programs. In addition, -this section explains how to upgrade input files from previous -versions of LilyPond. +@divClass{column-center-bottom} +@subheading Other formats -@item -@rprogram{LilyPond-book}: -explains the details behind creating documents with in-line music -examples, like this manual. +@divClass{keep-bullets} +@itemize -@item -@rprogram{Converting from other formats}: -explains how to run the conversion programs. These programs are -supplied with the LilyPond package, and convert a variety of music -formats to the @code{.ly} format. +@item @uref{../application/index.html, Usage (split HTML)}: +the manual is split between many HTML pages. +@emph{(small download for each page)} + +@item @uref{../application-big-page.html, Usage (big HTML)}: +read this manual as one huge HTML page. +@emph{(large single download, around 10? Mb)} + +@item @uref{../application.pdf, application.pdf}: +download as a PDF file. +@emph{(large single download, 2.8 Mb)} + +@item @uref{FIXME, application.info}: +GNU info format for documentation. FIXME, link broken. @end itemize -@end ignore +@divEnd +@divEnd @node Snippets @unnumberedsec Snippets -@rlsrnamed{Top,LilyPond Snippets}: this shows a -selected set of LilyPond snippets from the +@divClass{column-left-top} +@subheading Learning manual + +This shows a selected set of LilyPond snippets from the @uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository} (LSR). All the snippets are in the public domain. @@ -374,63 +398,152 @@ demonstrates new features of a development version must be added separately. These are stored in @file{input/new/} in the LilyPond source tree. -The list of snippets for each subsection of the Notation are -also linked from the @strong{See also} portion. +The list of snippets for each subsection of the Notation are also +linked from the @strong{See also} portion. +@divEnd + +@divClass{column-right-top} +@subheading Read it now + +@itemize + +@item @rlsrnamed{Top,Snippets}: +read this manual in the same format as this one. + +@end itemize +@divEnd + +@divClass{column-center-bottom} +@subheading Other formats + +@divClass{keep-bullets} +@itemize + +@item @uref{../snippets/index.html, Snippets (split HTML)}: +the manual is split between many HTML pages. +@emph{(small download for each page)} + +@item @uref{../snippets-big-page.html, Snippets (big HTML)}: +read this manual as one huge HTML page. +@emph{(large single download, around 10? Mb)} + +@item @uref{../snippets.pdf, snippets.pdf}: +download as a PDF file. +@emph{(large single download, 2.8 Mb)} + +@item @uref{FIXME, snippets.info}: +GNU info format for documentation. FIXME, link broken. + +@end itemize +@divEnd +@divEnd @node FAQ @unnumberedsec FAQ -@warning{to be moved into the actual Documentation/ in master)} - +@divClass{column-center-top} +@subheading Introductory questions -@subheading Where are the graphical canvas, menus, and toolbars? +@subsubheading Where are the graphical canvas, menus, and toolbars? LilyPond requires you to write music as text. Please read about our @ref{Text input}. -@subheading There's a lot of documentation! Do I need to read it? +@subsubheading There's a lot of documentation! Do I need to read it? -You need to read the @ref{Learning}. As for the rest of -documentation, you only need to read the sections which discuss -the notation that you wish to create. +You need to read the @ref{Learning, Learning manual}. As for the +rest of documentation, you only need to read the sections which +discuss the notation that you wish to create. -@subheading That's still a lot of reading! Is it worth it? +@subsubheading That's still a lot of reading! Is it worth it? Please decide for yourself; the reasons why you might want to use LilyPond are given in the @ref{Introduction}. +@divEnd + +@divClass{column-center-bottom} +@subheading Usage questions -@subheading Something isn't working! How do I fix it? +@subsubheading Something isn't working! How do I fix it? This is explained in @@ref@{FIXME LM or AU x.y@}. -@subheading Why do you change the syntax? +@subsubheading Why do you change the syntax? This is explained in @@ref@{FIXME AU x.y@}. +@divEnd + @node Changes @unnumberedsec Changes -previous-named "NEWS" doc. +@divClass{column-left-top} +@subheading Learning manual -this is a summary of important changes -and new features in LilyPond since the previous version. +This is a summary of important changes and new features in +LilyPond since the previous stable version. + +@divEnd + +@divClass{column-right-top} +@subheading Read it now + +@itemize + +@item @rchangesnamed{Top,Changes}: +read this manual in the same format as this one. + +@end itemize +@divEnd + +@divClass{column-center-bottom} +@subheading Other formats + +@divClass{keep-bullets} +@itemize + +@c Changes isn't available as a split manual. +@c (maybe it should be, but it isn't so far) +@c @item @uref{../changes/index.html, Changes (split HTML)}: +@c the manual is split between many HTML pages. +@c @emph{(small download for each page)} + +@c @item @uref{../changes-big-page.html, Changes (big HTML)}: +@c read this manual as one huge HTML page. +@c @emph{(large single download, around 10? Mb)} + +@item @uref{../changes.html, Changes}: +read this manual as a HTML page. + +@item @uref{../changes.pdf, changes.pdf}: +download as a PDF file. +@emph{(small single download, 0.5 ?? Mb)} + +@item @uref{FIXME, changes.info}: +GNU info format for documentation. FIXME, link broken. + +@end itemize +@divEnd +@divEnd @node Internals @unnumberedsec Internals -@rinternalsnamed{Top,Internals}: this is a set -of heavily cross linked HTML pages which document the nitty-gritty -details of each and every LilyPond class, object, and function. -It is produced directly from the formatting definitions in the -source code. +@divClass{column-left-top} +@subheading Learning manual + +This is a set of heavily cross linked HTML pages which document +the nitty-gritty details of each and every LilyPond class, object, +and function. It is produced directly from the formatting +definitions in the source code. Almost all formatting functionality that is used internally is available directly to the user. For example, most variables that @@ -441,6 +554,44 @@ Reference has a @b{See also} subsection, which refers to the generated documentation. In the HTML document, these subsections have clickable links. +@divEnd + +@divClass{column-right-top} +@subheading Read it now + +@itemize + +@item @rinternalsnamed{Top,Internals}: +read this manual in the same format as this one. + +@end itemize +@divEnd + +@divClass{column-center-bottom} +@subheading Other formats + +@divClass{keep-bullets} +@itemize + +@item @uref{../internals/index.html, Internals (split HTML)}: +the manual is split between many HTML pages. +@emph{(small download for each page)} + +@item @uref{../internals-big-page.html, Internals (big HTML)}: +read this manual as one huge HTML page. +@emph{(large single download, around 10? Mb)} + +@item @uref{../internals.pdf, internals.pdf}: +download as a PDF file. +@emph{(large single download, 2.8 Mb)} + +@item @uref{FIXME, internals.info}: +GNU info format for documentation. FIXME, link broken. + +@end itemize +@divEnd +@divEnd + @node Translated diff --git a/Documentation/learning.tely b/Documentation/learning.tely index f900e5e27b..a9eb18f26f 100644 --- a/Documentation/learning.tely +++ b/Documentation/learning.tely @@ -44,8 +44,11 @@ Free Documentation License''. @macro introText @cartouche This file provides an introduction to GNU LilyPond version -@version{}. For more information about how this fits with the -other documentation, see @rgeneral{Manuals}. +@version{}. + +For more information about how this fits with the other +documentation, or to read this manual in other formats, see +@rgeneral{Manuals}. @end cartouche @end macro @@ -83,9 +86,9 @@ For LilyPond version @version{} @introText{} @menu -* Introduction:: Begin here. -* Common notation:: A tutorial introduction. -* Fundamental concepts:: Basic concepts required for reading the rest of this manual. +* Introduction:: Basics of typesetting with LilyPond. +* Common notation:: Writing very commmon notation. +* Fundamental concepts:: Basic concepts required for reading the rest of the manuals. * Tweaking output:: Introduction to modifying output. Appendices @@ -97,6 +100,7 @@ Appendices @end menu +@ignore @ifhtml @ifclear bigpage This document is also available as a @@ -109,6 +113,7 @@ This document is also available as a @uref{source/Documentation/learning/index.html,HTML indexed multiple pages}. @end ifset @end ifhtml +@end ignore @end ifnottex diff --git a/Documentation/learning/common-notation.itely b/Documentation/learning/common-notation.itely index ac86a64286..c9eb78dd1d 100644 --- a/Documentation/learning/common-notation.itely +++ b/Documentation/learning/common-notation.itely @@ -62,6 +62,10 @@ on one staff. @node Accidentals and key signatures @subsection Accidentals and key signatures +@warning{New users are often confused by these -- please read the +warning at the bottom of this page, especially if you are not +familiar with music theory!} + @subheading Accidentals @cindex accidentals @@ -169,6 +173,11 @@ note with pitch B-natural.} In the key of A-flat major, it b @end lilypond +If the above seems confusing, consider this: if you were playing a +piano, which key would you hit? If you would press a black key, +then you @emph{must} add @code{-is} or @code{-es} to the note +name! + Adding all alterations explicitly might require a little more effort when typing, but the advantage is that @notation{transposing} is easier, and accidentals can be printed diff --git a/Documentation/learning/fundamental.itely b/Documentation/learning/fundamental.itely index d9fb48d15f..690c7352f2 100644 --- a/Documentation/learning/fundamental.itely +++ b/Documentation/learning/fundamental.itely @@ -471,10 +471,11 @@ and @ruser{Ossia staves}. @cindex bracket types @cindex brackets, enclosing vs. marking -You have already met a number of different types of bracket in -writing the input file to LilyPond. These obey different rules -which can be confusing at first. Before we explain the rules -let's first review the different types of bracket. +You have already met a number of different types of bracket and +bracket-like constructs in writing the input file to LilyPond. +These obey different rules which can be confusing at first. +Let's first review the different types of brackets and bracket-like +constructs. @c attempt to force this onto a new page @need 50 @@ -506,9 +507,10 @@ different types to be properly nested, like this, @code{<< [ @{ ( .. ) opposite order to the opening brackets. This @strong{is} a requirement for the three types of bracket described by the word @q{Encloses} in the table above -- they must nest properly. However, -the remaining brackets, described with the word @q{Marks} in the table -above together with ties and tuplets, do @strong{not} have to nest -properly with any of the brackets. In fact, these are not brackets in +the remaining bracket-like constructs, described with the word +@q{Marks} in the table above together with ties and tuplets, do +@strong{not} have to nest properly with any of the brackets or +bracket-like constructs. In fact, these are not brackets in the sense that they enclose something -- they are simply markers to indicate where something starts and ends. @@ -520,13 +522,12 @@ musical, perhaps, but possible: { g8\( a b[ c b\) a] } @end lilypond -In general, different kinds of brackets, and those implied by -tuplets, ties and grace notes, may be mixed freely. -This example shows a beam extending into a tuplet (line 1), -a slur extending into a tuplet (line 2), -a beam and a slur extending into a tuplet, a tie crossing -two tuplets, and a phrasing slur extending out of a tuplet -(lines 3 and 4). +In general, different kinds of brackets, bracket-like constructs, +and those implied by tuplets, ties and grace notes, may be mixed +freely. This example shows a beam extending into a tuplet (line 1), +a slur extending into a tuplet (line 2), a beam and a slur +extending into a tuplet, a tie crossing two tuplets, and a +phrasing slur extending out of a tuplet (lines 3 and 4). @lilypond[quote,verbatim,fragment,ragged-right] { diff --git a/Documentation/learning/introduction.itely b/Documentation/learning/introduction.itely index 67b456bfde..7e34c686cc 100644 --- a/Documentation/learning/introduction.itely +++ b/Documentation/learning/introduction.itely @@ -66,7 +66,7 @@ the result looks like this: @end lilypond @warning{Notes and lyrics in LilyPond input must always be -surrounded by @strong{@{ curly braces @}}. The braces +surrounded by @w{@strong{@{ curly braces @}}}. The braces should also be surrounded by a space unless they are at the beginning or end of a line to avoid ambiguities. The braces may be omitted in some examples in this manual, but don't forget them @@ -77,10 +77,12 @@ In addition, LilyPond input is @strong{case sensitive}. @w{@code{@{ c d e @}}} is valid input; @w{@code{@{ C D E @}}} will produce an error message. + @smallspace -@subheading Entering music and viewing output +@subheading Viewing output +@c TODO: move index entries @cindex PDF file @cindex viewing music @cindex text editors @@ -91,11 +93,31 @@ produce an error message. @cindex running LilyPond under Unix @cindex Unix, running LilyPond -In this section we will explain what commands to run and how to -view or print the output. +Producing output depends on your operating system and the +program(s) you use. + +@itemize + +@item +@ref{MacOS X, @sourceimage{logo-macosx,,,}} +@ref{MacOS X, MacOS X} (graphical) -Note that there are several other text editors available with -better support for LilyPond. For more information, see +@item +@ref{Windows, @sourceimage{logo-windows,,,}} +@ref{Windows, Microsoft Windows} (graphical) + +@item +@ref{Command-line, @sourceimage{logo-linux,,,} +@sourceimage{logo-freebsd,,,} +@sourceimage{logo-macosx,,,} +@sourceimage{logo-windows,,,} +} +@ref{Command-line, All operating systems} (command-line) + +@end itemize + +There are several other text editors available with better support +for LilyPond. For more information, see @rgeneral{Alternate input}. @warning{The first time you ever run LilyPond, it may take a @@ -122,6 +144,7 @@ For future use of LilyPond, you should begin by selecting @q{New} or @q{Open}. You must save your file before typesetting it. If any errors occur in processing, please see the log window. +@c FIXME: add screenshots @node Windows @subsection Windows @@ -129,7 +152,7 @@ any errors occur in processing, please see the log window. @warning{These instructions assume that you are using the built-in LilyPad editor. If you are using any of the programs described in @rgeneral{Alternate input}, please consult the documentation for -programs if you have any problems compiling a file.} +those programs if you have any problems compiling a file.} On Windows, if you double-click in the LilyPond icon on the Desktop, it will open a simple text editor with an example file. @@ -154,14 +177,17 @@ also produces a @file{.log} file that contains some information on what LilyPond has done to the file. If any errors occur, please examine this file. +@c FIXME: add screenshots + @node Command-line @subsection Command-line -@warning{These instructions assume that you are using the built-in -LilyPad editor. If you are using any of the programs described in -@rgeneral{Alternate input}, please consult the documentation for -programs if you have any problems compiling a file.} +@warning{These instructions assume that you are using commond unix +command-line programs. If you are using any of the programs +described in @rgeneral{Alternate input}, please consult the +documentation for those programs if you have any problems +compiling a file.} Create a text file called @file{test.ly} and enter: @@ -195,6 +221,7 @@ Layout output to `test.ps'... Converting to `test.pdf'... @end example +You may view or print the resulting @file{text.pdf}. @node How to write input files @@ -605,7 +632,7 @@ FIXME: fluff here @node Omitting braces -@unnumberedsubsec Omitting braces +@subsection Omitting braces @cindex how to read the manual @@ -643,7 +670,9 @@ format the manual this way. @node Clickable examples -@unnumberedsubsec Clickable examples +@subsection Clickable examples + +@warning{This features is only available in the HTML manuals.} Many people learn programs by trying and fiddling around with the program. This is also possible with LilyPond. If you click on a @@ -665,15 +694,49 @@ cut-&-pastable section} to the bottom of the file. @node Keyboard navigation -@unnumberedsubsec Keyboard navigation +@subsection Keyboard navigation + +@warning{This features is only available in the HTML manuals.} + +@c TODO: once this is figured out, insert it here. +We are currently working on this feature. @node Overview of manuals -@unnumberedsubsec Overview of manuals +@subsection Overview of manuals + +There is a lot of documentation for LilyPond. New users are +sometimes confused about what part(s) they should read, and +occasionally skip over reading vital portions. + +@warning{Please do not skip over important parts of the +documentation. You will find it much harder to understand later +sections.} + +@itemize + +@item +@strong{Before trying to do @emph{anything}}: read the Learning +manual's @ref{Introduction}, and @ref{Common notation}. If you +encounter musical terms which you do not recognize, please look +them up in the @rglosnamed{Top, Glossary}. + +@item +@strong{Before trying to write a complete piece of music}: read +the Learning manual's @ref{Fundamental concepts}. After that, you +may want to look in relevant sections of the +@rusernamed{Top, Notation reference}. + +@item +@strong{Before trying to change the default output}: read the +Learning manual's @ref{Tweaking output}. + +@item +@strong{Before undertaking a large project}: read Usage document's +@rprogram{Suggestions for writing files}. + +@end itemize -FIXME: a brief discussion about the rest of the LM, and pointers -to specific places. like NR for general reference, AU for -suggestions for writing files, etc. diff --git a/Documentation/macros.itexi b/Documentation/macros.itexi index 6cb7efa904..503e517d7b 100644 --- a/Documentation/macros.itexi +++ b/Documentation/macros.itexi @@ -111,6 +111,7 @@ @c @rlsr @c @rprogram @c @ruser +@c @rchanges @c @c All these also have a @...named version which allows to specify the @c displayed text for the reference as second argument. @@ -157,6 +158,16 @@ @ref{\TEXT\,,\DISPLAY\,notation-big-page,Notation Reference} @end macro +@macro rchanges{TEXT} +@vindex \TEXT\ +@ref{\TEXT\,,,changes-big-page,Changes} +@end macro + +@macro rchangesnamed{TEXT,DISPLAY} +@vindex \TEXT\ +@ref{\TEXT\,,\DISPLAY\,changes-big-page,Changes} +@end macro + @macro rgeneral{TEXT} @vindex \TEXT\ @ref{\TEXT\,,,general-big-page,General Information} @@ -244,6 +255,16 @@ @ref{\TEXT\,,\DISPLAY\,notation,Notation Reference} @end macro +@macro rchanges{TEXT} +@vindex \TEXT\ +@ref{\TEXT\,,,changes,Changes} +@end macro + +@macro rchangesnamed{TEXT,DISPLAY} +@vindex \TEXT\ +@ref{\TEXT\,,\DISPLAY\,changes,Changes} +@end macro + @macro rgeneral{TEXT} @vindex \TEXT\ @ref{\TEXT\,,,general,General Information} @@ -326,6 +347,16 @@ @ref{\TEXT\,,\DISPLAY\,lilypond-notation,Notation Reference} @end macro +@macro rchanges{TEXT} +@vindex \TEXT\ +@ref{\TEXT\,,,lilypond-changes,Changes} +@end macro + +@macro rchangesnamed{TEXT,DISPLAY} +@vindex \TEXT\ +@ref{\TEXT\,,\DISPLAY\,lilypond-changes,Changes} +@end macro + @macro rgeneral{TEXT} @vindex \TEXT\ @ref{\TEXT\,,,lilypond-general,General Information} @@ -425,6 +456,16 @@ @ref{\TEXT\,,\DISPLAY\,notation,Notation Reference} @end macro +@macro rchanges{TEXT} +@lilyvindex{\TEXT\} +@ref{\TEXT\,,,changes,Changes} +@end macro + +@macro rchangesnamed{TEXT,DISPLAY} +@lilyvindex{\TEXT\} +@ref{\TEXT\,,\DISPLAY\,changes,Changes} +@end macro + @macro rgeneral{TEXT} @lilyvindex{\TEXT\} @ref{\TEXT\,,,general,General Information} diff --git a/Documentation/notation.tely b/Documentation/notation.tely index ff1d35e253..2489b1a059 100644 --- a/Documentation/notation.tely +++ b/Documentation/notation.tely @@ -153,17 +153,17 @@ More information can be found at @uref{http://@/www@/.lilypond@/.org/}. The website contains on-line copies of this and other documentation. -@include dedication.itely @menu -* Musical notation:: Musical notation. +* Musical notation:: Notation which is used in + almost all projects. * Specialist notation:: Notation which is only used for specific purposes. * General input and output:: General information about LilyPond input and output. * Spacing issues:: Display of output on paper. * Changing defaults:: Tuning output. -* Interfaces for programmers:: Expert usage. +* Interfaces for programmers:: How to interface with scheme. Appendices diff --git a/Documentation/notation/changing-defaults.itely b/Documentation/notation/changing-defaults.itely index 6ed8f24d7a..5ea8a2ebb5 100644 --- a/Documentation/notation/changing-defaults.itely +++ b/Documentation/notation/changing-defaults.itely @@ -744,6 +744,22 @@ after calling @code{\RemoveEmptyStaffContext}, ie @node Defining new contexts @subsection Defining new contexts +@cindex contexts, defining new +@cindex engravers, including in contexts + +@funindex \alias +@funindex alias +@funindex \name +@funindex name +@funindex \type +@funindex type +@funindex \consists +@funindex consists +@funindex \accepts +@funindex accepts +@funindex \denies +@funindex denies + Specific contexts, like @code{Staff} and @code{Voice}, are made of simple building blocks. It is possible to create new types of contexts with different combinations of engraver plug-ins. diff --git a/Documentation/notation/notation-appendices.itely b/Documentation/notation/notation-appendices.itely index bce07b59df..801cd923e3 100644 --- a/Documentation/notation/notation-appendices.itely +++ b/Documentation/notation/notation-appendices.itely @@ -895,20 +895,25 @@ The following styles may be used for note heads. @node Technical glossary @appendixsec Technical glossary -A glossary of the technical terms and concepts used internally. +A glossary of the technical terms and concepts used internally in +LilyPond. These terms may appear in the manuals, on mailing lists +or in the source code. @menu * alist:: * callback:: +* closure:: * glyph:: * grob:: +* immutable:: * interface:: * lexer:: +* mutable:: * output-def:: * parser:: * parser variable:: * prob:: -* simple-closure:: +* simple closure:: * smob:: * stencil:: @end menu @@ -940,6 +945,32 @@ layer. Callbacks are used extensively in LilyPond to permit user-level Scheme code to define how many low-level actions are performed. + +@node closure +@unnumberedsubsec closure + +@cindex closure +@cindex simple closure + +In Scheme, a @strong{closure} is created when a function, usually +a lambda expression, is passed as a variable. The closure contains +the function's code plus references to the lexical bindings of the +function's free variables (i.e. those variables used in the +expression but defined outside it). When this function is applied +to different arguments later, the free variable bindings that were +captured in the closure are used to obtain the values of the free +variables to be used in the calculation. One useful property of +closures is the retention of internal variable values between +invocations, so permitting state to be maintained. + +A @strong{simple closure} is a closure whose expression has no free +variables and hence no free variable bindings. + +A simple closure is represented in LilyPond by a smob containing +the expression and a method to apply the expression to a passed +list of arguments. + + @node glyph @unnumberedsubsec glyph @@ -969,8 +1000,8 @@ Notation Reference: LilyPond objects which represent items of notation in the printed output such as note heads, stems, slurs, ties, fingering, clefs, etc are called @q{Layout objects}, often known as @q{GRaphical -OBjects}, or @strong{grobs} for short. - +OBjects}, or @strong{grobs} for short. They are represented by +instances of the @code{Grob} class. @seealso Learning Manual: @@ -979,9 +1010,30 @@ Learning Manual: @rlearning{Properties of layout objects}. Internals Reference: +@rinternals{grob-interface}, @rinternals{All layout objects}. +@node immutable +@unnumberedsubsec immutable + +@cindex immutable objects +@cindex immutable properties +@cindex shared properties + +An @strong{immutable} object is one whose state cannot be modified +after creation, in contrast to a mutable object, which can be +modified after creation. + +In LilyPond, immutable or shared properties define the default +style and behavior of grobs. They are shared between many objects. +In apparent contradiction to the name, they can be changed using +@code{\override} and @code{\revert}. + +@seealso +Notation Reference: +@ref{mutable}. + @node interface @unnumberedsubsec interface @@ -993,7 +1045,6 @@ Actions and properties which are common to a number of grobs are grouped together in an object called a @code{grob-interface}, or just @q{interface} for short. - @seealso Learning Manual: @rlearning{Objects and interfaces}, @@ -1023,6 +1074,25 @@ The LilyPond lexer is built with Flex from the lexer file is part of the source code and is not included in the LilyPond binary installation. + +@node mutable +@unnumberedsubsec mutable + +@cindex mutable objects +@cindex mutable properties + +A @strong{mutable} object is one whose state can be modified after +creation, in contrast to an immutable object, whose state is fixed +at the time of creation. + +In LilyPond, mutable properties contain values that are specific to +one grob. Typically, lists of other objects or results from +computations are stored in mutable properties. + +@seealso +Notation Reference: +@ref{immutable}. + @node output-def @unnumberedsubsec output-def @@ -1032,6 +1102,7 @@ An instance of the @code{Output-def} class contains the methods and data structures associated with an output block. Instances are created for midi, layout and paper blocks. + @node parser @unnumberedsubsec parser @@ -1054,9 +1125,26 @@ parser during the program build by the parser generator, Bison. It is part of the source code and is not included in the LilyPond binary installation. + @node parser variable @unnumberedsubsec parser variable +@cindex parser variable +@cindex Scheme variable +@cindex global variable +@cindex afterGraceFraction +@cindex musicQuotes +@cindex mode +@cindex output-count +@cindex output-suffix +@cindex parseStringResult +@cindex partCombineListener +@cindex pitchnames +@cindex toplevel-bookparts +@cindex toplevel-scores +@cindex showLastLength +@cindex showFirstLength + These are variables defined directly in Scheme. Their direct use by users is strongly discouraged, because their scoping semantics can be confusing. @@ -1086,21 +1174,62 @@ LilyPond uses the following parser variables: @item showFirstLength @end itemize + @node prob @unnumberedsubsec prob -TODO -@node simple-closure -@unnumberedsubsec simple-closure -TODO +@cindex prob +@cindex property object + +PRoperty OBjects, or @strong{probs} for short, are instances of +the @code{Prob} class, a simple base class for objects which have +mutable and immutable property alists and the methods to manipulate +them. The @code{Music} and @code{Stream_event} classes derive from +@code{Prob}. Instances of the @code{Prob} class are also created +to hold the formatted content of system grobs and titling blocks +during page layout. + + +@node simple closure +@unnumberedsubsec simple closure + +See @ref{closure}. + @node smob @unnumberedsubsec smob -TODO + +@cindex smob +@cindex Scheme object + +@strong{Smobs}, or ScheMe OBjects, are part of the mechanism used +by Guile to export C and C++ objects to Scheme code. In LilyPond, +smobs are created from C++ objects through macros. There are two +types of smob objects: simple smobs, intended for simple immutable +objects like numbers, and complex smobs, used for objects with +identities. If you have access to the LilyPond sources, more +information can be found in @file{lily/includes/smob.hh}. @node stencil @unnumberedsubsec stencil -TODO + +@cindex stencil + +An instance of the @strong{stencil} class holds the information +required to print a typographical object. It is a simple smob +containing a confining box, which defines the vertical and +horizontal extents of the object, and a Scheme expression which +will print the object when evaluated. Stencils may be combined +to form more complex stencils defined by a tree of Scheme +expressions formed from the Scheme expressions of the component +stencils. + +The @code{stencil} property, which connects a grob to its stencil, +is defined in the @code{grob-interface} interface. + +@seealso +Internals Reference: +@rinternals{grob-interface}. @node All context properties diff --git a/Documentation/notation/percussion.itely b/Documentation/notation/percussion.itely index 0ba1d7cbe1..ebcdb12dfa 100644 --- a/Documentation/notation/percussion.itely +++ b/Documentation/notation/percussion.itely @@ -194,13 +194,11 @@ down = \drummode { The above example shows verbose polyphonic notation. The short polyphonic notation, described in @rlearning{I'm hearing Voices}, -can also be used if the voices are instantiated by hand first. +can also be used. For example, @lilypond[quote,verbatim] \new DrumStaff << - \new DrumVoice = "1" { s1*2 } - \new DrumVoice = "2" { s1*2 } \drummode { bd4 sn4 bd4 sn4 << { diff --git a/Documentation/notation/programming-interface.itely b/Documentation/notation/programming-interface.itely index 5949236538..dc11ee1a6e 100644 --- a/Documentation/notation/programming-interface.itely +++ b/Documentation/notation/programming-interface.itely @@ -45,7 +45,7 @@ This section discusses how to create music functions within LilyPond. @node Overview of music functions @subsection Overview of music functions -Making a function which substitutes a variable into LilyPond +Making a function that substitutes a variable into LilyPond code is easy. The general form of these functions is @example @@ -67,10 +67,9 @@ where variables as @code{#$var1}, etc. @end multitable -There following input types may be used as variables -in a music function. This list is not exhaustive; see -other documentation specifically about Scheme for more -variable types. +The following input types may be used as variables in a music +function. This list is not exhaustive; see other documentation +specifically about Scheme for more variable types. @multitable @columnfractions .33 .66 @headitem Input type @tab @var{vari-type?} notation @@ -228,7 +227,7 @@ withAlt = #(define-music-function (parser location mag music) (number? ly:music? @subsection Void functions A music function must return a music expression, but sometimes we -may want to have a function which does not involve music (such as +may want to have a function that does not involve music (such as turning off Point and Click). To do this, we return a @code{void} music expression. @@ -254,7 +253,7 @@ noPointAndClick = @subsection Functions without arguments In most cases a function without arguments should be written -with an variable, +with a variable, @example dolce = \markup@{ \italic \bold dolce @} @@ -351,11 +350,11 @@ traLaLa = { c'4 d'4 } @c Due to parser lookahead -In this example, the assignment happens after parser has verified that -nothing interesting happens after @code{traLaLa = @{ ... @}}. Without -the dummy statement in the above example, the @code{newLa} definition -is executed before @code{traLaLa} is defined, leading to a syntax -error. +In this example, the assignment happens after the parser has +verified that nothing interesting happens after +@code{traLaLa = @{ ... @}}. Without the dummy statement in the +above example, the @code{newLa} definition is executed before +@code{traLaLa} is defined, leading to a syntax error. The above example shows how to @q{export} music expressions from the input to the Scheme interpreter. The opposite is also possible. By @@ -422,8 +421,8 @@ class @code{Music}. The actual information of a music expression is stored in properties. For example, a @rinternals{NoteEvent} has @code{pitch} and @code{duration} properties that store the pitch and duration of that -note. A list of all properties available is in the internals manual, -under @rinternals{Music properties}. +note. A list of all properties available can be found in the +Internals Reference, under @rinternals{Music properties}. A compound music expression is a music object that contains other music objects in its properties. A list of objects can be stored in @@ -569,7 +568,7 @@ of the @code{NoteEvent} object, (ly:make-pitch 0 0 0) @end example -The note pitch can be changed by setting this 'pitch property, +The note pitch can be changed by setting this @code{'pitch} property, @funindex \displayLilyMusic @@ -586,10 +585,9 @@ d' @node Doubling a note with slurs (example) @subsection Doubling a note with slurs (example) -Suppose we want to create a function which translates -input like @code{a} into @code{a( a)}. We begin -by examining the internal representation of the music -we want to end up with. +Suppose we want to create a function that translates input like +@code{a} into @code{a( a)}. We begin by examining the internal +representation of the desired result. @example \displayMusic@{ a'( a') @} @@ -672,11 +670,11 @@ doubleSlur = #(define-music-function (parser location note) (ly:music?) The easy way to add articulation to notes is to merge two music expressions into one context, as explained in @ref{Creating contexts}. However, suppose that we want to write -a music function which does this. +a music function that does this. A @code{$variable} inside the @code{#@{...#@}} notation is like -using a regular @code{\variable} in classical LilyPond -notation. We know that +a regular @code{\variable} in classical LilyPond notation. We +know that @example @{ \music -. -> @} @@ -776,15 +774,16 @@ function). Recall that our purpose is to add a marcato to an used elsewhere. Now we have a @code{result-event-chord}, which is a -@code{NoteEventChord} expression and is a copy of @code{event-chord}. We -add the marcato to its elements list property. +@code{NoteEventChord} expression and is a copy of +@code{event-chord}. We add the marcato to its @code{'elements} +list property. @example (set! place new-value) @end example -Here, what we want to set (the @q{place}) is the @q{elements} property of -@code{result-event-chord} expression. +Here, what we want to set (the @q{place}) is the @code{'elements} +property of @code{result-event-chord} expression. @example (ly:music-property result-event-chord 'elements) @@ -793,7 +792,7 @@ Here, what we want to set (the @q{place}) is the @q{elements} property of @code{ly:music-property} is the function used to access music properties (the @code{'elements}, @code{'duration}, @code{'pitch}, etc, that we see in the @code{\displayMusic} output above). The new value is the -former elements property, with an extra item: the +former @code{'elements} property, with an extra item: the @code{ArticulationEvent} expression, which we copy from the @code{\displayMusic} output, @@ -803,10 +802,10 @@ former elements property, with an extra item: the (ly:music-property result-event-chord 'elements)) @end example -@code{cons} is used to add an element to a list without modifying the -original list. This is what we -want: the same list as before, plus the new @code{ArticulationEvent} -expression. The order inside the elements property is not important here. +@code{cons} is used to add an element to a list without modifying +the original list. This is what we want: the same list as before, +plus the new @code{ArticulationEvent} expression. The order +inside the @code{'elements} property is not important here. Finally, once we have added the marcato articulation to its @code{elements} property, we can return @code{result-event-chord}, hence the last line of @@ -839,7 +838,7 @@ We may verify that this music function works correctly, @section Markup programmer interface Markups are implemented as special Scheme functions which produce a -Stencil object given a number of arguments. +@code{Stencil} object given a number of arguments. @menu * Markup construction in Scheme:: @@ -878,7 +877,7 @@ LilyPond markup syntax and Scheme markup syntax. @item @code{\markup markup1} @tab @code{(markup markup1)} @item @code{\markup @{ markup1 markup2 ... @}} @tab @code{(markup markup1 markup2 ... )} -@item @code{\command} @tab @code{#:command} +@item @code{\markup-command} @tab @code{#:markup-command} @item @code{\variable} @tab @code{variable} @item @code{\center-column @{ ... @}} @tab @code{#:center-column ( ... )} @item @code{string} @tab @code{"string"} @@ -1020,7 +1019,7 @@ cons'ing a list with the extra setting. Suppose that we are typesetting a recitative in an opera and we would like to define a command that will show character names in a custom manner. Names should be printed with small caps and moved a -bit to the left and top. We will define a @code{\character} command +bit up and to the left. We will define a @code{\character} command which takes into account the necessary translation and uses the newly defined @code{\smallcaps} command: @@ -1078,8 +1077,8 @@ The final result is as follows: We have used the @code{caps} font shape, but suppose that our font does not have a small-caps variant. In that case we have to fake -the small caps font by setting a string in upcase with the first -letter a little larger: +the small caps font by setting a string in uppercase with the +first letter a little larger: @example #(define-markup-command (smallcaps layout props str) (string?) @@ -1166,7 +1165,7 @@ Markup list commands are defined with the @code{define-markup-list-command} Scheme macro, which is similar to the @code{define-markup-command} macro described in @ref{New markup command definition}, except that where the latter returns -a single stencil, the former returns a list stencils. +a single stencil, the former returns a list of stencils. In the following example, a @code{\paragraph} markup list command is defined, which returns a list of justified lines, the first one being @@ -1184,14 +1183,14 @@ Besides the usual @code{layout} and @code{props} arguments, the @code{args}. The predicate for markup lists is @code{markup-list?}. First, the function gets the indent width, a property here named -@code{par-indent}, from the property list @code{props} If the property -is not found, the default value is @code{2}. Then, a list of justified -lines is made using the @code{make-justified-lines-markup-list} -function, which is related to the @code{\justified-lines} -built-in markup list command. An horizontal space is added at the -beginning using the @code{make-hspace-markup} function. Finally, the -markup list is interpreted using the @code{interpret-markup-list} -function. +@code{par-indent}, from the property list @code{props}. If the +property is not found, the default value is @code{2}. Then, a +list of justified lines is made using the +@code{make-justified-lines-markup-list} function, which is related +to the @code{\justified-lines} built-in markup list command. A +horizontal space is added at the beginning using the +@code{make-hspace-markup} function. Finally, the markup list is +interpreted using the @code{interpret-markup-list} function. This new markup list command can be used as follows: @example @@ -1231,9 +1230,10 @@ syntax for this is \applyContext @var{function} @end example -@var{function} should be a Scheme function taking a single argument, -being the context to apply it to. The following code will print the -current bar number on the standard output during the compile: +@var{function} should be a Scheme function that takes a single +argument: the context in which the @code{\applyContext} command is +being called. The following code will print the current bar +number on the standard output during the compile: @example \applyContext @@ -1295,8 +1295,8 @@ note-heads on the center-line: @node Scheme procedures as properties @section Scheme procedures as properties -Properties (like thickness, direction, etc.) can be set at fixed values -with \override, e.g. +Properties (like @code{thickness}, @code{direction}, etc.) can be +set at fixed values with @code{\override}, e.g. @example \override Stem #'thickness = #2.0 @@ -1378,11 +1378,11 @@ F = \tweak #'font-size #-3 -\flageolet @end example @noindent -With other words, @code{\tweak} doesn't behave like an articulation +In other words, @code{\tweak} doesn't behave like an articulation regarding the syntax; in particular, it can't be attached with @code{^} and @code{_}. -Using Scheme, this problem can be circumvented. The route to the +Using Scheme, this problem can be avoided. The route to the result is given in @ref{Adding articulation to notes (example)}, especially how to use @code{\displayMusic} as a helping guide. @@ -1419,12 +1419,13 @@ There are a few classes of difficult adjustments. @item -One type of difficult adjustment is the appearance of spanner objects, -such as slur and tie. Initially, only one of these objects is created, -and they can be adjusted with the normal mechanism. However, in some -cases the spanners cross line breaks. If this happens, these objects -are cloned. A separate object is created for every system that it is -in. These are clones of the original object and inherit all +One type of difficult adjustment involves the appearance of +spanner objects, such as slurs and ties. Usually, only one +spanner object is created at a time, and it can be adjusted with +the normal mechanism. However, occasionally a spanner crosses a +line break. When this happens, the object is cloned. A separate +object is created for every system in which the spanner appears. +The new objects are clones of the original object and inherit all properties, including @code{\override}s. @@ -1432,7 +1433,7 @@ In other words, an @code{\override} always affects all pieces of a broken spanner. To change only one part of a spanner at a line break, it is necessary to hook into the formatting process. The @code{after-line-breaking} callback contains the Scheme procedure that -is called after the line breaks have been determined, and layout +is called after the line breaks have been determined and layout objects have been split over different systems. In the following example, we define a procedure @@ -1440,17 +1441,17 @@ In the following example, we define a procedure @itemize @item -determines if we have been split across line breaks +determines if the spanner has been split across line breaks @item if yes, retrieves all the split objects @item -checks if we are the last of the split objects +checks if this grob is the last of the split objects @item if yes, it sets @code{extra-offset}. @end itemize This procedure is installed into @rinternals{Tie}, so the last part -of the broken tie is translated up. +of the broken tie is repositioned. @lilypond[quote,verbatim,ragged-right] #(define (my-callback grob) diff --git a/Documentation/notation/spacing.itely b/Documentation/notation/spacing.itely index a52bc68f90..7e9b1d66aa 100644 --- a/Documentation/notation/spacing.itely +++ b/Documentation/notation/spacing.itely @@ -1286,7 +1286,6 @@ staves inside a system. * Vertical spacing inside a system:: * Vertical spacing between systems:: * Explicit staff and system positioning:: -* Two-pass vertical spacing:: * Vertical collision avoidance:: @end menu @@ -1700,70 +1699,6 @@ Snippets: @rlsr{Spacing}. -@node Two-pass vertical spacing -@subsection Two-pass vertical spacing - -@warning{Two-pass vertical spacing is deprecated and will be removed in -a future version of LilyPond. Systems are now stretched automatically -in a single pass. See @ref{Vertical spacing inside a system}.} - -In order to automatically stretch systems so that they should fill the -space left on a page, a two-pass technique can be used: - -@enumerate -@item In the first pass, the amount of vertical space used to increase -the height of each system is computed and dumped to a file. -@item In the second pass, spacing inside the systems are -stretched according to the data in the page layout file. -@end enumerate - -The @code{ragged-bottom} property adds space between systems, while -the two-pass technique adds space between staves inside a system. - -To allow this behavior, a @code{tweak-key} variable has to be set in -each score @code{\layout} block, and the tweaks included in each score -music, using the @code{\scoreTweak} music function. - -@quotation -@verbatim -%% include the generated page layout file: -\includePageLayoutFile - -\score { - \new StaffGroup << - \new Staff << - %% Include this score tweaks: - \scoreTweak "scoreA" - { \clef french c''1 \break c''1 } - >> - \new Staff { \clef soprano g'1 g'1 } - \new Staff { \clef mezzosoprano e'1 e'1 } - \new Staff { \clef alto g1 g1 } - \new Staff { \clef bass c1 c1 } - >> - \header { - piece = "Score with tweaks" - } - %% Define how to name the tweaks for this score: - \layout { #(define tweak-key "scoreA") } -} -@end verbatim -@end quotation - -For the first pass, the @code{dump-tweaks} option should be set to -generate the page layout file. - -@example -lilypond -dbackend=null -d dump-tweaks .ly -lilypond .ly -@end example - - -@seealso -Snippets: -@rlsr{Spacing}. - - @node Vertical collision avoidance @subsection Vertical collision avoidance diff --git a/Documentation/pictures/GNUmakefile b/Documentation/pictures/GNUmakefile index d6cca648e2..c0f8fd9dd6 100644 --- a/Documentation/pictures/GNUmakefile +++ b/Documentation/pictures/GNUmakefile @@ -4,13 +4,14 @@ depth = ../.. BITMAP_IMAGES = $(call src-wildcard,*.png) $(call src-wildcard,*.jpg) EPS_ILLUSTRATIONS = $(call src-wildcard,*.eps) SVG_FILES = $(call src-wildcard,*.svg) +PDF_DIR = $(call src-wildcard,pdf/*.pdf) EXTRA_DIST_FILES = $(BITMAP_IMAGES) $(EPS_ILLUSTRATIONS) $(SVG_FILES) +EXTRA_DIST_FILES += $(PDF_DIR) OUT_PDF_IMAGES = $(EPS_ILLUSTRATIONS:%.eps=$(outdir)/%.pdf) OUT_BITMAP_IMAGES = $(BITMAP_IMAGES:%=$(outdir)/%) OUT_BITMAP_IMAGES += $(EPS_ILLUSTRATIONS:%.pdf=$(outdir)/%.png) -OUT_SVG_IMAGES = $(SVG_FILES:%.svg=$(outdir)/%.png) STEPMAKE_TEMPLATES = documentation @@ -22,7 +23,7 @@ include $(depth)/make/stepmake.make default: ifeq ($(out),www) -local-WWW-1: $(OUT_BITMAP_IMAGES) $(OUT_PDF_IMAGES) $(OUT_SVG_IMAGES) +local-WWW-1: $(OUT_BITMAP_IMAGES) $(OUT_PDF_IMAGES) endif ######### @@ -34,9 +35,6 @@ $(outdir)/%-flat-gray.png: %-flat-gray.png $(outdir)/%-flat-bw.png: %-flat-bw.png convert -depth 8 -geometry 50x50% $< $@ -$(outdir)/%.png: %.svg - convert -depth 8 -alpha Off -background white -layers flatten -trim +repage $< $@ - $(outdir)/%.png: %.png ln -f $< $@ diff --git a/Documentation/pictures/OpusAndFeta.png b/Documentation/pictures/OpusAndFeta.png new file mode 100644 index 0000000000..f766063fa5 Binary files /dev/null and b/Documentation/pictures/OpusAndFeta.png differ diff --git a/Documentation/pictures/annotated-demo.svg b/Documentation/pictures/annotated-demo.svg deleted file mode 100644 index acc7beea91..0000000000 --- a/Documentation/pictures/annotated-demo.svg +++ /dev/null @@ -1,7437 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - -  - - - та - - - Nacht. - - -  - - -  - - - - - -  - - - - - -  - - - - - - - - - - - - - - -  - - -  - - -  - - -  - - - - - - - - - cresc. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -  - - -  - - -  - - -  - - -  - - - - - -  - - - - - -  - - - - - -  - - - - - -  - - - - - -  - - - - - -  - - - ほへ - - - ner - - -  - - - - - -  - - - - - -  - - -  - - - - - -  - - - та - - - - - - Schö - - -  - - -  - - - - - -  - - -  - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - -  - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - ちり - - - Tag, - - -  - - - - - -  - - - - - -  - - - - - - - - -  - - - ぬる - - - - - - du - - - - - - - - - - - -  - - -  - - - - - -  - - - - - - - - - - - -  - - -  - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -  - - -  - - -  - - - f - - -  - - - Жъл - - - bist - - - - - - - - -  - - - - - -  - - - - - -  - - -  - - - - - -  - - - дю - - - - - - er - - -  - - - - - -  - - -  - - - - - -  - - -  - - - - - -  - - - - - - - - -  - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - ля - - - - - - wacht. - - -  - - -  - - - - - -  - - - - - -  - - -  - - -  - - -  - - -  - - - - - -  - - - - - -  - - -  - - - - - -  - - -  - - -  - - -  - - -  - - -  - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6 - - -  - - -  - - -  - - -  - - -  - - - - - - - - -  - - -  - - - - - - - - -  - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - -  - - -  - - -  - - -  - - -  - - - - - - та - - - Licht! - - - - - -  - - - - - -  - - - - - - - - -  - - - - - -  - - -  - - -  - - - та - - - Aus - - -  - - -  - - -  - - - - - - - - -  - - -  - - - - - -  - - -  - - - - - - - - -  - - -  - - -  - - - ほへど - - - - - - gol - - -  - - - - - - - - -  - - -  - - - - - - nen - - -  - - -  - - - - - - - - - - - - de - - -  - - -  - - -  - - -  - - - - - -  - - -  - - - - - - - - - - - - - - - - - -  - - - - - - - - -  - - -  - - -  - - - ぬるを - - - - - - Pfor - - -  - - -  - - - - - -  - - - - - -  - - - - - -  - - -  - - -  - - - ちり - - -  - - - - - -  - - - - - - - - - - - -  - - - - - - - - -  - - - - - -  - - - - - - - - - - - -  - - -  - - - дю - - - brichst - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - -  - - - - - -  - - -  - - - Жъл - - - ten - - -  - - - - - -  - - - - - - - - - - - -  - - - - - -  - - -  - - -  - - -  - - - - - -  - - - - - - - - - - - -  - - -  - - -  - - -  - - -  - - -  - - -  - - -  - - - זה - - - - - - sie - - -  - - - - - -  - - - - - - - - -  - - - - - -  - - -  - - -  - - -  - - - ля - - - - - - du - - - - - - - - -  - - - - - - - - - - - - - - -  - - -  - - - はに - - - - - - durch - - - - - - - - - - - - - - - - - - - - -  - - -  - - - - - - いろ - - - gend - - -  - - - - - - - - - - - - - - - - - - - - -  - - -  - - -  - - -  - - - כיף - - - die - - - - - - - - -  - - - - - -  - - - - - - - - -  - - - - - -  - - -  - - -  - - -  - - -  - - -  - - - - - -  - - - - - -  - - - - - - - - -  - - - - - - - - - - - - - - - - - -  - - - 3 - - -  - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -  - - - - - - - - - - - - geschwind - - - etwas - - - Lieblich, - - - - - -  - - - - - -  - - - - - - - - -  - - -  - - - - - - - - -  - - -  - - -  - - -  - - - - - - - - -  - - -  - - -  - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -  - - - - - - - - -  - - -  - - - - - - - - -  - - -  - - - - - - - - -  - - -  - - - - - - - - -  - - -  - - - - - - - - -  - - -  - - - - - - - - -  - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -  - - -  - - - - - - - - -  - - -  - - -  - - -  - - - - - -  - - -  - - -  - - -  - - -  - - -  - - - - - -  - - -  - - -  - - - - - - - - - - - - - - -  - - - - - -  - - - - - - - - - - - - - - -  - - -  - - -  - - -  - - -  - - -  - - -  - - -  - - - 2. - - - いろはに - - - 1. - - - - - - Sü - - -  - - -  - - - - - -  - - -  - - - כיף - - - ßes - - -  - - -  - - -  - - -  - - - 8 - - - 6 - - -  - - - 8 - - - 6 - - -  - - - 8 - - - 6 - - - 2. - - -  - - - - - - - - - - - - - - - LilyPond demo - - - - - - - - - - - - Slurs avoid accents - Automated collisionresolution - Rest under beamsautomatically moved - Unicode support for all texts - Dots avoid flagsautomatically - Cross staff slurs and beams - Advanced accidental placement - Heavier font and linesfor smaller staves - Horizontal shiftfor tilted slurs - Ledger linesstay separate - Clefs foldedunder other notes - Rounded tipson all symbols - Different thicknessesfor ledger, staff and bar lines - Compensation foroptical illusions - LilyPond's automatic typography - Ledger lines shortenedafter accidentals - Lyrics never collide - - - - - - - - - - - - - diff --git a/Documentation/pictures/color1-active.png b/Documentation/pictures/color1-active.png new file mode 100644 index 0000000000..efb5fedfe4 Binary files /dev/null and b/Documentation/pictures/color1-active.png differ diff --git a/Documentation/pictures/color1-bg.png b/Documentation/pictures/color1-bg.png new file mode 100644 index 0000000000..3f219478cc Binary files /dev/null and b/Documentation/pictures/color1-bg.png differ diff --git a/Documentation/pictures/color1-hover.png b/Documentation/pictures/color1-hover.png new file mode 100644 index 0000000000..23f29cec91 Binary files /dev/null and b/Documentation/pictures/color1-hover.png differ diff --git a/Documentation/pictures/color2-active.png b/Documentation/pictures/color2-active.png new file mode 100644 index 0000000000..16bdaca60a Binary files /dev/null and b/Documentation/pictures/color2-active.png differ diff --git a/Documentation/pictures/color2-bg.png b/Documentation/pictures/color2-bg.png new file mode 100644 index 0000000000..71907e0078 Binary files /dev/null and b/Documentation/pictures/color2-bg.png differ diff --git a/Documentation/pictures/color2-hover.png b/Documentation/pictures/color2-hover.png new file mode 100644 index 0000000000..b602d34bdc Binary files /dev/null and b/Documentation/pictures/color2-hover.png differ diff --git a/Documentation/pictures/color3-active.png b/Documentation/pictures/color3-active.png new file mode 100644 index 0000000000..27a2698d7a Binary files /dev/null and b/Documentation/pictures/color3-active.png differ diff --git a/Documentation/pictures/color3-bg.png b/Documentation/pictures/color3-bg.png new file mode 100644 index 0000000000..4d42f2277f Binary files /dev/null and b/Documentation/pictures/color3-bg.png differ diff --git a/Documentation/pictures/color3-hover.png b/Documentation/pictures/color3-hover.png new file mode 100644 index 0000000000..a43403a6ec Binary files /dev/null and b/Documentation/pictures/color3-hover.png differ diff --git a/Documentation/pictures/color4-active.png b/Documentation/pictures/color4-active.png new file mode 100644 index 0000000000..68d2ac21b9 Binary files /dev/null and b/Documentation/pictures/color4-active.png differ diff --git a/Documentation/pictures/color4-bg.png b/Documentation/pictures/color4-bg.png new file mode 100644 index 0000000000..f3cf56b22e Binary files /dev/null and b/Documentation/pictures/color4-bg.png differ diff --git a/Documentation/pictures/color4-hover.png b/Documentation/pictures/color4-hover.png new file mode 100644 index 0000000000..cd27f0da38 Binary files /dev/null and b/Documentation/pictures/color4-hover.png differ diff --git a/Documentation/pictures/lily-home-nav-active.png b/Documentation/pictures/lily-home-nav-active.png index a709a02b48..5ea7c47989 100644 Binary files a/Documentation/pictures/lily-home-nav-active.png and b/Documentation/pictures/lily-home-nav-active.png differ diff --git a/Documentation/pictures/lily-home-nav-bg.png b/Documentation/pictures/lily-home-nav-bg.png index 73ad72d649..4e4548da05 100644 Binary files a/Documentation/pictures/lily-home-nav-bg.png and b/Documentation/pictures/lily-home-nav-bg.png differ diff --git a/Documentation/pictures/lily-home-nav-hover.png b/Documentation/pictures/lily-home-nav-hover.png index cd03636985..47f10ac25e 100644 Binary files a/Documentation/pictures/lily-home-nav-hover.png and b/Documentation/pictures/lily-home-nav-hover.png differ diff --git a/Documentation/pictures/nav-active.jpg b/Documentation/pictures/nav-active.jpg deleted file mode 100644 index a04edf30f4..0000000000 Binary files a/Documentation/pictures/nav-active.jpg and /dev/null differ diff --git a/Documentation/pictures/nav-active.png b/Documentation/pictures/nav-active.png new file mode 100644 index 0000000000..04df2c5e32 Binary files /dev/null and b/Documentation/pictures/nav-active.png differ diff --git a/Documentation/pictures/nav-bg.jpg b/Documentation/pictures/nav-bg.jpg deleted file mode 100644 index 81cc9b790a..0000000000 Binary files a/Documentation/pictures/nav-bg.jpg and /dev/null differ diff --git a/Documentation/pictures/nav-bg.png b/Documentation/pictures/nav-bg.png new file mode 100644 index 0000000000..24f510345b Binary files /dev/null and b/Documentation/pictures/nav-bg.png differ diff --git a/Documentation/pictures/nav-hover.jpg b/Documentation/pictures/nav-hover.jpg deleted file mode 100644 index cc4b982bd5..0000000000 Binary files a/Documentation/pictures/nav-hover.jpg and /dev/null differ diff --git a/Documentation/pictures/nav-hover.png b/Documentation/pictures/nav-hover.png new file mode 100644 index 0000000000..19cf7778b7 Binary files /dev/null and b/Documentation/pictures/nav-hover.png differ diff --git a/Documentation/pictures/pdf/OpusAndFeta.pdf b/Documentation/pictures/pdf/OpusAndFeta.pdf new file mode 100644 index 0000000000..8eb57528d0 Binary files /dev/null and b/Documentation/pictures/pdf/OpusAndFeta.pdf differ diff --git a/Documentation/pictures/squiggle.jpg b/Documentation/pictures/squiggle.jpg new file mode 100644 index 0000000000..c8a0747898 Binary files /dev/null and b/Documentation/pictures/squiggle.jpg differ diff --git a/Documentation/pictures/text-input-1-annotate.png b/Documentation/pictures/text-input-1-annotate.png new file mode 100644 index 0000000000..e730c32c2f Binary files /dev/null and b/Documentation/pictures/text-input-1-annotate.png differ diff --git a/Documentation/pictures/text-input-2-annotate.png b/Documentation/pictures/text-input-2-annotate.png new file mode 100644 index 0000000000..9c0b96baaa Binary files /dev/null and b/Documentation/pictures/text-input-2-annotate.png differ diff --git a/Documentation/pictures/text-input-parts-both-annotate.png b/Documentation/pictures/text-input-parts-both-annotate.png new file mode 100644 index 0000000000..47cb514d43 Binary files /dev/null and b/Documentation/pictures/text-input-parts-both-annotate.png differ diff --git a/Documentation/pictures/text-input-parts-single-annotate.png b/Documentation/pictures/text-input-parts-single-annotate.png new file mode 100644 index 0000000000..4220e77018 Binary files /dev/null and b/Documentation/pictures/text-input-parts-single-annotate.png differ diff --git a/Documentation/pictures/text-input-pop-annotate.png b/Documentation/pictures/text-input-pop-annotate.png new file mode 100644 index 0000000000..35aba3a289 Binary files /dev/null and b/Documentation/pictures/text-input-pop-annotate.png differ diff --git a/Documentation/pictures/text-input-score-annotate.png b/Documentation/pictures/text-input-score-annotate.png new file mode 100644 index 0000000000..07c34be54e Binary files /dev/null and b/Documentation/pictures/text-input-score-annotate.png differ diff --git a/Documentation/snippets/adding-ambitus-per-voice.ly b/Documentation/snippets/adding-ambitus-per-voice.ly index 044bd7da75..8204e6efd5 100644 --- a/Documentation/snippets/adding-ambitus-per-voice.ly +++ b/Documentation/snippets/adding-ambitus-per-voice.ly @@ -4,15 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b - texidocfr = " -L'@code{ambitus} peut être individualisé par voix. Il faut en pareil -cas éviter qu'ils se chevauchent. - -" - doctitlefr = "Un ambitus par voix" - - lsrtags = "pitches, staff-notation, vocal-music" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -29,6 +20,14 @@ manual verschoben werden, um Zusammenstöße zu verhindern. " doctitlede = "Ambitus pro Stimme hinzufügen" +%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b + texidocfr = " +L'@code{ambitus} peut être individualisé par voix. Il faut en pareil +cas éviter qu'ils se chevauchent. + +" + doctitlefr = "Un ambitus par voix" + texidoc = " Ambitus can be added per voice. In this case, the ambitus must be moved diff --git a/Documentation/snippets/adding-fingerings-to-tablatures.ly b/Documentation/snippets/adding-fingerings-to-tablatures.ly index 68ed1d4e65..29bd928879 100644 --- a/Documentation/snippets/adding-fingerings-to-tablatures.ly +++ b/Documentation/snippets/adding-fingerings-to-tablatures.ly @@ -1,11 +1,10 @@ -%% Do not edit this file; it is automatically -%% generated from LSR http://lsr.dsi.unimi.it -%% This file is in the public domain. +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.4 \version "2.13.4" \header { - lsrtags = "fretted-strings" - %% Translation of GIT committish: c8446d6eb2fadbf8931a867741572582759935ad texidocfr = "Ajout de doigtés à des tablatures" @@ -14,14 +13,15 @@ L'ajout de doigtés à des tablatures s'obtient en conjuguant des @code{\\markup} et des @code{\\finger}. " + lsrtags = "fretted-strings" texidoc = " To add fingerings to tablatures, use a combination of @code{\\markup} and @code{\\finger}. - " doctitle = "Adding fingerings to tablatures" } % begin verbatim + one = \markup { \finger 1 } two = \markup { \finger 2 } threeTwo = \markup { @@ -41,6 +41,7 @@ threeFour = \markup { \score { \new TabStaff { + \tabFullNotation \stemUp e8\4^\one b\2 ^>[ b\2 e\4] ^>^\threeTwo[ b\2 e\4] diff --git a/Documentation/snippets/adding-volta-brackets-to-additional-staves.ly b/Documentation/snippets/adding-volta-brackets-to-additional-staves.ly index 10ea39b929..534dc2ea2b 100644 --- a/Documentation/snippets/adding-volta-brackets-to-additional-staves.ly +++ b/Documentation/snippets/adding-volta-brackets-to-additional-staves.ly @@ -4,18 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884 - texidocfr = " -D'ordinaire, le graveur @code{Volta_engraver} réside dans le contexte -@code{Score} ; les crochets précédant une reprise s'impriment donc -seulement au-dessus de la portée du haut. On peut ajuster cela en -déplaçant ce graveur vers les contextes de portée (@code{Staff}) qui -doivent comporter ces crochets. - -" - doctitlefr = "Ajout du crochet de reprise à d'autres portées" - - lsrtags = "repeats" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -40,6 +28,17 @@ das \"Volta multi staff\"-Schnipsel. " doctitlede = "Volta-Klammern zu zusätzlichen Systemen hinzufügen" +%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884 + texidocfr = " +D'ordinaire, le graveur @code{Volta_engraver} réside dans le contexte +@code{Score} ; les crochets précédant une reprise s'impriment donc +seulement au-dessus de la portée du haut. On peut ajuster cela en +déplaçant ce graveur vers les contextes de portée (@code{Staff}) qui +doivent comporter ces crochets. + +" + doctitlefr = "Ajout du crochet de reprise à d'autres portées" + texidoc = " The @code{Volta_engraver} by default resides in the @code{Score} diff --git a/Documentation/snippets/additional-voices-to-avoid-collisions.ly b/Documentation/snippets/additional-voices-to-avoid-collisions.ly index 9c7a6ec3af..4eeabcd2f7 100644 --- a/Documentation/snippets/additional-voices-to-avoid-collisions.ly +++ b/Documentation/snippets/additional-voices-to-avoid-collisions.ly @@ -4,17 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8 - texidocfr = " -Dans certains cas de musique polyphonie complexe, une voix -supplémentaire peut permettre d'éviter les risques de collision. -Lorsque quatre voix parallèles ne suffisent pas, la fonction Scheme -@code{context-spec-music} permet d'ajouter des d'autres voix. - -" - doctitlefr = "Ajout de voix pour éviter les collisions" - - lsrtags = "simultaneous-notes" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -37,6 +26,16 @@ Stimmen definiert werden, indem eine Variable mit der Funktion " doctitlede = "Zusätzliche Stimmen, um Zusammenstöße zu vermeiden" +%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8 + texidocfr = " +Dans certains cas de musique polyphonie complexe, une voix +supplémentaire peut permettre d'éviter les risques de collision. +Lorsque quatre voix parallèles ne suffisent pas, la fonction Scheme +@code{context-spec-music} permet d'ajouter des d'autres voix. + +" + doctitlefr = "Ajout de voix pour éviter les collisions" + texidoc = " In some instances of complex polyphonic music, additional voices are diff --git a/Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly b/Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly index 1615423fca..9982e6397e 100644 --- a/Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly +++ b/Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly @@ -4,15 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -La propriété @code{shortest-duration-space} peut devoir être retouchée -pour ajuster l'apparence des chutes ou sauts. - -" - doctitlefr = "Ajustement du galbe des chutes ou sauts" - - lsrtags = "expressive-marks" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -31,6 +22,14 @@ das Aussehen von unbestimmten Glissandi anzupassen. " doctitlede = "Das Aussehen von unbestimmten Glissandi anpassen" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +La propriété @code{shortest-duration-space} peut devoir être retouchée +pour ajuster l'apparence des chutes ou sauts. + +" + doctitlefr = "Ajustement du galbe des chutes ou sauts" + texidoc = " The @code{shortest-duration-space} property may have to be tweaked to diff --git a/Documentation/snippets/ambitus-with-multiple-voices.ly b/Documentation/snippets/ambitus-with-multiple-voices.ly index a77506af59..4c83374e2b 100644 --- a/Documentation/snippets/ambitus-with-multiple-voices.ly +++ b/Documentation/snippets/ambitus-with-multiple-voices.ly @@ -4,16 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b - texidocfr = " -Si plusieurs voix se trouvent sur une même portée, on peut attribuer le -graveur @code{Ambitus_engraver} au contexte @code{Staff} afin d'obtenir -l'ambitus de toutes les voix cumulées, non d'une seule des voix actives. - -" - doctitlefr = "Ambitus sur plusieurs voix" - - lsrtags = "pitches, vocal-music" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -32,6 +22,15 @@ hinzufügt, erhält man einen einzigen Ambitus pro System, auch in dem Fall, dass mehrere Stimmen sich im gleichen System befinden. " doctitlede = "Ambitus mit vielen Stimmen" +%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b + texidocfr = " +Si plusieurs voix se trouvent sur une même portée, on peut attribuer le +graveur @code{Ambitus_engraver} au contexte @code{Staff} afin d'obtenir +l'ambitus de toutes les voix cumulées, non d'une seule des voix actives. + +" + doctitlefr = "Ambitus sur plusieurs voix" + texidoc = " Adding the @code{Ambitus_engraver} to the @code{Staff} context creates diff --git a/Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly b/Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly index 6e98aefd29..99f0b658e5 100644 --- a/Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly +++ b/Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly @@ -4,27 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b - texidocfr = " -La propriété @code{shapeNoteStyles} permet d'affecter un profil -particulier à chaque degré de la gamme -- à partir de l'armure ou -de la propriété @code{tonic}. Ses valeurs sont constituées d'une liste -de symboles, qu'il s'agisse de formes géométriques (@code{triangle}, -@code{cross}, ou @code{xcircle}) ou basés sur la tradition des graveurs -américains (avec quelques noms de note latins). - -LilyPond dispose de deux raccourcis, @code{\aikenHeads} et -@code{\sacredHarpHeads}, permettant de reproduire déanciens recueils de -chansons américaines. - -L'exemple suivant montre plusieurs manières de profiler les têtes de -note, ainsi que la capacité de trnsposer tout en respectant la fonction -harmonique de chaque note dans la gamme. - -" - doctitlefr = "Profilage des notes selon leur degré dans la gamme" - - lsrtags = "pitches, editorial-annotations" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -72,6 +51,26 @@ eine Melodie transponieren kann, ohne dass das Verhältnis zwischen den harmonischen Funktionen und dem Notenstil verloren geht. " +%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b + texidocfr = " +La propriété @code{shapeNoteStyles} permet d'affecter un profil +particulier à chaque degré de la gamme -- à partir de l'armure ou +de la propriété @code{tonic}. Ses valeurs sont constituées d'une liste +de symboles, qu'il s'agisse de formes géométriques (@code{triangle}, +@code{cross}, ou @code{xcircle}) ou basés sur la tradition des graveurs +américains (avec quelques noms de note latins). + +LilyPond dispose de deux raccourcis, @code{\aikenHeads} et +@code{\sacredHarpHeads}, permettant de reproduire déanciens recueils de +chansons américaines. + +L'exemple suivant montre plusieurs manières de profiler les têtes de +note, ainsi que la capacité de trnsposer tout en respectant la fonction +harmonique de chaque note dans la gamme. + +" + doctitlefr = "Profilage des notes selon leur degré dans la gamme" + texidoc = " The @code{shapeNoteStyles} property can be used to define various note diff --git a/Documentation/snippets/changing-partcombine-texts.ly b/Documentation/snippets/changing-partcombine-texts.ly index 14cb96b2ca..b6de891c8c 100644 --- a/Documentation/snippets/changing-partcombine-texts.ly +++ b/Documentation/snippets/changing-partcombine-texts.ly @@ -4,16 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8 - texidocfr = " -Lorsque vous regroupez automatiquement des parties, vous pouvez -modifier le texte qui sera affiché pour les solos et pour les parties à -l'unisson : - -" - doctitlefr = "Modification des indications de parties combinées" - - lsrtags = "simultaneous-notes" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -32,6 +22,15 @@ Solo- und Unisono-Stellen ausgegeben wird, geändert werden: " doctitlede = "Partcombine-Text ändern" +%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8 + texidocfr = " +Lorsque vous regroupez automatiquement des parties, vous pouvez +modifier le texte qui sera affiché pour les solos et pour les parties à +l'unisson : + +" + doctitlefr = "Modification des indications de parties combinées" + texidoc = " When using the automatic part combining feature, the printed text for diff --git a/Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly b/Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly index 9c55b9fff2..d86751cfb5 100644 --- a/Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly +++ b/Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly @@ -4,19 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Le texte par défaut des crescendos et decrescendos se change en -modifiant les propriétés de contexte @code{crescendoText} et -@code{decrescendoText}. L'aspect de la ligne d'extension est fonction -de la propriété @code{'style} du @code{DynamicTextSpanner}. Sa valeur -par défaut est @code{'hairpin}, mais d'autres valeurs sont disponibles, -comme @code{'line}, @code{'dashed-line} et @code{'dotted-line}. - -" - doctitlefr = "Modifidation du texte et de l'extension de nuances textuelles" - - lsrtags = "expressive-marks" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -45,6 +32,18 @@ geändert werden, indem die @code{'style}-Eigenschaft des und @code{'dotted-line}. " doctitlede = "Text und Strecker-Stile für Dynamik-Texte ändern" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Le texte par défaut des crescendos et decrescendos se change en +modifiant les propriétés de contexte @code{crescendoText} et +@code{decrescendoText}. L'aspect de la ligne d'extension est fonction +de la propriété @code{'style} du @code{DynamicTextSpanner}. Sa valeur +par défaut est @code{'hairpin}, mais d'autres valeurs sont disponibles, +comme @code{'line}, @code{'dashed-line} et @code{'dotted-line}. + +" + doctitlefr = "Modifidation du texte et de l'extension de nuances textuelles" + texidoc = " The text used for crescendos and decrescendos can be changed by diff --git a/Documentation/snippets/changing-the-breath-mark-symbol.ly b/Documentation/snippets/changing-the-breath-mark-symbol.ly index 0302305beb..45aaf36f5b 100644 --- a/Documentation/snippets/changing-the-breath-mark-symbol.ly +++ b/Documentation/snippets/changing-the-breath-mark-symbol.ly @@ -4,16 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -On peut choisir le glyphe imprimé par cette commande, en modifiant la -propriété @code{text} de l'objet @code{BreathingSign}, pour lui affecter -n'importe quelle indication textuelle. - -" - doctitlefr = "Modification de l'indicateur de respiration" - - lsrtags = "expressive-marks" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -33,6 +23,15 @@ beliebigen Textbeschriftung definiert wird. " doctitlede = "Das Atemzeichen-Symbol verändern" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +On peut choisir le glyphe imprimé par cette commande, en modifiant la +propriété @code{text} de l'objet @code{BreathingSign}, pour lui affecter +n'importe quelle indication textuelle. + +" + doctitlefr = "Modification de l'indicateur de respiration" + texidoc = " The glyph of the breath mark can be tuned by overriding the text diff --git a/Documentation/snippets/clip-systems.ly b/Documentation/snippets/clip-systems.ly index cf590a0d33..eb29f204cf 100644 --- a/Documentation/snippets/clip-systems.ly +++ b/Documentation/snippets/clip-systems.ly @@ -1,6 +1,7 @@ -%% Do not edit this file; it is automatically -%% generated from LSR http://lsr.dsi.unimi.it -%% This file is in the public domain. +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.4 \version "2.13.4" \header { @@ -30,8 +31,9 @@ are generated. doctitle = "Clip systems" } % begin verbatim + #(ly:set-option 'clip-systems) -#(set! output-count 1) +#(define output-suffix "1") origScore = \score { \relative c' { @@ -74,8 +76,8 @@ origScore = \score { } } -#(set! output-count 0) #(ly:set-option 'clip-systems #f) +#(define output-suffix #f) \book { \score { \origScore } @@ -89,4 +91,3 @@ origScore = \score { } } } - diff --git a/Documentation/snippets/combining-two-parts-on-the-same-staff.ly b/Documentation/snippets/combining-two-parts-on-the-same-staff.ly index 8a24416fa8..845c2232aa 100644 --- a/Documentation/snippets/combining-two-parts-on-the-same-staff.ly +++ b/Documentation/snippets/combining-two-parts-on-the-same-staff.ly @@ -4,27 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8 - texidocfr = " -L'outil de combinaison de parties (la commande @code{\\partcombine}) -permet d'avoir deux parties différentes sur une même portée. LilyPond -ajoute automatiquement des indications textuelles, telles que @qq{solo} -ou @qq{a2}. Si votre intention n'est que de fusionner les parties, sans -ajouter de texte, assignez faux à la propriété -@code{printPartCombineTexts}. Dans le cas de partitions vocales, et -plus particulièrement d'hymnes, ces @qq{solo/a2} ne sont d'aucune -utilité, aussi vaut-il mieux les désactiver. Dans le cas où il y aurait -alternance entre @emph{solo} et @emph{tutti}, il vaut mieux faire appel -à de la musique polyphonique standard. - -Voici trois moyens d'imprimer deux parties sur un même portée : en -polyphonie normale, avec @code{\\partcombine} sans indication -supplémentaire, et avec @code{\\partcombine} commentée. - -" - doctitlefr = "Combinaison de deux parties sur une même portée" - - lsrtags = "simultaneous-notes, text" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -68,6 +47,26 @@ kombinieren: Standardpolyphonie, @code{\\partcombine} ohne Text und " doctitlede = "Zwei Stimmen auf einem System kombinieren" +%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8 + texidocfr = " +L'outil de combinaison de parties (la commande @code{\\partcombine}) +permet d'avoir deux parties différentes sur une même portée. LilyPond +ajoute automatiquement des indications textuelles, telles que @qq{solo} +ou @qq{a2}. Si votre intention n'est que de fusionner les parties, sans +ajouter de texte, assignez faux à la propriété +@code{printPartCombineTexts}. Dans le cas de partitions vocales, et +plus particulièrement d'hymnes, ces @qq{solo/a2} ne sont d'aucune +utilité, aussi vaut-il mieux les désactiver. Dans le cas où il y aurait +alternance entre @emph{solo} et @emph{tutti}, il vaut mieux faire appel +à de la musique polyphonique standard. + +Voici trois moyens d'imprimer deux parties sur un même portée : en +polyphonie normale, avec @code{\\partcombine} sans indication +supplémentaire, et avec @code{\\partcombine} commentée. + +" + doctitlefr = "Combinaison de deux parties sur une même portée" + texidoc = " The part combiner tool ( @code{\\partcombine} command ) allows the diff --git a/Documentation/snippets/contemporary-glissando.ly b/Documentation/snippets/contemporary-glissando.ly index 8c106d1844..b1747f3170 100644 --- a/Documentation/snippets/contemporary-glissando.ly +++ b/Documentation/snippets/contemporary-glissando.ly @@ -4,16 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -De nos jours, il peut arriver que la note d'arrivée d'un glissando soit -absente de la partition. Pour ce faire, il vous faudra utiliser une -cadence et « masquer » la note d'arrivée. - -" - doctitlefr = "Glissando contemporain" - - lsrtags = "expressive-marks" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -31,6 +21,15 @@ eine Kadenz eingesetzt wird und die Endnote unsichtbar gemacht wird. " doctitlede = "Moderne Glissandi" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +De nos jours, il peut arriver que la note d'arrivée d'un glissando soit +absente de la partition. Pour ce faire, il vous faudra utiliser une +cadence et « masquer » la note d'arrivée. + +" + doctitlefr = "Glissando contemporain" + texidoc = " A contemporary glissando without a final note can be typeset using a diff --git a/Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly b/Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly index 73305e2a86..3dd0314e5f 100644 --- a/Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly +++ b/Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly @@ -30,7 +30,9 @@ Le positionnement des doigtés peut être contrôlé de manière très précise. texidoc = " -The placement of fingering numbers can be controlled precisely. +The placement of fingering numbers can be controlled precisely. For +fingering orientation to apply, you must use a chord construct <> even +if it is a single note. " doctitle = "Controlling the placement of chord fingerings" diff --git a/Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly b/Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly index a1bca2a99d..10898d5f18 100644 --- a/Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly +++ b/Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly @@ -4,22 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Les symboles s'ordonnent verticalement suivant la propriété -@code{script-priority}. Plus sa valeur numérique est faible, plus le -symbole sera proche de la note. Dans l'exemple suivant, l'objet -@code{TextScript} -- le dièse -- a d'abord la propriété la -plus basse, et il est donc placé plus près de la note ; ensuite c'est -l'objet @code{Script} -- le mordant -- qui a la propriété la plus basse, -et il se place alors sous le dièse. Lorsque deux objets ont la même -priorité, c'est l'ordre dans lequel ils sont indiqués qui détermine -lequel sera placé en premier. - -" - doctitlefr = "Contrôle de l'ordre vertical des articulations et ornements" - - lsrtags = "expressive-marks, tweaks-and-overrides" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -52,6 +36,21 @@ anhand ihres Auftretens in der Quelldatei entschieden. " doctitlede = "Die vertikale Anordnung von Beschriftungen kontrollieren" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Les symboles s'ordonnent verticalement suivant la propriété +@code{script-priority}. Plus sa valeur numérique est faible, plus le +symbole sera proche de la note. Dans l'exemple suivant, l'objet +@code{TextScript} -- le dièse -- a d'abord la propriété la +plus basse, et il est donc placé plus près de la note ; ensuite c'est +l'objet @code{Script} -- le mordant -- qui a la propriété la plus basse, +et il se place alors sous le dièse. Lorsque deux objets ont la même +priorité, c'est l'ordre dans lequel ils sont indiqués qui détermine +lequel sera placé en premier. + +" + doctitlefr = "Contrôle de l'ordre vertical des articulations et ornements" + texidoc = " The vertical ordering of scripts is controlled with the diff --git a/Documentation/snippets/creating-a-delayed-turn.ly b/Documentation/snippets/creating-a-delayed-turn.ly index 6d1b52e89c..87f003c64f 100644 --- a/Documentation/snippets/creating-a-delayed-turn.ly +++ b/Documentation/snippets/creating-a-delayed-turn.ly @@ -4,19 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Obtenir un @emph{grupetto} retardé et dans lequel la note la plus basse -est altérée requiert quelques surcharges. La propriété -@w{@code{outside-staff-priority}} doît être désactivée (@code{#f}) pour -éviter qu'elle prenne le pas sur la propriété @w{@code{avoid-slur}}. La -valeur assignée à @code{halign} permet de gérer horizonalement le -@w{« retard »}. - -" - - doctitlefr = "Création d'un grupetto retardé" - lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -45,6 +32,18 @@ wird benutzt, um den Doppelschlag horizontal zu positionieren. " doctitlede = "Einen Doppelschlag mit Vorhalt erstellen" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Obtenir un @emph{grupetto} retardé et dans lequel la note la plus basse +est altérée requiert quelques surcharges. La propriété +@w{@code{outside-staff-priority}} doît être désactivée (@code{#f}) pour +éviter qu'elle prenne le pas sur la propriété @w{@code{avoid-slur}}. La +valeur assignée à @code{halign} permet de gérer horizonalement le +@w{« retard »}. + +" + + doctitlefr = "Création d'un grupetto retardé" texidoc = " Creating a delayed turn, where the lower note of the turn uses the diff --git a/Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly b/Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly index f67fcbdbd9..c55417827d 100644 --- a/Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly +++ b/Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly @@ -4,15 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Affecter le graveur @code{Span_arpeggio_engraver} au contexte de la -portée (@code{Staff}) permet de distribuer un arpège sur plusieurs voix : - -" - doctitlefr = "Arpège distribué sur plusieurs voix" - - lsrtags = "expressive-marks" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -33,6 +24,14 @@ System gezogen werden, wenn der @code{Span_arpeggio_engraver} in den " doctitlede = "Arpeggios zwischen unterschiedlichen Stimmen erzeugen" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Affecter le graveur @code{Span_arpeggio_engraver} au contexte de la +portée (@code{Staff}) permet de distribuer un arpège sur plusieurs voix : + +" + doctitlefr = "Arpège distribué sur plusieurs voix" + texidoc = " An arpeggio can be drawn across notes in different voices on the same diff --git a/Documentation/snippets/creating-cross-staff-arpeggios-in-a-piano-staff.ly b/Documentation/snippets/creating-cross-staff-arpeggios-in-a-piano-staff.ly index b272492bc7..9d5123fb7d 100644 --- a/Documentation/snippets/creating-cross-staff-arpeggios-in-a-piano-staff.ly +++ b/Documentation/snippets/creating-cross-staff-arpeggios-in-a-piano-staff.ly @@ -4,16 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Dans une double portée pour piano (@code{PianoStaff}), un arpège peut -s'étendre sur les deux portées grâce à la propriété -@code{PianoStaff.connectArpeggios}. - -" - doctitlefr = "Arpège distribué sur une partition pour piano" - - lsrtags = "expressive-marks" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -33,6 +23,15 @@ in den @code{Score}-Kontext eingefügt wird. " doctitlede = "Arpeggio über mehrere Systeme in anderen Kontexten" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Dans une double portée pour piano (@code{PianoStaff}), un arpège peut +s'étendre sur les deux portées grâce à la propriété +@code{PianoStaff.connectArpeggios}. + +" + doctitlefr = "Arpège distribué sur une partition pour piano" + texidoc = " In a @code{PianoStaff}, it is possible to let an arpeggio cross between diff --git a/Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly b/Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly index 2ab7b7edb4..ccda701de7 100644 --- a/Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly +++ b/Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly @@ -4,16 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Il est possible de distribuer un arpège sur plusieurs portées d'un -système autre que le @code{PianoStaff} dès lors que vous incluez le -@code{Span_arpeggio_engraver} au contexte @code{Score}. - -" - doctitlefr = "Arpège distribué pour un autre contexte que le piano" - - lsrtags = "expressive-marks" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -34,6 +24,15 @@ zwischen beiden Systemen zu verbinden, indem die " doctitlede = "Arpeggio zwischen Systemen in einem Klaviersystem erstellen" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Il est possible de distribuer un arpège sur plusieurs portées d'un +système autre que le @code{PianoStaff} dès lors que vous incluez le +@code{Span_arpeggio_engraver} au contexte @code{Score}. + +" + doctitlefr = "Arpège distribué pour un autre contexte que le piano" + texidoc = " Cross-staff arpeggios can be created in contexts other than diff --git a/Documentation/snippets/cross-staff-tremolos.ly b/Documentation/snippets/cross-staff-tremolos.ly index ddfb96c681..7ee5dcde43 100644 --- a/Documentation/snippets/cross-staff-tremolos.ly +++ b/Documentation/snippets/cross-staff-tremolos.ly @@ -4,6 +4,8 @@ \version "2.13.4" \header { + lsrtags = "repeats, keyboards" + %% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884 texidocfr = " Dans la mesure où @code{\\repeat tremolo} requiert deux arguments @@ -15,8 +17,6 @@ la commande @code{\\change Staff}. doctitlefr = "Trémolo et changement de portée" - lsrtags = "repeats, keyboards" - texidoc = " Since @code{\\repeat tremolo} expects exactly two musical arguments for chord tremolos, the note or chord which changes staff within a diff --git a/Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly b/Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly index 4fdf7cba4b..c05feefe96 100644 --- a/Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly +++ b/Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly @@ -4,21 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b - texidocfr = " -Au début du XXème siècle, Schoenberg, Berg et Webern -- la « Seconde » -école de Vienne -- imaginèrent de donner une importance comparable aux -douze notes de la gamme chromatique, et éviter ainsi toute tonalité. -Pour ce faire, ces compositions font apparaître une altération à chaque -note, y compris un bécarre, pour mettre en exergue cette nouvelle -approche de la théorie et du langage musicaux. - -Voici comment obtenir une telle notation. - -" - doctitlefr = "Le dodécaphonisme : toute note est altérée" - - lsrtags = "pitches" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -48,6 +33,20 @@ notación. Dieser Schnipsel zeigt, wie derartige Notationsregeln zu erstellen sind. " doctitlede = "Versetzungszeichen für jede Note im Stil der Zwölftonmusik" +%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b + texidocfr = " +Au début du XXème siècle, Schoenberg, Berg et Webern -- la « Seconde » +école de Vienne -- imaginèrent de donner une importance comparable aux +douze notes de la gamme chromatique, et éviter ainsi toute tonalité. +Pour ce faire, ces compositions font apparaître une altération à chaque +note, y compris un bécarre, pour mettre en exergue cette nouvelle +approche de la théorie et du langage musicaux. + +Voici comment obtenir une telle notation. + +" + doctitlefr = "Le dodécaphonisme : toute note est altérée" + texidoc = " In early 20th century works, starting with Schoenberg, Berg and Webern diff --git a/Documentation/snippets/dynamics-custom-text-spanner-postfix.ly b/Documentation/snippets/dynamics-custom-text-spanner-postfix.ly new file mode 100644 index 0000000000..af2cd3b97a --- /dev/null +++ b/Documentation/snippets/dynamics-custom-text-spanner-postfix.ly @@ -0,0 +1,34 @@ +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.4 +\version "2.13.4" + +\header { + lsrtags = "expressive-marks, tweaks-and-overrides" + texidoc = "Postfix functions for custom crescendo text spanners. The spanners +should start on the first note of the measure. One has to use -\mycresc, +otherwise the spanner start will rather be assigned to the next note. +" + doctitle = "Dynamics custom text spanner postfix" +} % begin verbatim + + +% Two functions for (de)crescendo spanners where you can explicitly give the +% spanner text. +mycresc = #(define-music-function (parser location mymarkup) (string?) + (make-music 'CrescendoEvent 'span-direction START + 'span-type 'text 'span-text mymarkup)) +mydecresc = #(define-music-function (parser location mymarkup) (string?) + (make-music 'DecrescendoEvent 'span-direction START + 'span-type 'text 'span-text mymarkup)) + +\relative c' { + c4-\mycresc "custom cresc" c4 c4 c4 | + c4 c4 c4 c4 | + c4-\mydecresc "custom decresc" c4 c4 c4 | + c4 c4\! c4 c4 +} + + + diff --git a/Documentation/snippets/dynamics-text-spanner-postfix.ly b/Documentation/snippets/dynamics-text-spanner-postfix.ly new file mode 100644 index 0000000000..d563039d4c --- /dev/null +++ b/Documentation/snippets/dynamics-text-spanner-postfix.ly @@ -0,0 +1,35 @@ +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.4 +\version "2.13.4" + +\header { + lsrtags = "expressive-marks, tweaks-and-overrides" + texidoc = "The \cresc, \dim and \decresc spanners can now be redefined as +postfix operators and produce one text spanner. Defining custom spanners is +also easy. Hairpin and text crescendi can be easily mixed. \< and \> produce +hairpins by default, \cresc etc. produce text spanners by default. +" + doctitle = "Dynamics text spanner postfix" +} % begin verbatim + + +% Some sample text dynamic spanners, to be used as postfix operators +crpoco = #(make-music 'CrescendoEvent 'span-direction START + 'span-type 'text 'span-text "cresc. poco a poco") +% Redefine the existing \cresc, \dim and \decresc commands to use postfix syntax +cresc = #(make-music 'CrescendoEvent 'span-direction START + 'span-type 'text 'span-text "cresc.") +dim = #(make-music 'DecrescendoEvent 'span-direction START + 'span-type 'text 'span-text "dim.") +decresc = #(make-music 'DecrescendoEvent 'span-direction START + 'span-type 'text 'span-text "decresc.") + +\relative c' { + c4\cresc d4 e4 f4 | + g4 a4\! b4\crpoco c4 | + c4 d4 e4 f4 | + g4 a4\! b4\< c4 | + g4\dim a4 b4\decresc c4\! +} diff --git a/Documentation/snippets/editorial-annotations.snippet-list b/Documentation/snippets/editorial-annotations.snippet-list index f665b3bf67..ab07d9cd37 100644 --- a/Documentation/snippets/editorial-annotations.snippet-list +++ b/Documentation/snippets/editorial-annotations.snippet-list @@ -22,4 +22,5 @@ measure-counter.ly positioning-fingering-indications-precisely.ly positioning-text-markups-inside-slurs.ly printing-text-from-right-to-left.ly +string-number-extender-lines.ly using-postscript-to-generate-special-note-head-shapes.ly diff --git a/Documentation/snippets/expressive-marks.snippet-list b/Documentation/snippets/expressive-marks.snippet-list index 8ad1661a62..4623b3ab15 100644 --- a/Documentation/snippets/expressive-marks.snippet-list +++ b/Documentation/snippets/expressive-marks.snippet-list @@ -21,6 +21,8 @@ creating-simultaneous-rehearsal-marks.ly creating-slurs-across-voices.ly creating-text-spanners.ly double-glissando.ly +dynamics-custom-text-spanner-postfix.ly +dynamics-text-spanner-postfix.ly hiding-the-extender-line-for-text-dynamics.ly horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly inserting-a-caesura.ly diff --git a/Documentation/snippets/faking-a-hammer-in-tablatures.ly b/Documentation/snippets/faking-a-hammer-in-tablatures.ly index 0824de9bcf..fa692ac499 100644 --- a/Documentation/snippets/faking-a-hammer-in-tablatures.ly +++ b/Documentation/snippets/faking-a-hammer-in-tablatures.ly @@ -1,25 +1,24 @@ -%% Do not edit this file; it is automatically -%% generated from LSR http://lsr.dsi.unimi.it -%% This file is in the public domain. +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.4 \version "2.13.4" \header { lsrtags = "fretted-strings" - texidoc = " A hammer in tablature can be faked with slurs. - " doctitle = "Faking a hammer in tablatures" } % begin verbatim + \score { \new TabStaff { \relative c'' { + \tabFullNotation c4( d) d( d) d2( c) } } } - - diff --git a/Documentation/snippets/forcing-horizontal-shift-of-notes.ly b/Documentation/snippets/forcing-horizontal-shift-of-notes.ly index 7c8aef34d7..84850268e8 100644 --- a/Documentation/snippets/forcing-horizontal-shift-of-notes.ly +++ b/Documentation/snippets/forcing-horizontal-shift-of-notes.ly @@ -4,17 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8 - texidocfr = " -Quand LilyPond est dépassé, la propriété @code{force-hshift} de l'objet -@code{NoteColumn}, et des silences à hauteur déterminée, peuvent -s'avérer utiles pour dicter au programme les choix de placement. On -travaille ici en espace de portée. - -" - doctitlefr = "Décalage horizontal forcé" - - lsrtags = "simultaneous-notes, tweaks-and-overrides" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -36,6 +25,16 @@ Notenlinienzwischenräume. " doctitlede = "Horizontale Verschiebung von Noten erzwingen" +%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8 + texidocfr = " +Quand LilyPond est dépassé, la propriété @code{force-hshift} de l'objet +@code{NoteColumn}, et des silences à hauteur déterminée, peuvent +s'avérer utiles pour dicter au programme les choix de placement. On +travaille ici en espace de portée. + +" + doctitlefr = "Décalage horizontal forcé" + texidoc = " When the typesetting engine cannot cope, the following syntax can be diff --git a/Documentation/snippets/fretted-strings.snippet-list b/Documentation/snippets/fretted-strings.snippet-list index d06972bae0..dd669fd5ba 100644 --- a/Documentation/snippets/fretted-strings.snippet-list +++ b/Documentation/snippets/fretted-strings.snippet-list @@ -19,3 +19,4 @@ modern-tab-text-clef.ly placement-of-right-hand-fingerings.ly polyphony-in-tablature.ly stem-and-beam-behavior-in-tablature.ly +string-number-extender-lines.ly diff --git a/Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly b/Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly index b1dca2a67a..14478f3973 100644 --- a/Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly +++ b/Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly @@ -4,16 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Les crescendos et decrescendos indiqués textuellement -- tels que -@emph{cresc.} ou @emph{dim.} -- sont suivis de pointillés qui montrent -leur étendue. On peut empêcher l'impression de ces pointillés avec : - -" - doctitlefr = "Masquage de l'extension des nuances textuelles" - - lsrtags = "expressive-marks" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -33,6 +23,15 @@ unterdrückt werden: " doctitlede = "Crescendo-Linien von Dynamik-Texten unterdrücken" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Les crescendos et decrescendos indiqués textuellement -- tels que +@emph{cresc.} ou @emph{dim.} -- sont suivis de pointillés qui montrent +leur étendue. On peut empêcher l'impression de ces pointillés avec : + +" + doctitlefr = "Masquage de l'extension des nuances textuelles" + texidoc = " Text style dynamic changes (such as cresc. and dim.) are printed with a diff --git a/Documentation/snippets/inserting-a-caesura.ly b/Documentation/snippets/inserting-a-caesura.ly index bf9761156a..1dbd857cbc 100644 --- a/Documentation/snippets/inserting-a-caesura.ly +++ b/Documentation/snippets/inserting-a-caesura.ly @@ -4,16 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Une surcharge de la propriété @code{'text} de l'objet -@code{BreathingSign} permet de créer une marque de césure. LilyPond -dispose également d'une variante courbée. - -" - doctitlefr = "Insertion d'une césure" - - lsrtags = "expressive-marks, tweaks-and-overrides" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -32,6 +22,15 @@ des @code{BreathingSign}-Objektes verändert wird. Ein gekrümmtes Zäsurzeichen ist auch möglich. " doctitlede = "Eine Zäsur einfügen" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Une surcharge de la propriété @code{'text} de l'objet +@code{BreathingSign} permet de créer une marque de césure. LilyPond +dispose également d'une variante courbée. + +" + doctitlefr = "Insertion d'une césure" + texidoc = " Caesura marks can be created by overriding the @code{'text} property of diff --git a/Documentation/snippets/isolated-percent-repeats.ly b/Documentation/snippets/isolated-percent-repeats.ly index 6b96983bcc..45eb777c6f 100644 --- a/Documentation/snippets/isolated-percent-repeats.ly +++ b/Documentation/snippets/isolated-percent-repeats.ly @@ -4,15 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884 - texidocfr = " -Des symboles de pourcentage isolés peuvent aussi être obtenus, au -moyen d'un silence multi-mesures dont on modifie l'aspect : - -" - doctitlefr = "Répétition en pourcent isolée" - - lsrtags = "repeats" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -32,6 +23,14 @@ erreicht, indem man eine Ganztaktpause notiert und ihre Ausgabeform " doctitlede = "Isolierte Prozentwiederholungen" +%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884 + texidocfr = " +Des symboles de pourcentage isolés peuvent aussi être obtenus, au +moyen d'un silence multi-mesures dont on modifie l'aspect : + +" + doctitlefr = "Répétition en pourcent isolée" + texidoc = " Isolated percents can also be printed. This is done by entering a diff --git a/Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly b/Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly index d2f8878241..7607079c92 100644 --- a/Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly +++ b/Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly @@ -4,22 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Les raccourcis sont répertoriés dans le fichier -@code{ly/script-init.ly}, dans lequel on retrouve les variables -@code{dashHat}, @code{dashPlus}, @code{dashDash}, @code{dashBar}, -@code{dashLarger}, @code{dashDot}, et @code{dashUnderscore} ainsi que -leur valeur par défaut. Ces valeurs peuvent être modifiées selon vos -besoins. Il suffit par exemple, pour affecter au raccourci @code{-+} -(@code{dashPlus}) le symbole du trille en lieu et place du @code{+} -(caractère plus), d'assigner la valeur @code{trill} à la variable -@code{dashPlus} : - -" - doctitlefr = "Modification de la signification des raccourcis pour les signes d'articulation" - - lsrtags = "expressive-marks" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -50,6 +34,21 @@ assoziieren, muss der Wert @code{trill} der Variable " doctitlede = "Die Standardwerte der Abkürzungen von Artikulationen verändern" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Les raccourcis sont répertoriés dans le fichier +@code{ly/script-init.ly}, dans lequel on retrouve les variables +@code{dashHat}, @code{dashPlus}, @code{dashDash}, @code{dashBar}, +@code{dashLarger}, @code{dashDot}, et @code{dashUnderscore} ainsi que +leur valeur par défaut. Ces valeurs peuvent être modifiées selon vos +besoins. Il suffit par exemple, pour affecter au raccourci @code{-+} +(@code{dashPlus}) le symbole du trille en lieu et place du @code{+} +(caractère plus), d'assigner la valeur @code{trill} à la variable +@code{dashPlus} : + +" + doctitlefr = "Modification de la signification des raccourcis pour les signes d'articulation" + texidoc = " The shorthands are defined in @samp{ly/script-init.ly}, where the diff --git a/Documentation/snippets/new/adding-fingerings-to-tablatures.ly b/Documentation/snippets/new/adding-fingerings-to-tablatures.ly new file mode 100644 index 0000000000..0c87079f49 --- /dev/null +++ b/Documentation/snippets/new/adding-fingerings-to-tablatures.ly @@ -0,0 +1,37 @@ +\version "2.13.4" + +\header { + lsrtags = "fretted-strings" + texidoc = " +To add fingerings to tablatures, use a combination of @code{\\markup} +and @code{\\finger}. +" + doctitle = "Adding fingerings to tablatures" +} + +one = \markup { \finger 1 } +two = \markup { \finger 2 } +threeTwo = \markup { + \override #'(baseline-skip . 2) + \column { + \finger 3 + \finger 2 + } +} +threeFour = \markup { + \override #'(baseline-skip . 2) + \column { + \finger 3 + \finger 4 + } +} + +\score { + \new TabStaff { + \tabFullNotation + \stemUp + e8\4^\one b\2 ^>[ b\2 e\4] + ^>^\threeTwo[ b\2 e\4] + } +} + diff --git a/Documentation/snippets/new/clip-systems.ly b/Documentation/snippets/new/clip-systems.ly new file mode 100644 index 0000000000..064bd69eb7 --- /dev/null +++ b/Documentation/snippets/new/clip-systems.ly @@ -0,0 +1,88 @@ +\version "2.13.4" + +\header { + lsrtags = "paper-and-layout" + + texidoc = " +This code shows how to clip (extract) snippets from a full score. + +This file needs to be run separately with @code{-dclip-systems}; the +snippets page may not adequately show the results. + +The result will be files named +@samp{base-from-start-to-end[-count].eps}. + + +If system starts and ends are included, they include extents of the +System grob, e.g., instrument names. + + +Grace notes at the end point of the region are not included. + + +Regions can span multiple systems. In this case, multiple EPS files +are generated. + +" + doctitle = "Clip systems" +} + +#(ly:set-option 'clip-systems) +#(define output-suffix "1") + +origScore = \score { + \relative c' { + \set Staff.instrumentName = #"bla" + c1 + d1 + \grace c16 e1 + \key d \major + f1 \break + \clef bass + g,1 + fis1 + } +} + +\book { + \score { + \origScore + \layout { + % Each clip-region is a (START . END) pair + % where both are rhythmic-locations. + + % (make-rhythmic-locations BAR-NUMBER NUM DEN) + % means NUM/DEN whole-notes into bar numbered BAR-NUMBER + + clip-regions = #(list + (cons + (make-rhythmic-location 2 0 1) + (make-rhythmic-location 4 0 1)) + + (cons + (make-rhythmic-location 0 0 1) + (make-rhythmic-location 4 0 1)) + + (cons + (make-rhythmic-location 0 0 1) + (make-rhythmic-location 6 0 1)) + ) + } + } +} + +#(ly:set-option 'clip-systems #f) +#(define output-suffix #f) + +\book { + \score { \origScore } + \markup { \bold \fontsize #6 clips } + \score { + \lyrics { + \markup { from-2.0.1-to-4.0.1-clip.eps } + \markup { + \epsfile #X #30.0 #(format #f "~a-1-from-2.0.1-to-4.0.1-clip.eps" + (ly:parser-output-name parser)) } + } + } +} diff --git a/Documentation/snippets/new/dynamics-custom-text-spanner-postfix.ly b/Documentation/snippets/new/dynamics-custom-text-spanner-postfix.ly new file mode 100644 index 0000000000..1afa020950 --- /dev/null +++ b/Documentation/snippets/new/dynamics-custom-text-spanner-postfix.ly @@ -0,0 +1,29 @@ +\version "2.13.4" + +\header { + lsrtags = "expressive-marks, tweaks-and-overrides" + texidoc = "Postfix functions for custom crescendo text spanners. The spanners +should start on the first note of the measure. One has to use -\mycresc, +otherwise the spanner start will rather be assigned to the next note. +" + doctitle = "Dynamics custom text spanner postfix" +} + +% Two functions for (de)crescendo spanners where you can explicitly give the +% spanner text. +mycresc = #(define-music-function (parser location mymarkup) (string?) + (make-music 'CrescendoEvent 'span-direction START + 'span-type 'text 'span-text mymarkup)) +mydecresc = #(define-music-function (parser location mymarkup) (string?) + (make-music 'DecrescendoEvent 'span-direction START + 'span-type 'text 'span-text mymarkup)) + +\relative c' { + c4-\mycresc "custom cresc" c4 c4 c4 | + c4 c4 c4 c4 | + c4-\mydecresc "custom decresc" c4 c4 c4 | + c4 c4\! c4 c4 +} + + + diff --git a/Documentation/snippets/new/dynamics-text-spanner-postfix.ly b/Documentation/snippets/new/dynamics-text-spanner-postfix.ly new file mode 100644 index 0000000000..8f6a852833 --- /dev/null +++ b/Documentation/snippets/new/dynamics-text-spanner-postfix.ly @@ -0,0 +1,30 @@ +\version "2.13.4" + +\header { + lsrtags = "expressive-marks, tweaks-and-overrides" + texidoc = "The \cresc, \dim and \decresc spanners can now be redefined as +postfix operators and produce one text spanner. Defining custom spanners is +also easy. Hairpin and text crescendi can be easily mixed. \< and \> produce +hairpins by default, \cresc etc. produce text spanners by default. +" + doctitle = "Dynamics text spanner postfix" +} + +% Some sample text dynamic spanners, to be used as postfix operators +crpoco = #(make-music 'CrescendoEvent 'span-direction START + 'span-type 'text 'span-text "cresc. poco a poco") +% Redefine the existing \cresc, \dim and \decresc commands to use postfix syntax +cresc = #(make-music 'CrescendoEvent 'span-direction START + 'span-type 'text 'span-text "cresc.") +dim = #(make-music 'DecrescendoEvent 'span-direction START + 'span-type 'text 'span-text "dim.") +decresc = #(make-music 'DecrescendoEvent 'span-direction START + 'span-type 'text 'span-text "decresc.") + +\relative c' { + c4\cresc d4 e4 f4 | + g4 a4\! b4\crpoco c4 | + c4 d4 e4 f4 | + g4 a4\! b4\< c4 | + g4\dim a4 b4\decresc c4\! +} diff --git a/Documentation/snippets/new/faking-a-hammer-in-tablatures.ly b/Documentation/snippets/new/faking-a-hammer-in-tablatures.ly new file mode 100644 index 0000000000..4a3c15e5a2 --- /dev/null +++ b/Documentation/snippets/new/faking-a-hammer-in-tablatures.ly @@ -0,0 +1,19 @@ +\version "2.13.4" + +\header { + lsrtags = "fretted-strings" + texidoc = " +A hammer in tablature can be faked with slurs. +" + doctitle = "Faking a hammer in tablatures" +} + +\score { + \new TabStaff { + \relative c'' { + \tabFullNotation + c4( d) d( d) + d2( c) + } + } +} diff --git a/Documentation/snippets/new/stem-and-beam-behavior-in-tablature.ly b/Documentation/snippets/new/stem-and-beam-behavior-in-tablature.ly new file mode 100644 index 0000000000..3b5e41ffac --- /dev/null +++ b/Documentation/snippets/new/stem-and-beam-behavior-in-tablature.ly @@ -0,0 +1,21 @@ +\version "2.13.4" + +\header { + lsrtags = "fretted-strings" + texidoc = " +The direction of stems is controlled the same way in tablature as in +traditional notation. Beams can be made horizontal, as shown in this +example. +" + doctitle = "Stem and beam behavior in tablature" +} + +\new TabStaff { + \relative c { + \tabFullNotation + g16 b d g b d g b + \stemDown + \override Beam #'damping = #+inf.0 + g,,16 b d g b d g b + } +} diff --git a/Documentation/snippets/ottava-text.ly b/Documentation/snippets/ottava-text.ly index c66bf31d6e..7729a5500f 100644 --- a/Documentation/snippets/ottava-text.ly +++ b/Documentation/snippets/ottava-text.ly @@ -4,19 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b - texidocfr = " -En interne, la fonction @code{\\ottava} détermine les -propriétés @code{ottavation} (p.ex. en @code{\"8va\"} ou @code{\"8vb\"}) -et @code{centralCPosition}. Vous pouvez modifier le texte d'une marque -d'octaviation en définissant @code{ottavation} après avoir fait appel -à @code{ottava} : - -" - - doctitlefr = "Texte des marques d'octaviation" - - lsrtags = "pitches, text" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -42,6 +29,18 @@ und @code{middleCPosition}. Um den Text der Oktavierungsklammer zu " doctitlede = "Ottava-Text" +%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b + texidocfr = " +En interne, la fonction @code{\\ottava} détermine les +propriétés @code{ottavation} (p.ex. en @code{\"8va\"} ou @code{\"8vb\"}) +et @code{centralCPosition}. Vous pouvez modifier le texte d'une marque +d'octaviation en définissant @code{ottavation} après avoir fait appel +à @code{ottava} : + +" + + doctitlefr = "Texte des marques d'octaviation" + texidoc = " Internally, @code{\\ottava} sets the properties @code{ottavation} (for diff --git a/Documentation/snippets/percent-repeat-count-visibility.ly b/Documentation/snippets/percent-repeat-count-visibility.ly index be7d66b55f..1705c013df 100644 --- a/Documentation/snippets/percent-repeat-count-visibility.ly +++ b/Documentation/snippets/percent-repeat-count-visibility.ly @@ -4,15 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884 - texidocfr = " -Le numéro de mesure répétée sera imprimé à intervalle régulier si vous -déterminez la propriété de contexte @code{repeatCountVisibility}. - -" - doctitlefr = "Affichage du numéro de répétition en pourcent" - - lsrtags = "repeats, tweaks-and-overrides" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -30,6 +21,14 @@ Prozentwiederholungszähler können in regelmäßigen Intervallen angezeigt werden, indem man die Eigenschaft @code{repeatCountVisibility} beeinflusst. " doctitlede = "Sichtbarkeit von Prozent-Wiederholungen" +%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884 + texidocfr = " +Le numéro de mesure répétée sera imprimé à intervalle régulier si vous +déterminez la propriété de contexte @code{repeatCountVisibility}. + +" + doctitlefr = "Affichage du numéro de répétition en pourcent" + texidoc = " Percent repeat counters can be shown at regular intervals by setting diff --git a/Documentation/snippets/percent-repeat-counter.ly b/Documentation/snippets/percent-repeat-counter.ly index 62a8d5eb6e..7d1e96a888 100644 --- a/Documentation/snippets/percent-repeat-counter.ly +++ b/Documentation/snippets/percent-repeat-counter.ly @@ -4,16 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884 - texidocfr = " -Les répétitions de plus de 2 mesures sont surmontées d'un compteur, -si l'on active la propriété @code{countPercentRepeats} comme le montre -l'exemple suivant : - -" - doctitlefr = "Compteur de répétition en pourcent" - - lsrtags = "repeats" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -32,6 +22,15 @@ Zähler, wenn man die entsprechende Eigenschaft einsetzt: " doctitlede = "Prozent-Wiederholungen zählen" +%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884 + texidocfr = " +Les répétitions de plus de 2 mesures sont surmontées d'un compteur, +si l'on active la propriété @code{countPercentRepeats} comme le montre +l'exemple suivant : + +" + doctitlefr = "Compteur de répétition en pourcent" + texidoc = " Measure repeats of more than two repeats can get a counter when the diff --git a/Documentation/snippets/positioning-text-markups-inside-slurs.ly b/Documentation/snippets/positioning-text-markups-inside-slurs.ly index 0a9cb0412c..82e7ef5f6b 100644 --- a/Documentation/snippets/positioning-text-markups-inside-slurs.ly +++ b/Documentation/snippets/positioning-text-markups-inside-slurs.ly @@ -4,15 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Lorsqu'il vous faut inscrire une annotation à l'intérieur d'une liaison, -la propriété @code{outside-staff-priority} doît être désactivée. - -" - doctitlefr = "Positionnement d'une annotation à l'intérieur d'une liaison" - - lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -32,6 +23,14 @@ Textbeschriftung kann innerhalb von Bögen gesetzt werden, wenn die " doctitlede = "Textbeschriftung innerhalb von Bögen positionieren" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Lorsqu'il vous faut inscrire une annotation à l'intérieur d'une liaison, +la propriété @code{outside-staff-priority} doît être désactivée. + +" + doctitlefr = "Positionnement d'une annotation à l'intérieur d'une liaison" + texidoc = " Text markups need to have the @code{outside-staff-priority} property diff --git a/Documentation/snippets/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly b/Documentation/snippets/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly index 58a227aade..89114b56e9 100644 --- a/Documentation/snippets/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly +++ b/Documentation/snippets/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly @@ -4,18 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b - texidocfr = " -Après un changement de tonalité, un bécarre est imprimé pour annuler -toute altération précédente. Ceci peut être supprimé en réglant à -@code{\"false\"} la propriété @code{printKeyCancellation} du contexte -@code{Staff}. - -" - - doctitlefr = "Suppression des bécarres superflus après un changement de -tonalité" - lsrtags = "pitches" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -37,6 +25,17 @@ um Versetzungszeichen der vorherigen Tonart aufzulösen. Das kann verhindert werden, indem die @code{printKeyCancellation}-Eigenschaft im @code{Staff}-Kontext auf \"false\" gesetzt wird. " +%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b + texidocfr = " +Après un changement de tonalité, un bécarre est imprimé pour annuler +toute altération précédente. Ceci peut être supprimé en réglant à +@code{\"false\"} la propriété @code{printKeyCancellation} du contexte +@code{Staff}. + +" + + doctitlefr = "Suppression des bécarres superflus après un changement de +tonalité" texidoc = " When the key signature changes, natural signs are automatically printed diff --git a/Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly b/Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly index 7b7e286c9d..aa76781df9 100644 --- a/Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly +++ b/Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly @@ -4,16 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884 - texidocfr = " -Bien qu'allant à l'encontre des usages en matière de gravure, vous -imprimerez une barre de reprise (@code{|:}) en début de partition si -vous surchargez la propriété adéquate : - -" - doctitlefr = "Impression d'une barre de reprise en début de morceau" - - lsrtags = "repeats, tweaks-and-overrides" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -31,6 +21,15 @@ man die entsprechende Eigenschaft verändert: " doctitlede = "Ein Wiederholungszeichen zu Beginn eines Stückes ausgeben" +%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884 + texidocfr = " +Bien qu'allant à l'encontre des usages en matière de gravure, vous +imprimerez une barre de reprise (@code{|:}) en début de partition si +vous surchargez la propriété adéquate : + +" + doctitlefr = "Impression d'une barre de reprise en début de morceau" + texidoc = " A @code{|:} bar line can be printed at the beginning of a piece, by diff --git a/Documentation/snippets/printing-hairpins-using-al-niente-notation.ly b/Documentation/snippets/printing-hairpins-using-al-niente-notation.ly index e3c3246182..bc18aa73e9 100644 --- a/Documentation/snippets/printing-hairpins-using-al-niente-notation.ly +++ b/Documentation/snippets/printing-hairpins-using-al-niente-notation.ly @@ -4,16 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Des crescendos ou decrescendos @emph{al niente} peuvent être indiqués de -manière graphique, en assignant @emph{vrai} (@code{#t}) à la -propriété @code{circled-tip}, ce qui affiche un cercle à leur extrémité. - -" - doctitlefr = "Impression de soufflets « al niente »" - - lsrtags = "expressive-marks" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -34,6 +24,15 @@ Se pueden imprimir reguladores con un círculo en la punta " doctitlede = "Crescendo Klammern al niente schreiben" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Des crescendos ou decrescendos @emph{al niente} peuvent être indiqués de +manière graphique, en assignant @emph{vrai} (@code{#t}) à la +propriété @code{circled-tip}, ce qui affiche un cercle à leur extrémité. + +" + doctitlefr = "Impression de soufflets « al niente »" + texidoc = " Hairpins may be printed with a circled tip (al niente notation) by diff --git a/Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly b/Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly index 89b7f5a6ff..bb7525a9fa 100644 --- a/Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly +++ b/Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly @@ -4,19 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -En principe, un soufflet -- (de)crescendo imprimé sous forme graphique -- -commence au bord gauche de la note de départ, et se termine au -bord droit de la note d'arrivée. Cependant, si la note d'arrivée -est sur un premier temps, le soufflet s'arrêtera au niveau de la -barre de mesure qui la précède. Ce comportement peut être annulé -en assignant @emph{faux} (@code{#f}) à la propriété @code{'to-barline} : - -" - doctitlefr = "Soufflets et barres de mesure" - - lsrtags = "expressive-marks, tweaks-and-overrides" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -37,6 +24,18 @@ beendet. Dieses Verhalten kann auch mit der Eigenschaft @code{'to-barline} geändert werden: " doctitlede = "Das Verhalten von Crescendo-Klammern an Taktlinien beeinflussen" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +En principe, un soufflet -- (de)crescendo imprimé sous forme graphique -- +commence au bord gauche de la note de départ, et se termine au +bord droit de la note d'arrivée. Cependant, si la note d'arrivée +est sur un premier temps, le soufflet s'arrêtera au niveau de la +barre de mesure qui la précède. Ce comportement peut être annulé +en assignant @emph{faux} (@code{#f}) à la propriété @code{'to-barline} : + +" + doctitlefr = "Soufflets et barres de mesure" + texidoc = " If the note which ends a hairpin falls on a downbeat, the hairpin stops diff --git a/Documentation/snippets/setting-the-minimum-length-of-hairpins.ly b/Documentation/snippets/setting-the-minimum-length-of-hairpins.ly index d9dfa66f12..1d1e9b42ac 100644 --- a/Documentation/snippets/setting-the-minimum-length-of-hairpins.ly +++ b/Documentation/snippets/setting-the-minimum-length-of-hairpins.ly @@ -4,15 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Si un soufflet est trop court, il suffit d'ajuster la propriété -@code{minimum-length} de l'objet @code{Hairpin} pour l'allonger. - -" - doctitlefr = "Ajustement de la longueur d'un soufflet" - - lsrtags = "expressive-marks" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -32,6 +23,14 @@ verändert wird. " doctitlede = "Die Mindestlänge von Crescendo-Klammern bestimmen" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Si un soufflet est trop court, il suffit d'ajuster la propriété +@code{minimum-length} de l'objet @code{Hairpin} pour l'allonger. + +" + doctitlefr = "Ajustement de la longueur d'un soufflet" + texidoc = " If hairpins are too short, they can be lengthened by modifying the diff --git a/Documentation/snippets/shortening-volta-brackets.ly b/Documentation/snippets/shortening-volta-brackets.ly index 927172f729..870a15d80b 100644 --- a/Documentation/snippets/shortening-volta-brackets.ly +++ b/Documentation/snippets/shortening-volta-brackets.ly @@ -4,17 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884 - texidocfr = " -Les crochets indiquant les fins alternatives s'étalent tout au long ce -celle-ci. On peut les raccourcir en définissant la propriété -@code{voltaSpannerDuration}. Dans l'exemple suivant, le crochet ne se -prolonge que sur une mesure à 3/4. - -" - doctitlefr = "Diminution de la taille du crochet d'alternative" - - lsrtags = "repeats" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -37,6 +26,16 @@ es ist möglich sie zu verkürzen. Hierzu muss " doctitlede = "Volta-Klammern verkürzen" +%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884 + texidocfr = " +Les crochets indiquant les fins alternatives s'étalent tout au long ce +celle-ci. On peut les raccourcir en définissant la propriété +@code{voltaSpannerDuration}. Dans l'exemple suivant, le crochet ne se +prolonge que sur une mesure à 3/4. + +" + doctitlefr = "Diminution de la taille du crochet d'alternative" + texidoc = " By default, the volta brackets will be drawn over all of the diff --git a/Documentation/snippets/stem-and-beam-behavior-in-tablature.ly b/Documentation/snippets/stem-and-beam-behavior-in-tablature.ly index e299799634..3ac98d2fbc 100644 --- a/Documentation/snippets/stem-and-beam-behavior-in-tablature.ly +++ b/Documentation/snippets/stem-and-beam-behavior-in-tablature.ly @@ -1,11 +1,10 @@ -%% Do not edit this file; it is automatically -%% generated from LSR http://lsr.dsi.unimi.it -%% This file is in the public domain. +% Do not edit this file; it is automatically +% generated from Documentation/snippets/new +% This file is in the public domain. +%% Note: this file works from version 2.13.4 \version "2.13.4" \header { - lsrtags = "fretted-strings" - %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca texidoces = " La dirección de las plicas se contola de la misma forma en la @@ -15,6 +14,7 @@ poner horizontales, como se muestra en este ejemplo. " doctitlees = "Comportamiento de las plicas y las barras de corchea en tablaturas" + %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d texidocde = " Die Richtung von Hälsen wird in Tabulaturen genauso wie in normaler Notation @@ -23,6 +23,7 @@ zeigt. " doctitlede = "Hals- und Balkenverhalten in einer Tabulatur" + %% Translation of GIT committish: cd4950757ab1ab6c89805b0b7c978bfca034f940 texidocfr = " @@ -34,21 +35,22 @@ comme le montre cet exemple. doctitlefr = "Hampes et ligatures en mode tablature" + lsrtags = "fretted-strings" texidoc = " The direction of stems is controlled the same way in tablature as in -traditional notation. Beams can be made horizontal, as shown in this +traditional notation. Beams can be made horizontal, as shown in this example. - " doctitle = "Stem and beam behavior in tablature" } % begin verbatim + \new TabStaff { \relative c { + \tabFullNotation g16 b d g b d g b \stemDown \override Beam #'damping = #+inf.0 g,,16 b d g b d g b } } - diff --git a/Documentation/snippets/string-number-extender-lines.ly b/Documentation/snippets/string-number-extender-lines.ly new file mode 100644 index 0000000000..59eb900e45 --- /dev/null +++ b/Documentation/snippets/string-number-extender-lines.ly @@ -0,0 +1,37 @@ +%% Do not edit this file; it is automatically +%% generated from LSR http://lsr.dsi.unimi.it +%% This file is in the public domain. +\version "2.13.4" + +\header { + lsrtags = "editorial-annotations, text, fretted-strings, tweaks-and-overrides" + + texidoc = " +Make an extender line for string number indications, showing that a +series of notes is supposed to be played all on the same string. + +" + doctitle = "String number extender lines" +} % begin verbatim + +stringNumberSpanner = +#(define-music-function (parser location StringNumber) (string?) + #{ + \override TextSpanner #'style = #'solid + \override TextSpanner #'font-size = #-5 + \override TextSpanner #'(bound-details left stencil-align-dir-y) = #CENTER + \override TextSpanner #'(bound-details left text) = \markup { \circle \number $StringNumber } + #}) + + +\relative c { + \clef "treble_8" + \stringNumberSpanner "5" + \textSpannerDown + a8\startTextSpan + b c d e f\stopTextSpan + \stringNumberSpanner "4" + g\startTextSpan a + bes4 a g2\stopTextSpan +} + diff --git a/Documentation/snippets/text.snippet-list b/Documentation/snippets/text.snippet-list index 649e13cf62..3248199a1f 100644 --- a/Documentation/snippets/text.snippet-list +++ b/Documentation/snippets/text.snippet-list @@ -25,6 +25,7 @@ printing-marks-at-the-end-of-a-line-or-a-score.ly printing-marks-on-every-staff.ly printing-text-from-right-to-left.ly stand-alone-two-column-markup.ly +string-number-extender-lines.ly three-sided-box.ly utf-8.ly vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly diff --git a/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly b/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly index efc3c0c789..6bef4e047f 100644 --- a/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly +++ b/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly @@ -4,36 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b - texidocfr = " -Cet exemple, grâce à un peu de code Scheme, donne la priorité aux -enharmoniques afin de limiter le nombre d'altérations supplémentaires. -La règle appliquable est : - -@itemize -@item -Les altérations doubles sont supprimées - -@item -Si dièse -> Do - -@item -Mi dièse -> Fa - -@item -Do bémol -> Si - -@item -Fa bémol -> Mi - -@end itemize - -Cette façon de procéder aboutit à plus d'enharmoniques naturelles. - -" - - doctitlefr = "Transposition et réduction du nombrer d'altérations accidentelles" - lsrtags = "pitches" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -96,6 +66,35 @@ Auf diese Art werden am meisten natürliche Tonhöhen als enharmonische Variante gewählt. " +%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b + texidocfr = " +Cet exemple, grâce à un peu de code Scheme, donne la priorité aux +enharmoniques afin de limiter le nombre d'altérations supplémentaires. +La règle appliquable est : + +@itemize +@item +Les altérations doubles sont supprimées + +@item +Si dièse -> Do + +@item +Mi dièse -> Fa + +@item +Do bémol -> Si + +@item +Fa bémol -> Mi + +@end itemize + +Cette façon de procéder aboutit à plus d'enharmoniques naturelles. + +" + + doctitlefr = "Transposition et réduction du nombrer d'altérations accidentelles" texidoc = " This example uses some Scheme code to enforce enharmonic modifications diff --git a/Documentation/snippets/tweaking-clef-properties.ly b/Documentation/snippets/tweaking-clef-properties.ly index 6e02a72d44..e8e1f3741a 100644 --- a/Documentation/snippets/tweaking-clef-properties.ly +++ b/Documentation/snippets/tweaking-clef-properties.ly @@ -4,43 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b - texidocfr = " -La commande @code{\\clef \"treble_8\"} équivaut à définir @code{clefGlyph}, -@code{clefPosition} -- qui contrôle la position verticale de la clé -- -@code{middleCPosition} et @code{clefOctavation}. Une clé est imprimée -lorsque l'une de ces propriétés, hormis @code{middleCPosition}, est -modifiée. - Les exemples suivant font -apparaître des possibilités de réglage manuel de ces propriétés. - - -Modifier le glyphe, la position de la clef ou son octaviation ne -changera pas la position des notes ; il faut pour y parvenir modifier -aussi la position du do médium. Le positionnement est relatif à la -ligne médiane, un nombre positif faisant monter, chaque ligne ou -interligne comptant pour 1. La valeur de @code{clefOctavation} devrait -être de 7, -7, 15 ou -15, bien que rien ne vous empêche de lui affecter -une autre valeur. - - -Lorsqu'un changement de clef intervient en même temps qu'un saut de -ligne, la nouvelle clef est imprimer à la fois en fin de ligne et au -début de la suivante. Vous pouvez toujours supprimer cette « clef de -précaution » en affectant la valeur @code{end-of-line-invisible} à la -propriété @code{explicitClefVisibility} du contexte @code{Staff}. Le -comportement par défaut sera réactivé par -@w{@code{\\unset@tie{}Staff.explicitClefVisibility}}. - - -Les exemples qui suivent illustrent les différentes possibilités de -définir ces propriétés manuellement. Sur la première ligne, la -position relative des notes par rapport aux clefs sont préservées, ce -qui n'est pas le cas pour la deuxième ligne. - -" - doctitlefr = "Affinage des propriétés d'une clef" - lsrtags = "pitches, staff-notation, tweaks-and-overrides" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -110,6 +73,42 @@ Eigenschaften manuell setzt. Auf der ersten Zeile erhalten die manuellen Änderungen die ursprüngliche relative Positionierung von Schlüssel und Noten, auf der zweiten Zeile nicht. " +%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b + texidocfr = " +La commande @code{\\clef \"treble_8\"} équivaut à définir @code{clefGlyph}, +@code{clefPosition} -- qui contrôle la position verticale de la clé -- +@code{middleCPosition} et @code{clefOctavation}. Une clé est imprimée +lorsque l'une de ces propriétés, hormis @code{middleCPosition}, est +modifiée. + Les exemples suivant font +apparaître des possibilités de réglage manuel de ces propriétés. + + +Modifier le glyphe, la position de la clef ou son octaviation ne +changera pas la position des notes ; il faut pour y parvenir modifier +aussi la position du do médium. Le positionnement est relatif à la +ligne médiane, un nombre positif faisant monter, chaque ligne ou +interligne comptant pour 1. La valeur de @code{clefOctavation} devrait +être de 7, -7, 15 ou -15, bien que rien ne vous empêche de lui affecter +une autre valeur. + + +Lorsqu'un changement de clef intervient en même temps qu'un saut de +ligne, la nouvelle clef est imprimer à la fois en fin de ligne et au +début de la suivante. Vous pouvez toujours supprimer cette « clef de +précaution » en affectant la valeur @code{end-of-line-invisible} à la +propriété @code{explicitClefVisibility} du contexte @code{Staff}. Le +comportement par défaut sera réactivé par +@w{@code{\\unset@tie{}Staff.explicitClefVisibility}}. + + +Les exemples qui suivent illustrent les différentes possibilités de +définir ces propriétés manuellement. Sur la première ligne, la +position relative des notes par rapport aux clefs sont préservées, ce +qui n'est pas le cas pour la deuxième ligne. + +" + doctitlefr = "Affinage des propriétés d'une clef" texidoc = " The command @code{\\clef \"treble_8\"} is equivalent to setting diff --git a/Documentation/snippets/tweaks-and-overrides.snippet-list b/Documentation/snippets/tweaks-and-overrides.snippet-list index a0cab4690a..b0c1876012 100644 --- a/Documentation/snippets/tweaks-and-overrides.snippet-list +++ b/Documentation/snippets/tweaks-and-overrides.snippet-list @@ -18,6 +18,8 @@ display-bracket-with-only-one-staff-in-a-system.ly dotted-harmonics.ly drawing-boxes-around-grobs.ly drawing-circles-around-various-objects.ly +dynamics-custom-text-spanner-postfix.ly +dynamics-text-spanner-postfix.ly fine-tuning-pedal-brackets.ly forcing-horizontal-shift-of-notes.ly fret-diagrams-explained-and-developed.ly @@ -41,6 +43,7 @@ rest-styles.ly rhythmic-slashes.ly separating-key-cancellations-from-key-signature-changes.ly setting-hairpin-behavior-at-bar-lines.ly +string-number-extender-lines.ly suppressing-warnings-for-clashing-note-columns.ly time-signature-in-parentheses.ly time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly diff --git a/Documentation/snippets/using-double-slurs-for-legato-chords.ly b/Documentation/snippets/using-double-slurs-for-legato-chords.ly index 7ad42c6617..2203d21635 100644 --- a/Documentation/snippets/using-double-slurs-for-legato-chords.ly +++ b/Documentation/snippets/using-double-slurs-for-legato-chords.ly @@ -4,16 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Certains auteurs utilisent deux liaisons lorsqu'ils veulent -lier des accords. Dans LilyPond, il faut pour cela activer -la propriété @code{doubleSlurs} : - -" - doctitlefr = "Accords et double liaison d'articulation" - - lsrtags = "expressive-marks" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -31,6 +21,15 @@ werden. Das kann mit der Eigenschaft @code{doubleSlurs} erreicht werden. " doctitlede = "Doppelte Bögen für Legato-Akkorde benutzen" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Certains auteurs utilisent deux liaisons lorsqu'ils veulent +lier des accords. Dans LilyPond, il faut pour cela activer +la propriété @code{doubleSlurs} : + +" + doctitlefr = "Accords et double liaison d'articulation" + texidoc = " Some composers write two slurs when they want legato chords. This can diff --git a/Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly b/Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly index 8ffc300268..15d5765d4c 100644 --- a/Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly +++ b/Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly @@ -4,21 +4,6 @@ \version "2.13.4" \header { -%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 - texidocfr = " -Vous pourrez, en jouant sur la propriété @code{'Y-extent}, aligner les -différents objets @code{DynamicLineSpanner} (souflets ou textuels) -quelle que soit leur étendue, par rapport à un même point de référence. -Tous les éléments seront alors centrés sur une même ligne, ce qui sera -visuellement plus agréable. - -C'est le même principe qui sert à aligner les indications textuelles sur -une ligne de référence. - -" - doctitlefr = "Alignement vertical des nuances indications textuelles" - - lsrtags = "tweaks-and-overrides, spacing" %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca @@ -50,6 +35,20 @@ Grundlinie auszurichten. " doctitlede = "Vertikale Ausrichtung von Dynamik und Textbeschriftung beeinflussen" +%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7 + texidocfr = " +Vous pourrez, en jouant sur la propriété @code{'Y-extent}, aligner les +différents objets @code{DynamicLineSpanner} (souflets ou textuels) +quelle que soit leur étendue, par rapport à un même point de référence. +Tous les éléments seront alors centrés sur une même ligne, ce qui sera +visuellement plus agréable. + +C'est le même principe qui sert à aligner les indications textuelles sur +une ligne de référence. + +" + doctitlefr = "Alignement vertical des nuances indications textuelles" + texidoc = " By setting the @code{'Y-extent} property to a suitable value, all diff --git a/Documentation/web-texi2html.init b/Documentation/web-texi2html.init index 2bc6275b6d..dc43e52fbb 100644 --- a/Documentation/web-texi2html.init +++ b/Documentation/web-texi2html.init @@ -1,6 +1,12 @@ #!/usr/bin/env perl # -*- coding: utf-8; -*- +# this file is a complete mess. Some things are commented out +# because that's the only way it works. About 70% of the code in +# this file is never called. All in all, it's in drastic need of +# a complete review/editing, but we don't have the time right now. + + ### WTF, perl cannot read a file? ###use File::Slurp qw( read_file ); @@ -124,9 +130,9 @@ $Texi2HTML::Config::SEPARATED_FOOTNOTES = 0; # Print footnotes on same page, not # FIXME: creates duplicate anchors, which causes Opera to barf; # should be fixed in lilypond-texi2html.init too # Uhm, what about a bug report to Opera? We need sane names here. -if ($Texi2HTML::Config::SPLIT eq 'section') { - $Texi2HTML::Config::element_file_name = \&lilypond_element_file_name; -} +#if ($Texi2HTML::Config::SPLIT eq 'section') { +# $Texi2HTML::Config::element_file_name = \&lilypond_element_file_name; +#} $Texi2HTML::Config::element_target_name = \&lilypond_element_target_name; $default_print_element_header = $Texi2HTML::Config::print_element_header; $Texi2HTML::Config::print_element_header = \&lilypond_print_element_header; @@ -880,6 +886,8 @@ sub print_lilypond_page_foot($) print $fh "\n"; } + # FIXME: This div and p#languages need to be in div#footer. + # Should we move this div to postprocess_html.py ? print $fh "
\n"; print $fh "

Validation

\n"; print $fh "

Thanks to webdev.nl"; @@ -889,7 +897,6 @@ sub print_lilypond_page_foot($) print $fh " alt=\"Valid HTML 4.01 Transitional\"\n"; print $fh " height=\"31\" width=\"88\">

\n"; print $fh "
"; - print $fh ""; # Print the TOC frame and reset the TOC: lilypond_print_toc_div ($fh, \@this_page_toc); diff --git a/configure.in b/configure.in index f274204aaa..baf86aeb1b 100644 --- a/configure.in +++ b/configure.in @@ -58,7 +58,7 @@ AC_SUBST(LINK_GXX_STATICALLY) # must come before any header checks STEPMAKE_COMPILE -AC_CHECK_PROG(FCMATCH, fc-match, fc-match) +AC_CHECK_PROG(FCLIST, fc-list, fc-list) AC_MSG_CHECKING([New Century Schoolbook PFB files]) AC_SUBST(NCSB_SOURCE_FILES) if test "$NCSB_DIR" != "" ; then @@ -71,17 +71,17 @@ if test "$NCSB_DIR" != "" ; then fi done else - if test "$FCMATCH" != ""; then + if test "$FCLIST" != ""; then for style in Roman Italic "Bold Italic" Bold; do - NCSB_FILE=`$FCMATCH --verbose "Century Schoolbook L:style=$style:foundry=urw" | grep 'file:' | grep -v "\.ttf"` - - NCSB_FILE=`echo $NCSB_FILE | sed 's/^.*"\(.*\)".*$/\1/g'` + NCSB_FILE=`$FCLIST "Century Schoolbook L:style=$style:foundry=urw:fontformat=Type 1" file \ + | head -n 1` + NCSB_FILE=`echo $NCSB_FILE | sed 's/^\(.*\):$/\1/g'` NCSB_FILE=`$PYTHON "$srcdir/scripts/auxiliar/readlink.py" $NCSB_FILE` NCSB_SOURCE_FILES="$NCSB_FILE $NCSB_SOURCE_FILES" done else AC_MSG_RESULT(not found) - echo "Can't find Century Schoolbook files. Install FontConfig's fc-match," + echo "Can't find Century Schoolbook files. Install FontConfig's fc-list," echo "or use --with-ncsb-dir" fi fi diff --git a/input/manual/note-head-style.ly b/input/manual/note-head-style.ly index 98d33a27f5..fc908c05ee 100644 --- a/input/manual/note-head-style.ly +++ b/input/manual/note-head-style.ly @@ -35,62 +35,66 @@ pattern = << s1*0^\markup { "default" } \pattern - \override Staff.NoteHead #'style = #'baroque - s1*0^\markup { "baroque" } + \override Staff.NoteHead #'style = #'altdefault + s1*0^\markup { "altdefault" } \pattern \break + \override Staff.NoteHead #'style = #'baroque + s1*0^\markup { "baroque" } + \pattern + \override Staff.NoteHead #'style = #'neomensural s1*0^\markup { "neomensural" } \pattern + \break + \override Staff.NoteHead #'style = #'mensural s1*0^\markup { "mensural" } \pattern - \break - \override Staff.NoteHead #'style = #'petrucci s1*0^\markup { "petrucci" } \pattern + \break + \override Staff.NoteHead #'style = #'harmonic s1*0^\markup { "harmonic" } \pattern - \break - \override Staff.NoteHead #'style = #'harmonic-black s1*0^\markup { "harmonic-black" } \pattern + \break + \override Staff.NoteHead #'style = #'harmonic-mixed s1*0^\markup { "harmonic-mixed" } \pattern - \break - \override Staff.NoteHead #'style = #'diamond s1*0^\markup { "diamond" } \pattern + \break + \override Staff.NoteHead #'style = #'cross s1*0^\markup { "cross" } \pattern - \break - \override Staff.NoteHead #'style = #'xcircle s1*0^\markup { "xcircle" } \pattern + \break + \override Staff.NoteHead #'style = #'triangle s1*0^\markup { "triangle" } \pattern - \break - \override Staff.NoteHead #'style = #'slash s1*0^\markup { "slash" } \pattern diff --git a/input/regression/ambitus-gap.ly b/input/regression/ambitus-gap.ly new file mode 100644 index 0000000000..6539ce8550 --- /dev/null +++ b/input/regression/ambitus-gap.ly @@ -0,0 +1,20 @@ +\version "2.13.4" + +\header { + texidoc = "The gaps between an @code{AmbitusLine} and its +note heads are set by the @code{gap} property." +} + +\layout { + \context { + \Voice + \consists "Ambitus_engraver" + } +} + +\new Staff { + \time 2/4 + \override AmbitusLine #'gap = #1 + c'4 g'' +} + diff --git a/input/regression/ambitus-pitch-ordering.ly b/input/regression/ambitus-pitch-ordering.ly index 91b2d86d97..58beb5ace5 100644 --- a/input/regression/ambitus-pitch-ordering.ly +++ b/input/regression/ambitus-pitch-ordering.ly @@ -1,13 +1,11 @@ -\header { - texidoc = "Ambituses use actual pitch not lexicographic ordering." - } - \version "2.12.0" -\paper { - ragged-right=##t +\header { + texidoc = "Ambitus use actual pitch not lexicographic ordering." } \new Voice \with { \consists "Ambitus_engraver" } { - \clef F c eis fes + \clef F + c4 eis fes2 } + diff --git a/input/regression/ambitus.ly b/input/regression/ambitus.ly index f53e3e987b..03c6a776fb 100644 --- a/input/regression/ambitus.ly +++ b/input/regression/ambitus.ly @@ -1,27 +1,28 @@ +\version "2.12.0" + \header { - texidoc = "Ambituses indicate pitch ranges for voices. + texidoc = "Ambitus indicate pitch ranges for voices. Accidentals only show up if they're not part of key -signature. @code{AmbitusNoteHead} grobs also have ledger lines. - +signature. @code{AmbitusNoteHead} grobs also have ledger lines. " } -\version "2.12.0" \layout { - ragged-right = ##t - \context { - \Voice - \consists Ambitus_engraver - } + \context { + \Voice + \consists "Ambitus_engraver" + } } -\relative << - \new Staff { \time 2/4 c4 f' } - \new Staff \relative { - \time 2/4 - \key d \major - cis as' - } + \new Staff \relative c'{ + \time 2/4 + c4 f' + } + \new Staff \relative c' { + \time 2/4 + \key d \major + cis as' + } >> diff --git a/input/regression/automatic-polyphony-drumstaff.ly b/input/regression/automatic-polyphony-drumstaff.ly new file mode 100644 index 0000000000..9e4618579b --- /dev/null +++ b/input/regression/automatic-polyphony-drumstaff.ly @@ -0,0 +1,15 @@ +\version "2.13.4" + +\header{ texidoc = "In a DrumStaff, automatic polyphony can be used without + explicitly initializing separate voices." + } + +\score { + \new DrumStaff { + \drummode { + bd4 sn4 bd4 sn4 + << { \repeat unfold 16 hh16 } \\ { bd4 sn4 bd4 sn4 } >> + bd4 sn4 bd4 sn4 + } + } +} \ No newline at end of file diff --git a/input/regression/automatic-polyphony-tabstaff.ly b/input/regression/automatic-polyphony-tabstaff.ly new file mode 100644 index 0000000000..e696a082cb --- /dev/null +++ b/input/regression/automatic-polyphony-tabstaff.ly @@ -0,0 +1,18 @@ +\version "2.13.4" + +\header{ texidoc = "In a TabStaff, automatic polyphony can be used without + explicitly initializing separate voices." + } + +test = { + c'1 + << { c'4 d' e' f' } \\ { g,1 } >> + c'1 +} + +\score { + << + \new Staff { \clef "treble_8" \test } + \new TabStaff { \test } + >> +} \ No newline at end of file diff --git a/input/regression/clip-systems.ly b/input/regression/clip-systems.ly index 1bf7c926d1..5e26535c12 100644 --- a/input/regression/clip-systems.ly +++ b/input/regression/clip-systems.ly @@ -22,8 +22,7 @@ The result will be files named \version "2.12.0" #(ly:set-option 'clip-systems) - -#(set! output-count 1) +#(define output-suffix "1") origScore = \score{ \relative { @@ -70,8 +69,8 @@ origScore = \score{ } } -#(set! output-count 0) #(ly:set-option 'clip-systems #f) +#(define output-suffix #f) \book { \score { \origScore } diff --git a/input/regression/dynamics-custom-text-spanner-postfix.ly b/input/regression/dynamics-custom-text-spanner-postfix.ly new file mode 100644 index 0000000000..f3f26b0cf2 --- /dev/null +++ b/input/regression/dynamics-custom-text-spanner-postfix.ly @@ -0,0 +1,26 @@ +\version "2.13.4" + +\header { +texidoc = "Postfix functions for custom crescendo text spanners. The spanners +should start on the first note of the measure. One has to use -\mycresc, +otherwise the spanner start will rather be assigned to the next note." +} + +% Two functions for (de)crescendo spanners where you can explicitly give the +% spanner text. +mycresc = #(define-music-function (parser location mymarkup) (string?) + (make-music 'CrescendoEvent 'span-direction START + 'span-type 'text 'span-text mymarkup)) +mydecresc = #(define-music-function (parser location mymarkup) (string?) + (make-music 'DecrescendoEvent 'span-direction START + 'span-type 'text 'span-text mymarkup)) + +\relative c' { + c4-\mycresc "custom cresc" c4 c4 c4 | + c4 c4 c4 c4 | + c4-\mydecresc "custom decresc" c4 c4 c4 | + c4 c4\! c4 c4 +} + + + diff --git a/input/regression/dynamics-text-spanner-postfix.ly b/input/regression/dynamics-text-spanner-postfix.ly new file mode 100644 index 0000000000..2b1044c670 --- /dev/null +++ b/input/regression/dynamics-text-spanner-postfix.ly @@ -0,0 +1,27 @@ +\version "2.13.4" + +\header { +texidoc = "The \cresc, \dim and \decresc spanners can now be redefined as +postfix operators and produce one text spanner. Defining custom spanners is +also easy. Hairpin and text crescendi can be easily mixed. \< and \> produce +hairpins by default, \cresc etc. produce text spanners by default." +} + +% Some sample text dynamic spanners, to be used as postfix operators +crpoco = #(make-music 'CrescendoEvent 'span-direction START + 'span-type 'text 'span-text "cresc. poco a poco") +% Redefine the existing \cresc, \dim and \decresc commands to use postfix syntax +cresc = #(make-music 'CrescendoEvent 'span-direction START + 'span-type 'text 'span-text "cresc.") +dim = #(make-music 'DecrescendoEvent 'span-direction START + 'span-type 'text 'span-text "dim.") +decresc = #(make-music 'DecrescendoEvent 'span-direction START + 'span-type 'text 'span-text "decresc.") + +\relative c' { + c4\cresc d4 e4 f4 | + g4 a4\! b4\crpoco c4 | + c4 d4 e4 f4 | + g4 a4\! b4\< c4 | + g4\dim a4 b4\decresc c4\! +} diff --git a/input/regression/note-head-style.ly b/input/regression/note-head-style.ly index 98d33a27f5..fc908c05ee 100644 --- a/input/regression/note-head-style.ly +++ b/input/regression/note-head-style.ly @@ -35,62 +35,66 @@ pattern = << s1*0^\markup { "default" } \pattern - \override Staff.NoteHead #'style = #'baroque - s1*0^\markup { "baroque" } + \override Staff.NoteHead #'style = #'altdefault + s1*0^\markup { "altdefault" } \pattern \break + \override Staff.NoteHead #'style = #'baroque + s1*0^\markup { "baroque" } + \pattern + \override Staff.NoteHead #'style = #'neomensural s1*0^\markup { "neomensural" } \pattern + \break + \override Staff.NoteHead #'style = #'mensural s1*0^\markup { "mensural" } \pattern - \break - \override Staff.NoteHead #'style = #'petrucci s1*0^\markup { "petrucci" } \pattern + \break + \override Staff.NoteHead #'style = #'harmonic s1*0^\markup { "harmonic" } \pattern - \break - \override Staff.NoteHead #'style = #'harmonic-black s1*0^\markup { "harmonic-black" } \pattern + \break + \override Staff.NoteHead #'style = #'harmonic-mixed s1*0^\markup { "harmonic-mixed" } \pattern - \break - \override Staff.NoteHead #'style = #'diamond s1*0^\markup { "diamond" } \pattern + \break + \override Staff.NoteHead #'style = #'cross s1*0^\markup { "cross" } \pattern - \break - \override Staff.NoteHead #'style = #'xcircle s1*0^\markup { "xcircle" } \pattern + \break + \override Staff.NoteHead #'style = #'triangle s1*0^\markup { "triangle" } \pattern - \break - \override Staff.NoteHead #'style = #'slash s1*0^\markup { "slash" } \pattern diff --git a/input/regression/page-breaking-good-estimation.ly b/input/regression/page-breaking-good-estimation.ly new file mode 100644 index 0000000000..4b4b3c4366 --- /dev/null +++ b/input/regression/page-breaking-good-estimation.ly @@ -0,0 +1,33 @@ +\version "2.13.4" + +\header { + texidoc = "The page breaking algorithm can handle clefs combined +with lyrics. That is, the Y-extent approximations are a little more +accurate than just using bounding boxes. In particular, everything +should fit on one page here." +} + +#(set-default-paper-size "a6") + +Melody = \relative c' { + c2 c | c c | c c | \break + c2 c | c c | c c +} +Words = \lyricmode{ + bla bla bla bla bla bla + bla bla bla bla bla bla +} +\book { + \score { + << + \new Staff{\Melody} + \addlyrics{\Words} + \new Staff{\Melody} + \addlyrics{\Words} + \new Staff{\Melody} + \addlyrics{\Words} + \new Staff{\Melody} + \addlyrics{\Words} + >> + } +} diff --git a/input/regression/scheme-book-scores.ly b/input/regression/scheme-book-scores.ly new file mode 100644 index 0000000000..cd500bea6c --- /dev/null +++ b/input/regression/scheme-book-scores.ly @@ -0,0 +1,62 @@ +\version "2.13.4" + +\header { + + texidoc = "Scores can be generated with scheme, too, and inserted into the +current book(part). Generated and explicit scores can be mixed, the header +informations from top- and booklevel stack correctly." + +} + +#(use-modules (scm display-lily)) + +% Sample score, which adds a score (containing just one note) to the current +% book/bookpart/at toplevel using scheme rather than the parser. +% That score is supposed to use the global header information, too. +#(define add-one-note-score + (let ((pitch 0)) + (lambda (parser) + (let* ((scmpitch (ly:make-pitch 0 pitch 0)) + (music (make-music 'EventChord + 'elements (list (make-music 'NoteEvent + 'duration (ly:make-duration 2 0 1 1) + 'pitch scmpitch)))) + (score (scorify-music music parser)) + (layout (ly:output-def-clone $defaultlayout)) + (desc (markup #:large #:line ((ly:format "Score with a ~a" + (note-name->lily-string scmpitch parser)))))) + (ly:score-add-output-def! score layout) + (add-text parser desc) + (add-score parser score)) + (set! pitch (modulo (1+ pitch) 7))))) + +oneNoteScore = +#(define-music-function (parser location) () + (add-one-note-score parser) + (make-music 'Music 'void #t)) + +%%% + +\header { + title = "Main Title" + subtitle = "Main subtitle" + piece = "Piecetitle" +} + +\oneNoteScore + +\bookpart { + \header { title ="Title 1" subtitle="Sub1"} + \oneNoteScore + \score { \relative c' c1 } + \oneNoteScore +} + + +\bookpart { + \score { \relative c' c1 } + \oneNoteScore +} + +\oneNoteScore + diff --git a/lily/align-interface.cc b/lily/align-interface.cc index 2931043303..3d68bce912 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -89,13 +89,6 @@ get_skylines (Grob *me, { assert (a == Y_AXIS); Interval extent = g->pure_height (g, start, end); - if (!extent.is_empty ()) - { - Box b; - b[a] = extent; - b[other_axis (a)] = Interval (0, infinity_f); - skylines.insert (b, 0, other_axis (a)); - } // This is a hack to get better accuracy on the pure-height of VerticalAlignment. // It's quite common for a treble clef to be the highest element of one system @@ -111,6 +104,7 @@ get_skylines (Grob *me, if (Axis_group_interface::has_interface (g) && !Hara_kiri_group_spanner::request_suicide (g, start, end)) { + extent = Axis_group_interface::rest_of_line_pure_height (g, start, end); Interval begin_of_line_extent = Axis_group_interface::begin_of_line_pure_height (g, start); if (!begin_of_line_extent.is_empty ()) { @@ -120,6 +114,14 @@ get_skylines (Grob *me, skylines.insert (b, 0, other_axis (a)); } } + + if (!extent.is_empty ()) + { + Box b; + b[a] = extent; + b[other_axis (a)] = Interval (0, infinity_f); + skylines.insert (b, 0, other_axis (a)); + } } if (skylines.is_empty ()) diff --git a/lily/ambitus-engraver.cc b/lily/ambitus-engraver.cc index 2585bd8bc1..b1e89885ae 100644 --- a/lily/ambitus-engraver.cc +++ b/lily/ambitus-engraver.cc @@ -82,8 +82,8 @@ Ambitus_engraver::create_ambitus () Ambitus_engraver::Ambitus_engraver () { ambitus_ = 0; - heads_[LEFT] = heads_[RIGHT] = 0; - accidentals_[LEFT] = accidentals_[RIGHT] = 0; + heads_.set (0, 0); + accidentals_.set (0, 0); group_ = 0; is_typeset_ = false; start_key_sig_ = SCM_EOL; @@ -145,8 +145,7 @@ Ambitus_engraver::finalize () if (ambitus_ && !pitch_interval_.is_empty ()) { Grob *accidental_placement = - make_item ("AccidentalPlacement", - accidentals_[DOWN]->self_scm ()); + make_item ("AccidentalPlacement", accidentals_[DOWN]->self_scm ()); Direction d = DOWN; do @@ -154,8 +153,7 @@ Ambitus_engraver::finalize () Pitch p = pitch_interval_[d]; heads_[d]->set_property ("cause", causes_[d]->self_scm()); heads_[d]->set_property ("staff-position", - scm_from_int (start_c0_ - + p.steps ())); + scm_from_int (start_c0_ + p.steps ())); SCM handle = scm_assoc (scm_cons (scm_from_int (p.get_octave ()), scm_from_int (p.get_notename ())), @@ -166,7 +164,8 @@ Ambitus_engraver::finalize () start_key_sig_); Rational sig_alter = (handle != SCM_BOOL_F) - ? robust_scm2rational (scm_cdr (handle), Rational (0)) : Rational (0); + ? robust_scm2rational (scm_cdr (handle), Rational (0)) + : Rational (0); if (sig_alter == p.get_alteration ()) { @@ -174,17 +173,19 @@ Ambitus_engraver::finalize () heads_[d]->set_object ("accidental-grob", SCM_EOL); } else - { - accidentals_[d]->set_property ("alteration", ly_rational2scm (p.get_alteration ())); - } - Separation_item::add_conditional_item (heads_[d], accidental_placement); - Accidental_placement::add_accidental (accidental_placement, accidentals_[d]); + accidentals_[d]-> + set_property ("alteration", + ly_rational2scm (p.get_alteration ())); + Separation_item::add_conditional_item (heads_[d], + accidental_placement); + Accidental_placement::add_accidental (accidental_placement, + accidentals_[d]); + Pointer_group_interface::add_grob (ambitus_, + ly_symbol2scm ("note-heads"), + heads_[d]); } while (flip (&d) != DOWN); - - Pointer_group_interface::add_grob (ambitus_, ly_symbol2scm ("note-heads"), heads_[DOWN]); - Pointer_group_interface::add_grob (ambitus_, ly_symbol2scm ("note-heads"), heads_[UP]); Axis_group_interface::add_element (group_, accidental_placement); } else @@ -194,7 +195,7 @@ Ambitus_engraver::finalize () { accidentals_[d]->suicide (); heads_[d]->suicide (); - } + } while (flip (&d) != DOWN); ambitus_->suicide (); @@ -204,7 +205,7 @@ Ambitus_engraver::finalize () ADD_ACKNOWLEDGER (Ambitus_engraver, note_head); ADD_TRANSLATOR (Ambitus_engraver, /* doc */ - "", + "Create an ambitus.", /* create */ "AccidentalPlacement " @@ -214,7 +215,8 @@ ADD_TRANSLATOR (Ambitus_engraver, "AmbitusNoteHead ", /* read */ - "", + "keySignature " + "middleCPosition ", /* write */ "" diff --git a/lily/ambitus.cc b/lily/ambitus.cc deleted file mode 100644 index 85fb297886..0000000000 --- a/lily/ambitus.cc +++ /dev/null @@ -1,78 +0,0 @@ -/* - ambitus.cc -- implement Ambitus - - source file of the GNU LilyPond music typesetter - - (c) 2002--2009 Juergen Reuter -*/ - -#include "ambitus.hh" - -#include "staff-symbol-referencer.hh" -#include "pitch.hh" -#include "note-head.hh" -#include "item.hh" -#include "font-interface.hh" -#include "output-def.hh" -#include "lookup.hh" -#include "pointer-group-interface.hh" - -MAKE_SCHEME_CALLBACK (Ambitus, print, 1); -SCM -Ambitus::print (SCM smob) -{ - Item *me = (Item *) unsmob_grob (smob); - Stencil stencil; - - // FIXME : should be Ambitus_line join heads - extract_grob_set (me, "note-heads", heads); - if (to_boolean (me->get_property ("join-heads")) - && heads.size () > 1) - { - Grob *common - = common_refpoint_of_array (vector (heads.begin (), - heads.begin () + 2), - me, Y_AXIS); - - Grob *minh = heads[0]; - Grob *maxh = heads[1]; - - if (minh->relative_coordinate (common, Y_AXIS) - > maxh->relative_coordinate (common, Y_AXIS)) - { - Grob *t = maxh; - maxh = minh; - minh = t; - } - - Real pad = 0.35; - Real pmax = maxh->extent (common, Y_AXIS)[DOWN] - pad; - Real pmin = minh->extent (common, Y_AXIS)[UP] + pad; - - if (pmin < pmax) - { - Real linethickness = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")) - * robust_scm2double (me->get_property ("thickness"), 1.0); - Real blotdiameter = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter")); - Interval x_extent = 0.5 * linethickness * Interval (-1, 1); - Interval y_extent = Interval (pmin, pmax); - Box line_box (x_extent, y_extent); - - Stencil line = Lookup::round_filled_box (line_box, blotdiameter); - line.translate_axis (- me->relative_coordinate (common, Y_AXIS), - Y_AXIS); - return line.smobbed_copy (); - } - } - - return SCM_EOL; -} - -ADD_INTERFACE (Ambitus, - "The line between note heads for a pitch range.", - - /* properties */ - "join-heads " - "note-heads " - "thickness " - ); diff --git a/lily/axis-group-interface.cc b/lily/axis-group-interface.cc index 00a8219ec0..396a95857c 100644 --- a/lily/axis-group-interface.cc +++ b/lily/axis-group-interface.cc @@ -77,6 +77,15 @@ Axis_group_interface::relative_group_extent (vector const &elts, Interval Axis_group_interface::cached_pure_height (Grob *me, int start, int end) +{ + Interval iv = begin_of_line_pure_height (me, start); + iv.unite (rest_of_line_pure_height (me, start, end)); + + return iv; +} + +Interval +Axis_group_interface::rest_of_line_pure_height (Grob *me, int start, int end) { SCM adjacent_pure_heights = me->get_property ("adjacent-pure-heights"); diff --git a/lily/book.cc b/lily/book.cc index 48a5a4c552..303af1b8e3 100644 --- a/lily/book.cc +++ b/lily/book.cc @@ -127,8 +127,8 @@ Book::set_parent (Book *parent) paper_->unprotect (); } paper_->parent_ = parent->paper_; - /* If this part is the first child of parent, copy its header */ - if (ly_is_module (parent->header_) && (scm_is_null (parent->bookparts_))) + /* Copy the header block of the parent */ + if (ly_is_module (parent->header_)) { SCM tmp_header = ly_make_anonymous_module (false); ly_module_copy (tmp_header, parent->header_); diff --git a/lily/constrained-breaking.cc b/lily/constrained-breaking.cc index 8fb24f1eab..98722c53db 100644 --- a/lily/constrained-breaking.cc +++ b/lily/constrained-breaking.cc @@ -387,6 +387,12 @@ Constrained_breaking::initialize () line.turn_permission_ = min_permission (line.page_permission_, line.turn_permission_); + // TODO: see the hack regarding begin_of_line and + // rest_of_line extents in align-interface. Perhaps we + // should do the same thing here so that the effect extends + // between systems as well as within systems. It isn't as + // crucial here, however, because the effect is largest when + // dealing with large systems. line.extent_ = (extent.is_empty () || isnan (extent[LEFT]) || isnan (extent[RIGHT])) diff --git a/lily/general-scheme.cc b/lily/general-scheme.cc index b74354c6bc..43ff745623 100644 --- a/lily/general-scheme.cc +++ b/lily/general-scheme.cc @@ -411,7 +411,7 @@ LY_DEFINE (ly_truncate_list_x, "ly:truncate-list!", } string -format_single_argument (SCM arg, int precision) +format_single_argument (SCM arg, int precision, bool escape = false) { if (scm_is_integer (arg) && scm_exact_p (arg) == SCM_BOOL_T) return (String_convert::int_string (scm_to_int (arg))); @@ -430,7 +430,20 @@ format_single_argument (SCM arg, int precision) return (String_convert::form_string ("%.*lf", precision, val)); } else if (scm_is_string (arg)) - return (ly_scm2string (arg)); + { + string s = ly_scm2string (arg); + if (escape) + { + // Escape backslashes and double quotes, wrap it in double quotes + replace_all (&s, "\\", "\\\\"); + replace_all (&s, "\"", "\\\""); + // don't replace percents, since the png backend uses %d as escape sequence + // replace_all (&s, "%", "\\%"); + replace_all (&s, "$", "\\$"); + s = "\"" + s + "\""; + } + return s; + } else if (scm_is_symbol (arg)) return (ly_symbol2string (arg)); else @@ -445,7 +458,8 @@ format_single_argument (SCM arg, int precision) LY_DEFINE (ly_format, "ly:format", 1, 0, 1, (SCM str, SCM rest), - "LilyPond specific format, supporting @code{~a} and @code{~[0-9]f}.") + "LilyPond specific format, supporting @code{~a} and @code{~[0-9]f}. " + "Basic support for @code{~s} is also provided.") { LY_ASSERT_TYPE (scm_is_string, str, 1); @@ -491,6 +505,8 @@ LY_DEFINE (ly_format, "ly:format", if (spec == 'a' || spec == 'A' || spec == 'f' || spec == '$') results.push_back (format_single_argument (arg, precision)); + else if (spec == 's' || spec == 'S') + results.push_back (format_single_argument (arg, precision, true)); else if (spec == 'l') { SCM s = arg; diff --git a/lily/include/ambitus.hh b/lily/include/ambitus.hh deleted file mode 100644 index dc8d3c9bfd..0000000000 --- a/lily/include/ambitus.hh +++ /dev/null @@ -1,24 +0,0 @@ -/* - ambitus.hh - - source file of the GNU LilyPond music typesetter - - (c) 2000--2009 Juergen Reuter -*/ - -#ifndef AMBITUS_HH -#define AMBITUS_HH - -#include "lily-proto.hh" -#include "grob-interface.hh" - -struct Ambitus -{ - DECLARE_SCHEME_CALLBACK (print, (SCM smob)); - DECLARE_GROB_INTERFACE(); - static Slice get_positions (Grob *); - static Interval head_width (Grob *me, Grob *common); -}; - -#endif // AMBITUS_HH - diff --git a/lily/include/axis-group-interface.hh b/lily/include/axis-group-interface.hh index 95aa9f3bc5..0e8aae57b0 100644 --- a/lily/include/axis-group-interface.hh +++ b/lily/include/axis-group-interface.hh @@ -34,6 +34,7 @@ struct Axis_group_interface static Interval combine_pure_heights (Grob *me, SCM, int, int); static Interval cached_pure_height (Grob *me, int, int); static Interval begin_of_line_pure_height (Grob *me, int); + static Interval rest_of_line_pure_height (Grob *me, int, int); static Grob *calc_pure_elts_and_common (Grob*); static Skyline_pair skyline_spacing (Grob *me, vector elements); diff --git a/lily/new-dynamic-engraver.cc b/lily/new-dynamic-engraver.cc index 8c8fce9800..54aa8a8c6d 100644 --- a/lily/new-dynamic-engraver.cc +++ b/lily/new-dynamic-engraver.cc @@ -33,6 +33,8 @@ protected: virtual void process_music (); virtual void stop_translation_timestep (); private: + SCM get_property_setting (Stream_event *evt, char const *evprop, char const *ctxprop); + Drul_array accepted_spanevents_drul_; Spanner *current_spanner_; Spanner *finished_spanner_; @@ -68,6 +70,14 @@ New_dynamic_engraver::listen_span_dynamic (Stream_event *ev) ASSIGN_EVENT_ONCE (accepted_spanevents_drul_[d], ev); } +SCM +New_dynamic_engraver::get_property_setting (Stream_event *evt, char const *evprop, char const *ctxprop) +{ + SCM spanner_type = evt->get_property (evprop); + if (spanner_type == SCM_EOL) + spanner_type = get_property (ctxprop); + return spanner_type; +} void New_dynamic_engraver::process_music () @@ -105,7 +115,8 @@ New_dynamic_engraver::process_music () return; } - SCM cresc_type = get_property ((start_type + "Spanner").c_str ()); + SCM cresc_type = get_property_setting (current_span_event_, "span-type", + (start_type + "Spanner").c_str ()); if (cresc_type == ly_symbol2scm ("text")) { @@ -113,7 +124,8 @@ New_dynamic_engraver::process_music () = make_spanner ("DynamicTextSpanner", accepted_spanevents_drul_[START]->self_scm ()); - SCM text = get_property ((start_type + "Text").c_str ()); + SCM text = get_property_setting (current_span_event_, "span-text", + (start_type + "Text").c_str ()); if (Text_interface::is_markup (text)) { current_spanner_->set_property ("text", text); diff --git a/lily/parser.yy b/lily/parser.yy index 462a58de40..813452ef59 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -655,6 +655,7 @@ book_block: BOOK '{' book_body '}' { $$ = $3; pop_paper (PARSER); + PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-book"), SCM_BOOL_F); } ; @@ -670,11 +671,13 @@ book_body: $$->paper_->unprotect (); push_paper (PARSER, $$->paper_); $$->header_ = PARSER->lexer_->lookup_identifier ("$defaultheader"); + PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-book"), $$->self_scm ()); } | BOOK_IDENTIFIER { $$ = unsmob_book ($1); $$->protect (); $$->origin ()->set_spot (@$); + PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-book"), $1); } | book_body paper_block { $$->paper_ = $2; @@ -722,6 +725,7 @@ book_body: bookpart_block: BOOKPART '{' bookpart_body '}' { $$ = $3; + PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), SCM_BOOL_F); } ; @@ -729,11 +733,13 @@ bookpart_body: { $$ = new Book; $$->origin ()->set_spot (@$); + PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), $$->self_scm ()); } | BOOK_IDENTIFIER { $$ = unsmob_book ($1); $$->protect (); $$->origin ()->set_spot (@$); + PARSER->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), $1); } | bookpart_body paper_block { $$->paper_ = $2; diff --git a/ly/init.ly b/ly/init.ly index 88b152a9a1..93048100ae 100644 --- a/ly/init.ly +++ b/ly/init.ly @@ -14,6 +14,8 @@ #(define toplevel-bookparts (list)) #(define output-count 0) #(define $defaultheader #f) +#(define $current-book #f) +#(define $current-bookpart #f) #(define version-seen #f) #(define expect-error #f) #(define output-empty-score-list #f) diff --git a/ly/music-functions-init.ly b/ly/music-functions-init.ly index 7bec31990e..a57a17bc80 100644 --- a/ly/music-functions-init.ly +++ b/ly/music-functions-init.ly @@ -278,23 +278,6 @@ grace = -%% see comment for page-layout-parser definition below. -includePageLayoutFile = -#(define-music-function (parser location) () - (_i "Include the file @var{-page-layout.ly}. Deprecated as -part of two-pass spacing.") - (if (not (ly:get-option 'dump-tweaks)) - (let ((tweak-filename (format #f "~a-page-layout.ly" - (ly:parser-output-name parser)))) - (if (access? tweak-filename R_OK) - (begin - (ly:message "Including tweak file ~a" tweak-filename) - (set! page-layout-parser (ly:parser-clone parser)) - (ly:parser-parse-string page-layout-parser - (format #f "\\include \"~a\"" - tweak-filename)))))) - (make-music 'SequentialMusic 'void #t)) - instrumentSwitch = #(define-music-function (parser location name) (string?) @@ -306,7 +289,7 @@ instrumentSwitch = ) (if (not handle) - (ly:input-message "No such instrument: ~a" name)) + (ly:input-message location "No such instrument: ~a" name)) (context-spec-music (make-music 'SimultaneousMusic 'elements @@ -461,10 +444,6 @@ or @code{\"GrobName\"}") -%% Parser used to read page-layout file (see includePageLayoutFile -%% above), and then retreive score tweaks (see scoreTweak below). -#(define page-layout-parser #f) - %% pageBreak and pageTurn are music functions (iso music indentifiers), %% because music identifiers are not allowed at top-level. pageBreak = @@ -715,18 +694,6 @@ scaleDurations = (ly:music-compress music (ly:make-moment (car fraction) (cdr fraction)))) -%% see comment for page-layout-parser definition above. -scoreTweak = -#(define-music-function (parser location name) (string?) - (_i "Include the score tweak, if exists.") - (if (and page-layout-parser (not (ly:get-option 'dump-tweaks))) - (let ((tweak-music (ly:parser-lookup page-layout-parser - (string->symbol name)))) - (if (ly:music? tweak-music) - tweak-music - (make-music 'SequentialMusic))) - (make-music 'SequentialMusic))) - setBeatGrouping = #(define-music-function (parser location grouping) (pair?) (_i "Set the beat grouping in the current time signature to diff --git a/ly/paper-defaults-init.ly b/ly/paper-defaults-init.ly index 0bc54798e4..1ee92ed197 100644 --- a/ly/paper-defaults-init.ly +++ b/ly/paper-defaults-init.ly @@ -1,110 +1,96 @@ \version "2.12.0" \paper { - - %%% WARNING - %%% - %%% If you add any new dimensions, don't forget to update - %%% the dimension-variables variable. See paper.scm. - - unit = #(ly:unit) - mm = 1.0 - in = 25.4 - pt = #(/ in 72.27) - cm = #(* 10 mm) - - print-page-number = ##t - - %% - %% 20pt staff, 5 pt = 1.75 mm - %% - - output-scale = #1.7573 - - #(define-public book-title (marked-up-title 'bookTitleMarkup)) - #(define-public score-title (marked-up-title 'scoreTitleMarkup)) - - %% - %% ugh. hard coded? - %% - - #(layout-set-absolute-staff-size (* 20.0 pt)) - - - #(define-public score-title-properties - '((is-title . #t) - (is-book-title . #f) - )) - #(define-public book-title-properties - '((is-title . #t) - (is-book-title . #t) - )) - - %% Note: these are not scaled; they are in staff-spaces. - between-system-spacing = #'((space . 12) (minimum-distance . 8) (padding . 1)) - between-scores-system-spacing = #'((space . 14) (minimum-distance . 8) (padding . 1)) - after-title-spacing = #'((space . 2) (padding . 0.5)) - before-title-spacing = #'((space . 5) (padding . 0.5)) - between-title-spacing = #'((space . 1) (padding . 0.5)) - top-system-spacing = #'((space . 1) (padding . 1) (min-distance . 0)) - top-title-spacing = #'((space . 1) (padding . 1) (min-distance . 0)) - bottom-system-spacing = #'((space . 1) (padding . 1) (min-distance . 0) (stretchability . 5)) - - ragged-bottom = ##f - - %% - %% looks best for shorter scores. - %% - ragged-last-bottom= ##t - - %% - %% settings for the page breaker - %% - blank-last-page-force = 0 - blank-after-score-page-force = 2 - blank-page-force = 5 - - %% - %% To limit space between systems on a page with a lot of space left - %% - page-limit-inter-system-space = ##f - page-limit-inter-system-space-factor = 1.4 - - #(define font-defaults - '((font-encoding . fetaMusic))) - - %% - %% the font encoding `latin1' is a dummy value for Pango fonts - %% - #(define text-font-defaults - `((font-encoding . latin1) - (baseline-skip . 3) - (word-space . 0.6))) - - #(define page-breaking ly:optimal-breaking) - - #(define write-page-layout (ly:get-option 'dump-tweaks)) - #(define system-maximum-stretch-procedure - (lambda (line) - (if (stretchable-line? line) - (let ((height (line-height line))) - (/ (* height height) 80.0)) - 0.0))) - -% #(define page-music-height default-page-music-height ) -% #(define page-make-stencil default-page-make-stencil ) - - #(define make-header (marked-up-headfoot 'oddHeaderMarkup 'evenHeaderMarkup)) - #(define make-footer (marked-up-headfoot 'oddFooterMarkup 'evenFooterMarkup)) - #(set-paper-dimension-variables (current-module)) - - \include "titling-init.ly" - - top-margin = 5 \mm - bottom-margin = 6 \mm - head-separation = 4 \mm - foot-separation = 4 \mm - - first-page-number = #1 - print-first-page-number =##f - } + %%% WARNING + %%% + %%% If you add any new dimensions, don't forget to update + %%% the dimension-variables variable. See paper.scm. + + unit = #(ly:unit) + mm = 1.0 + in = 25.4 + pt = #(/ in 72.27) + cm = #(* 10 mm) + + print-page-number = ##t + + %% + %% 20pt staff, 5 pt = 1.75 mm + %% + + output-scale = #1.7573 + + #(define-public book-title (marked-up-title 'bookTitleMarkup)) + #(define-public score-title (marked-up-title 'scoreTitleMarkup)) + + %% + %% ugh. hard coded? + %% + + #(layout-set-absolute-staff-size (* 20.0 pt)) + + + #(define-public score-title-properties + '((is-title . #t) + (is-book-title . #f))) + #(define-public book-title-properties + '((is-title . #t) + (is-book-title . #t))) + + %% Note: these are not scaled; they are in staff-spaces. + between-system-spacing = #'((space . 12) (minimum-distance . 8) (padding . 1)) + between-scores-system-spacing = #'((space . 14) (minimum-distance . 8) (padding . 1)) + after-title-spacing = #'((space . 2) (padding . 0.5)) + before-title-spacing = #'((space . 5) (padding . 0.5)) + between-title-spacing = #'((space . 1) (padding . 0.5)) + top-system-spacing = #'((space . 1) (padding . 1) (min-distance . 0)) + top-title-spacing = #'((space . 1) (padding . 1) (min-distance . 0)) + bottom-system-spacing = #'((space . 1) (padding . 1) (min-distance . 0) (stretchability . 5)) + + ragged-bottom = ##f + + %% + %% looks best for shorter scores. + %% + ragged-last-bottom = ##t + + %% + %% settings for the page breaker + %% + blank-last-page-force = 0 + blank-after-score-page-force = 2 + blank-page-force = 5 + + %% + %% To limit space between systems on a page with a lot of space left + %% + page-limit-inter-system-space = ##f + page-limit-inter-system-space-factor = 1.4 + + #(define font-defaults + '((font-encoding . fetaMusic))) + + %% + %% the font encoding `latin1' is a dummy value for Pango fonts + %% + #(define text-font-defaults + `((font-encoding . latin1) + (baseline-skip . 3) + (word-space . 0.6))) + + #(define page-breaking ly:optimal-breaking) + + #(define make-header (marked-up-headfoot 'oddHeaderMarkup 'evenHeaderMarkup)) + #(define make-footer (marked-up-headfoot 'oddFooterMarkup 'evenFooterMarkup)) + #(set-paper-dimension-variables (current-module)) + + \include "titling-init.ly" + + top-margin = 5 \mm + bottom-margin = 6 \mm + head-separation = 4 \mm + foot-separation = 4 \mm + + first-page-number = #1 + print-first-page-number =##f +} diff --git a/ly/script-init.ly b/ly/script-init.ly index f54994a307..ab40c14865 100644 --- a/ly/script-init.ly +++ b/ly/script-init.ly @@ -1,56 +1,55 @@ -\version "2.12.0" +% script-init.ly +\version "2.12.0" % code char abbreviations -% -dashHat= "marcato" -dashPlus= "stopped" -dashDash= "tenuto" -dashBar= "staccatissimo" -dashLarger= "accent" -dashDot= "staccato" +dashHat = "marcato" +dashPlus = "stopped" +dashDash = "tenuto" +dashBar = "staccatissimo" +dashLarger = "accent" +dashDot = "staccato" dashUnderscore = "portato" harmonic = #(make-music 'HarmonicEvent) -thumb = #(make-articulation "thumb") accent = #(make-articulation "accent") +coda = #(make-articulation "coda") +downbow = #(make-articulation "downbow") +downmordent = #(make-articulation "downmordent") +downprall = #(make-articulation "downprall") espressivo = #(make-articulation "espressivo") -marcato = #(make-articulation "marcato") -staccatissimo = #(make-articulation "staccatissimo") -portato = #(make-articulation "portato") -signumcongruentiae = #(make-articulation "signumcongruentiae") fermata = #(make-articulation "fermata") -shortfermata = #(make-articulation "shortfermata") -longfermata = #(make-articulation "longfermata") -verylongfermata = #(make-articulation "verylongfermata") -stopped = #(make-articulation "stopped") -staccato = #(make-articulation "staccato") -tenuto = #(make-articulation "tenuto") -upbow = #(make-articulation "upbow") -downbow = #(make-articulation "downbow") +flageolet = #(make-articulation "flageolet") lheel = #(make-articulation "lheel") -rheel = #(make-articulation "rheel") +lineprall = #(make-articulation "lineprall") +longfermata = #(make-articulation "longfermata") ltoe = #(make-articulation "ltoe") -rtoe = #(make-articulation "rtoe") -turn = #(make-articulation "turn") +marcato = #(make-articulation "marcato") +mordent = #(make-articulation "mordent") open = #(make-articulation "open") -flageolet = #(make-articulation "flageolet") -reverseturn = #(make-articulation "reverseturn") -trill = #(make-articulation "trill") +portato = #(make-articulation "portato") prall = #(make-articulation "prall") -mordent = #(make-articulation "mordent") -upmordent = #(make-articulation "upmordent") -downmordent = #(make-articulation "downmordent") -prallprall = #(make-articulation "prallprall") -prallup = #(make-articulation "prallup") pralldown = #(make-articulation "pralldown") -lineprall = #(make-articulation "lineprall") prallmordent = #(make-articulation "prallmordent") -upprall = #(make-articulation "upprall") -downprall = #(make-articulation "downprall") +prallprall = #(make-articulation "prallprall") +prallup = #(make-articulation "prallup") +reverseturn = #(make-articulation "reverseturn") +rheel = #(make-articulation "rheel") +rtoe = #(make-articulation "rtoe") segno = #(make-articulation "segno") -coda = #(make-articulation "coda") -varcoda = #(make-articulation "varcoda") +shortfermata = #(make-articulation "shortfermata") +signumcongruentiae = #(make-articulation "signumcongruentiae") snappizzicato = #(make-articulation "snappizzicato") - +staccatissimo = #(make-articulation "staccatissimo") +staccato = #(make-articulation "staccato") +stopped = #(make-articulation "stopped") +tenuto = #(make-articulation "tenuto") +thumb = #(make-articulation "thumb") +trill = #(make-articulation "trill") +turn = #(make-articulation "turn") +upbow = #(make-articulation "upbow") +upmordent = #(make-articulation "upmordent") +upprall = #(make-articulation "upprall") +varcoda = #(make-articulation "varcoda") +verylongfermata = #(make-articulation "verylongfermata") diff --git a/mf/feta-bolletjes.mf b/mf/feta-bolletjes.mf index fcda600978..e8d8ff0fa3 100644 --- a/mf/feta-bolletjes.mf +++ b/mf/feta-bolletjes.mf @@ -221,7 +221,7 @@ fi; % % dimensions aren't entirely right. % -def draw_brevis = +def draw_brevis (expr linecount) = save stemthick, fudge; stemthick# = 2 stafflinethickness#; @@ -244,13 +244,17 @@ def draw_brevis = y4 = y2; y3 = y1; - draw_gridline (z1, z2, stemthick); - draw_gridline (z3, z4, stemthick); + for i := 0 step 1 until linecount - 1: + draw_gridline (z1 - (1.5 * i * stemthick, 0), + z2 - (1.5 * i * stemthick, 0), stemthick); + draw_gridline (z3 + (1.5 * i * stemthick, 0), + z4 + (1.5 * i * stemthick, 0), stemthick); + endfor; enddef; fet_beginchar ("Brevis notehead", "sM1"); - draw_brevis; + draw_brevis (1); draw_staff (-2, 2, 0); fet_endchar; @@ -258,7 +262,23 @@ fet_endchar; if test > 0: fet_beginchar ("Brevis notehead", "sM1"); - draw_brevis; + draw_brevis(1); + + draw_staff (-2, 2, 0.5); + fet_endchar; +fi; + + +fet_beginchar ("Double-lined brevis notehead", "sM1double"); + draw_brevis (2); + + draw_staff (-2, 2, 0); +fet_endchar; + + +if test > 0: + fet_beginchar ("Double-lined brevis notehead", "sM1double"); + draw_brevis (2); draw_staff (-2, 2, 0.5); fet_endchar; diff --git a/mf/feta-pendaal.mf b/mf/feta-pendaal.mf index fded9ecb3e..0e1695705a 100644 --- a/mf/feta-pendaal.mf +++ b/mf/feta-pendaal.mf @@ -33,7 +33,7 @@ fet_beginchar ("Pedal asterisk", "*"); save bulb, p, radius, thin, inner_r; path pat; - set_char_box (0, 7/9 pedalh#, 0, pedalh#); + set_char_box (0, 7/9 pedalh#, 0, 7/9 pedalh#); z0 = (1/2 w, h - 1/2 w); diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf index 7fd09c1341..313e39b542 100644 --- a/mf/feta-schrift.mf +++ b/mf/feta-schrift.mf @@ -1567,7 +1567,7 @@ fet_beginchar ("snap pizzicato (Bartok pizzicato)", "snappizzicato"); define_pixels (height, width); define_whole_blacker_pixels (thickness); - set_char_box (width# / 2, width# / 2, height# / 2, height# / 2); + set_char_box (width# / 2, width# / 2, height# / 2, height# * 3 / 4); penpos1 (thickness, 90); penpos2 (thickness, 180); @@ -1575,10 +1575,10 @@ fet_beginchar ("snap pizzicato (Bartok pizzicato)", "snappizzicato"); penpos4 (thickness, 0); x1 = 0; - y1r = h; + y1r = height / 2; x3 = x1; y3r = -y1r; - x4r = w; + x4r = width / 2; y4 = 0; x2r = -x4r; y2 = y4; @@ -1601,10 +1601,13 @@ fet_beginchar ("snap pizzicato (Bartok pizzicato)", "snappizzicato"); .. z4 .. cycle; fi; + z5 = (0, 0); - z6 = (x5, 1.5*y1r); - pickup pencircle scaled thickness; - draw z5 -- z6; + z6 = (x5, 1.5 y1r); + + draw_gridline (z5, z6, thickness); + + labels (5, 6); fet_endchar; fet_endgroup ("scripts"); diff --git a/python/auxiliar/postprocess_html.py b/python/auxiliar/postprocess_html.py index c26d7473e2..4e41b09803 100644 --- a/python/auxiliar/postprocess_html.py +++ b/python/auxiliar/postprocess_html.py @@ -160,10 +160,8 @@ def add_header (s, prefix): if not n: s = header + s - s = header_tag + '\n' + s - if doctype_re.search (s) == None: - s = doctype + s + s = doctype + header_tag + '\n' + s if css_re.search (s) == None: depth = (prefix.count ('/') - 1) * '../' diff --git a/python/convertrules.py b/python/convertrules.py index e0d118f11a..80e13b6c0a 100644 --- a/python/convertrules.py +++ b/python/convertrules.py @@ -2914,7 +2914,8 @@ added. BeatGrouping has been eliminated.\n\ Different settings for vertical layout.\n\ ly:system-start-text::print -> system-start-text::print\n\ Beam #'thickness -> Beam #'beam-thickness\n\ -ly:note-head::brew-ez-stencil -> note-head::brew-ez-stencil")) +ly:note-head::brew-ez-stencil -> note-head::brew-ez-stencil\n\ +ly:ambitus::print -> ambitus::print")) def conv(str): if re.search("override-auto-beam-setting", str): stderr_write ("\n") @@ -2937,7 +2938,7 @@ def conv(str): stderr_write(NOT_SMART % _("alignment-offsets has been changed to alignment-distances: \ you must now specify the distances between staves rather than the offset of staves.\n")) stderr_write(UPDATE_MANUALLY) - str = re.sub ('ly:(system-start-text::print|note-head::brew-ez-stencil)', + str = re.sub ('ly:(system-start-text::print|note-head::brew-ez-stencil|ambitus::print)', '\\1', str) str = re.sub ('(\\bBeam\\s+#\')(?=thickness\\b)', '\\1beam-', str) return str diff --git a/scm/backend-library.scm b/scm/backend-library.scm index 3a4ccab817..2f1bc6f41a 100644 --- a/scm/backend-library.scm +++ b/scm/backend-library.scm @@ -85,7 +85,7 @@ -dDEVICEHEIGHTPOINTS=~$" paper-width paper-height))) - (cmd (simple-format #f + (cmd (ly:format "~a\ ~a\ ~a\ diff --git a/scm/define-grob-interfaces.scm b/scm/define-grob-interfaces.scm index f06b0d4a90..23d200ebde 100644 --- a/scm/define-grob-interfaces.scm +++ b/scm/define-grob-interfaces.scm @@ -15,6 +15,11 @@ note)." '()) +(ly:add-interface + 'ambitus-interface + "The line between note heads for a pitch range." + '(gap note-heads thickness)) + (ly:add-interface 'bass-figure-interface "A bass figure text." diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index d0b65b64e4..0ff4f7641a 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -471,7 +471,6 @@ position a non-spaced line relative to the staff for which it has affinity. See @var{next-staff-spacing} for the format of this list.") - ;; ;; k ;; @@ -1073,8 +1072,6 @@ ligature grob in (in @code{staff-space} units).") (inclinatum ,boolean? "Is this neume an inclinatum?") - (join-heads ,boolean? "Whether to join the note heads of an ambitus -grob with a vertical line.") (join-right-amount ,number? "A length used for calculating the Y-extent of mensural ligatures.") diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 3182c54018..766f2f928a 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -122,14 +122,13 @@ (AmbitusLine . ( - (join-heads . #t) - (stencil . ,ly:ambitus::print) + (gap . 0.35) + (stencil . ,ambitus::print) (thickness . 2) (X-offset . ,ly:self-alignment-interface::centered-on-x-parent) (meta . ((class . Item) (interfaces . (ambitus-interface - font-interface - staff-symbol-referencer-interface)))))) + font-interface)))))) (AmbitusNoteHead . ( diff --git a/scm/define-markup-commands.scm b/scm/define-markup-commands.scm index 4058c34c07..53d71aa916 100644 --- a/scm/define-markup-commands.scm +++ b/scm/define-markup-commands.scm @@ -2314,7 +2314,7 @@ Draw @var{arg} in color specified by @var{color}. (ly:make-stencil (list 'color color (ly:stencil-expr stil)) (ly:stencil-extent stil X) (ly:stencil-extent stil Y)))) - + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; glyphs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -3033,7 +3033,7 @@ Set @var{arg} in subscript with a normal font size. (interpret-markup layout props arg) (* -0.5 baseline-skip) Y)) - + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; brackets. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -3079,7 +3079,7 @@ Draw vertical brackets around @var{arg}. (let ((th 0.1) ;; todo: take from GROB. (m (interpret-markup layout props arg))) (bracketify-stencil m Y th (* 2.5 th) th))) - + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Delayed markup evaluation ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -3112,7 +3112,7 @@ when @var{label} is not found." (markup #:concat (#:hspace gap page-markup))))))) x-ext y-ext))) - + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Markup list commands ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/scm/define-music-display-methods.scm b/scm/define-music-display-methods.scm index 10b1df3566..72f94b0acf 100644 --- a/scm/define-music-display-methods.scm +++ b/scm/define-music-display-methods.scm @@ -81,7 +81,7 @@ (if (and (car alist) (test item (cdar alist))) (set! result (car alist))))) -(define (note-name->lily-string ly-pitch parser) +(define-public (note-name->lily-string ly-pitch parser) ;; here we define a custom pitch= function, since we do not want to ;; test whether octaves are also equal. (otherwise, we would be using equal?) (define (pitch= pitch1 pitch2) @@ -92,7 +92,7 @@ (car result) #f))) -(define (octave->lily-string pitch) +(define-public (octave->lily-string pitch) (let ((octave (ly:pitch-octave pitch))) (cond ((>= octave 0) (make-string (1+ octave) #\')) @@ -103,7 +103,7 @@ ;;; ;;; durations ;;; -(define* (duration->lily-string ly-duration #:key (prev-duration (*previous-duration*)) +(define*-public (duration->lily-string ly-duration #:key (prev-duration (*previous-duration*)) (force-duration (*force-duration*)) (time-factor-numerator (*time-factor-numerator*)) (time-factor-denominator (*time-factor-denominator*))) diff --git a/scm/define-music-properties.scm b/scm/define-music-properties.scm index 3d11e06c1c..05f9e2b221 100644 --- a/scm/define-music-properties.scm +++ b/scm/define-music-properties.scm @@ -139,9 +139,11 @@ or down-stem?") (repeat-count ,integer? "Do a @code{\\repeat} how often?") (span-direction ,ly:dir? "Does this start or stop a spanner?") - (span-type ,string? "What kind of spanner should be created? + (span-type ,string? "What kind of spanner should be created? E.g. ligature +for ligatures, or text or hairpin for (de-)crescendi. TODO: Consider making type into symbol.") + (span-text ,string? "The displayed text for text spanners (e.g. cresc.)") (split-list ,list? "Splitting moments for part combiner.") (start-callback ,procedure? "Function to compute the negative length of starting grace notes. This property can only be defined as initializer diff --git a/scm/lily-library.scm b/scm/lily-library.scm index e7f1d295d8..335c345c3c 100644 --- a/scm/lily-library.scm +++ b/scm/lily-library.scm @@ -134,27 +134,35 @@ (ly:make-score music)) -(define (print-book-with parser book process-procedure) - (let* - ((paper (ly:parser-lookup parser '$defaultpaper)) - (layout (ly:parser-lookup parser '$defaultlayout)) - (count (ly:parser-lookup parser 'output-count)) - (base (ly:parser-output-name parser)) - (output-suffix (ly:parser-lookup parser 'output-suffix)) ) +(define (get-outfile-name parser base) + (let* ((output-suffix (ly:parser-lookup parser 'output-suffix)) + (counter-alist (ly:parser-lookup parser 'counter-alist)) + (output-count (assoc-get output-suffix counter-alist 0)) + (result base)) + ;; Allow all ASCII alphanumerics, including accents (if (string? output-suffix) - (set! base (format "~a-~a" base (string-regexp-substitute - "[^a-zA-Z0-9-]" "_" output-suffix)))) + (set! result (format "~a-~a" + base (string-regexp-substitute + "[^-[:alnum:]]" "_" output-suffix)))) + + ;; assoc-get call will always have returned a number + (if (> output-count 0) + (set! result (format #f "~a-~a" result output-count))) - ;; must be careful: output-count is under user control. - (if (not (integer? count)) - (set! count 0)) + (ly:parser-define! + parser 'counter-alist + (assoc-set! counter-alist output-suffix (1+ output-count))) + result)) + +(define (print-book-with parser book process-procedure) + (let* ((paper (ly:parser-lookup parser '$defaultpaper)) + (layout (ly:parser-lookup parser '$defaultlayout)) + (count (ly:parser-lookup parser 'output-count)) + (base (ly:parser-output-name parser)) + (outfile-name (get-outfile-name parser base))) - (if (> count 0) - (set! base (format #f "~a-~a" base count))) - (ly:parser-define! parser 'output-count (1+ count)) - (process-procedure book paper layout base) - )) + (process-procedure book paper layout outfile-name))) (define-public (print-book-with-defaults parser book) (print-book-with parser book ly:book-process)) @@ -162,6 +170,28 @@ (define-public (print-book-with-defaults-as-systems parser book) (print-book-with parser book ly:book-process-to-systems)) +;; Add a score to the current bookpart, book or toplevel +(define-public (add-score parser score) + (cond + ((ly:parser-lookup parser '$current-bookpart) + ((ly:parser-lookup parser 'bookpart-score-handler) + (ly:parser-lookup parser '$current-bookpart) score)) + ((ly:parser-lookup parser '$current-book) + ((ly:parser-lookup parser 'book-score-handler) + (ly:parser-lookup parser '$current-book) score)) + (else + ((ly:parser-lookup parser 'toplevel-score-handler) parser score)))) + +(define-public (add-text parser text) + (add-score parser (list text))) + +(define-public (add-music parser music) + (collect-music-aux (lambda (score) + (add-score parser score)) + parser + music)) + + ;;;;;;;;;;;;;;;; ;; alist @@ -398,17 +428,17 @@ found." (define-public empty-interval '(+inf.0 . -inf.0)) +(define-public (symmetric-interval expr) + (cons (- expr) expr)) + (define-public (interval-length x) "Length of the number-pair X, when an interval" (max 0 (- (cdr x) (car x)))) -(define-public interval-start car) (define-public (ordered-cons a b) (cons (min a b) (max a b))) -(define-public interval-end cdr) - (define-public (interval-bound interval dir) ((if (= dir RIGHT) cdr car) interval)) @@ -426,7 +456,9 @@ found." (/ (+ (car x) (cdr x)) 2))) (define-public interval-start car) + (define-public interval-end cdr) + (define-public (interval-translate iv amount) (cons (+ amount (car iv)) (+ amount (cdr iv)))) @@ -438,7 +470,6 @@ found." (cons (- (car iv) amount) (+ (cdr iv) amount))) - (define-public (interval-empty? iv) (> (car iv) (cdr iv))) @@ -446,6 +477,10 @@ found." (cons (min (car i1) (car i2)) (max (cdr i1) (cdr i2)))) +(define-public (interval-intersection i1 i2) + (cons (max (car i1) (car i2)) + (min (cdr i1) (cdr i2)))) + (define-public (interval-sane? i) (not (or (nan? (car i)) (inf? (car i)) @@ -457,7 +492,6 @@ found." (cons (min (interval-start interval) p) (max (interval-end interval) p))) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; string diff --git a/scm/music-functions.scm b/scm/music-functions.scm index cc1c3d2e85..3846727a1a 100644 --- a/scm/music-functions.scm +++ b/scm/music-functions.scm @@ -383,7 +383,7 @@ i.e. this is not an override" ;; TODO: take this from voicedGraceSettings or similar. '((Voice Stem font-size -3) (Voice NoteHead font-size -3) - (Voice TabNoteHead font-size -4) + (Voice TabNoteHead font-size -4) (Voice Dots font-size -3) (Voice Stem length-fraction 0.8) (Voice Stem no-stem-extend #t) @@ -625,7 +625,7 @@ inside of and outside of chord construct." (make-sequential-music (list (make-voice-props-set number) (make-simultaneous-music (car lst)))) - 'Voice (number->string (1+ number))) + 'Bottom (number->string (1+ number))) (voicify-list (cdr lst) (1+ number))))) (define (voicify-chord ch) diff --git a/scm/output-lib.scm b/scm/output-lib.scm index 444f77df06..68c338dfb8 100644 --- a/scm/output-lib.scm +++ b/scm/output-lib.scm @@ -99,6 +99,11 @@ (if (< log 0) (string-append (number->string log) "neomensural") (number->string log))) + ((altdefault) + ;; Like default, but brevis is drawn with double vertical lines + (if (= log -1) + (string-append (number->string log) "double") + (number->string log))) ((mensural) (string-append (number->string log) (symbol->string style))) ((petrucci) @@ -766,3 +771,38 @@ (+ (ly:self-alignment-interface::y-aligned-on-self grob) (interval-center extent)))) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ambitus + +(define-public (ambitus::print grob) + (let ((heads (ly:grob-object grob 'note-heads))) + + (if (and (ly:grob-array? heads) + (= (ly:grob-array-length heads) 2)) + (let* ((common (ly:grob-common-refpoint-of-array grob heads Y)) + (head-down (ly:grob-array-ref heads 0)) + (head-up (ly:grob-array-ref heads 1)) + (gap (ly:grob-property grob 'gap 0.35)) + (point-min (+ (interval-end (ly:grob-extent head-down common Y)) + gap)) + (point-max (- (interval-start (ly:grob-extent head-up common Y)) + gap))) + + (if (< point-min point-max) + (let* ((layout (ly:grob-layout grob)) + (line-thick (ly:output-def-lookup layout 'line-thickness)) + (blot (ly:output-def-lookup layout 'blot-diameter)) + (grob-thick (ly:grob-property grob 'thickness 2)) + (width (* line-thick grob-thick)) + (x-ext (symmetric-interval (/ width 2))) + (y-ext (cons point-min point-max)) + (line (ly:round-filled-box x-ext y-ext blot)) + (y-coord (ly:grob-relative-coordinate grob common Y))) + + (ly:stencil-translate-axis line (- y-coord) Y)) + empty-stencil)) + (begin + (ly:grob-suicide! grob) + (list))))) diff --git a/scm/output-svg.scm b/scm/output-svg.scm index 0d5dda4e95..7d7a6b3437 100644 --- a/scm/output-svg.scm +++ b/scm/output-svg.scm @@ -186,12 +186,12 @@ ;; (define (glyph-element-regexp name) (make-regexp (string-append ""))) (define (extract-glyph all-glyphs name size . rest) diff --git a/scm/ps-to-png.scm b/scm/ps-to-png.scm index cb20163c01..e220d8c7ca 100644 --- a/scm/ps-to-png.scm +++ b/scm/ps-to-png.scm @@ -120,7 +120,7 @@ (format #f "-dDEVICEWIDTHPOINTS=~,2f -dDEVICEHEIGHTPOINTS=~,2f" page-width page-height) "-dEPSCrop")) - (cmd (format #f "~a\ + (cmd (ly:format "~a\ ~a\ ~a\ -dGraphicsAlphaBits=4\ @@ -128,7 +128,7 @@ -dNOPAUSE\ -sDEVICE=~a\ -sOutputFile=~S\ - -r~S\ + -r~a\ ~S\ -c quit" (search-gs) diff --git a/scm/safe-lily.scm b/scm/safe-lily.scm index 1793003de2..2521a4ac77 100644 --- a/scm/safe-lily.scm +++ b/scm/safe-lily.scm @@ -144,7 +144,6 @@ ;;$defaultlayout ly:accidental-interface::print - ly:ambitus::print ly:arpeggio::print ly:arpeggio::brew-chord-bracket ly:bar-line::print diff --git a/scm/script.scm b/scm/script.scm index 00298bcb5c..9804c92dc0 100644 --- a/scm/script.scm +++ b/scm/script.scm @@ -1,267 +1,338 @@ ;;;; script.scm -- Script definitions ;;;; ;;;; source file of the GNU LilyPond music typesetter -;;;; +;;;; ;;;; (c) 2000--2009 Han-Wen Nienhuys (define-public default-script-alist - '(("thumb" . - ((script-stencil . (feta . ("thumb" . "thumb"))) - (avoid-slur . inside) - (padding . 0.20) - (direction . 1))) - ("accent" . - ((avoid-slur . around) - (padding . 0.20) - (quantize-position . #t) - (script-stencil . (feta . ("sforzato" . "sforzato"))) - (side-relative-direction . -1))) - ("espressivo" . - ((avoid-slur . around) - (padding . 0.20) - (quantize-position . #t) - (script-stencil . (feta . ("espr" . "espr"))) - (side-relative-direction . -1))) - ("marcato" . - ((script-stencil . (feta . ("dmarcato" . "umarcato"))) - (padding . 0.20) - (avoid-slur . inside) - ; (staff-padding . ()) - (quantize-position . #t) - (side-relative-direction . -1))) - ("staccatissimo" . - ((avoid-slur . inside) - (script-stencil . (feta . ("dstaccatissimo" . "ustaccatissimo"))) - (padding . 0.20) - (side-relative-direction . -1))) - - ("portato" . - ((script-stencil . (feta . ("uportato" . "dportato"))) - (avoid-slur . around) - (slur-padding . 0.3) - (padding . 0.45) - (side-relative-direction . -1))) + `( + ("accent" + . ( + (avoid-slur . around) + (padding . 0.20) + (quantize-position . #t) + (script-stencil . (feta . ("sforzato" . "sforzato"))) + (side-relative-direction . ,DOWN))) + ("accentus" + . ( + (script-stencil . (feta . ("uaccentus" . "uaccentus"))) + (side-relative-direction . ,DOWN) + (avoid-slur . ignore) + (padding . 0.20) + (quantize-position . #t) + (script-priority . -100) + (direction . ,UP))) + + + ("circulus" + . ( + (script-stencil . (feta . ("circulus" . "circulus"))) + (side-relative-direction . ,DOWN) + (avoid-slur . ignore) + (padding . 0.20) + (quantize-position . #t) + (script-priority . -100) + (direction . ,UP))) + ("coda" + . ( + (script-stencil . (feta . ("coda" . "coda"))) + (padding . 0.20) + (avoid-slur . outside) + (direction . ,UP))) + ("comma" + . ( + (script-stencil . (feta . ("lcomma" . "rcomma"))) + (quantize-position . #t) + (padding . 0.20) + (avoid-slur . ignore) + (direction . ,UP))) + + + ("downbow" + . ( + (script-stencil . (feta . ("downbow" . "downbow"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) + ("downmordent" + . ( + (script-stencil . (feta . ("downmordent" . "downmordent"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) + ("downprall" + . ( + (script-stencil . (feta . ("downprall" . "downprall"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) + + + ("espressivo" + . ( + (avoid-slur . around) + (padding . 0.20) + (quantize-position . #t) + (script-stencil . (feta . ("espr" . "espr"))) + (side-relative-direction . ,DOWN))) + + + ("fermata" + . ( + (script-stencil . (feta . ("dfermata" . "ufermata"))) + (padding . 0.20) + (avoid-slur . around) + (script-priority . 4000) + (direction . ,UP))) + ("flageolet" + . ( + (script-stencil . (feta . ("flageolet" . "flageolet"))) + (padding . 0.20) + (avoid-slur . around) ;guessing? + (direction . ,UP))) + + + ("ictus" + . ( + (script-stencil . (feta . ("ictus" . "ictus"))) + (side-relative-direction . ,DOWN) + (quantize-position . #t) + (avoid-slur . ignore) + (padding . 0.20) + (script-priority . -100) + (direction . ,DOWN))) + + + ("lheel" + . ( + (script-stencil . (feta . ("upedalheel" . "upedalheel"))) + (padding . 0.20) + (avoid-slur . around) ;guessing? + (direction . ,DOWN))) + ("lineprall" + . ( + (script-stencil . (feta . ("lineprall" . "lineprall"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) + ("longfermata" + . ( + (script-stencil . (feta . ("dlongfermata" . "ulongfermata"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) + ("ltoe" + . ( + (script-stencil . (feta . ("upedaltoe" . "upedaltoe"))) + (padding . 0.20) + (avoid-slur . around) ;guessing? + (direction . ,DOWN))) + + + ("marcato" + . ( + (script-stencil . (feta . ("dmarcato" . "umarcato"))) + (padding . 0.20) + (avoid-slur . inside) + ;;(staff-padding . ()) + (quantize-position . #t) + (side-relative-direction . ,DOWN))) + ("mordent" + . ( + (script-stencil . (feta . ("mordent" . "mordent"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) + + + ("open" + . ( + (avoid-slur . outside) + (padding . 0.20) + (script-stencil . (feta . ("open" . "open"))) + (direction . ,UP))) + + + ("portato" + . ( + (script-stencil . (feta . ("uportato" . "dportato"))) + (avoid-slur . around) + (slur-padding . 0.3) + (padding . 0.45) + (side-relative-direction . ,DOWN))) + ("prall" + . ( + (script-stencil . (feta . ("prall" . "prall"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) + ("pralldown" + . ( + (script-stencil . (feta . ("pralldown" . "pralldown"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) + ("prallmordent" + . ( + (script-stencil . (feta . ("prallmordent" . "prallmordent"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) + ("prallprall" + . ( + (script-stencil . (feta . ("prallprall" . "prallprall"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) + ("prallup" + . ( + (script-stencil . (feta . ("prallup" . "prallup"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) + + + ("reverseturn" + . ( + (script-stencil . (feta . ("reverseturn" . "reverseturn"))) + (padding . 0.20) + (avoid-slur . inside) + (direction . ,UP))) + ("rheel" + . ( + (script-stencil . (feta . ("dpedalheel" . "dpedalheel"))) + (padding . 0.20) + (avoid-slur . around) ;guessing? + (direction . ,UP))) + ("rtoe" + . ( + (script-stencil . (feta . ("dpedaltoe" . "dpedaltoe"))) + (padding . 0.20) + (avoid-slur . around) ;guessing? + (direction . ,UP))) + + + ("segno" + . ( + (script-stencil . (feta . ("segno" . "segno"))) + (padding . 0.20) + (avoid-slur . outside) + (direction . ,UP))) + ("semicirculus" + . ( + (script-stencil . (feta . ("dsemicirculus" . "dsemicirculus"))) + (side-relative-direction . ,DOWN) + (quantize-position . #t) + (avoid-slur . ignore) + (padding . 0.20) + (script-priority . -100) + (direction . ,UP))) + ("shortfermata" + . ( + (script-stencil . (feta . ("dshortfermata" . "ushortfermata"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) + ("signumcongruentiae" + . ( + (script-stencil . (feta . ("dsignumcongruentiae" . "usignumcongruentiae"))) + (padding . 0.20) + (avoid-slur . outside) + (direction . ,UP))) + ("snappizzicato" + . ( + (script-stencil . (feta . ("snappizzicato" . "snappizzicato"))) + (padding . 0.20) + (avoid-slur . outside) + (direction . ,UP))) + ("staccatissimo" + . ( + (avoid-slur . inside) + (script-stencil . (feta . ("dstaccatissimo" . "ustaccatissimo"))) + (padding . 0.20) + (side-relative-direction . ,DOWN))) + ("staccato" + . ( + (script-stencil . (feta . ("staccato" . "staccato"))) + (side-relative-direction . ,DOWN) + (quantize-position . #t) + (avoid-slur . inside) + (toward-stem-shift . 0.5) + (padding . 0.20) + (script-priority . -100))) + ("stopped" + . ( + (script-stencil . (feta . ("stopped" . "stopped"))) + (avoid-slur . inside) + (padding . 0.20) + (direction . ,UP))) + + + ("tenuto" + . ( + (script-stencil . (feta . ("tenuto" . "tenuto"))) + (quantize-position . #t) + (avoid-slur . inside) + (padding . 0.20) + (side-relative-direction . ,DOWN))) + ("thumb" + . ( + (script-stencil . (feta . ("thumb" . "thumb"))) + (avoid-slur . inside) + (padding . 0.20) + (direction . ,UP))) + ("trill" + . ( + (script-stencil . (feta . ("trill" . "trill"))) + (direction . ,UP) + (padding . 0.20) + (avoid-slur . outside) + (script-priority . 2000))) + ("turn" + . ( + (script-stencil . (feta . ("turn" . "turn"))) + (avoid-slur . inside) + (padding . 0.20) + (direction . ,UP))) + + + ("upbow" + . ( + (script-stencil . (feta . ("upbow" . "upbow"))) + (avoid-slur . around) + (padding . 0.20) + (direction . ,UP))) + ("upmordent" + . ( + (script-stencil . (feta . ("upmordent" . "upmordent"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) + ("upprall" + . ( + (script-stencil . (feta . ("upprall" . "upprall"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) - ("accentus" . - ((script-stencil . (feta . ("uaccentus" . "uaccentus"))) - (side-relative-direction . -1) - (avoid-slur . ignore) - (padding . 0.20) - (quantize-position . #t) - (script-priority . -100) - (direction . 1))) - ("ictus" . - ((script-stencil . (feta . ("ictus" . "ictus"))) - (side-relative-direction . -1) - (quantize-position . #t) - (avoid-slur . ignore) - (padding . 0.20) - (script-priority . -100) - (direction . -1))) - ("semicirculus" . - ((script-stencil . (feta . ("dsemicirculus" . "dsemicirculus"))) - (side-relative-direction . -1) - (quantize-position . #t) - (avoid-slur . ignore) - (padding . 0.20) - (script-priority . -100) - (direction . 1))) - ("circulus" . - ((script-stencil . (feta . ("circulus" . "circulus"))) - (side-relative-direction . -1) - (avoid-slur . ignore) - (padding . 0.20) - (quantize-position . #t) - (script-priority . -100) - (direction . 1))) - ("signumcongruentiae" . - ((script-stencil . (feta . ("dsignumcongruentiae" . "usignumcongruentiae"))) - (padding . 0.20) - (avoid-slur . outside) - (direction . 1))) - ("fermata" . - ((script-stencil . (feta . ("dfermata" . "ufermata"))) - (padding . 0.20) - (avoid-slur . around) - (script-priority . 4000) - (direction . 1))) - ("shortfermata" . - ((script-stencil . (feta . ("dshortfermata" . "ushortfermata"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("longfermata" . - ((script-stencil . (feta . ("dlongfermata" . "ulongfermata"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("verylongfermata" . - ((script-stencil . (feta . ("dverylongfermata" . "uverylongfermata"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("stopped" . - ((script-stencil . (feta . ("stopped" . "stopped"))) - (avoid-slur . inside) - (padding . 0.20) - (direction . 1))) - ("staccato" . - ((script-stencil . (feta . ("staccato" . "staccato"))) - (side-relative-direction . -1) - (quantize-position . #t) - (avoid-slur . inside) - (toward-stem-shift . 0.5) - (padding . 0.20) - (script-priority . -100))) - ("tenuto" . - ((script-stencil . (feta . ("tenuto" . "tenuto"))) - (quantize-position . #t) - (avoid-slur . inside) - (padding . 0.20) - (side-relative-direction . -1))) - ("comma" . - ((script-stencil . (feta . ("lcomma" . "rcomma"))) - (quantize-position . #t) - (padding . 0.20) - (avoid-slur . ignore) - (direction . 1))) - ("varcomma" . - ((script-stencil . (feta . ("lvarcomma" . "rvarcomma"))) - (quantize-position . #t) - (padding . 0.20) - (avoid-slur . ignore) - (direction . 1))) - ("upbow" . - ((script-stencil . (feta . ("upbow" . "upbow"))) - (avoid-slur . around) - (padding . 0.20) - (direction . 1))) - ("downbow" . - ((script-stencil . (feta . ("downbow" . "downbow"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("lheel" . - ((script-stencil . (feta . ("upedalheel" . "upedalheel"))) - (padding . 0.20) - (avoid-slur . around) ;guessing? - (direction . -1)) - ) - ("rheel" . - ((script-stencil . (feta . ("dpedalheel" . "dpedalheel"))) - (padding . 0.20) - (avoid-slur . around) ;guessing? - (direction . 1))) - ("ltoe" . - ((script-stencil . (feta . ("upedaltoe" . "upedaltoe"))) - (padding . 0.20) - (avoid-slur . around) ;guessing? - (direction . -1))) - ("rtoe" . - ((script-stencil . (feta . ("dpedaltoe" . "dpedaltoe"))) - (padding . 0.20) - (avoid-slur . around) ;guessing? - (direction . 1))) - ("turn" . - ((script-stencil . (feta . ("turn" . "turn"))) - (avoid-slur . inside) - (padding . 0.20) - (direction . 1))) - ("open" . - ((avoid-slur . outside) - (padding . 0.20) - (script-stencil . (feta . ("open" . "open"))) - (direction . 1))) - ("flageolet" . - ((script-stencil . (feta . ("flageolet" . "flageolet"))) - (padding . 0.20) - (avoid-slur . around) ;guessing? - (direction . 1))) - ("reverseturn" . - ((script-stencil . (feta . ("reverseturn" . "reverseturn"))) - (padding . 0.20) - (avoid-slur . inside) - (direction . 1))) - ("trill" . - ((script-stencil . (feta . ("trill" . "trill"))) - (direction . 1) - (padding . 0.20) - (avoid-slur . outside) - (script-priority . 2000))) - ("prall" . - ((script-stencil . (feta . ("prall" . "prall"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("mordent" . - ((script-stencil . (feta . ("mordent" . "mordent"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("prallprall" . - ((script-stencil . (feta . ("prallprall" . "prallprall"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("prallmordent" . - ((script-stencil . (feta . ("prallmordent" . "prallmordent"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("upprall" . - ((script-stencil . (feta . ("upprall" . "upprall"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("downprall" . - ((script-stencil . (feta . ("downprall" . "downprall"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("upmordent" . - ((script-stencil . (feta . ("upmordent" . "upmordent"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("downmordent" . - ((script-stencil . (feta . ("downmordent" . "downmordent"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("lineprall" . - ((script-stencil . (feta . ("lineprall" . "lineprall"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("pralldown" . - ((script-stencil . (feta . ("pralldown" . "pralldown"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("prallup" . - ((script-stencil . (feta . ("prallup" . "prallup"))) - (padding . 0.20) - (avoid-slur . around) - (direction . 1))) - ("segno" . - ((script-stencil . (feta . ("segno" . "segno"))) - (padding . 0.20) - (avoid-slur . outside) - (direction . 1))) - ("coda" . - ((script-stencil . (feta . ("coda" . "coda"))) - (padding . 0.20) - (avoid-slur . outside) - (direction . 1))) - ("varcoda" . - ((script-stencil . (feta . ("varcoda" . "varcoda"))) - (padding . 0.20) - (avoid-slur . outside) - (direction . 1))) - ("snappizzicato" . - ((script-stencil . (feta . ("snappizzicato" . "snappizzicato"))) - (padding . 0.20) - (avoid-slur . outside) - (direction . 1))) + ("varcoda" + . ( + (script-stencil . (feta . ("varcoda" . "varcoda"))) + (padding . 0.20) + (avoid-slur . outside) + (direction . ,UP))) + ("varcomma" + . ( + (script-stencil . (feta . ("lvarcomma" . "rvarcomma"))) + (quantize-position . #t) + (padding . 0.20) + (avoid-slur . ignore) + (direction . ,UP))) + ("verylongfermata" + . ( + (script-stencil . (feta . ("dverylongfermata" . "uverylongfermata"))) + (padding . 0.20) + (avoid-slur . around) + (direction . ,UP))) )) diff --git a/scm/stencil.scm b/scm/stencil.scm index 0f02a55505..94332b31b4 100644 --- a/scm/stencil.scm +++ b/scm/stencil.scm @@ -418,6 +418,9 @@ encloses the contents. 0)) (scaled-bbox (map (lambda (x) (* factor x)) bbox)) + ; We need to shift the whole eps to (0,0), otherwise it will appear + ; displaced in lilypond (displacement will depend on the scaling!) + (translate-string (ly:format "~a ~a translate" (- (list-ref bbox 0)) (- (list-ref bbox 1)))) (clip-rect-string (ly:format "~a ~a ~a ~a rectclip" (list-ref bbox 0) @@ -438,8 +441,9 @@ currentpoint translate BeginEPSF ~a dup scale ~a +~a %%BeginDocument: ~a -" factor clip-rect-string +" factor translate-string clip-rect-string file-name ) @@ -448,9 +452,10 @@ BeginEPSF EndEPSF grestore ")) - - (cons (list-ref scaled-bbox 0) (list-ref scaled-bbox 2)) - (cons (list-ref scaled-bbox 1) (list-ref scaled-bbox 3))) + ; Stencil starts at (0,0), since we have shifted the eps, and its + ; size is exactly the size of the scaled bounding box + (cons 0 (- (list-ref scaled-bbox 2) (list-ref scaled-bbox 0))) + (cons 0 (- (list-ref scaled-bbox 3) (list-ref scaled-bbox 1)))) (ly:make-stencil "" '(0 . 0) '(0 . 0))) )) diff --git a/stepmake/stepmake/generic-targets.make b/stepmake/stepmake/generic-targets.make index b98eb8c8c3..eddf25a671 100644 --- a/stepmake/stepmake/generic-targets.make +++ b/stepmake/stepmake/generic-targets.make @@ -8,12 +8,12 @@ man: $(LOOP) clean: local-clean - -rm -rf "./$(outdir)" + -rm -rf $(outdir) $(LOOP) ifeq (,$(findstring metafont,$(STEPMAKE_TEMPLATES))) bin-clean: local-bin-clean - -rm -rf "./$(outdir)" + -rm -rf $(outdir) $(LOOP) else bin-clean: @@ -27,7 +27,6 @@ dist: endif distclean: clean - $(LOOP) $(MAKE) local-distclean cvs-clean: diff --git a/stepmake/stepmake/texinfo-rules.make b/stepmake/stepmake/texinfo-rules.make index 808c89f87d..c0ae34e403 100644 --- a/stepmake/stepmake/texinfo-rules.make +++ b/stepmake/stepmake/texinfo-rules.make @@ -37,7 +37,7 @@ $(outdir)/%.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version $(outdir)/%/index.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi $(outdir)/%.html.omf mkdir -p $(dir $@) - $(TEXI2HTML) $(TEXI2HTML_FLAGS) --output=$(dir $@) $(TEXI2HTML_SPLIT) $< + $(TEXI2HTML) $(TEXI2HTML_SPLIT) $(TEXI2HTML_FLAGS) --output=$(dir $@) $< cp $(top-src-dir)/Documentation/css/*.css $(dir $@) $(XREF_MAPS_DIR)/%.xref-map: $(outdir)/%.texi diff --git a/stepmake/stepmake/texinfo-vars.make b/stepmake/stepmake/texinfo-vars.make index e5b2e98125..871d635315 100644 --- a/stepmake/stepmake/texinfo-vars.make +++ b/stepmake/stepmake/texinfo-vars.make @@ -32,10 +32,7 @@ WEB_TEXI2HTML_INIT =--init-file=$(top-src-dir)/Documentation/web-texi2html.init TEXI2HTML_INIT = $(DOC_TEXI2HTML_INIT) DOC_TEXI2HTML_SPLIT = --prefix=index --split=section -# --split=node --node-files makes that translated pages have -# translated file names, that breaks. -## WEB_TEXI2HTML_SPLIT = --prefix=index --split=node --node-files -WEB_TEXI2HTML_SPLIT = $(DOC_TEXI2HTML_SPLIT) +WEB_TEXI2HTML_SPLIT = --prefix=index --split=node --node-files TEXI2HTML_SPLIT = $(DOC_TEXI2HTML_SPLIT) TEXI2HTML_INCLUDES += --I=. --I=$(src-dir) --I=$(outdir) $(DOCUMENTATION_INCLUDES) --I=$(XREF_MAPS_DIR) diff --git a/stepmake/stepmake/toplevel-targets.make b/stepmake/stepmake/toplevel-targets.make index 17f0c59245..1c590b0447 100644 --- a/stepmake/stepmake/toplevel-targets.make +++ b/stepmake/stepmake/toplevel-targets.make @@ -9,6 +9,7 @@ local-distclean: config.cache config.status config.log index.html \ stepmake/stepmake/stepmake stepmake/stepmake/bin rm -rf autom4te.cache + rm -rf $(outdir) local-maintainerclean: rm -f configure diff --git a/tex/texinfo.tex b/tex/texinfo.tex index c7c92b8de7..91408263bc 100644 --- a/tex/texinfo.tex +++ b/tex/texinfo.tex @@ -1,13 +1,13 @@ % texinfo.tex -- TeX macros to handle Texinfo files. -% +% % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2008-12-16.21} +\def\texinfoversion{2009-08-14.15} % -% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, +% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -% 2007, 2008 Free Software Foundation, Inc. +% 2007, 2008, 2009 Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as @@ -100,6 +100,7 @@ \let\ptextop=\top {\catcode`\'=\active \global\let\ptexquoteright'}% Math-mode def from plain.tex. +\let\ptexraggedright=\raggedright % If this character appears in an error message or help string, it % starts a new line in the output. @@ -357,7 +358,7 @@ % We don't want .vr (or whatever) entries like this: % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} % "\acronym" won't work when it's read back in; - % it needs to be + % it needs to be % {\code {{\tt \backslashcurfont }acronym} \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. @@ -708,7 +709,7 @@ \def\?{?\spacefactor=\endofsentencespacefactor\space} % @frenchspacing on|off says whether to put extra space after punctuation. -% +% \def\onword{on} \def\offword{off} % @@ -1284,7 +1285,7 @@ where each line of input produces a line of output.} % that's what we do). % double active backslashes. -% +% {\catcode`\@=0 \catcode`\\=\active @gdef@activebackslashdouble{% @catcode`@\=@active @@ -1296,11 +1297,11 @@ where each line of input produces a line of output.} % us) handles it with this amazing macro to replace tokens, with minor % changes for Texinfo. It is included here under the GPL by permission % from the author, Heiko Oberdiek. -% +% % #1 is the tokens to replace. % #2 is the replacement. % #3 is the control sequence with the string. -% +% \def\HyPsdSubst#1#2#3{% \def\HyPsdReplace##1#1##2\END{% ##1% @@ -1331,13 +1332,16 @@ output) for that.)} \ifpdf % - % Color manipulation macros based on pdfcolor.tex. - \def\cmykDarkRed{0.28 1 1 0.35} - \def\cmykBlack{0 0 0 1} + % Color manipulation macros based on pdfcolor.tex, + % except using rgb instead of cmyk; the latter is said to render as a + % very dark gray on-screen and a very dark halftone in print, instead + % of actual black. + \def\rgbDarkRed{0.50 0.09 0.12} + \def\rgbBlack{0 0 0} % % k sets the color for filling (usual text, etc.); % K sets the color for stroking (thin rules, e.g., normal _'s). - \def\pdfsetcolor#1{\pdfliteral{#1 k #1 K}} + \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} % % Set color, and create a mark which defines \thiscolor accordingly, % so that \makeheadline knows which color to restore. @@ -1347,7 +1351,7 @@ output) for that.)} \pdfsetcolor{#1}% } % - \def\maincolor{\cmykBlack} + \def\maincolor{\rgbBlack} \pdfsetcolor{\maincolor} \edef\thiscolor{\maincolor} \def\lastcolordefs{} @@ -1442,8 +1446,8 @@ output) for that.)} % % by default, use a color that is dark enough to print on paper as % nearly black, but still distinguishable for online viewing. - \def\urlcolor{\cmykDarkRed} - \def\linkcolor{\cmykDarkRed} + \def\urlcolor{\rgbDarkRed} + \def\linkcolor{\rgbDarkRed} \def\endlink{\setcolor{\maincolor}\pdfendlink} % % Adding outlines to PDF; macros for calculating structure of outlines @@ -1572,11 +1576,15 @@ output) for that.)} % tried to figure out what each command should do in the context % of @url. for now, just make @/ a no-op, that's the only one % people have actually reported a problem with. - % + % \normalturnoffactive \def\@{@}% \let\/=\empty \makevalueexpandable + % do we want to go so far as to use \indexnofonts instead of just + % special-casing \var here? + \def\var##1{##1}% + % \leavevmode\setcolor{\urlcolor}% \startlink attr{/Border [0 0 0]}% user{/Subtype /Link /A << /S /URI /URI (#1) >>}% @@ -1976,7 +1984,7 @@ end % Definitions for a main text size of 11pt. This is the default in % Texinfo. -% +% \def\definetextfontsizexi{% % Text fonts (11.2pt, magstep1). \def\textnominalsize{11pt} @@ -2107,7 +2115,7 @@ end % section, chapter, etc., sizes following suit. This is for the GNU % Press printing of the Emacs 22 manual. Maybe other manuals in the % future. Used with @smallbook, which sets the leading to 12pt. -% +% \def\definetextfontsizex{% % Text fonts (10pt). \def\textnominalsize{10pt} @@ -2196,7 +2204,7 @@ end \setfont\secsf\sfbshape{12}{1000}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep1}{OT1} -\font\seci=cmmi12 +\font\seci=cmmi12 \font\secsy=cmsy10 scaled \magstep1 \def\sececsize{1200} @@ -2240,7 +2248,7 @@ end % We provide the user-level command % @fonttextsize 10 % (or 11) to redefine the text font size. pt is assumed. -% +% \def\xword{10} \def\xiword{11} % @@ -2250,7 +2258,7 @@ end % % Set \globaldefs so that documents can use this inside @tex, since % makeinfo 4.8 does not support it, but we need it nonetheless. - % + % \begingroup \globaldefs=1 \ifx\textsizearg\xword \definetextfontsizex \else \ifx\textsizearg\xiword \definetextfontsizexi @@ -2467,8 +2475,8 @@ end % from cmtt (char 0x0d). The undirected quote is ugly, so don't make it % the default, but it works for pasting with more pdf viewers (at least % evince), the lilypond developers report. xpdf does work with the -% regular 0x27. -% +% regular 0x27. +% \def\codequoteright{% \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax @@ -2480,7 +2488,7 @@ end % and a similar option for the left quote char vs. a grave accent. % Modern fonts display ASCII 0x60 as a grave accent, so some people like % the code environments to do likewise. -% +% \def\codequoteleft{% \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax @@ -2581,7 +2589,7 @@ end % monospace, don't change it; that way, we respect @kbdinputstyle. But % if it isn't monospace, then use \tt. % -\def\key#1{{\setupmarkupstyle{key} +\def\key#1{{\setupmarkupstyle{key}% \nohyphenation \ifmonospace\else\tt\fi #1}\null} @@ -2664,7 +2672,7 @@ end % each of the four underscores in __typeof__. This is undesirable in % some manuals, especially if they don't have long identifiers in % general. @allowcodebreaks provides a way to control this. -% +% \newif\ifallowcodebreaks \allowcodebreakstrue \def\keywordtrue{true} @@ -2789,7 +2797,7 @@ end % @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}% @@ -2801,7 +2809,7 @@ end % @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{% {\plainfrenchspacing #1}% @@ -2858,52 +2866,59 @@ end % Theiling, which support regular, slanted, bold and bold slanted (and % "outlined" (blackboard board, sort of) versions, which we don't need). % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. -% +% % Although only regular is the truly official Euro symbol, we ignore % that. The Euro is designed to be slightly taller than the regular % font height. -% +% % feymr - regular % feymo - slanted % feybr - bold % feybo - bold slanted -% +% % There is no good (free) typewriter version, to my knowledge. % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. % Hmm. -% +% % Also doesn't work in math. Do we need to do math with euro symbols? % Hope not. -% -% +% +% \def\euro{{\eurofont e}} \def\eurofont{% % We set the font at each command, rather than predefining it in % \textfonts and the other font-switching commands, so that % installations which never need the symbol don't have to have the % font installed. - % + % % There is only one designed size (nominal 10pt), so we always scale % that to the current nominal size. - % + % % By the way, simply using "at 1em" works for cmr10 and the like, but % does not work for cmbx10 and other extended/shrunken fonts. - % + % \def\eurosize{\csname\curfontsize nominalsize\endcsname}% % - \ifx\curfontstyle\bfstylename + \ifx\curfontstyle\bfstylename % bold: \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize - \else + \else % regular: \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize \fi \thiseurofont } -% Hacks for glyphs from the EC fonts similar to \euro. We don't -% use \let for the aliases, because sometimes we redefine the original -% macro, and the alias should reflect the redefinition. +% Glyphs from the EC fonts. We don't use \let for the aliases, because +% sometimes we redefine the original macro, and the alias should reflect +% the redefinition. +% +% Use LaTeX names for the Icelandic letters. +\def\DH{{\ecfont \char"D0}} % Eth +\def\dh{{\ecfont \char"F0}} % eth +\def\TH{{\ecfont \char"DE}} % Thorn +\def\th{{\ecfont \char"FE}} % thorn +% \def\guillemetleft{{\ecfont \char"13}} \def\guillemotleft{\guillemetleft} \def\guillemetright{{\ecfont \char"14}} @@ -2917,7 +2932,7 @@ end % we have the precomposed glyphs for the most common cases. We put the % tests to use those glyphs in the single \ogonek macro so we have fewer % dummy definitions to worry about for index entries, etc. -% +% % ogonek is also used with other letters in Lithuanian (IOU), but using % the precomposed glyphs for those is not so easy since they aren't in % the same EC font. @@ -2940,6 +2955,7 @@ end \def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} \def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} % +% Use the ec* fonts (cm-super in outline format) for non-CM glyphs. \def\ecfont{% % We can't distinguish serif/sans and italic/slanted, but this % is used for crude hacks anyway (like adding French and German @@ -2974,7 +2990,7 @@ end % 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 @@ -3320,7 +3336,7 @@ end % 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 @@ -3414,9 +3430,18 @@ end \parindent=0pt \parskip=\smallskipamount \ifdim\parskip=0pt \parskip=2pt \fi + % + % Try typesetting the item mark that if the document erroneously says + % something like @itemize @samp (intending @table), there's an error + % right away at the @itemize. It's not the best error message in the + % world, but it's better than leaving it to the @item. This means if + % the user wants an empty mark, they have to say @w{} not just @w. \def\itemcontents{#1}% + \setbox0 = \hbox{\itemcontents}% + % % @itemize with no arg is equivalent to @itemize @bullet. \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi + % \let\item=\itemizeitem } @@ -3437,6 +3462,7 @@ end \ifnum\lastpenalty<10000 \parskip=0in \fi \noindent \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% + % \vadjust{\penalty 1200}}% not good to break after first line of item. \flushcr } @@ -3658,12 +3684,19 @@ end % % @headitem starts a heading row, which we typeset in bold. % Assignments have to be global since we are inside the implicit group -% of an alignment entry. Note that \everycr resets \everytab. -\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}% +% of an alignment entry. \everycr resets \everytab so we don't have to +% undo it ourselves. +\def\headitemfont{\b}% for people to use in the template row; not changeable +\def\headitem{% + \checkenv\multitable + \crcr + \global\everytab={\bf}% can't use \headitemfont since the parsing differs + \the\everytab % for the first item +}% % % 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. +% we again encounter the problem the 1sp was intended to solve. % --karl, nathan@acm.org, 20apr99. \def\tab{\checkenv\multitable &\the\everytab}% @@ -4116,7 +4149,7 @@ end % processing continues to some further point. On the other hand, it % seems \endinput does not hurt in the printed index arg, since that % is still getting written without apparent harm. - % + % % Sample source (mac-idx3.tex, reported by Graham Percival to % help-texinfo, 22may06): % @macro funindex {WORD} @@ -4124,12 +4157,12 @@ end % @end macro % ... % @funindex commtest - % + % % The above is not enough to reproduce the bug, but it gives the flavor. - % + % % Sample whatsit resulting: % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} - % + % % So: \let\endinput = \empty % @@ -4181,19 +4214,23 @@ end % Non-English letters. \definedummyword\AA \definedummyword\AE + \definedummyword\DH \definedummyword\L - \definedummyword\OE \definedummyword\O + \definedummyword\OE + \definedummyword\TH \definedummyword\aa \definedummyword\ae + \definedummyword\dh + \definedummyword\exclamdown \definedummyword\l - \definedummyword\oe \definedummyword\o - \definedummyword\ss - \definedummyword\exclamdown - \definedummyword\questiondown + \definedummyword\oe \definedummyword\ordf \definedummyword\ordm + \definedummyword\questiondown + \definedummyword\ss + \definedummyword\th % % Although these internal commands shouldn't show up, sometimes they do. \definedummyword\bf @@ -4288,6 +4325,7 @@ end \definedummyword\code \definedummyword\command \definedummyword\dfn + \definedummyword\email \definedummyword\emph \definedummyword\env \definedummyword\file @@ -4336,19 +4374,23 @@ end % Non-English letters. \def\AA{AA}% \def\AE{AE}% + \def\DH{DZZ}% \def\L{L}% \def\OE{OE}% \def\O{O}% + \def\TH{ZZZ}% \def\aa{aa}% \def\ae{ae}% + \def\dh{dzz}% + \def\exclamdown{!}% \def\l{l}% \def\oe{oe}% - \def\o{o}% - \def\ss{ss}% - \def\exclamdown{!}% - \def\questiondown{?}% \def\ordf{a}% \def\ordm{o}% + \def\o{o}% + \def\questiondown{?}% + \def\ss{ss}% + \def\th{zzz}% % \def\LaTeX{LaTeX}% \def\TeX{TeX}% @@ -4358,20 +4400,19 @@ end \def\bullet{bullet}% \def\comma{,}% \def\copyright{copyright}% - \def\registeredsymbol{R}% \def\dots{...}% \def\enddots{...}% \def\equiv{==}% \def\error{error}% \def\euro{euro}% + \def\expansion{==>}% \def\guillemetleft{<<}% \def\guillemetright{>>}% \def\guilsinglleft{<}% \def\guilsinglright{>}% - \def\expansion{==>}% \def\minus{-}% - \def\pounds{pounds}% \def\point{.}% + \def\pounds{pounds}% \def\print{-|}% \def\quotedblbase{"}% \def\quotedblleft{"}% @@ -4379,19 +4420,20 @@ end \def\quoteleft{`}% \def\quoteright{'}% \def\quotesinglbase{,}% + \def\registeredsymbol{R}% \def\result{=>}% - \def\textdegree{degrees}% + \def\textdegree{o}% % % 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. - % + % \macrolist } @@ -4519,7 +4561,7 @@ end % 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. @@ -5100,7 +5142,9 @@ end \gdef\chaplevelprefix{\the\chapno.}% \resetallfloatnos % - \message{\putwordChapter\space \the\chapno}% + % \putwordChapter can contain complex things in translations. + \toks0=\expandafter{\putwordChapter}% + \message{\the\toks0 \space \the\chapno}% % % Write the actual heading. \chapmacro{#1}{Ynumbered}{\the\chapno}% @@ -5111,15 +5155,17 @@ end \global\let\subsubsection = \numberedsubsubsec } -\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz +\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz +% \def\appendixzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\appendixno by 1 \gdef\chaplevelprefix{\appendixletter.}% \resetallfloatnos % - \def\appendixnum{\putwordAppendix\space \appendixletter}% - \message{\appendixnum}% + % \putwordAppendix can contain complex things in translations. + \toks0=\expandafter{\putwordAppendix}% + \message{\the\toks0 \space \appendixletter}% % \chapmacro{#1}{Yappendix}{\appendixletter}% % @@ -5259,7 +5305,7 @@ end \def\chapheading{\chapbreak \parsearg\chapheadingzzz} \def\chapheadingzzz#1{% {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright + \parindent=0pt\ptexraggedright \rmisbold #1\hfill}}% \bigskip \par\penalty 200\relax \suppressfirstparagraphindent @@ -5352,7 +5398,10 @@ end \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\appendixletter}% - \gdef\noexpand\thischapter{\putwordAppendix{} \noexpand\thischapternum: + % \noexpand\putwordAppendix avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} + \noexpand\thischapternum: \noexpand\thischaptername}% }% \else @@ -5360,7 +5409,10 @@ end \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\the\chapno}% - \gdef\noexpand\thischapter{\putwordChapter{} \noexpand\thischapternum: + % \noexpand\putwordChapter avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordChapter{} + \noexpand\thischapternum: \noexpand\thischaptername}% }% \fi\fi\fi @@ -5416,7 +5468,7 @@ end % % Typeset the actual heading. \nobreak % Avoid page breaks at the interline glue. - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 \centerparametersmaybe \unhbox0 #1\par}% }% @@ -5440,7 +5492,7 @@ end % \def\unnchfopen #1{% \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright + \parindent=0pt\ptexraggedright \rmisbold #1\hfill}}\bigskip \par\nobreak } \def\chfopen #1#2{\chapoddpage {\chapfonts @@ -5503,7 +5555,10 @@ end \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% - \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum: + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi @@ -5513,7 +5568,10 @@ end \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% - \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum: + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi @@ -5573,7 +5631,7 @@ end \nobreak % % Output the actual section heading. - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 % zero if no section number \unhbox0 #1}% }% @@ -5589,11 +5647,11 @@ end % glue accumulate. (Not a breakpoint because it's preceded by a % discardable item.) \vskip-\parskip - % + % % 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 \penalty 10001 @@ -5651,7 +5709,7 @@ end % These characters do not print properly in the Computer Modern roman % fonts, so we must take special care. This is more or less redundant % with the Texinfo input format setup at the end of this file. -% +% \def\activecatcodes{% \catcode`\"=\active \catcode`\$=\active @@ -5701,7 +5759,7 @@ end % redefined for the two-volume lispref. We always output on % \jobname.toc even if this is redefined. -% +% \def\tocreadfilename{\jobname.toc} % Normal (long) toc. @@ -6151,6 +6209,30 @@ end \let\Eflushright = \afterenvbreak +% @raggedright does more-or-less normal line breaking but no right +% justification. From plain.tex. +\envdef\raggedright{% + \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax +} +\let\Eraggedright\par + +\envdef\raggedleft{% + \parindent=0pt \leftskip0pt plus2em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedleft\par + +\envdef\raggedcenter{% + \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedcenter\par + + % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. We keep \parskip nonzero in general, since % we're doing normal filling. So, when using \aboveenvbreak and @@ -6769,7 +6851,7 @@ end % 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\let \csname#1\expandafter\endcsname @@ -7929,21 +8011,22 @@ end \closein 1 \endgroup % end raw TeX \endgroup} -} % % If they passed de_DE, and txi-de_DE.tex doesn't exist, % try txi-de.tex. -% -\def\documentlanguagetrywithoutunderscore#1_#2\finish{% +% +\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% \openin 1 txi-#1.tex \ifeof 1 \errhelp = \nolanghelp \errmessage{Cannot read language file txi-#1.tex}% \else + \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 } +}% end of special _ catcode % \newhelp\nolanghelp{The given language definition file cannot be found or is empty. Maybe you need to install it? Putting it in the current @@ -7952,16 +8035,16 @@ directory should work if nowhere else does.} % This macro is called from txi-??.tex files; the first argument is the % \language name to set (without the "\lang@" prefix), the second and % third args are \{left,right}hyphenmin. -% +% % The language names to pass are determined when the format is built. % See the etex.log file created at that time, e.g., % /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. -% +% % With TeX Live 2008, etex now includes hyphenation patterns for all % available languages. This means we can support hyphenation in % Texinfo, at least to some extent. (This still doesn't solve the % accented characters problem.) -% +% \catcode`@=11 \def\txisetlanguage#1#2#3{% % do not set the language if the name is undefined in the current TeX. @@ -8016,7 +8099,7 @@ directory should work if nowhere else does.} \setnonasciicharscatcode\active \lattwochardefs % - \else \ifx \declaredencoding \latone + \else \ifx \declaredencoding \latone \setnonasciicharscatcode\active \latonechardefs % @@ -8028,7 +8111,7 @@ directory should work if nowhere else does.} \setnonasciicharscatcode\active \utfeightchardefs % - \else + \else \message{Unknown document encoding #1, ignoring.}% % \fi % utfeight @@ -8040,7 +8123,7 @@ directory should work if nowhere else does.} % A message to be logged when using a character that isn't available % the default font encoding (OT1). -% +% \def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} % Take account of \c (plain) vs. \, (Texinfo) difference. @@ -8053,21 +8136,21 @@ directory should work if nowhere else does.} % % Latin1 (ISO-8859-1) character definitions. \def\latonechardefs{% - \gdef^^a0{~} + \gdef^^a0{~} \gdef^^a1{\exclamdown} - \gdef^^a2{\missingcharmsg{CENT SIGN}} + \gdef^^a2{\missingcharmsg{CENT SIGN}} \gdef^^a3{{\pounds}} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\missingcharmsg{YEN SIGN}} - \gdef^^a6{\missingcharmsg{BROKEN BAR}} + \gdef^^a6{\missingcharmsg{BROKEN BAR}} \gdef^^a7{\S} - \gdef^^a8{\"{}} - \gdef^^a9{\copyright} + \gdef^^a8{\"{}} + \gdef^^a9{\copyright} \gdef^^aa{\ordf} \gdef^^ab{\guillemetleft} \gdef^^ac{$\lnot$} - \gdef^^ad{\-} - \gdef^^ae{\registeredsymbol} + \gdef^^ad{\-} + \gdef^^ae{\registeredsymbol} \gdef^^af{\={}} % \gdef^^b0{\textdegree} @@ -8094,7 +8177,7 @@ directory should work if nowhere else does.} \gdef^^c2{\^A} \gdef^^c3{\~A} \gdef^^c4{\"A} - \gdef^^c5{\ringaccent A} + \gdef^^c5{\ringaccent A} \gdef^^c6{\AE} \gdef^^c7{\cedilla C} \gdef^^c8{\`E} @@ -8106,7 +8189,7 @@ directory should work if nowhere else does.} \gdef^^ce{\^I} \gdef^^cf{\"I} % - \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}} + \gdef^^d0{\DH} \gdef^^d1{\~N} \gdef^^d2{\`O} \gdef^^d3{\'O} @@ -8120,7 +8203,7 @@ directory should work if nowhere else does.} \gdef^^db{\^U} \gdef^^dc{\"U} \gdef^^dd{\'Y} - \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}} + \gdef^^de{\TH} \gdef^^df{\ss} % \gdef^^e0{\`a} @@ -8140,7 +8223,7 @@ directory should work if nowhere else does.} \gdef^^ee{\^{\dotless i}} \gdef^^ef{\"{\dotless i}} % - \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}} + \gdef^^f0{\dh} \gdef^^f1{\~n} \gdef^^f2{\`o} \gdef^^f3{\'o} @@ -8154,7 +8237,7 @@ directory should work if nowhere else does.} \gdef^^fb{\^u} \gdef^^fc{\"u} \gdef^^fd{\'y} - \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}} + \gdef^^fe{\th} \gdef^^ff{\"y} } @@ -8226,7 +8309,7 @@ directory should work if nowhere else does.} \gdef^^ce{\^I} \gdef^^cf{\v D} % - \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}} + \gdef^^d0{\DH} \gdef^^d1{\'N} \gdef^^d2{\v N} \gdef^^d3{\'O} @@ -8235,7 +8318,7 @@ directory should work if nowhere else does.} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\v R} - \gdef^^d9{\ringaccent U} + \gdef^^d9{\ringaccent U} \gdef^^da{\'U} \gdef^^db{\H U} \gdef^^dc{\"U} @@ -8260,7 +8343,7 @@ directory should work if nowhere else does.} \gdef^^ee{\^\i} \gdef^^ef{\v d} % - \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}} + \gdef^^f0{\dh} \gdef^^f1{\'n} \gdef^^f2{\v n} \gdef^^f3{\'o} @@ -8279,11 +8362,11 @@ directory should work if nowhere else does.} } % UTF-8 character definitions. -% +% % This code to support UTF-8 is based on LaTeX's utf8.def, with some % changes for Texinfo conventions. It is included here under the GPL by % permission from Frank Mittelbach and the LaTeX team. -% +% \newcount\countUTFx \newcount\countUTFy \newcount\countUTFz @@ -8433,6 +8516,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00CE}{\^I} \DeclareUnicodeCharacter{00CF}{\"I} + \DeclareUnicodeCharacter{00D0}{\DH} \DeclareUnicodeCharacter{00D1}{\~N} \DeclareUnicodeCharacter{00D2}{\`O} \DeclareUnicodeCharacter{00D3}{\'O} @@ -8445,6 +8529,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00DB}{\^U} \DeclareUnicodeCharacter{00DC}{\"U} \DeclareUnicodeCharacter{00DD}{\'Y} + \DeclareUnicodeCharacter{00DE}{\TH} \DeclareUnicodeCharacter{00DF}{\ss} \DeclareUnicodeCharacter{00E0}{\`a} @@ -8464,6 +8549,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} + \DeclareUnicodeCharacter{00F0}{\dh} \DeclareUnicodeCharacter{00F1}{\~n} \DeclareUnicodeCharacter{00F2}{\`o} \DeclareUnicodeCharacter{00F3}{\'o} @@ -8476,6 +8562,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00FB}{\^u} \DeclareUnicodeCharacter{00FC}{\"u} \DeclareUnicodeCharacter{00FD}{\'y} + \DeclareUnicodeCharacter{00FE}{\th} \DeclareUnicodeCharacter{00FF}{\"y} \DeclareUnicodeCharacter{0100}{\=A} @@ -9132,7 +9219,7 @@ directory should work if nowhere else does.} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of % the literal character `\'. -% +% @def@normalturnoffactive{% @let\=@normalbackslash @let"=@normaldoublequote @@ -9188,7 +9275,7 @@ directory should work if nowhere else does.} @catcode`@`=@active @markupsetuplqdefault @markupsetuprqdefault - + @c Local variables: @c eval: (add-hook 'write-file-hooks 'time-stamp) @c page-delimiter: "^\\\\message" diff --git a/vim/lilypond-ftdetect.vim b/vim/lilypond-ftdetect.vim index 9147fc81dd..756e65b80f 100644 --- a/vim/lilypond-ftdetect.vim +++ b/vim/lilypond-ftdetect.vim @@ -1,4 +1,4 @@ " " Installed As: vim/ftdetect/lilypond.vim " -au! BufNewFile,BufRead *.ly,*.ily setf lilypond +au! BufNewFile,BufRead *.ly,*.ily set ft=lilypond diff --git a/vim/lilypond-syntax.vim b/vim/lilypond-syntax.vim index 7d0a6d89e7..c749fd9aa0 100644 --- a/vim/lilypond-syntax.vim +++ b/vim/lilypond-syntax.vim @@ -2,7 +2,7 @@ " Language: LilyPond " Maintainer: Heikki Junes " Created: Oct 17, 2002 -" Last Change: Sep 23, 2003 +" Last Change: Aug 30, 2009 " Version: 6.1-1 " " Installed As: vim/syntax/lilypond.vim @@ -81,3 +81,5 @@ if version >= 508 || !exists("did_lily_syn_inits") delcommand HiLink endif + +let b:current_syntax = "lilypond"