tags
test-output-distance
Documentation/user/lilypond
+input/lsr/lilypond-snippets
LOCALSTEPMAKE_TEMPLATES=lilypond ly
LILYPOND_BOOK_FLAGS=--extra-options '-e "(ly:set-option (quote internal-type-checking) \#t)"'
README_TOP_FILES= DEDICATION THANKS
-EXTRA_DIST_FILES= texinfo.css TRANSLATION translations.template.html
+EXTRA_DIST_FILES= texinfo.css TRANSLATION
include $(depth)/make/stepmake.make
in <a class="title" href="user/lilypond-program.pdf">PDF</a>)
<br>(how to install and run the program)
-<li><a class="title" href="../input/lsr/snippets/index.html">Snippets</a>
-(in <a class="title" href="../input/lsr/snippets-big-page.html">one big page</a>,
-in <a class="title" href="../input/lsr/snippets.pdf">PDF</a>)
+<li><a class="title" href="../input/lsr/lilypond-snippets/index.html">Snippets</a>
+(in <a class="title" href="../input/lsr/lilypond-snippets-big-page.html">one big page</a>,
+in <a class="title" href="user/lilypond-snippets.pdf">PDF</a>)
<br>(Short tricks, tips, and examples)
</ul>
--- /dev/null
+<html>
+<!-- This page is automatically generated by translation-status.py from
+translations.template.html; DO NOT EDIT !-->
+<!--
+ Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+!-->
+<head>
+ <title>LilyPond documentation translations status</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+<p><a href="index.html">Up to documentation index</a></p>
+
+<h1>Documentation translations status</h1>
+
+<p>This is an overview of which parts of LilyPond @TOPLEVEL_VERSION@
+ documentation are translated; for each documentation section, you
+ can read the word count in parentheses, who translated and verified
+ it (translation checkers are printed with a smaller font size), how
+ much of the original section in English has been translation, how
+ up-to-date is the translation, and whether the translation has
+ already been updated after Grand Documentation Project (GDP) was
+ started.
+</p>
+
+<p>Please note that GDP makes a lot of changes to documentation in
+ English, therefore translated documentation is mostly not
+ up-to-date; however, this does not mean translated documentation is
+ inaccurate regarding current LilyPond version, it only means that
+ translated docmentation is not synced with documentation in English.
+ We do our best to keep translated documentation consistent with
+ current LilyPond syntax and features, and will update it per
+ section, when GDP processing of the corresponding section in English
+ is finished.
+</p>
+
+ <p><i>Last updated Tue Feb 26 15:43:29 UTC 2008
+</i></p>
+<table align="center" border="2">
+ <tr align="center">
+ <th>GNU LilyPond --- learning manual</th> <th>fr</th>
+ <th>de</th>
+ <th>es</th>
+ </tr>
+ <tr align="left">
+ <td>Section titles<br>(406)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #4efe25">partially up-to-date (93 %)</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>Preface<br>(411)</td>
+ <td>Valentin Villenave<br>
+ <small>Ludovic Sardain</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>1 Introduction<br>(3198)</td>
+ <td>Ludovic Sardain<br>
+ John Mandereau<br>
+ <small>Jean-Charles Malahieude<br>
+ Jean-Yves Baudais</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #39ff22">partially up-to-date (96 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #39ff22">partially up-to-date (96 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #d587ff"></span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>2 Tutorial<br>(5593)</td>
+ <td>Nicolas Grandclaude<br>
+ Ludovic Sardain<br>
+ Gauvain Pocentek<br>
+ <small>Jean-Charles Malahieude<br>
+ Valentin Villenave<br>
+ John Mandereau</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ff8f50">partially up-to-date (23 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #40fe23">partially up-to-date (95 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>3 Fundamental concepts<br>(8626)</td>
+ <td>Valentin Villenave<br>
+ <small>Jean-Charles Malahieude<br>
+ John Mandereau</small><br>
+ <span style="background-color: #dfef77">partially translated (39 %)</span><br>
+ <span style="background-color: #a5ff31">partially up-to-date (80 %)</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>4 Tweaking output<br>(11862)</td>
+ <td>Valentin Villenave<br>
+ Nicolas Klutchnikoff<br>
+ <small>Jean-Charles Malahieude<br>
+ John Mandereau</small><br>
+ <span style="background-color: #dfef77">partially translated (16 %)</span><br>
+ <span style="background-color: #ff6f57">partially up-to-date (9 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #dfef77">partially translated (16 %)</span><br>
+ <span style="background-color: #ff6f57">partially up-to-date (9 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #dfef77">partially translated (16 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>5 Working on LilyPond projects<br>(2985)</td>
+ <td>Ludovic Sardain<br>
+ <small>Jean-Yves Baudais<br>
+ Valentin Villenave<br>
+ John Mandereau<br>
+ Jean-Charles Malahieude</small><br>
+ <span style="background-color: #dfef77">partially translated (79 %)</span><br>
+ <span style="background-color: #7dff2b">partially up-to-date (86 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #dfef77">partially translated (79 %)</span><br>
+ <span style="background-color: #7dff2b">partially up-to-date (86 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #dfef77">partially translated (79 %)</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>A Templates<br>(297)</td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ff9150">partially up-to-date (24 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #d587ff"></span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>B Scheme tutorial<br>(960)</td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #dfef77">partially translated (91 %)</span><br>
+ <span style="background-color: #83fe2c">partially up-to-date (85 %)</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ </tr>
+</table>
+<p></p>
+
+<table align="center" border="2">
+ <tr align="center">
+ <th>GNU LilyPond --- program usage</th> <th>fr</th>
+ <th>de</th>
+ <th>es</th>
+ </tr>
+ <tr align="left">
+ <td>Section titles<br>(384)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #4efe25">partially up-to-date (93 %)</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>1 Install<br>(1477)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude<br>
+ <span style="background-color: #dfef77">partially translated (11 %)</span><br>
+ <span style="background-color: #39ff22">partially up-to-date (96 %)</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #dfef77">partially translated (11 %)</span><br>
+ <span style="background-color: #6fff29">partially up-to-date (88 %)</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>2 Setup<br>(947)</td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #39ff22">partially up-to-date (96 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #d587ff"></span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>3 Running LilyPond<br>(2860)</td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>4 @command{lilypond-book}: Integrating text and music<br>(2840)</td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>5 Converting from other formats<br>(975)</td>
+ <td>Jean-Charles Malahieude<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ </tr>
+</table>
+<p></p>
+
+<table align="center" border="2">
+ <tr align="center">
+ <th>GNU LilyPond --- The music typesetter</th> <th>fr</th>
+ <th>de</th>
+ <th>es</th>
+ </tr>
+ <tr align="left">
+ <td>Section titles<br>(549)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #7dff2b">partially up-to-date (86 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #7dff2b">partially up-to-date (86 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #39ff22">partially up-to-date (96 %)</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>1 Musical notation<br>(91)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #acff31">partially up-to-date (79 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #acff31">partially up-to-date (79 %)</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>1.1 Pitches<br>(2808)</td>
+ <td>Frédéric Chiasson<br>
+ <small>Valentin Villenave<br>
+ Jean-Charles Malahieude</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ff7855">partially up-to-date (13 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ff7855">partially up-to-date (13 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>1.2 Rhythms<br>(7056)</td>
+ <td>Frédéric Chiasson<br>
+ <small>Valentin Villenave<br>
+ Jean-Charles Malahieude</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ff9c4e">partially up-to-date (29 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #dfef77">partially translated (82 %)</span><br>
+ <span style="background-color: #ff9c4e">partially up-to-date (29 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #dfef77">partially translated (87 %)</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>1.3 Expressive marks<br>(1602)</td>
+ <td>Valentin Villenave<br>
+ <small>Jean-Charles Malahieude<br>
+ John Mandereau</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ff9c4e">partially up-to-date (29 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ff9c4e">partially up-to-date (29 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #91ff2e">partially up-to-date (83 %)</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>1.4 Repeats<br>(717)</td>
+ <td>Valentin Villenave<br>
+ <small>Jean-Charles Malahieude<br>
+ John Mandereau</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ffb549">partially up-to-date (39 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ffb549">partially up-to-date (39 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>1.5 Simultaneous notes<br>(916)</td>
+ <td>Frédéric Chiasson<br>
+ Valentin Villenave<br>
+ <small>Jean-Charles Malahieude<br>
+ John Mandereau</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ffb549">partially up-to-date (39 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #dfef77">partially translated (58 %)</span><br>
+ <span style="background-color: #ffb549">partially up-to-date (39 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #dfef77">partially translated (58 %)</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>1.6 Staff notation<br>(1637)</td>
+ <td>Valentin Villenave<br>
+ Jean-Charles Malahieude<br>
+ <small>John Mandereau</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ffba48">partially up-to-date (41 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #dfef77">partially translated (49 %)</span><br>
+ <span style="background-color: #ffba48">partially up-to-date (41 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>1.7 Editorial annotations<br>(866)</td>
+ <td>Jean-Charles Malahieude<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ff6f57">partially up-to-date (9 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #dfef77">partially translated (38 %)</span><br>
+ <span style="background-color: #ff6f57">partially up-to-date (9 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #dfef77">partially translated (95 %)</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>1.8 Text<br>(2329)</td>
+ <td>Jean-Charles Malahieude<br>
+ <small>Valentin Villenave<br>
+ John Mandereau</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ffb549">partially up-to-date (39 %)</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>2 Specialist notation<br>(54)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #f6fe3b">partially up-to-date (68 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #f6fe3b">partially up-to-date (68 %)</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>2.1 Vocal music<br>(2630)</td>
+ <td>Valentin Villenave<br>
+ <small>Jean-Charles Malahieude</small><br>
+ <span style="background-color: #dfef77">partially translated (89 %)</span><br>
+ <span style="background-color: #68ff28">partially up-to-date (89 %)</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #dfef77">partially translated (89 %)</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>2.2 Chords<br>(1275)</td>
+ <td>Valentin Villenave<br>
+ <small>Jean-Charles Malahieude<br>
+ John Mandereau</small><br>
+ <span style="background-color: #dfef77">partially translated (56 %)</span><br>
+ <span style="background-color: #76fe2a">partially up-to-date (87 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #dfef77">partially translated (56 %)</span><br>
+ <span style="background-color: #76fe2a">partially up-to-date (87 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #dfef77">partially translated (56 %)</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>2.3 Piano music<br>(702)</td>
+ <td>Valentin Villenave<br>
+ <small>Jean-Charles Malahieude<br>
+ John Mandereau</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #68ff28">partially up-to-date (89 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #68ff28">partially up-to-date (89 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>2.4 Percussion<br>(481)</td>
+ <td>Valentin Villenave<br>
+ <small>Jean-Charles Malahieude<br>
+ John Mandereau</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #54ff26">partially up-to-date (92 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #54ff26">partially up-to-date (92 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>2.5 Guitar<br>(826)</td>
+ <td>Valentin Villenave<br>
+ <small>Jean-Charles Malahieude<br>
+ John Mandereau</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #5bff27">partially up-to-date (91 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #5bff27">partially up-to-date (91 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>2.6 Orchestral strings<br>(66)</td>
+ <td>Valentin Villenave<br>
+ <small>Jean-Charles Malahieude<br>
+ John Mandereau</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ffef3f">partially up-to-date (61 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ffef3f">partially up-to-date (61 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #ffef3f">partially up-to-date (61 %)</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>2.7 Bagpipes<br>(242)</td>
+ <td>Valentin Villenave<br>
+ <small>Jean-Charles Malahieude<br>
+ John Mandereau</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #a5ff31">partially up-to-date (80 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #dfef77">partially translated (94 %)</span><br>
+ <span style="background-color: #a5ff31">partially up-to-date (80 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #a5ff31">partially up-to-date (80 %)</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>2.8 Ancient notation<br>(4289)</td>
+ <td>Valentin Villenave<br>
+ <small>Jean-Charles Malahieude<br>
+ John Mandereau</small><br>
+ <span style="background-color: #dfef77">partially translated (88 %)</span><br>
+ <span style="background-color: #47ff24">partially up-to-date (94 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #dfef77">partially translated (88 %)</span><br>
+ <span style="background-color: #47ff24">partially up-to-date (94 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #dfef77">partially translated (88 %)</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>3 Input syntax<br>(2448)</td>
+ <td>Jean-Charles Malahieude<br>
+ <span style="background-color: #dfef77">partially translated (7 %)</span><br>
+ <span style="background-color: #25fe1f">partially up-to-date (99 %)</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>4 Non-musical notation<br>(2164)</td>
+ <td>Valentin Villenave<br>
+ <small>Jean-Charles Malahieude</small><br>
+ <span style="background-color: #dfef77">partially translated (4 %)</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #dfef77">partially translated (3 %)</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>5 Spacing issues<br>(8399)</td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>6 Changing defaults<br>(5105)</td>
+ <td>Valentin Villenave<br>
+ <small>Gilles Thibault</small><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #b9ff33">partially up-to-date (77 %)</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>7 Interfaces for programmers<br>(4547)</td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>A Literature list<br>(299)</td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>B Notation manual tables<br>(935)</td>
+ <td>Frédéric Chiasson<br>
+ Jean-Charles Malahieude<br>
+ <span style="background-color: #dfef77">partially translated (13 %)</span><br>
+ <span style="background-color: #4efe25">partially up-to-date (93 %)</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #dfef77">partially translated (84 %)</span><br>
+ <span style="background-color: #62ff28">partially up-to-date (90 %)</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #dfef77">partially translated (97 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>C Cheat sheet<br>(250)</td>
+ <td>Valentin Villenave<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #d587ff"></span><br>
+ </td>
+ </tr>
+</table>
+<p></p>
+
+</body>
+</html>
+++ /dev/null
-<html>
-<!--
- Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
-
- When revising a translation, copy the HEAD committish of the
- version that you are working on. See TRANSLATION for details.
-!-->
-<head>
- <title>LilyPond documentation translations status</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-</head>
-
-<body>
-<p><a href="index.html">Up to documentation index</a></p>
-
-<h1>Documentation translations status</h1>
-
-<p>This is an overview of which parts of LilyPond @TOPLEVEL_VERSION@
- documentation are translated; for each documentation section, you
- can read the word count in parentheses, who translated and verified
- it (translation checkers are printed with a smaller font size), how
- much of the original section in English has been translation, how
- up-to-date is the translation, and whether the translation has
- already been updated after Grand Documentation Project (GDP) was
- started.
-</p>
-
-<p>Please note that GDP makes a lot of changes to documentation in
- English, therefore translated documentation is mostly not
- up-to-date; however, this does not mean translated documentation is
- inaccurate regarding current LilyPond version, it only means that
- translated docmentation is not synced with documentation in English.
- We do our best to keep translated documentation consistent with
- current LilyPond syntax and features, and will update it per
- section, when GDP processing of the corresponding section in English
- is finished.
-</p>
-
-</body>
-</html>
--- /dev/null
+<html>
+<!--
+ Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+!-->
+<head>
+ <title>LilyPond documentation translations status</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+<p><a href="index.html">Up to documentation index</a></p>
+
+<h1>Documentation translations status</h1>
+
+<p>This is an overview of which parts of LilyPond @TOPLEVEL_VERSION@
+ documentation are translated; for each documentation section, you
+ can read the word count in parentheses, who translated and verified
+ it (translation checkers are printed with a smaller font size), how
+ much of the original section in English has been translation, how
+ up-to-date is the translation, and whether the translation has
+ already been updated after Grand Documentation Project (GDP) was
+ started.
+</p>
+
+<p>Please note that GDP makes a lot of changes to documentation in
+ English, therefore translated documentation is mostly not
+ up-to-date; however, this does not mean translated documentation is
+ inaccurate regarding current LilyPond version, it only means that
+ translated docmentation is not synced with documentation in English.
+ We do our best to keep translated documentation consistent with
+ current LilyPond syntax and features, and will update it per
+ section, when GDP processing of the corresponding section in English
+ is finished.
+</p>
+
+</body>
+</html>
# this prevents aux files from being reused for translated docs
TEXI2PDF_FLAGS = --tidy
+MAIN_INFO_DOC = lilypond
INFO_DOCS = lilypond lilypond-internals music-glossary lilypond-program lilypond-learning
INFO_FILES = $(INFO_DOCS:%=$(outdir)/%.info)
ifeq ($(out),www)
INFO_IMAGES_DIR = lilypond
+DEST_INFO_IMAGES_SUBDIR = Documentation/user
endif
STEPMAKE_TEMPLATES=tex texinfo omf documentation
xml: $(outdir)/lilypond/lilypond.xml $(outdir)/lilypond-internals/lilypond-internals.xml
-# There are two modes for info: with and without images.
-ifeq ($(out),www)
-
-# This builds all .info targets with images, in out-www.
-# Viewable with a recent Emacs, doing: C-u C-h i out-www/lilypond.info
-
-local-install-info: info
- -$(INSTALL) -d $(DESTDIR)$(infodir)
-ifneq ($(patsubst %/local,%,$(DESTDIR)$(prefix)),/usr)
-## Can not have absolute symlinks because some binary packages build schemes
-## install files in nonstandard root. Best we can do is to notify the
-## builder or packager.
- @echo
- @echo "***************************************************************"
- @echo "Please add or update the LilyPond direntries, do"
- @echo
- @echo " install-info --info-dir=$(infodir) $(outdir)/lilypond.info"
- @echo
- @echo "For images in the INFO docs to work, do: "
- @echo
- @echo " (cd $(infodir) && ln -sfT ../doc/lilypond/html/Documentation/user lilypond)"
- @echo "or add something like that to the postinstall script."
- @echo
-else # installing directly into standard /usr/...
- -$(INSTALL) -d $(DESTDIR)$(infodir)
- -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond.info
- -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-program.info
- -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-learning.info
- -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-internals.info
- -install-info --remove --info-dir=$(infodir) $(outdir)/music-glossary.info
- install-info --info-dir=$(infodir) $(outdir)/lilypond.info
- cd $(infodir) && ln -sfT $(webdir)/Documentation/user lilypond
-endif # installing directly into standard /usr/...
-
-local-uninstall-WWW:
- rm -f $(infodir)/lilypond
-
-else # out!=www
-
-local-install-info: info
- -$(INSTALL) -d $(DESTDIR)$(package_infodir)
-ifneq ($(patsubst %/local,%,$(DESTDIR)$(prefix)),/usr)
-## Can not have absolute symlinks because some binary packages build schemes
-## install files in nonstandard root. Best we can do is to notify the
-## builder or packager.
- @echo
- @echo "***************************************************************"
- @echo "Please add or update the LilyPond direntries, do"
- @echo
- @echo " install-info --info-dir=$(infodir) out/lilypond.info"
- @echo
- @echo "For images in the INFO docs to work, do"
- @echo
- @echo " make out=www install-info "
- @echo
- @echo "and read the extra instructions."
- @echo
-else # installing directly into standard /usr/...
- -$(INSTALL) -d $(DESTDIR)$(infodir)
- -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond.info
- -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-program.info
- -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-learning.info
- -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-internals.info
- -install-info --remove --info-dir=$(infodir) $(outdir)/music-glossary.info
- install-info --info-dir=$(infodir) $(outdir)/lilypond.info
- @echo
- @echo "***************************************************************"
- @echo "For images in the INFO docs to work, do"
- @echo
- @echo " make out=www install-info "
- @echo
-endif # installing into standard /usr/* root# installing into /usr/...
-
-endif # out!=www
# All web targets, except info image symlinks and info docs are
# installed in non-recursing target from TOP-SRC-DIR
$(outdir)/lilypond-learning/index.html
# Symlinks to refer to external source documents from split and non-split HTML
-source-links = $(outdir)/source $(outdir)/lilypond/source $(outdir)/music-glossary/source $(outdir)/lilypond-program/source $(outdir)/lilypond-learning/source
+source-links = $(outdir)/source $(outdir)/lilypond/source $(outdir)/music-glossary/source \
+ $(outdir)/lilypond-program/source $(outdir)/lilypond-learning/source
$(outdir)/source:
@rm -f $(@)
convert-ly -e --from=... --to=... --no-version *.itely
% to find the current version number,
-grep "version \"" tutorial.itely
+grep "version \"" fundamental.itely
Please don't forget updating translated docs (in LANGS/user) too!
gis a
\override NoteHead #'color = #(x11-color "LimeGreen")
gis a
-
% this is deliberate nonsense; note that the stems remain black
\override Stem #'color = #(x11-color 'Boggle)
b2 cis
@cindex parentheses
Objects may be parenthesized by prefixing @code{\parenthesize} to
-the music event,
+the music event. This only functions inside chords; to
+parenthesize a single note it must be enclosed with @code{<>} as
+if it is a chord.
@lilypond[relative=2,fragment,verbatim,ragged-right]
-<
- c
- \parenthesize d
- g
->2-\parenthesize -.
-d g
-<
- c,
- \parenthesize fis
->
+c2 < \parenthesize d>
+<\parenthesize e> d
@end lilypond
-This only functions inside chords, to parenthesize a single note it
-must be enclosed with @code{<>} as if it is a chord.
-
-@example
-< \parenthesize NOTE>
-@end example
+Non-note objects may be parenthesized as well.
@lilypond[relative=2,fragment,verbatim,ragged-right]
-c4
-<\parenthesize d>
-g
-<\parenthesize d>
+< c \parenthesize d g >2-\parenthesize -. d
+g < c, \parenthesize fis >
@end lilypond
@seealso
\layout {
\context {
\Staff
- \consists "Grid_point_engraver" %% sets of grid
+ \consists "Grid_point_engraver"
+ % sets up grids
gridInterval = #(ly:make-moment 1 4)
+ % this sets the grid interval to 1 quarternote (crotchet)
}
}
\new Score \with {
\consists "Grid_line_span_engraver"
- %% centers grid lines horizontally below note heads
+ %% centers grid lines horizontally below note heads by default
+ %the grid lines are aligned with the left side of the notehead
\override NoteColumn #'X-offset = #-0.5
+ % this moves them to the right half a staff space
}
\new ChoirStaff <<
}
}
\new Staff {
- %% centers grid lines vertically
\override Score.GridLine #'extra-offset = #'( 0.0 . 1.0 )
+ % by default the grid lines join the middle line of each staff,
+ % this moves them up one staff space
\stemDown
\clef bass
\relative c {
A basic example of a lilypond input file is
@example
-\version "2.11.38"
+\version @w{"@version{}"}
\score @{
@var{...compound music expression...} % all the music goes here!
\header @{ @}
output. This is a crude way of modifying the output, but it
can sometimes be useful.
-@subsubsection Changing a single context
+@subsubheading Changing a single context
To remove an engraver from a single context we use the
@code{\with} command placed immediately after the context creation
>>
@end lilypond
-@subsubsection Changing all contexts of the same type
+@subsubheading Changing all contexts of the same type
The examples above show how to remove or add engravers to
individual contexts. It is also possible to remove or add
soprano part).
@example
-\version "2.11.38"
+\version @w{"@version{}"}
melody = \relative c' @{
\clef treble
\key c \major
Now we want to add a cello part. Let's look at the @q{Notes only} example:
@example
-\version "2.11.38"
+\version @w{"@version{}"}
melody = \relative c' @{
\clef treble
\key c \major
different notes.
@example
-\version "2.11.38"
+\version @w{"@version{}"}
sopranoMusic = \relative c' @{
\clef treble
\key c \major
easily fixed. Here's the complete soprano and cello template.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.37"
+\version "2.11.38"
sopranoMusic = \relative c' {
\clef treble
\key c \major
@c The following should appear as music without code
@lilypond[quote,ragged-right]
-\version "2.11.38"
global = { \key d \major \time 4/4 }
sopMusic = \relative c'' {
\clef "treble"
and key:
@example
-\version "2.11.38"
+\version @w{"@version{}"}
\header @{
title = "Jesu, meine Freude"
composer = "J S Bach"
FIXME: don't complain about anything in this chapter. It's still
under heavy development.
+FIXME: add comments
+@verbatim
+% %{
+@end verbatim
+to 3.1.
+
@menu
* Input files::
* Common syntax issues TODO name?::
also mention the typical \fooDown, \fooNeutral predefined commands.
+also mention that some directions are (without other tweaking)
+always up or always down (like dynamics or fermata), while other
+things can alternate between up or down based on the stem direction
+(like slurs or accents).
+
@node Distances and measurements MAYBE MOVE
@subsection Distances and measurements MAYBE MOVE
Save the code above to a file called @file{lilybook.lytex}, then in a
terminal run
+@c keep space after @version{} so TeX doesn't choke
@example
lilypond-book --output=out --pdf lilybook.lytex
-@emph{lilypond-book (GNU LilyPond) 2.11.37}
+@emph{lilypond-book (GNU LilyPond) @version{} }
@emph{Reading lilybook.lytex...}
@emph{..lots of stuff deleted..}
@emph{Compiling lilybook.tex...}
f2 e
@end example
+@item addversion
+(Only for Texinfo output.) Prepend line @code{\version
+@@w@{"@@version@{@}"@}} to @code{verbatim} output.
+
@item texidoc
(Only for Texinfo output.) If @command{lilypond} is called with the
@option{--header=@/texidoc} option, and the file to be processed is
@item printfilename
If a LilyPond input file is included with @code{\lilypondfile}, print
-the file name right before the music snippet. For HTML output, this is
-a link.
+the file name right before the music snippet. For HTML output, this
+is a link. Only the base name of the file is printed, i.e. the
+directory part of the file path is stripped.
@item fontload
This option includes fonts in all of the generated EPS-files for this
@item -I @var{dir}
@itemx --include=@var{dir}
-Add @var{dir} to the include path.
+Add @var{dir} to the include path. @command{lilypond-book} also looks
+for already compiled snippets in the include path, and does not write
+them back to the output directory, so in some cases it is necessary to
+invoke further processing commands such as @command{makeinfo} or
+@command{latex} with the same @code{-I @var{dir}} options.
@item -o @var{dir}
@itemx --output=@var{dir}
@documentencoding UTF-8
@documentlanguage en
+@include macros.itexi
+
@iftex
@afourpaper
@c don't replace quotes with directed quotes
@c don't remove this comment.
@ignore
@omfcreator Han-Wen Nienhuys, Jan Nieuwenhuizen and Graham Percival
-@omfdescription User manual of the LilyPond music engraving system
+@omfdescription Learning Manual of the LilyPond music engraving system
@omftype program usage
@omfcategory Applications|Publishing
@omflanguage English
@vskip 20pt
-@lilypond[ragged-right]
-\score {
- \context Lyrics {
- \override Score.RehearsalMark #'self-alignment-X = #LEFT
- \override Score.RehearsalMark #'font-size = #-2
- \mark #(ly:export (string-append
- "(For LilyPond version " (lilypond-version) ")"))
- s2
- }
- \layout {
- indent = 0.0\pt
- }
-}
-@end lilypond
-
+For LilyPond version @version{}
@end titlepage
@copying
@ifnottex
@node Top
@top GNU LilyPond --- learning manual
-@c HJJ: Info needs `@top', which is a synonym for `@unnumbered' in TeX.
-This is the learning manual for GNU LilyPond 2.11.x series.
-@ifhtml
-(See the bottom of this page for the exact version number).
-@end ifhtml
+This is the learning manual for GNU LilyPond version @version{}.
@cindex web site
@cindex URL
@contents
-@include macros.itexi
-
@include preface.itely
@include introduction.itely
@include tutorial.itely
@documentencoding UTF-8
@documentlanguage en
+@include macros.itexi
+
@iftex
@afourpaper
@c don't replace quotes with directed quotes
@c don't remove this comment.
@ignore
@omfcreator Han-Wen Nienhuys, Jan Nieuwenhuizen and Graham Percival
-@omfdescription User manual of the LilyPond music engraving system
+@omfdescription Program Usage of the LilyPond music engraving system
@omftype program usage
@omfcategory Applications|Publishing
@omflanguage English
@vskip 20pt
-@lilypond[ragged-right]
-\score {
- \context Lyrics {
- \override Score.RehearsalMark #'self-alignment-X = #LEFT
- \override Score.RehearsalMark #'font-size = #-2
- \mark #(ly:export (string-append
- "(For LilyPond version " (lilypond-version) ")"))
- s2
- }
- \layout {
- indent = 0.0\pt
- }
-}
-@end lilypond
-
+For LilyPond version @version{}
@end titlepage
@copying
@top GNU LilyPond --- program usage
@c HJJ: Info needs `@top', which is a synonym for `@unnumbered' in TeX.
-This is the program usage manual for GNU LilyPond 2.11.x series.
-@ifhtml
-(See the bottom of this page for the exact version number).
-@end ifhtml
+This is the program usage manual for GNU LilyPond version @version{}.
@cindex web site
@cindex URL
@contents
-@include macros.itexi
-
@include install.itely
@include setup.itely
@include running.itely
version that you are working on. See TRANSLATION for details.
@end ignore
@setfilename lilypond.info
-@settitle GNU LilyPond user manual
+@settitle GNU LilyPond User Manual
@documentencoding UTF-8
@documentlanguage en
+@include macros.itexi
+
@iftex
@afourpaper
@c don't replace quotes with directed quotes
@c don't remove this comment.
@ignore
@omfcreator Han-Wen Nienhuys, Jan Nieuwenhuizen and Graham Percival
-@omfdescription User manual of the LilyPond music engraving system
+@omfdescription Notation Reference of the LilyPond music engraving system
@omftype user manual
@omfcategory Applications|Publishing
@omflanguage English
@titlepage
@title LilyPond
@subtitle The music typesetter
-@titlefont{User manual}
+@titlefont{Notation Reference}
@author The LilyPond development team
Copyright @copyright{} 1999--2007 by the authors
@vskip 20pt
-@lilypond[ragged-right]
-\score {
- \context Lyrics {
- \override Score.RehearsalMark #'self-alignment-X = #LEFT
- \override Score.RehearsalMark #'font-size = #-2
- \mark #(ly:export (string-append
- "(For LilyPond version " (lilypond-version) ")"))
- s2
- }
- \layout {
- indent = 0.0\pt
- }
-}
-@end lilypond
-
+For LilyPond version @version{}
@end titlepage
@copying
@top GNU LilyPond --- The music typesetter
@c HJJ: Info needs `@top', which is a synonym for `@unnumbered' in TeX.
-This is the user manual for GNU LilyPond 2.11.x series.
-@ifhtml
-(See the bottom of this page for the exact version number).
-@end ifhtml
+This is the User Manual for GNU LilyPond version @version{}.
@cindex web site
@cindex URL
@contents
-@include macros.itexi
-
@include notation.itely
@include specialist.itely
@end ignore
@macro version
-@c @value{version}
-2.11.41
+@value{version}
@end macro
@c ***** Displaying text *****
@ref{\TEXT\,,,lilypond-learning-big-page}
@end macro
+@macro rlsr{TEXT}
+@ref{\TEXT\,,,lilypond-snippets-big-page}
+@end macro
+
@end ifset
@ref{\TEXT\,,,lilypond-learning}
@end macro
+@macro rlsr{TEXT}
+@ref{\TEXT\,,,lilypond-snippets}
+@end macro
+
@end ifclear
@end ifhtml
@ref{\TEXT\,,,lilypond-learning}
@end macro
+@macro rlsr{TEXT}
+@ref{\TEXT\,,,lilypond-snippets}
+@end macro
+
@end ifdocbook
@ref{\TEXT\,,,lilypond-learning}
@end macro
+@macro rlsr{TEXT}
+@ref{\TEXT\,,,lilypond-snippets}
+@end macro
+
@end ifinfo
@macro rprogram{TEXT}
program usage manual, @ref{\TEXT\,,,lilypond-program}
-@c @internalsref{\TEXT\}
@end macro
@macro ruser{TEXT}
notation reference, @ref{\TEXT\,,,lilypond}
-@c @internalsref{\TEXT\}
@end macro
@macro rlearning{TEXT}
learning manual, @ref{\TEXT\,,,lilypond-learning}
-@c @internalsref{\TEXT\}
+@end macro
+
+@macro rlsr{TEXT}
+@ref{\TEXT\,,,lilypond-snippets}
@end macro
@end iftex
@c TODO: multiple omfcreators?
@ignore
-@omfcreator Christian Mondrup
+@omfcreator Christian Mondrup, Kurt Kroon
@omfdescription Glossary of musical terms with translations
-@omftype user's guide
+@omftype glossary
@omfcategory Applications|Publishing
@omflanguage English
@end ignore
@node Note heads
@subsection Note heads
+This section suggests ways of altering note heads.
+
@menu
* Special note heads::
* Easy notation note heads::
@cindex triplets
@funindex \times
-Tuplets are made out of a music expression by multiplying all
+Tuplets are made from a music expression by multiplying all the
durations with a fraction:
@example
The duration of @var{musicexpr} will be multiplied by the
fraction. The fraction's denominator will be printed over or
under the notes, optionally with a bracket. The most common
-tuplet is the triplet in which 3 notes have the length of 2, so
+tuplet is the triplet in which 3 notes have the duration of 2, so
the notes are 2/3 of their written length.
@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
Tuplets may be nested:
-@lilypond[fragment,ragged-right,verbatim,relative=2]
-\relative c'' {
- \autoBeamOff
- c4 \times 4/5 { f8 e f \times 2/3 {e[ f g] } } f4 |
-}
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\autoBeamOff
+c4 \times 4/5 { f8 e f \times 2/3 {e[ f g] } } f4 |
@end lilypond
Modifying nested tuplets which begin at the same musical moment
@lilypondfile [verbatim,lilyquote,ragged-right,texidoc]
{entering-several-tuplets-using-only-one--times-command.ly}
-@ignore
-@c TODO Remove when snippet works ok
-@c Sent to Snippet 5 Feb 08
-The property @code{tupletSpannerDuration} specifies how long each
-bracket should last. With this, you can make lots of tuplets
-while typing @code{\times} only once, thus saving lots of typing.
-In the next example, there are two triplets shown, while
-@code{\times} was only used once.
-
-@lilypond[quote,fragment,relative=2,ragged-right,verbatim]
-\set tupletSpannerDuration = #(ly:make-moment 1 4)
-\times 2/3 { c8 c c c c c }
-@end lilypond
-@end ignore
-
@noindent
For more information about @code{make-moment}, see
@ref{Time administration}.
@code{\compressMusic} works similarly to \times, but does not
create a tuplet bracket. One application is in polymetric
-notation, as shown in the following example. See
-@ref{Polymetric notation}.
+notation, see @ref{Polymetric notation}.
@lilypondfile [verbatim,lilyquote,ragged-right,texidoc]
{printing-music-with-different-time-signatures.ly}
+
@appendixsubsec Notes only
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
{single-staff-template-with-only-notes.ly}
@appendixsubsec Notes and lyrics
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
{single-staff-template-with-notes-and-lyrics.ly}
@appendixsubsec Notes and chords
was used to write the file:
@example
-\version "2.11.38"
+\version @w{"@version{}"}
@end example
@noindent
underneath the @ref{Version number}.
@example
-\version "2.11.38"
+\version @w{"@version{}"}
\header @{
title = "Symphony"
composer = "Me"
at first, so we can be sure the command is working. We get:
@example
- \override Slur #'thickness = #5.0
+\override Slur #'thickness = #5.0
@end example
Don't forget the @code{#'} preceding the
in italics should be
@example
- \override LyricText #'font-shape = #'italic
+\override LyricText #'font-shape = #'italic
@end example
@noindent
the interpreter cannot recognise them. So the command should be:
@example
- \override Lyrics . LyricText #'font-shape = #'italic
+\override Lyrics . LyricText #'font-shape = #'italic
@end example
@warning{In lyrics always leave whitespace between the final
by placing the overrides in a Score @code{\with} block, rather than
in-line in music, as follows:
-@verbatim
-\new Score \with {
+@example
+\new Score \with @{
% Makes sure text scripts and lyrics are within the paper margins
\override PaperColumn #'keep-inside-line = ##t
\override NonMusicalPaperColumn #'keep-inside-line = ##t
-} {
+@} @{
..
-}
-@end verbatim
+@}
+@end example
@node Advanced tweaks with Scheme
@subsection Advanced tweaks with Scheme
#(define (color-notehead grob)
"Color the notehead according to its position on the staff."
(let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
- (case mod-position ; Set rainbow colors
- ((1) (ly:grob-set-property! grob 'color (x11-color 'red)))
- ((2) (ly:grob-set-property! grob 'color (x11-color 'orange)))
- ((3) (ly:grob-set-property! grob 'color (x11-color 'yellow)))
- ((4) (ly:grob-set-property! grob 'color (x11-color 'green)))
- ((5) (ly:grob-set-property! grob 'color (x11-color 'blue)))
- ((6) (ly:grob-set-property! grob 'color (x11-color 'purple)))
- ((0) (ly:grob-set-property! grob 'color (x11-color 'violet)))
- )
+ (case mod-position
+ ;; Return rainbow colors
+ ((1) (x11-color 'red )) ; for C
+ ((2) (x11-color 'orange )) ; for D
+ ((3) (x11-color 'yellow )) ; for E
+ ((4) (x11-color 'green )) ; for F
+ ((5) (x11-color 'blue )) ; for G
+ ((6) (x11-color 'purple )) ; for A
+ ((0) (x11-color 'violet )) ; for B
+ )
)
)
-rainbow = {
- % Override color so it is obtained from color-notehead Scheme function
- \override NoteHead #'color = #color-notehead
-}
-
\relative c' {
- \rainbow {
- c2 c' |
- b4 g8 a b4 c |
- c,2 a' |
- g1 |
- }
+ % Arrange to obtain color from color-notehead procedure
+ \override NoteHead #'color = #color-notehead
+ c2 c' |
+ b4 g8 a b4 c |
+ c,2 a' |
+ g1 |
}
\addlyrics {
- Some -- where o -- ver the Rain -- bow, way up high,
+ Some -- where o -- ver the Rain -- bow way up high,
}
@end lilypond
highly recommend that you always include the @code{\version}, no matter
how small your file is. Speaking from personal experience, it's
quite frustrating to try to remember which version of LilyPond you were
-using a few years ago. @code{convert-ly} requires you to declare
+using a few years ago. @command{convert-ly} requires you to declare
which version of LilyPond you used.
@item @strong{Include checks}: @ruser{Bar and barnumber checks},
@example
%%% global.ly
-\version "2.11.38"
+\version @w{"@version{}"}
#(ly:set-option 'point-and-click #f)
\include "../init/init-defs.ly"
\include "../init/init-layout.ly"
Do not use @itemize @bullet.
+* To get LilyPond version, use @version{} (this does not work inside
+ LilyPond snippets). If you write "@version{}" (enclosed with
+ quotes), or generally if @version{} is not followed by a space,
+ enclose it with
+
+ @w{ ... }
+
+ e.g.
+
+ @w{"@version{}"}
+
+ to prevent an ugly line break in PDF output.
+
%%%%% SYNTAX SURVEY
def source_links_replace (m, source_val):
return 'href="' + os.path.join (source_val, m.group (1)) + '"'
-splitted_docs_re = re.compile ('(input/lsr/out-www/snippets|Documentation/user/out-www/(lilypond|music-glossary|lilypond-program|lilypond-learning))/')
+splitted_docs_re = re.compile ('(input/lsr/out-www/lilypond-snippets|Documentation/user/out-www/(lilypond|music-glossary|lilypond-program|lilypond-learning))/')
-# On systems without symlinks (e.g. Windows), docs are not very usable
-# Get rid of symlinks references here
+snippets_ref_re = re.compile (r'href="(\.\./)?lilypond-snippets')
+
+## Windows does not support symlinks.
+# This function avoids creating symlinks for splitted HTML manuals
# Get rid of symlinks in GNUmakefile.in (local-WWW-post)
# this also fixes missing PNGs only present in translated docs
-def replace_symlinks_urls (s, prefix):
+def hack_urls (s, prefix):
if splitted_docs_re.match (prefix):
s = re.sub ('(href|src)="(lily-.*?|.*?[.]png)"', '\\1="../\\2"', s)
+
+ # fix Snippets xrefs ad hoc
+ s = snippets_ref_re.sub ('href="source/input/lsr/lilypond-snippets', s)
+
source_path = os.path.join (os.path.dirname (prefix), 'source')
if not os.path.islink (source_path):
return s
in_f.close()
s = re.sub ('%', '%%', s)
- s = replace_symlinks_urls (s, prefix)
+ s = hack_urls (s, prefix)
s = add_header (s)
### add footer
raise Exception ('unknown option: ' + o)
def name2line (n):
- # UGR
s = r"""
@ifhtml
@html
-<A NAME="%s"></A>
+<a name="%s"></a>
@end html
@end ifhtml
-@lilypondfile[%s]{%s}""" % (n, fragment_options, n)
+@lilypondfile[%s]{%s}
+""" % (os.path.basename (n), fragment_options, n)
return s
if files:
This script must be run from Documentation/
- Reads template files translations.template.html
-and for each LANG in LANGUAGES LANG/translations.template.html
+ Reads template files translations.template.html.in
+and for each LANG in LANGUAGES LANG/translations.template.html.in
Writes translations.html.in and for each LANG in LANGUAGES
translations.LANG.html.in
import string
import os
import gettext
+import subprocess
def progress (str):
sys.stderr.write (str + '\n')
translation[l.code] = gettext.translation('lilypond-doc', localedir, [l.code]).gettext
def read_pipe (command):
- pipe = os.popen (command)
- output = pipe.read ()
- if pipe.close ():
+ child = subprocess.Popen (command,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.PIPE,
+ shell = True)
+ (output, error) = child.communicate ()
+ code = str (child.wait ())
+ if not child.stdout or child.stdout.close ():
print "pipe failed: %(command)s" % locals ()
- return output
+ if code != '0':
+ error = code + ' ' + error
+ return (output, error)
comments_re = re.compile (r'^@ignore\n(.|\n)*?\n@end ignore$|@c .*?$', re.M)
space_re = re.compile (r'\s+', re.M)
'fully translated': {'color':'1fff1f', 'short':_doc ('yes'), 'long': _doc ('translated')},
'up to date': {'short':_doc ('yes'), 'long':_doc ('up to date')},
'outdated': {'short':_doc ('partially (%(p)d %%)'), 'long':_doc ('partially up-to-date (%(p)d %%)')},
+ 'N/A': {'short':_doc ('N/A'), 'long':'', 'color':'d587ff' },
'pre-GDP':_doc ('pre-GDP'),
'post-GDP':_doc ('post-GDP')
}
'appendix': ('l', 1)
}
-appendix_number_trans = string.maketrans ('@ABCDEFGHIJKLMNOPQRSTUVWXY','ABCDEFGHIJKLMNOPQRSTUVWXYZ')
+appendix_number_trans = string.maketrans ('@ABCDEFGHIJKLMNOPQRSTUVWXY',
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
class SectionNumber (object):
def __init__ (self):
- self.__current_number = [0]
- self.__type = 'n'
+ self.__data = [[0,'u']]
def __increase_last_index (self):
- if isinstance (self.__current_number[-1], str):
- self.__current_number[-1] = self.__current_number[-1].translate (appendix_number_trans)
- else:
- self.__current_number[-1] += 1
+ type = self.__data[-1][1]
+ if type == 'l':
+ self.__data[-1][0] = self.__data[-1][0].translate (appendix_number_trans)
+ elif type == 'n':
+ self.__data[-1][0] += 1
- # ugh, current implementation is too naive:
- # unnumbered stuff is really printed without number for @top only
def format (self):
- if self.__current_number == [0] or self.__type == 'u':
+ if self.__data[-1][1] == 'u':
return ''
- return '.'.join ([str (i) for i in self.__current_number[1:]]) + ' '
+ return '.'.join ([str (i[0]) for i in self.__data if i[1] != 'u']) + ' '
def increase (self, (type, level)):
if level == 0:
- self.__current_number = [0]
- while level + 1 < len (self.__current_number):
- del self.__current_number[-1]
- if level + 1 > len (self.__current_number):
- self.__type = type
+ self.__data = [[0,'u']]
+ while level + 1 < len (self.__data):
+ del self.__data[-1]
+ if level + 1 > len (self.__data):
+ self.__data.append ([0, type])
if type == 'l':
- self.__current_number.append ('@')
- else:
- self.__current_number.append (0)
-
- if type == self.__type:
+ self.__data[-1][0] = '@'
+ if type == self.__data[-1][1]:
self.__increase_last_index ()
- elif type == 'l' and level == 1:
- self.__current_number[-1] = 'A'
else:
- self.__current_number[-1] = 1
+ self.__data[-1] = ([0, type])
+ if type == 'l':
+ self.__data[-1][0] = 'A'
+ elif type == 'n':
+ self.__data[-1][0] = 1
return self.format ()
c = [hex (int ((3 * p - 2) * b + 3 * (1 - p) * a))[2:] for (a, b) in [(0xff, 0x1f), (0xff, 0xff), (0x3d, 0x1f)]]
return ''.join (c)
-def line_word_count (tely_line):
- if tely_line.startswith ('@'):
- return 0
- tely_line = comments_re.sub ('', tely_line)
- return len (space_re.split (tely_line))
-
def tely_word_count (tely_doc):
'''
Calculate word count of a Texinfo document node by node.
'the whole file against the original in English, then ' + \
'fill in HEAD committish in the header.\n')
sys.exit (1)
- diff = read_pipe (diff_cmd % {'committish':m.group (1), 'original':masterdocument.filename}).splitlines ()
- insertions = sum ([line_word_count (l[1:]) for l in diff if l.startswith ('+') and not l.startswith ('+++')])
- deletions = sum ([line_word_count (l[1:]) for l in diff if l.startswith ('-') and not l.startswith ('---')])
- outdateness_percentage = 50.0 * (deletions + insertions) / (master_total_word_count + 0.5 * (deletions - insertions))
- self.uptodate_percentage = 100 - int (outdateness_percentage)
- if self.uptodate_percentage > 100:
- alternative = 50
- progress ("%s: strange uptodateness percentage %d %%, setting to %d %%" \
- % (self.filename, self.uptodate_percentage, alternative))
- self.uptodate_percentage = alternative
- elif self.uptodate_percentage < 1:
- alternative = 1
- progress ("%s: strange uptodateness percentage %d %%, setting to %d %%" \
- % (self.filename, self.uptodate_percentage, alternative))
- self.uptodate_percentage = alternative
+ (diff_string, error) = read_pipe (diff_cmd % {'committish':m.group (1), 'original':masterdocument.filename})
+ if error:
+ sys.stderr.write ('warning: %s: %s' % (self.filename, error))
+ self.uptodate_percentage = None
+ else:
+ diff = diff_string.splitlines ()
+ insertions = sum ([len (l) - 1 for l in diff if l.startswith ('+') and not l.startswith ('+++')])
+ deletions = sum ([len (l) - 1 for l in diff if l.startswith ('-') and not l.startswith ('---')])
+ outdateness_percentage = 50.0 * (deletions + insertions) / (masterdocument.size + 0.5 * (deletions - insertions))
+ self.uptodate_percentage = 100 - int (outdateness_percentage)
+ if self.uptodate_percentage > 100:
+ alternative = 50
+ progress ("%s: strange uptodateness percentage %d %%, setting to %d %%" \
+ % (self.filename, self.uptodate_percentage, alternative))
+ self.uptodate_percentage = alternative
+ elif self.uptodate_percentage < 1:
+ alternative = 1
+ progress ("%s: strange uptodateness percentage %d %%, setting to %d %%" \
+ % (self.filename, self.uptodate_percentage, alternative))
+ self.uptodate_percentage = alternative
def completeness (self, formats=['long']):
if isinstance (formats, str):
if isinstance (formats, str):
formats = [formats]
p = self.uptodate_percentage
- if p == 100:
+ if p == None:
+ status = 'N/A'
+ elif p == 100:
status = 'up to date'
else:
status = 'outdated'
l = {}
for f in formats:
- if f == 'color':
+ if f == 'color' and p != None:
l['color'] = percentage_color (p)
else:
l[f] = format_table[status][f] % locals ()
def __init__ (self, filename, parent_translations=dict ([(lang, None) for lang in langdefs.LANGDICT.keys()])):
#print "init MasterTelyDocument %s" % filename
TelyDocument.__init__ (self, filename)
+ self.size = len (self.contents)
self.word_count = tely_word_count (self.contents)
translations = dict ([(lang, os.path.join (lang, filename)) for lang in langdefs.LANGDICT.keys()])
#print translations
progress ("Reading documents...")
-tely_files = read_pipe ("find -maxdepth 2 -name '*.tely'").splitlines ()
-master_docs = [MasterTelyDocument (filename) for filename in tely_files]
+tely_files = read_pipe ("find -maxdepth 2 -name '*.tely'")[0].splitlines ()
+master_docs = [MasterTelyDocument (os.path.normpath (filename)) for filename in tely_files]
master_docs = [doc for doc in master_docs if doc.translations]
-main_status_page = open ('translations.template.html').read ()
+main_status_page = open ('translations.template.html.in').read ()
## TODO
#per_lang_status_pages = dict ([(l, open (os.path.join (l, 'translations.template.html')). read ())
progress ("Generating status pages...")
-main_status_html = ' <p><i>Last updated %s</i></p>\n' % read_pipe ('LANG= date -u')
+main_status_html = ' <p><i>Last updated %s</i></p>\n' % read_pipe ('LANG= date -u')[0]
main_status_html += '\n'.join ([doc.html_status () for doc in master_docs])
html_re = re.compile ('<html>', re.I)
main_status_page = html_re.sub ('''<html>
<!-- This page is automatically generated by translation-status.py from
-translations.template.html; DO NOT EDIT !-->''', main_status_page)
+translations.template.html.in; DO NOT EDIT !-->''', main_status_page)
main_status_page = end_body_re.sub (main_status_html + '\n</body>', main_status_page)
if not os.path.exists (dest):
os.symlink (p, dest)
+ ## ad-hoc renaming to make xrefs between PDFs work
+ os.rename (os.path.join (out_root, 'input/lsr/lilypond-snippets.pdf'),
+ os.path.join (out_root, 'Documentation/user/lilypond-snippets.pdf'))
+
# need this for content negotiation with documentation index
if 'online' in targets:
f = open (os.path.join (target_pattern % 'online', 'Documentation/.htaccess'), 'w')
LOCALSTEPMAKE_TEMPLATES=lilypond ly
EXTRA_DIST_FILES += README $(call src-wildcard,*.snippet-list)
+ifneq ($(out),)
+MAIN_INFO_DOC = lilypond-snippets
+INFO_DOCS = lilypond-snippets
+INFO_FILES = $(INFO_DOCS:%=$(outdir)/%.info)
+INFO_IMAGES_DIR = lilypond-snippets
+DEST_INFO_IMAGES_SUBDIR = input/lsr
+endif
+
+default:
+
include $(depth)/make/stepmake.make
IN_ITELY_FILES = $(call src-wildcard,*-intro.itely)
$(outdir)/%.itely: %-intro.itely %.snippet-list
xargs $(PYTHON) $(buildscript-dir)/lys-to-tely.py -f printfilename,texidoc,verbatim --name=$@ --template=$< < $(filter %.snippet-list, $^)
-$(outdir)/snippets.texi: snippets.tely $(GENERATED_ITELY_FILES)
- $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BINARY) $(LILYPOND_BOOK_INCLUDES)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) $<
+$(outdir)/lilypond-snippets.texi: $(GENERATED_ITELY_FILES)
+
+info: $(INFO_FILES)
+
+ifneq ($(out),www)
+# cancel install-info target and $(INFO_FILES) 'default' target
+# (there is no lilypond-snippets.info without images)
+local-install-info:
+
+$(INFO_FILES):
+ true
+endif
-$(outdir)/snippets-big-page.html: $(outdir)/snippets.texi $(OUT_PNG_IMAGES)
- $(MAKEINFO) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split --no-headers $<
+# All web targets, except info image symlinks and info docs are
+# installed in non-recursing target from TOP-SRC-DIR
+local-install-WWW: local-install-info
+local-uninstall-WWW: local-uninstall-info
-$(outdir)/snippets/index.html: $(outdir)/snippets.texi $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
- mkdir -p $(dir $@)
- $(MAKEINFO) -I$(outdir) --output=$(dir $@) --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
+local-clean:
+ rm -f $(INFO_IMAGES_DIR)
-local-WWW: $(outdir)/snippets.pdf $(outdir)/snippets/index.html $(outdir)/snippets-big-page.html
+local-WWW: info $(outdir)/lilypond-snippets.pdf \
+ $(outdir)/lilypond-snippets/index.html \
+ $(outdir)/lilypond-snippets-big-page.html
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
+@setfilename lilypond-snippets.info
+@settitle LilyPond snippets
+@documentencoding UTF-8
+@documentlanguage en
+
+@iftex
+@afourpaper
+@c don't replace quotes with directed quotes
+@tex
+\gdef\SETtxicodequoteundirected{Foo}
+\gdef\SETtxicodequotebacktick{Bla}
+@end tex
+@end iftex
+
+@dircategory GNU LilyPond --- the music typesetter
+@direntry
+* LilyPond Snippets: (lilypond-snippets) Short tricks, tips, and examples.
+@end direntry
+
+@finalout
+
+@titlepage
+@title LilyPond
+@subtitle The music typesetter
+@titlefont{Snippets}
+@author LilyPond Snippet Repository contributors
+
+@vskip 20pt
+
+This document shows a selected set of LilyPond snippets from the
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
+(LSR). It is in the public domain.
+
+We would like to address many thanks to Sebastiano Vigna for maintaining
+LSR web site and database, and the University of Milano for hosting LSR.
+
+Please note that this document is not an exact subset of LSR: some
+snippets come from @file{input/new} LilyPond sources directory, and
+snippets from LSR are converted through @command{convert-ly}, as LSR is
+based on a stable LilyPond version, and this document is for version
+@value{version}.
+
+Snippets are grouped by tags; tags listed in the table of contents match
+a section of LilyPond notation manual. Snippets may have several tags,
+and not all LSR tags may appear in this document.
+
+In the HTML version of this document, you can click on the file name
+or figure for each example to see the corresponding input file.
+
+@end titlepage
+
+@iftex
+@contents
+@end iftex
+
+@ifnottex
+@node Top
+@top LilyPond examples
+
+This document shows a selected set of LilyPond snippets from the
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
+(LSR). It is in the public domain.
+
+Please note that it is not an exact subset of LSR: some snippets come
+from @file{input/new} LilyPond sources directory, and snippets from LSR
+are converted through @command{convert-ly}, as LSR is based on a stable
+LilyPond version, and this document is for version @value{version}.
+
+Snippets are grouped by tags; tags listed in the table of contents match
+a section of LilyPond notation manual. Snippets may have several tags,
+and not all LSR tags may appear in this document.
+
+In the HTML version of this document, you can click on the file name
+or figure for each example to see the corresponding input file.
+@end ifnottex
+
+@c maybe generate/update @menu and @includes automatically? --jm
+@menu
+Musical notation
+* Pitches::
+* Rhythms::
+* Expressive marks::
+* Repeats::
+* Simultaneous notes::
+* Staff notation::
+* Editorial and educational use::
+* Text::
+
+Specialist notation
+* Vocal music::
+* Chords::
+* Piano::
+* Percussion::
+* Guitar::
+* Strings::
+@c * Bagpipes::
+* Ancient notation::
+
+Other collections
+* Contexts and engravers::
+* Tweaks and overrides::
+* Paper and layout::
+* Titles::
+* Spacing::
+* MIDI::
+* Templates::
+@end menu
+
+
+@c Please take care of naming every .itely
+@c with an existing tag name.
+
+@include pitches.itely
+@include rhythms.itely
+@include expressive-marks.itely
+@include repeats.itely
+@include simultaneous-notes.itely
+@include staff-notation.itely
+@include editorial-and-educational-use.itely
+@include text.itely
+
+@include vocal-music.itely
+@include chords.itely
+@include piano-music.itely
+@include percussion.itely
+@include guitar.itely
+@include strings.itely
+@c ignore empty section
+@c @include bagpipes.itely
+@include ancient-notation.itely
+
+@include contexts-and-engravers.itely
+@include tweaks-and-overrides.itely
+@include paper-and-layout.itely
+@include titles.itely
+@include spacing.itely
+@include midi.itely
+@include template.itely
+
+@bye
+++ /dev/null
-\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
-@setfilename snippets.info
-@settitle LilyPond snippets
-@documentencoding UTF-8
-@documentlanguage en
-
-@iftex
-@afourpaper
-@c don't replace quotes with directed quotes
-@tex
-\gdef\SETtxicodequoteundirected{Foo}
-\gdef\SETtxicodequotebacktick{Bla}
-@end tex
-@end iftex
-
-@finalout
-
-@titlepage
-@title LilyPond
-@subtitle The music typesetter
-@titlefont{Snippets}
-@author LilyPond Snippet Repository contributors
-
-@vskip 20pt
-
-This document shows a selected set of LilyPond snippets from the
-@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
-(LSR). It is in the public domain.
-
-We would like to address many thanks to Sebastiano Vigna for maintaining
-LSR web site and database, and the University of Milano for hosting LSR.
-
-Please note that this document is not an exact subset of LSR: some
-snippets come from @file{input/new} LilyPond sources directory, and
-snippets from LSR are converted through @command{convert-ly}, as LSR is
-based on a stable LilyPond version, and this document may be for a newer
-version (see below).
-
-Snippets are grouped by tags; tags listed in the table of contents match
-a section of LilyPond notation manual. Snippets may have several tags,
-and not all LSR tags may appear in this document.
-
-In the HTML version of this document, you can click on the file name
-or figure for each example to see the corresponding input file.
-
-@lilypond[ragged-right]
-\score {
- \context Lyrics {
- \override Score.RehearsalMark #'self-alignment-X = #LEFT
- \override Score.RehearsalMark #'font-size = #-1
- \mark #(ly:export (string-append
- "This document is for LilyPond version " (lilypond-version) "."))
- s2
- }
- \layout {
- indent = 0.0\pt
- }
-}
-@end lilypond
-@end titlepage
-
-@iftex
-@contents
-@end iftex
-
-@ifnottex
-@node Top
-@top LilyPond examples
-
-This document shows a selected set of LilyPond snippets from the
-@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
-(LSR). It is in the public domain.
-
-Please note that it is not an exact subset of LSR: some snippets come
-from @file{input/new} LilyPond sources directory, and snippets from LSR
-are converted through @command{convert-ly}, as LSR is based on a stable
-LilyPond version, and this document may be for a newer version (see
-below).
-
-Snippets are grouped by tags; tags listed in the table of contents match
-a section of LilyPond notation manual. Snippets may have several tags,
-and not all LSR tags may appear in this document.
-
-In the HTML version of this document, you can click on the file name
-or figure for each example to see the corresponding input file.
-@end ifnottex
-
-@c maybe generate/update @menu and @includes automatically? --jm
-@menu
-Musical notation
-* Pitches::
-* Rhythms::
-* Expressive marks::
-* Repeats::
-* Simultaneous notes::
-* Staff notation::
-* Editorial and educational use::
-* Text::
-
-Specialist notation
-* Vocal music::
-* Chords::
-* Piano::
-* Percussion::
-* Guitar::
-* Strings::
-@c * Bagpipes::
-* Ancient notation::
-
-Other collections
-* Contexts and engravers::
-* Tweaks and overrides::
-* Paper and layout::
-* Titles::
-* Spacing::
-* MIDI::
-* Templates::
-@end menu
-
-
-@c Please take care of naming every .itely
-@c with an existing tag name.
-
-@include pitches.itely
-@include rhythms.itely
-@include expressive-marks.itely
-@include repeats.itely
-@include simultaneous-notes.itely
-@include staff-notation.itely
-@include editorial-and-educational-use.itely
-@include text.itely
-
-@include vocal-music.itely
-@include chords.itely
-@include piano-music.itely
-@include percussion.itely
-@include guitar.itely
-@include strings.itely
-@c ignore empty section
-@c @include bagpipes.itely
-@include ancient-notation.itely
-
-@include contexts-and-engravers.itely
-@include tweaks-and-overrides.itely
-@include paper-and-layout.itely
-@include titles.itely
-@include spacing.itely
-@include midi.itely
-@include template.itely
-
-@bye
d'8-2 \staccato
|
c'4-3
- r8
- r16.
- c'32-3 \pp
- |
- c'8-2
- r16.
- c'32
- c'8
- r16.
- c'32
- |
- c'8
+ r4
}
% LH Staff
d8-2 \staccato
|
c4-3
- r8
- r16.
- c32-3
- |
- c8-2
- r16.
- c32
- c8
- r16.
- c32
- |
- c8
+ r4
}
>>
<part id="P1">
<measure number="1">
<attributes>
- <divisions>32</divisions>
+ <divisions>64</divisions>
<key>
<fifths>0</fifths>
<mode>major</mode>
</key>
- <time symbol="common">
- <beats>4</beats>
+ <time>
+ <beats>16</beats>
<beat-type>4</beat-type>
</time>
<clef>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>128</duration>
- <tie type="start"/>
+ <duration>1024</duration>
<voice>1</voice>
- <type>whole</type>
- <notations>
- <tied type="start"/>
- </notations>
+ <type>longa</type>
</note>
</measure>
<!--=======================================================-->
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>128</duration>
- <tie type="stop"/>
+ <duration>512</duration>
<voice>1</voice>
- <type>whole</type>
- <notations>
- <tied type="stop"/>
- </notations>
+ <type>breve</type>
</note>
- </measure>
- <!--=======================================================-->
- <measure number="3">
<note>
<pitch>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>128</duration>
+ <duration>256</duration>
<voice>1</voice>
<type>whole</type>
</note>
- </measure>
- <!--=======================================================-->
- <measure number="4">
<note>
<pitch>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>64</duration>
+ <duration>128</duration>
<voice>1</voice>
<type>half</type>
<stem>down</stem>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>32</duration>
+ <duration>64</duration>
<voice>1</voice>
<type>quarter</type>
<stem>down</stem>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>16</duration>
+ <duration>32</duration>
<voice>1</voice>
<type>eighth</type>
<stem>down</stem>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>8</duration>
+ <duration>16</duration>
<voice>1</voice>
<type>16th</type>
<stem>down</stem>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>4</duration>
+ <duration>8</duration>
<voice>1</voice>
<type>32nd</type>
<stem>down</stem>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>2</duration>
+ <duration>4</duration>
<voice>1</voice>
<type>64th</type>
<stem>down</stem>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>1</duration>
+ <duration>2</duration>
<voice>1</voice>
<type>128th</type>
<stem>down</stem>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>1</duration>
+ <duration>2</duration>
<voice>1</voice>
<type>128th</type>
<stem>down</stem>
</note>
</measure>
<!--=======================================================-->
+ <measure number="4">
+ <attributes>
+ <time>
+ <beats>24</beats>
+ <beat-type>4</beat-type>
+ </time>
+ </attributes>
+ <note>
+ <pitch>
+ <step>C</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>1536</duration>
+ <voice>1</voice>
+ <type>longa</type>
+ <dot/>
+ </note>
+ </measure>
+ <!--=======================================================-->
<measure number="5">
<note>
<pitch>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>96</duration>
+ <duration>768</duration>
<voice>1</voice>
- <type>half</type>
+ <type>breve</type>
<dot/>
- <stem>down</stem>
</note>
<note>
<pitch>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>32</duration>
+ <duration>384</duration>
<voice>1</voice>
- <type>quarter</type>
- <stem>down</stem>
+ <type>whole</type>
+ <dot/>
</note>
- </measure>
- <!--=======================================================-->
- <measure number="6">
<note>
<pitch>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>48</duration>
+ <duration>192</duration>
+ <voice>1</voice>
+ <type>half</type>
+ <dot/>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>96</duration>
<voice>1</voice>
<type>quarter</type>
<dot/>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>24</duration>
+ <duration>48</duration>
<voice>1</voice>
<type>eighth</type>
<dot/>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>12</duration>
+ <duration>24</duration>
<voice>1</voice>
<type>16th</type>
<dot/>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>6</duration>
+ <duration>12</duration>
<voice>1</voice>
<type>32nd</type>
<dot/>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>3</duration>
+ <duration>6</duration>
<voice>1</voice>
<type>64th</type>
<dot/>
- <stem>down</stem>
<beam number="1">continue</beam>
<beam number="2">continue</beam>
<beam number="3">continue</beam>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>2</duration>
+ <duration>3</duration>
<voice>1</voice>
<type>128th</type>
<dot/>
- <stem>down</stem>
<beam number="1">continue</beam>
<beam number="2">continue</beam>
<beam number="3">continue</beam>
<step>C</step>
<octave>5</octave>
</pitch>
- <duration>2</duration>
+ <duration>3</duration>
<voice>1</voice>
<type>128th</type>
<dot/>
- <stem>down</stem>
<beam number="1">end</beam>
<beam number="2">end</beam>
<beam number="3">end</beam>
<beam number="4">end</beam>
<beam number="5">end</beam>
</note>
+ </measure>
+ <!--=======================================================-->
+ <measure number="6">
+ <attributes>
+ <time>
+ <beats>28</beats>
+ <beat-type>4</beat-type>
+ </time>
+ </attributes>
+ <note>
+ <pitch>
+ <step>C</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>1792</duration>
+ <voice>1</voice>
+ <type>longa</type>
+ <dot/>
+ <dot/>
+ </note>
+ </measure>
+ <!--=======================================================-->
+ <measure number="7">
+ <note>
+ <pitch>
+ <step>C</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>896</duration>
+ <voice>1</voice>
+ <type>breve</type>
+ <dot/>
+ <dot/>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>448</duration>
+ <voice>1</voice>
+ <type>whole</type>
+ <dot/>
+ <dot/>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>224</duration>
+ <voice>1</voice>
+ <type>half</type>
+ <dot/>
+ <dot/>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>112</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <dot/>
+ <dot/>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>56</duration>
+ <voice>1</voice>
+ <type>eighth</type>
+ <dot/>
+ <dot/>
+ <beam number="1">begin</beam>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>28</duration>
+ <voice>1</voice>
+ <type>16th</type>
+ <dot/>
+ <dot/>
+ <beam number="1">continue</beam>
+ <beam number="2">begin</beam>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>14</duration>
+ <voice>1</voice>
+ <type>32nd</type>
+ <dot/>
+ <dot/>
+ <beam number="1">continue</beam>
+ <beam number="2">continue</beam>
+ <beam number="3">begin</beam>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>7</duration>
+ <voice>1</voice>
+ <type>64th</type>
+ <dot/>
+ <dot/>
+ <beam number="1">continue</beam>
+ <beam number="2">continue</beam>
+ <beam number="3">continue</beam>
+ <beam number="4">begin</beam>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>7</duration>
+ <voice>1</voice>
+ <type>64th</type>
+ <dot/>
+ <dot/>
+ <beam number="1">end</beam>
+ <beam number="2">end</beam>
+ <beam number="3">end</beam>
+ <beam number="4">end</beam>
+ </note>
<barline location="right">
<bar-style>light-heavy</bar-style>
</barline>
}
details = scm_acons (ly_symbol2scm ("X"),
- scm_from_double (bound_grob->extent (commonx, X_AXIS)
+ scm_from_double (robust_relative_extent (bound_grob, commonx, X_AXIS)
.linear_combination (attach)),
details);
}
line.translate (Offset (-me->relative_coordinate (commonx, X_AXIS),
-me->relative_coordinate (my_common_y, Y_AXIS)));
-
+
return line.smobbed_copy ();
}
/*
- If a variable in changed in SRC, we DEST doesn't see the
+ If a variable is changed in SRC, then DEST doesn't see the
definitions.
*/
"@code{force-hshift} and @code{horizontal-shift}.",
/* properties */
- "ignore-collision "
"merge-differently-dotted "
"merge-differently-headed "
"positioning-done ");
"arpeggio "
"force-hshift "
"horizontal-shift "
+ "ignore-collision "
"note-heads "
"rest "
"rest-collision "
OTF_FILES = $(STAFF_SIZES:%=$(outdir)/emmentaler-%.otf) \
$(outdir)/aybabtu.otf
-PE_SCRIPTS = $(STAFF_SIZES:%=$(outdir)/emmentaler-%.pe) \
- $(STAFF_SIZES:%=$(outdir)/emmentaler-%.dep)
+PE_SCRIPTS = $(STAFF_SIZES:%=$(outdir)/emmentaler-%.pe)
OTF_TABLES = $(STAFF_SIZES:%=$(outdir)/feta%.otf-table) \
$(BRACES:%=$(outdir)/feta-braces-%.otf-table)
FETA_FONTS = $(FETA_MF_FILES:.mf=)
$(outdir)/%.lisp \
$(outdir)/%.otf-gtable \
$(outdir)/%.enc \
-$(outdir)/%.dep: $(outdir)/%.log
+$(outdir)/%.pe: $(outdir)/%.log
$(PYTHON) $(buildscript-dir)/mf-to-table.py \
--global-lisp=$(outdir)/$(<F:.log=.otf-gtable) \
--lisp=$(outdir)/$(<F:.log=.lisp) \
--outdir=$(outdir) \
- --dep $(outdir)/$(<F:.log=.dep) \
--enc $(outdir)/$(<F:.log=.enc) \
$<
def conv (str):
def replace (match):
- return '\\key %s;' % string.lower (match.group (1))
+ return '\\key %s;' % match.group (1).lower ()
str = re.sub ("\\\\key ([^;]+);", replace, str)
return str
elif x not in string.letters:
x = 'x'
elif x in string.lowercase and lastx == '_':
- x = string.upper (x)
+ x = x.upper ()
s = s + x
lastx = x
return s
'set-point-and-click!'
]
- origre = r'\b(%s)' % string.join (changed, '|')
+ origre = r'\b(%s)' % '|'.join (changed)
str = re.sub (origre, r'ly:\1',str)
str = re.sub ('set-point-and-click!', 'set-point-and-click', str)
'sfz',
]
- origstr = string.join (kws, '|')
+ origstr = '|'.join (kws)
str = re.sub (r'([^_^-])\\(%s)\b' % origstr, r'\1-\\\2', str)
return str
conversions.append (((1,7,6), conv, 'note\\script -> note-\script'))
## end of while <>
- suffix = string.join (slur_strs, '') + string.join (pslur_strs,
- '') \
- + string.join (dyns, '')
+ suffix = ''.join (slur_strs) + ''.join (pslur_strs) \
+ + ''.join (dyns)
return '@STARTCHORD@%s@ENDCHORD@%s%s' % (str , dur_str, suffix)
def conv (str):
def func(match):
- return "#'font-size = #%d" % (2*string.atoi (match.group (1)))
+ return "#'font-size = #%d" % (2*int (match.group (1)))
str =re.sub (r"#'font-relative-size\s*=\s*#\+?([0-9-]+)", func, str)
str =re.sub (r"#'font-family\s*=\s*#'ancient",
def sub_note (match):
dur = ''
- log = string.atoi (match.group (1))
- dots = string.atoi (match.group (2))
+ log = int (match.group (1))
+ dots = int (match.group (2))
if log >= 0:
dur = '%d' % (1 << log)
import getopt
import sys
import os
-import string
dsr_font_regex = re.compile ('%%DocumentSuppliedResources: font (.*)')
begin_font_regex = re.compile ('%%BeginFont: (.*)')
in_font = 0
if curr_font_name in extract_from_this:
- font_dict[curr_font_name] = string.join (curr_font, '')
+ font_dict[curr_font_name] = ''.join (curr_font)
if verbose:
sys.stderr.write (_('Extracted %s')
% curr_font_name + '\n')
if extract_from_this:
sys.stderr.write ("Failed to extract %s from %s\n"
- % (string.join (extract_from_this, ', '), filename))
+ % (', '.join (extract_from_this), filename))
def write_extracted_fonts (output_file_name, font_dict):
if verbose:
import os
import re
import shutil
-import string
import sys
import optparse
def search_exe_path (name):
p = os.environ['PATH']
- exe_paths = string.split (p, ':')
+ exe_paths = p.split (':')
for e in exe_paths:
full = os.path.join (e, name)
if os.path.exists (full):
import sys
import string
import re
-import lilylib
+import lilylib as ly
-_ = lilylib._
+_ = ly._
from rational import Rational
def ly_expression (self, factor = None):
if not factor:
factor = self.factor
-
- str = '%d%s' % (1 << self.duration_log, '.'*self.dots)
+
+ if self.duration_log < 0:
+ str = {-1: "\\breve", -2: "\\longa"}.get (self.duration_log, "1")
+ else:
+ str = '%d' % (1 << self.duration_log)
+ str += '.'*self.dots
if factor <> Rational (1,1):
if factor.denominator () <> 1:
import re
import sys
import copy
-import lilylib
+import lilylib as ly
-_ = lilylib._
+_ = ly._
def error (str):
ly.stderr_write ((_ ("error: %s") % str) + "\n")
return ''.join ([c.get_text () for c in self._children])
def message (self, msg):
- lilylib.stderr_write (msg+'\n')
+ ly.stderr_write (msg+'\n')
p = self
while p:
'half': 1,
'whole': 0,
'breve': -1,
- 'long': -2}.get (log, 0)
+ 'longa': -2}.get (log, 0)
elif self.get_maybe_exist_named_child (u'grace'):
# FIXME: is it ok to default to eight note for grace notes?
return 3
if instrument_name:
return instrument_name
else:
- lilylib.stderr_write (_ ("Unable to find find instrument for ID=%s\n") % id)
+ ly.stderr_write (_ ("Unable to find find instrument for ID=%s\n") % id)
return "Grand Piano"
class Part_group (Music_xml_node):
import os
import sys
-import string
import re
"""
p.add_option ('-e', '--edit', help=_ ("edit in place"),
action='store_true')
+
p.add_option ('-n', '--no-version',
help=_ ("do not add \\version command if missing"),
action='store_true',
dest='skip_version_add',
default=False)
+
+ p.add_option ('-c', '--current-version',
+ help=_ ("force updating \\version number to %s") % program_version,
+ action='store_true',
+ dest='force_current_version',
+ default=False)
p.add_option ("-s", '--show-rules',
- help=_ ("show rules [default: --from=0, --to=@TOPLEVEL_VERSION@]"),
+ help=_ ("show rules [default: --from=0, --to=%s]") % program_version,
dest='show_rules',
action='store_true', default=False)
p.add_option ('-t', '--to',
- help=_ ("convert to VERSION [default: @TOPLEVEL_VERSION@]"),
+ help=_ ("convert to VERSION [default: %s]") % program_version,
metavar=_ ('VERSION'),
action='store',
dest="to_version",
def str_to_tuple (s):
- return tuple (map (int, string.split (s, '.')))
+ return tuple ([int(n) for n in s.split ('.')])
def tup_to_str (t):
- return string.join (map (lambda x: '%s' % x, list (t)), '.')
+ return '.'.join (['%s' % x for x in t])
def version_cmp (t1, t2):
for x in [0, 1, 2]:
-def guess_lilypond_version (filename):
- s = open (filename).read ()
- m = lilypond_version_re.search (s)
+def guess_lilypond_version (input):
+ m = lilypond_version_re.search (input)
if m:
return m.group (1)
else:
ly.stderr_write (_ ("Processing `%s\'... ") % infile_name)
sys.stderr.write ('\n')
+ if infile_name:
+ infile = open (infile_name, 'r')
+ input = infile.read ()
+ infile.close ()
+ else:
+ input = sys.stdin.read ()
+
from_version = None
to_version = None
if global_options.from_version:
from_version = global_options.from_version
else:
- guess = guess_lilypond_version (infile_name)
+ guess = guess_lilypond_version (input)
if not guess:
raise UnknownVersion ()
from_version = str_to_tuple (guess)
to_version = latest_version ()
- if infile_name:
- infile = open (infile_name, 'r')
- else:
- infile = sys.stdin
-
-
- (last, result) = do_conversion (infile.read (), from_version, to_version)
- infile.close ()
+ (last, result) = do_conversion (input, from_version, to_version)
if last:
+ if global_options.force_current_version and last == to_version:
+ last = str_to_tuple (program_version)
+
newversion = r'\version "%s"' % tup_to_str (last)
if lilypond_version_re.search (result):
result = re.sub (lilypond_version_re_str,
#
# Is this pythonic? Personally, I find this rather #define-nesque. --hwn
#
+ADDVERSION = 'addversion'
AFTER = 'after'
BEFORE = 'before'
DOCBOOK = 'docbook'
VERBATIM,
FONTLOAD,
FILENAME,
- ALT
+ ALT,
+ ADDVERSION
]
ly_options = {
''',
VERBATIM: r'''@exampleindent 0
-@verbatim
+%(version)s@verbatim
%(verb)s@end verbatim
''',
+
+ ADDVERSION: r'''@example
+\version @w{"@version{}"}
+@end example
+'''
},
}
str = ''
if PRINTFILENAME in self.option_dict:
base = self.basename ()
- filename = self.substring ('filename')
- str = output[global_options.format][PRINTFILENAME] % vars ()
+ filename = os.path.basename (self.substring ('filename'))
+ str = output[format][PRINTFILENAME] % vars ()
return str
def output_texinfo (self):
- str = ''
- if self.output_print_filename (TEXINFO):
- str += ('@html\n'
- + self.output_print_filename (HTML)
- + '\n@end html\n')
- str += ('@tex\n'
- + self.output_print_filename (LATEX)
- + '\n@end tex\n')
+ str = self.output_print_filename (TEXINFO)
base = self.basename ()
if TEXIDOC in self.option_dict:
texidoc = base + '.texidoc'
substr = ''
if VERBATIM in self.option_dict:
+ version = ''
+ if ADDVERSION in self.option_dict:
+ version = output[TEXINFO][ADDVERSION]
verb = self.verb_ly ()
- substr += output[TEXINFO][VERBATIM] % vars ()
- if not QUOTE in self.option_dict:
- substr = output[TEXINFO][NOQUOTE] % {'str':substr}
+ substr = output[TEXINFO][VERBATIM] % vars ()
substr += self.output_info ()
if LILYQUOTE in self.option_dict:
substr = output[TEXINFO][QUOTE] % {'str':substr}
else:
duration_factor = Rational (diff.numerator ())
else:
+ # for skips of a whole or more, simply use s1*factor
duration_log = 0
duration_factor = diff
skip.duration.duration_log = duration_log
## info stuff
local-install: install-info
local-uninstall: uninstall-info
-local-install-info:
-local-uninstall-info:
install-info: local-install-info
uninstall-info: local-uninstall-info
uninstall-info:
$(INFO_INSTALL_COMMAND) local-uninstall
+ifeq ($(INFO_FILES),)
+local-install-info:
+local-uninstall-info:
+
+else # $(INFO_FILES) non empty
+# There are two modes for info: with and without images.
+ifeq ($(out),www)
+
+# This builds all .info targets with images, in out-www.
+# Viewable with a recent Emacs, doing: C-u C-h i out-www/lilypond.info
+
+local-install-info: info
+ -$(INSTALL) -d $(DESTDIR)$(infodir)
+ifneq ($(patsubst %/local,%,$(DESTDIR)$(prefix)),/usr)
+## Can not have absolute symlinks because some binary packages build schemes
+## install files in nonstandard root. Best we can do is to notify the
+## builder or packager.
+ @echo
+ @echo "***************************************************************"
+ @echo "Please add or update the LilyPond direntries, do"
+ @echo
+ @echo " install-info --info-dir=$(infodir) $(outdir)/$(MAIN_INFO_DOC).info"
+ @echo
+ @echo "For images in the INFO docs to work, do: "
+ @echo
+ @echo " (cd $(infodir) && ln -sfT ../doc/lilypond/html/$(DEST_INFO_IMAGES_SUBDIR) $(INFO_IMAGES_DIR))"
+ @echo "or add something like that to the postinstall script."
+ @echo
+else # installing directly into standard /usr/...
+ -$(INSTALL) -d $(DESTDIR)$(infodir)
+ $(foreach f,$(INFO_FILES),install-info --remove --info-dir=$(infodir) $(f) ; )true
+ install-info --info-dir=$(infodir) $(outdir)/$(MAIN_INFO_DOC).info
+ cd $(infodir) && ln -sfT $(webdir)/$(DEST_INFO_IMAGES_SUBDIR) $(INFO_IMAGES_DIR)
+endif # installing directly into standard /usr/...
+
+local-uninstall-WWW:
+ rm -f $(infodir)/$(INFO_IMAGES_DIR)
+
+else # out!=www
+
+local-install-info: info
+ -$(INSTALL) -d $(DESTDIR)$(package_infodir)
+ifneq ($(patsubst %/local,%,$(DESTDIR)$(prefix)),/usr)
+## Can not have absolute symlinks because some binary packages build schemes
+## install files in nonstandard root. Best we can do is to notify the
+## builder or packager.
+ @echo
+ @echo "***************************************************************"
+ @echo "Please add or update the LilyPond direntries, do"
+ @echo
+ @echo " install-info --info-dir=$(infodir) out/$(MAIN_INFO_DOC).info"
+ @echo
+ @echo "For images in the INFO docs to work, do"
+ @echo
+ @echo " make out=www install-info "
+ @echo
+ @echo "and read the extra instructions."
+ @echo
+else # installing directly into standard /usr/...
+ -$(INSTALL) -d $(DESTDIR)$(infodir)
+ $(foreach f,$(INFO_FILES),install-info --remove --info-dir=$(infodir) $(f) ; )true
+ install-info --info-dir=$(infodir) $(outdir)/$(MAIN_INFO_DOC).info
+ @echo
+ @echo "***************************************************************"
+ @echo "For images in the INFO docs to work, do"
+ @echo
+ @echo " make out=www install-info "
+ @echo
+endif # installing into standard /usr/* root# installing into /usr/...
+
+endif # out!=www
+
+endif # $(INFO_FILES) non empty
TEXINFO_ALL_MENUS_UPDATE_EL ='\
(let ((error nil)\
OUTTXT_FILES += $(addprefix $(outdir)/,$(TEXI_FILES:.texi=.txt))
+TEXI2PDF_FLAGS += --command '@set version $(TOPLEVEL_VERSION)'
GENERATE_OMF = $(PYTHON) $(buildscript-dir)/texi2omf.py --format $(1) --location $(webdir)/$(tree-dir)/out-www/$(notdir $(basename $@)) --version $(TOPLEVEL_VERSION) $< > $@
+TEXI2PDF_FLAGS += --command '@set version $(TOPLEVEL_VERSION)'
TEXINFO_PAPERSIZE_OPTION= $(if $(findstring $(PAPERSIZE),a4),,-t @afourpaper)
-MAKEINFO_FLAGS = --enable-encoding
+MAKEINFO_FLAGS = --enable-encoding -D 'version $(TOPLEVEL_VERSION)'
MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2007-09-03.05}
+\def\texinfoversion{2008-02-28.18}
%
-% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 2007,
+% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007 Free Software Foundation, Inc.
+% 2007, 2008 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
\let\ptexslash=\/
\let\ptexstar=\*
\let\ptext=\t
+\let\ptextop=\top
% If this character appears in an error message or help string, it
% starts a new line in the output.
\temp
}
-% @include file insert text of that file as input.
+% @include FILE -- \input text of FILE.
%
\def\include{\parseargusing\filenamecatcodes\includezzz}
\def\includezzz#1{%
\pushthisfilestack
\def\thisfile{#1}%
{%
- \makevalueexpandable
- \def\temp{\input #1 }%
+ \makevalueexpandable % we want to expand any @value in FILE.
+ \edef\temp{\noexpand\input #1 }%
+ %
+ % This trickery is to read FILE outside of a group, in case it makes
+ % definitions, etc.
\expandafter
}\temp
\popthisfilestack
}%
}
-%
% PDF CMaps. See also LaTeX's t1.cmap.
%
-% \cmapOT1
-\ifpdf
+% do nothing with this by default.
+\expandafter\let\csname cmapOT1\endcsname\gobble
+\expandafter\let\csname cmapOT1IT\endcsname\gobble
+\expandafter\let\csname cmapOT1TT\endcsname\gobble
+
+% if we are producing pdf, and we have \pdffontattr, then define cmaps.
+% (\pdffontattr was introduced many years ago, but people still run
+% older pdftex's; it's easy to conditionalize, so we do.)
+\ifpdf \ifx\pdffontattr\undefined \else
\begingroup
\catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
\catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
\expandafter\edef\csname cmapOT1TT\endcsname#1{%
\pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
}%
-\else
- \expandafter\let\csname cmapOT1\endcsname\gobble
- \expandafter\let\csname cmapOT1IT\endcsname\gobble
- \expandafter\let\csname cmapOT1TT\endcsname\gobble
-\fi
+\fi\fi
% Set the font macro #1 to the font named #2, adding on the
}
% This is what gets called when #5 of \setfont is empty.
\let\cmap\gobble
-
+% emacs-page end of cmaps
% Use cm as the default font prefix.
% To specify the font prefix, you must define \fontprefix
\let\env=\code
\let\command=\code
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
% @uref (abbreviation for `urlref') takes an optional (comma-separated)
% second argument specifying the text to display and an optional third
% arg as text to display instead of (rather than in addition to) the url
\chardef\quoteleft=`\`
\chardef\quoteright=`\'
+
\message{page headings,}
\newskip\titlepagetopglue \titlepagetopglue = 1.5in
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
%
-% Since these characters are used in examples, it should be an even number of
+% Since these characters are used in examples, they should be an even number of
% \tt widths. Each \tt character is 1en, so two makes it 1em.
%
\def\point{$\star$}
-\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
+\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
% The @error{} command.
% Adapted from the TeXbook's \boxit.
\let\/=\ptexslash
\let\*=\ptexstar
\let\t=\ptext
+ \expandafter \let\csname top\endcsname=\ptextop % outer
\let\frenchspacing=\plainfrenchspacing
%
\def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%