@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@c This file is part of lilypond-program.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
+@c This file is part of lilypond.tely
+@ignore
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@node Editorial annotations
+@section Editorial annotations
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu
+* Inside the staff::
+* Outside the staff::
+@end menu
+@node Inside the staff
+@subsection Inside the staff
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu
+* Selecting notation font size::
+* Fingering instructions::
+* Hidden notes::
+* Coloring objects::
+* Parentheses::
+* Stems::
+@end menu
+@node Selecting notation font size
+@subsubsection Selecting notation font size
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Fingering instructions
+@subsubsection Fingering instructions
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Hidden notes
+@subsubsection Hidden notes
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Coloring objects
+@subsubsection Coloring objects
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Parentheses
+@subsubsection Parentheses
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Stems
+@subsubsection Stems
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Outside the staff
+@subsection Outside the staff
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu
+* Balloon help::
+* Grid lines::
+* Blank music sheet::
+* Analysis brackets::
+@end menu
+@node Balloon help
+@subsubsection Balloon help
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Grid lines
+@subsubsection Grid lines
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Blank music sheet
+@subsubsection Blank music sheet
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Analysis brackets
+@subsubsection Analysis brackets
+
+UNTRANSLATED NODE: IGNORE ME
+
+
+-- SKELETON FILE --
+When you actually translate this file, please remove these lines as
+well as all `UNTRANSLATED NODE: IGNORE ME' lines.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@c This file is part of lilypond-learning.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@menu
* Introduction to the LilyPond file structure::
* Score is a (single) compound musical expression::
-* Nesting Music Expressions::
+* Nesting music expressions::
* On the un-nestedness of brackets and ties::
@end menu
@node Introduction to the LilyPond file structure
UNTRANSLATED NODE: IGNORE ME
-@node Nesting Music Expressions
-@subsection Nesting Music Expressions
+@node Nesting music expressions
+@subsection Nesting music expressions
UNTRANSLATED NODE: IGNORE ME
UNTRANSLATED NODE: IGNORE ME
+@subsubsection Changing a single context
@
+@subsubsection Changing all contexts of the same type
@node Extending the templates
@section Extending the templates
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
UNTRANSLATED NODE: IGNORE ME
@menu
-* Up and down::
+* Controlling direction::
* Distances and measurements MAYBE MOVE::
@end menu
-@node Up and down
-@subsection Up and down
+@node Controlling direction
+@subsection Controlling direction
UNTRANSLATED NODE: IGNORE ME
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@c This file is part of lilypond-program.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@c This file is part of lilypond-program.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
UNTRANSLATED NODE: IGNORE ME
+@subheading Format-specific instructions
+@subsubheading @LaTeX{}
+@subsubheading Texinfo
+@subheading Command line options
@node Filename extensions
@section Filename extensions
@omflanguage German
@end ignore
+@c Translators: Till Rettig
@ifhtml
Dieses Dokument ist auch als
@omflanguage German
@end ignore
+@c Translators: Till Rettig
@ifhtml
Dieses Dokument ist auch als
@omflanguage German
@end ignore
+@c Translators: Till Rettig
@ifhtml
Dieses Dokument ist auch als
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@menu
* Titles and headers::
* MIDI output::
+* other midi::
@end menu
@node Titles and headers
@section Titles and headers
* Repeats and MIDI::
@end menu
@node Repeats and MIDI
-@unnumberedsubsubsec Repeats and MIDI
+@subsubsection Repeats and MIDI
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node other midi
+@section other midi
UNTRANSLATED NODE: IGNORE ME
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@c This file is part of lilypond-program.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
* Breaks::
* Vertical spacing::
* Horizontal spacing::
+* Page layout MOVED FROM LM::
@end menu
@node Paper and pages
@section Paper and pages
UNTRANSLATED NODE: IGNORE ME
+@node Page layout MOVED FROM LM
+@section Page layout MOVED FROM LM
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu
+* Introduction to layout::
+* Global sizes::
+* Line breaks::
+* Page breaks::
+* Fitting music onto fewer pages::
+@end menu
+@node Introduction to layout
+@subsection Introduction to layout
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Global sizes
+@subsection Global sizes
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Line breaks
+@subsection Line breaks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Page breaks
+@subsection Page breaks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Fitting music onto fewer pages
+@subsection Fitting music onto fewer pages
+
+UNTRANSLATED NODE: IGNORE ME
+
-- SKELETON FILE --
When you actually translate this file, please remove these lines as
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
+@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: f7420240e4ce1fe2217646482a47d00f566af52c
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@end ignore
+
+@node Text
+@section Text
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu
+* Writing text::
+* Text markup::
+* Special text concerns::
+@end menu
+@node Writing text
+@subsection Writing text
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu
+* Overview of text entry::
+* Text scripts::
+* Text spanners::
+* Text marks::
+@end menu
+@node Overview of text entry
+@subsubsection Overview of text entry
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Text scripts
+@subsubsection Text scripts
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Text spanners
+@subsubsection Text spanners
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Text marks
+@subsubsection Text marks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Text markup
+@subsection Text markup
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu
+* Text markup introduction::
+* Nested scores::
+* Page wrapping text::
+* Font selection::
+@end menu
+@node Text markup introduction
+@subsubsection Text markup introduction
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Nested scores
+@subsubsection Nested scores
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Page wrapping text
+@subsubsection Page wrapping text
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Font selection
+@subsubsection Font selection
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Special text concerns
+@subsection Special text concerns
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu
+* New dynamic marks::
+* Text and line spanners::
+@end menu
+@node New dynamic marks
+@subsubsection New dynamic marks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Text and line spanners
+@subsubsection Text and line spanners
+
+UNTRANSLATED NODE: IGNORE ME
+
+
+-- SKELETON FILE --
+When you actually translate this file, please remove these lines as
+well as all `UNTRANSLATED NODE: IGNORE ME' lines.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
* Entering lyrics::
@end menu
@node Setting simple songs
-@unnumberedsubsubsec Setting simple songs
+@subsubsection Setting simple songs
UNTRANSLATED NODE: IGNORE ME
@node Entering lyrics
-@unnumberedsubsubsec Entering lyrics
+@subsubsection Entering lyrics
UNTRANSLATED NODE: IGNORE ME
* Extenders and hyphens::
@end menu
@node Automatic syllable durations
-@unnumberedsubsubsec Automatic syllable durations
+@subsubsection Automatic syllable durations
UNTRANSLATED NODE: IGNORE ME
@node Another way of entering lyrics
-@unnumberedsubsubsec Another way of entering lyrics
+@subsubsection Another way of entering lyrics
UNTRANSLATED NODE: IGNORE ME
@node Assigning more than one syllable to a single note
-@unnumberedsubsubsec Assigning more than one syllable to a single note
+@subsubsection Assigning more than one syllable to a single note
UNTRANSLATED NODE: IGNORE ME
@node More than one note on a single syllable
-@unnumberedsubsubsec More than one note on a single syllable
+@subsubsection More than one note on a single syllable
UNTRANSLATED NODE: IGNORE ME
@node Extenders and hyphens
-@unnumberedsubsubsec Extenders and hyphens
+@subsubsection Extenders and hyphens
UNTRANSLATED NODE: IGNORE ME
* Working with lyrics and variables::
@end menu
@node Working with lyrics and variables
-@unnumberedsubsubsec Working with lyrics and variables
+@subsubsection Working with lyrics and variables
UNTRANSLATED NODE: IGNORE ME
* Lyrics independent of notes::
@end menu
@node Lyrics to multiple notes of a melisma
-@unnumberedsubsubsec Lyrics to multiple notes of a melisma
+@subsubsection Lyrics to multiple notes of a melisma
UNTRANSLATED NODE: IGNORE ME
@node Divisi lyrics
-@unnumberedsubsubsec Divisi lyrics
+@subsubsection Divisi lyrics
UNTRANSLATED NODE: IGNORE ME
@node Switching the melody associated with a lyrics line
-@unnumberedsubsubsec Switching the melody associated with a lyrics line
+@subsubsection Switching the melody associated with a lyrics line
UNTRANSLATED NODE: IGNORE ME
@node Lyrics independent of notes
-@unnumberedsubsubsec Lyrics independent of notes
+@subsubsection Lyrics independent of notes
UNTRANSLATED NODE: IGNORE ME
* Spacing lyrics::
@end menu
@node Spacing lyrics
-@unnumberedsubsubsec Spacing lyrics
+@subsubsection Spacing lyrics
UNTRANSLATED NODE: IGNORE ME
* Printing stanzas at the end in multiple columns ::
@end menu
@node Adding stanza numbers
-@unnumberedsubsubsec Adding stanza numbers
+@subsubsection Adding stanza numbers
UNTRANSLATED NODE: IGNORE ME
@node Adding dynamics marks
-@unnumberedsubsubsec Adding dynamics marks
+@subsubsection Adding dynamics marks
UNTRANSLATED NODE: IGNORE ME
@node Adding singer names
-@unnumberedsubsubsec Adding singer names
+@subsubsection Adding singer names
UNTRANSLATED NODE: IGNORE ME
@node Printing stanzas at the end
-@unnumberedsubsubsec Printing stanzas at the end
+@subsubsection Printing stanzas at the end
UNTRANSLATED NODE: IGNORE ME
@node Printing stanzas at the end in multiple columns
-@unnumberedsubsubsec Printing stanzas at the end in multiple columns
+@subsubsection Printing stanzas at the end in multiple columns
UNTRANSLATED NODE: IGNORE ME
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of lilypond-program.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
+@c This file is part of lilypond.tely
+@ignore
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@node Editorial annotations
+@section Editorial annotations
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu
+* Inside the staff::
+* Outside the staff::
+@end menu
+@node Inside the staff
+@subsection Inside the staff
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu
+* Selecting notation font size::
+* Fingering instructions::
+* Hidden notes::
+* Coloring objects::
+* Parentheses::
+* Stems::
+@end menu
+@node Selecting notation font size
+@subsubsection Selecting notation font size
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Fingering instructions
+@subsubsection Fingering instructions
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Hidden notes
+@subsubsection Hidden notes
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Coloring objects
+@subsubsection Coloring objects
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Parentheses
+@subsubsection Parentheses
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Stems
+@subsubsection Stems
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Outside the staff
+@subsection Outside the staff
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu
+* Balloon help::
+* Grid lines::
+* Blank music sheet::
+* Analysis brackets::
+@end menu
+@node Balloon help
+@subsubsection Balloon help
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Grid lines
+@subsubsection Grid lines
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Blank music sheet
+@subsubsection Blank music sheet
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Analysis brackets
+@subsubsection Analysis brackets
+
+UNTRANSLATED NODE: IGNORE ME
+
+
+-- SKELETON FILE --
+When you actually translate this file, please remove these lines as
+well as all `UNTRANSLATED NODE: IGNORE ME' lines.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of lilypond-learning.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@menu
* Introduction to the LilyPond file structure::
* Score is a (single) compound musical expression::
-* Nesting Music Expressions::
+* Nesting music expressions::
* On the un-nestedness of brackets and ties::
@end menu
@node Introduction to the LilyPond file structure
UNTRANSLATED NODE: IGNORE ME
-@node Nesting Music Expressions
-@subsection Nesting Music Expressions
+@node Nesting music expressions
+@subsection Nesting music expressions
UNTRANSLATED NODE: IGNORE ME
UNTRANSLATED NODE: IGNORE ME
+@subsubsection Changing a single context
@
+@subsubsection Changing all contexts of the same type
@node Extending the templates
@section Extending the templates
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
UNTRANSLATED NODE: IGNORE ME
@menu
-* Up and down::
+* Controlling direction::
* Distances and measurements MAYBE MOVE::
@end menu
-@node Up and down
-@subsection Up and down
+@node Controlling direction
+@subsection Controlling direction
UNTRANSLATED NODE: IGNORE ME
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Francisco Vila
+
@ifclear INSTALL
@node Install
@chapter Install
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of lilypond-program.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
UNTRANSLATED NODE: IGNORE ME
+@subheading Format-specific instructions
+@subsubheading @LaTeX{}
+@subsubheading Texinfo
+@subheading Command line options
@node Filename extensions
@section Filename extensions
@settitle GNU LilyPond Learning Manual
@documentencoding UTF-8
@documentlanguage es
-@c TRANSLATE ME
@iftex
@afourpaper
@omflanguage Spanish
@end ignore
+@c Translators: Francisco Vila
@ifhtml
Este documento también está disponible como
@omflanguage English
@end ignore
+@c Translators: Francisco Vila
@ifhtml
Este documento está disponible también en formato
@omflanguage Spanish
@end ignore
+@c Translators: Francisco Vila
@ifhtml
Este documento también está disponible como
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of lilypond-program.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of lilypond-learning.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
* Breaks::
* Vertical spacing::
* Horizontal spacing::
+* Page layout MOVED FROM LM::
@end menu
@node Paper and pages
@section Paper and pages
UNTRANSLATED NODE: IGNORE ME
+@node Page layout MOVED FROM LM
+@section Page layout MOVED FROM LM
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu
+* Introduction to layout::
+* Global sizes::
+* Line breaks::
+* Page breaks::
+* Fitting music onto fewer pages::
+@end menu
+@node Introduction to layout
+@subsection Introduction to layout
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Global sizes
+@subsection Global sizes
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Line breaks
+@subsection Line breaks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Page breaks
+@subsection Page breaks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Fitting music onto fewer pages
+@subsection Fitting music onto fewer pages
+
+UNTRANSLATED NODE: IGNORE ME
+
-- SKELETON FILE --
When you actually translate this file, please remove these lines as
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
@node Ancient notation
@section Ancient notation
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
@node Bagpipes
@section Bagpipes
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
+@c Translation checkers: Gilles Thibault
+
@node Changing defaults
@chapter Changing defaults
-
LilyPond est conçu pour engendrer, par défaut, des partitions de la
plus haute qualité. Cependant, on peut parfois avoir à modifier cette
mise en page par défaut. Celle-ci est réglée par tout un ensemble de
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
@c TODO: add tablature.
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
-@node Chords Blah
-@section Chords Blah
+@node Chords
+@section Chords
Intro text.
@menu
-* TODO chords fix::
+* Chords sections::
@end menu
-@node TODO chords fix
-@subsection TODO chords fix
+@node Chords sections
+@subsection Chords sections
+@c awkard bit of English docs (not reproduced here):
+@c "A lead sheet" is shovved in here from the tutorial,
+@c before "Introducing chord names".
+@menu
+* Introducing chord names::
+* Chords mode::
+* Printing chord names::
+@end menu
@c awkward name; awkward section name.
@ignore
Translation of GIT committish: 27af34a245b02a6b89c9af3becefcfe676b2e19d
-
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Jean-Charles Malahieude
@node Converting from other formats
@chapter Converting from other formats
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+ Translation of GIT committish: f7420240e4ce1fe2217646482a47d00f566af52c
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+@c Translators: Jean-Charles Malahieude
+
+@node Educational use
+@section Educational use
+
+@menu
+* Note heads::
+* Inside the staff::
+* Outside the staff::
+@end menu
+
+
+@node Note heads
+@subsection Note heads
+
+@menu
+* Easy notation note heads::
+* Shape note heads::
+* Improvisation::
+* Special noteheads::
+@end menu
+
+@node Easy Notation note heads
+@unnumberedsubsubsec Easy Notation note heads
+
+@cindex tête de note, apprentissage
+@cindex notation facile
+@cindex Hal Leonard
+
+Les notes @q{easy play} comportent le nom de la note à l'intérieur de
+la tête. On l'utilise dans des partitions pour débutants.
+
+@lilypond[quote,ragged-right,verbatim,fragment,staffsize=26]
+ \easyHeadsOn
+ c'2 e'4 f' | g'1
+@end lilypond
+
+La commande @code{\easyHeadsOn} remplace tous les réglages de l'objet
+@internalsref{NoteHead}. L'impression doit être de plus grande
+taille, afin que les lettres soient lisibles. Voir à ce propos
+@ref{Setting the staff size}.
+
+@refcommands
+
+@funindex \easyHeadsOn
+@code{\easyHeadsOn}
+
+
+@node Shape note heads
+@unnumberedsubsubsec Shape note heads
+
+@cindex tête de note, allure
+
+En notation profilée, le profil d'une tête de note correspond à la
+fonction harmonique de cette note dans la gamme. Ce style de notation
+était très en vogue dans les recueils de chansons américains du XIXe
+siècle.
+
+Des notes profilées sont produites après activation de
+@code{\aikenHeads} ou @code{\sacredHarpHeads}, selon le style.
+
+@lilypond[verbatim,relative=1,fragment]
+ \aikenHeads
+ c8 d4 e8 a2 g1
+ \sacredHarpHeads
+ c8 d4. e8 a2 g1
+@end lilypond
+
+Les profils sont déterminés par la hauteur dans la gamme, le premier
+degré étant défini par la commande @code{\key}.
+
+@funindex \key
+@funindex shapeNoteStyles
+@funindex \aikenHeads
+@funindex \sacredHarpHeads
+
+Les notes profilées sont mises en œuvre par la propriété
+@code{shapeNoteStyles}, dont les valeurs sont constituées d'une liste
+de symboles. Le n-ième élément indique le style à utiliser pour le
+n-ième degré de la gamme. Toutes les combinaisons sont possibles :
+
+@lilypond[verbatim,relative=1,fragment]
+ \set shapeNoteStyles = ##(cross triangle fa #f mensural xcircle diamond)
+ c8 d4. e8 a2 g1
+@end lilypond
+
+
+@node Improvisation
+@unnumberedsubsubsec Improvisation
+
+L'improvisation peut quelquefois s'indiquer à l'aide de notes de forme
+allongée (@emph{slash}). Ces têtes de notes sont créées par
+l'adjonction du graveur @internalsref{Pitch_squash_engraver} au
+contexte @internalsref{Voice}, de telle sorte que la commande
+
+@example
+\set squashedPosition = #0
+\override NoteHead #'style = #'slash
+@end example
+
+@noindent
+active les notes penchées.
+
+Vous disposez des raccourcis @code{\improvisationOn} et son corollaire
+@code{\improvisationOff} pour cette séquence, comme l'illustre
+l'exemple ci dessous.
+
+@lilypond[verbatim,ragged-right,quote]
+\new Voice \with {
+ \consists Pitch_squash_engraver
+} \transpose c c' {
+ e8 e g a a16(bes)(a8) g \improvisationOn
+ e8
+ ~e2~e8 f4 fis8
+ ~fis2 \improvisationOff a16(bes) a8 g e
+}
+@end lilypond
+
+
+@node Special noteheads
+@unnumberedsubsubsec Special noteheads
+
+@cindex têtes de note, spéciales
+
+Certains instruments utilisent des têtes de note différentes à des
+fins spécifiques --- des croix pour le @q{parlato} des chanteurs ou les
+notes étouffées des guitares ; des losanges pour les harmoniques des
+cordes. Il existe un raccourci (@code{\harmonic}) pour les notes en
+losange ; pour les autres styles de tête, il vous faudra jouer avec la
+propriété @code{NoteHead}.
+
+@lilypond[ragged-right,relative=1,fragment,verbatim,quote]
+c4 d
+\override NoteHead #'style = #'cross
+e f
+\revert NoteHead #'style
+e d <c f\harmonic> <d a'\harmonic>
+@end lilypond
+
+@noindent
+Pour une liste exhaustive des styles de tête de note, consultez
+@ref{Note head styles}.
+
+
+@seealso
+
+Référence du programme : @internalsref{NoteHead}.
+
+
+@node Inside the staff
+@subsection Inside the staff
+
+
+@menu
+* Selecting notation font size::
+* Fingering instructions::
+* Hidden notes::
+* Coloring objects::
+* Parentheses::
+* Ambitus::
+* Stems::
+@end menu
+
+@node Selecting notation font size
+@unnumberedsubsubsec Selecting notation font size
+
+Le plus sûr moyen de régler la taille de la police, quelque soit le
+contexte, consiste à définir la propriété @code{fontSize}.
+
+@lilypond[quote,fragment,relative=1,verbatim]
+c8
+\set fontSize = #-4
+c f
+\set fontSize = #3
+g
+@end lilypond
+
+@noindent
+Ceci ne modifiera en rien la taille des différents symboles tels que
+ligatures ou liaisons.
+
+En interne, la propriété @code{fontSize} d'un contexte aura pour effet
+de définir la propriété @code{font-size} pour tous les objets de
+rendu. La valeur de @code{font-size} est un entier représentant la
+taille proportionnellement à la hauteur standard de la portée en
+cours. Chaque incrément correspond à une augmentation d'environ
+12@tie{}% de la taille de la police. Un pas de six aboutit exactement
+au doublement de la taille. La fonction Scheme @code{magstep}
+convertit le nombre affecté à @code{font-size} en facteur d'échelle.
+Vous pouvez aussi définir directement la propriété @code{font-size} de
+manière à n'affecter seulement que certains objets de rendu.
+
+@lilypond[quote,fragment,relative=1,verbatim]
+c8
+\override NoteHead #'font-size = #-4
+c f
+\override NoteHead #'font-size = #3
+g
+@end lilypond
+
+Pour changer la taille des symboles musicaux (police Feta), LilyPond met
+à l'échelle la fonte dont la taille est la plus proche de la taille voulue ---
+cf. @ref{Setting the staff size}. La taille standard, pour laquelle
+@code{font-size} vaut 0, dépend de la hauteur de la portée. À une
+portée de 20 points correspond une police de 10 points.
+
+La propriété @code{font-size} ne peut intervenir que pour les objets
+qui utilisent des polices, autrement dit ceux qui disposent de
+l'interface de rendu @internalsref{font-interface}.
+
+@refcommands
+
+Les commandes suivantes définissent @code{fontSize} pour la voix en
+cours :
+
+@funindex \tiny
+@code{\tiny},
+@funindex \small
+@code{\small},
+@funindex \normalsize
+@code{\normalsize}.
+
+
+
+@node Fingering instructions
+@unnumberedsubsubsec Fingering instructions
+
+@cindex doigté
+@cindex substitution de doigt
+
+
+Les doigtés peuvent être indiqués comme suit :
+@example
+@var{note}-@var{chiffre_du_doigt}
+@end example
+Pour les substitutions de doigts, on a recours à une indication
+textuelle (commande @code{\markup}) de doigté
+(commande @code{\finger}).
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
+c4-1 c-2 c-3 c-4
+c^\markup { \finger "2 - 3" }
+@end lilypond
+
+
+La commande @code{\thumb} peut être utilisée pour indiquer, par exemple
+dans une partition de violoncelle, si une note doit être jouée avec le
+pouce (@q{thumb} en anglais).
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
+<a_\thumb a'-3>8 <b_\thumb b'-3>
+@end lilypond
+
+
+Les doigtés des accords peuvent être saisis note par note,
+en les indiquant après chaque hauteur de note.
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
+< c-1 e-2 g-3 b-5 >4
+@end lilypond
+
+
+@commonprop
+
+On peut contrôler précisément les doigtés des accords en réglant
+la propriété @code{fingeringOrientations}.
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
+\set fingeringOrientations = #'(left down)
+<c-1 es-2 g-4 bes-5 > 4
+\set fingeringOrientations = #'(up right down)
+<c-1 es-2 g-4 bes-5 > 4
+@end lilypond
+
+
+Cette propriété permet également, dans de la musique monophonique,
+d'indiquer des doigtés très proches des têtes de notes.
+
+@lilypond[verbatim,ragged-right,quote,fragment]
+\set fingeringOrientations = #'(right)
+<es'-2>4
+@end lilypond
+
+
+@seealso
+
+Référence du programme : @internalsref{Fingering}.
+
+D'autres exemples : @lsr{expressive,fingering-chords.ly}.
+
+
+@node Hidden notes
+@unnumberedsubsubsec Hidden notes
+
+@cindex Masquées, notes
+@cindex Invisibles, notes
+@cindex Transparentes, notes
+
+@funindex \hideNotes
+@funindex \unHideNotes
+Les notes masquées --- ou invisibles ou encore transparentes --- sont
+utiles dans le cadre d'exercices de théorie ou de composition.
+
+@lilypond[quote,ragged-right,verbatim,relative=2,fragment]
+c4 d4
+\hideNotes
+e4 f4
+\unHideNotes
+g4 a
+@end lilypond
+
+
+@node Coloring objects
+@unnumberedsubsubsec Coloring objects
+
+Des objets peuvent être colorisés individuellement. Une listes des
+noms des couleurs disponibles se trouvent à l'annexe @ref{List of colors}.
+
+@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
+\override NoteHead #'color = #red
+c4 c
+\override NoteHead #'color = #(x11-color 'LimeGreen)
+d
+\override Stem #'color = #blue
+e
+@end lilypond
+
+L'intégralité de la palette des couleurs définies pour X11 est
+accessible par la fonction Scheme x11-color. Cette fonction prend
+en argument une expression symbolique
+
+@example
+\override Beam #'color = #(x11-color 'MediumTurquoise)
+@end example
+
+ou une chaîne de caractères
+
+@example
+\override Beam #'color = #(x11-color "MediumTurquoise")
+@end example
+
+La première formulation est à la fois plus rapide à écrire et aussi
+plus efficace. Néanmoins, la deuxième forme permet d'accéder aux noms
+composés des couleurs de X11.
+
+@example
+\override Beam #'color = #(x11-color "medium turquoise")
+@end example
+
+Lorsque la fonction x11-color ne trouve pas le paramètre fourni, elle
+revient à la couleur par défaut, le noir. Le problème ressort de
+façon évidente au vu de la partition finale.
+
+L'exemple suivant illustre l'utilisation de la fonction
+@code{x11-color}. Notez que, après avoir été définie à (x11-color
+'Boggle), la couleur des hampes repasse au noir.
+
+@lilypond[quote,ragged-right,verbatim]
+{
+ \override Staff.StaffSymbol #'color = #(x11-color 'SlateBlue2)
+ \set Staff.instrumentName = \markup {
+ \with-color #(x11-color 'navy) "Clarinet"
+ }
+ \time 2/4
+ gis''8 a''
+ \override Beam #'color = #(x11-color "medium turquoise")
+ gis'' a''
+ \override NoteHead #'color = #(x11-color "LimeGreen")
+ gis'' a''
+ \override Stem #'color = #(x11-color 'Boggle)
+ gis'' a''
+}
+@end lilypond
+
+
+@seealso
+
+Annexes : @ref{List of colors}.
+
+
+@refbugs
+Les couleurs de X11 ne sont pas toutes perceptibles dans un navigateur
+internet. Aussi nous vous recommandons, dans le cadre d'une
+présentation multimedia, d'utiliser des couleurs de base.
+
+Une couleur x11 n'aura pas forcément le même rendu qu'une couleur
+normale ayant un nom similaire.
+
+Vous ne pouvez pas coloriser des notes à l'intérieur d'un accord avec
+@code{\override}. si besoin est, utilisez @code{\tweak}.
+Pour plus de détails, consultez @ref{Objects connected to the input}.
+
+
+@node Parentheses
+@unnumberedsubsubsec Parentheses
+
+@cindex fantômes, notes
+@cindex notes fantômes
+@cindex parenthèses, notes entre
+
+Des objets peuvent être mis entre parenthèses en saisissant
+@code{\parenthesize} juste avant l'événement musical.
+
+@lilypond[relative=2,fragment,verbatim,ragged-right]
+<
+ c
+ \parenthesize d
+ g
+>4-\parenthesize -.
+@end lilypond
+
+Ceci n'est opérationnel que dans le cadre d'un accord, qui peut ne
+comprendre qu'une seule note.
+
+@example
+< \parenthesize NOTE>
+@end example
+
+
+@node Ambitus
+@unnumberedsubsubsec Ambitus
+@cindex ambitus
+
+L'@emph{ambitus} est l'amplitude des hauteurs d'une voix donnée dans une
+partition. Ce terme peut aussi désigner la tessiture qu'un instrument
+est capable d'atteindre. Souvent, cet ambitus est imprimé au début des
+partitions vocales, afin que les exécutants puissent voir au premier
+coup d'oeil s'ils sont en mesure de tenir la partie en question.
+
+Pour exprimer l'ambitus d'une pièce, on indique avant la clé deux notes
+représentant la hauteur la plus basse et la plus haute. Pour imprimer
+cet ambitus, il faut ajouter le graveur @internalsref{Ambitus_engraver}
+au contexte @internalsref{Voice}. Ainsi,
+
+@example
+\layout @{
+ \context @{
+ \Voice
+ \consists Ambitus_engraver
+ @}
+@}
+@end example
+
+@noindent
+donne pour résultat
+
+@lilypond[quote,ragged-right]
+\layout {
+ \context {
+ \Staff
+ \consists Ambitus_engraver
+ }
+}
+
+\relative \new Staff {
+ as'' c e2 cis,2
+}
+@end lilypond
+
+Si plusieurs voix se trouvent sur une même portée, on peut attribuer le
+graveur @internalsref{Ambitus_engraver} au contexte @internalsref{Staff}
+plutôt qu'au contexte @internalsref{Voice} ; l'ambitus affiché sera
+alors celui de toutes les voix cumulées, non d'une seule des voix
+actives.
+
+@lilypond[verbatim,ragged-right,quote]
+\new Staff \with {
+ \consists "Ambitus_engraver"
+}
+<<
+ \new Voice \with {
+ \remove "Ambitus_engraver"
+ } \relative c'' {
+ \override Ambitus #'X-offset = #-1.0
+ \voiceOne
+ c4 a d e f2
+ }
+ \new Voice \with {
+ \remove "Ambitus_engraver"
+ } \relative c' {
+ \voiceTwo
+ es4 f g as b2
+ }
+>>
+@end lilypond
+
+@noindent
+Cet exemple met en œuvre une fonctionnalité avancée :
+
+@example
+\override Ambitus #'X-offset = #-1.0
+@end example
+
+@noindent
+Ce réglage déplace l'ambitus vers la gauche. Le même résultat aurait pu
+être obtenu avec @code{extra-offset}, mais alors le système de mise en
+forme n'aurait pas attribué d'espace supplémentaire pour l'objet
+déplacé.
+
+@seealso
+
+Référence du programme : @internalsref{Ambitus},
+@internalsref{AmbitusLine}, @internalsref{AmbitusNoteHead},
+@internalsref{AmbitusAccidental}.
+
+Exemples :
+@lsr{vocal,ambitus@/.ly}.
+
+@refbugs
+
+LilyPond ne gère pas les collisions entre plusieurs ambitus présents sur
+une même portée.
+
+
+@node Stems
+@unnumberedsubsubsec Stems
+
+Dès qu'une note est rencontrée, un objet @internalsref{Stem} se crée
+automatiquement. Pour les rondes et les silences, ils sont aussi
+créés, mais en mode invisible.
+
+@refcommands
+
+@funindex \stemUp
+@code{\stemUp},
+@funindex \stemDown
+@code{\stemDown},
+@funindex \stemNeutral
+@code{\stemNeutral}.
+
+
+@commonprop
+
+Pour changer la direction des hampes au milieu de la portée, utilisez
+
+@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
+a4 b c b
+\override Stem #'neutral-direction = #up
+a4 b c b
+\override Stem #'neutral-direction = #down
+a4 b c b
+@end lilypond
+
+
+@node Outside the staff
+@subsection Outside the staff
+
+
+@menu
+* Balloon help::
+* Grid lines::
+* Blank music sheet::
+@end menu
+
+@node Balloon help
+@subsection Balloon help
+
+Vous pouvez marquer et nommer des éléments de notation à l'aide de
+bulles. L'objectif premier de cette fonctionnalité est d'expliquer la
+notation.
+
+En voici un exemple :
+@c KEEP LY
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+\new Voice \with { \consists "Balloon_engraver" }
+{
+ \balloonGrobText #'Stem #'(3 . 4) \markup { "Je suis une hampe" }
+ <c-\balloonText #'(-2 . -2) \markup { Hello } >8
+}
+@end lilypond
+
+@noindent
+Vous disposez de deux fonctions musicales, @code{balloonText} et
+@code{balloonGrobText}. @code{balloonGrobText} prend en argument
+l'objet graphique à agrémenter, alors que @code{balloonText} s'utilise
+comme une simple articulation. Les autres arguments sont le décalage
+et le texte de la bulle.
+
+@cindex bulles
+@cindex notation, expliquer
+
+@seealso
+
+Référence du programme : @internalsref{text-balloon-interface}.
+
+
+@node Grid lines
+@subsection Grid lines
+
+Vous pouvez tracer des lignes entre les portées, synchronisées avec
+les notes.
+@c KEEP LY
+@lilypond[ragged-right,quote,verbatim]
+\layout {
+ \context {
+ \Staff
+ \consists "Grid_point_engraver" %% active les guides
+ gridInterval = #(ly:make-moment 1 4)
+ }
+}
+
+\new Score \with {
+ \consists "Grid_line_span_engraver"
+ %% centre les lignes guides horizontalement sous les notes
+ \override NoteColumn #'X-offset = #-0.5
+}
+
+\new ChoirStaff <<
+ \new Staff {
+ \stemUp
+ \relative {
+ c'4. d8 e8 f g4
+ }
+ }
+ \new Staff {
+ %% centre les lignes guides verticalement
+ \override Score.GridLine #'extra-offset = #'( 0.0 . 1.0 )
+ \stemDown
+ \clef bass
+ \relative c {
+ c4 g' f e
+ }
+ }
+>>
+@end lilypond
+
+Exemples : @lsrdir{education}
+
+
+@node Blank music sheet
+@subsection Blank music sheet
+
+@cindex Papier musique
+@cindex Portées, feuille blanche
+
+Une feuille de papier musique s'obtient en utilisant des notes
+invisibles, et en invalidant le @code{Bar_number_engraver}.
+
+@c KEEP LY
+@lilypond[quote,verbatim]
+\layout{ indent = #0 }
+emptymusic = {
+ \repeat unfold 2 % À modifier pour plus de lignes.
+ { s1\break }
+ \bar "|."
+}
+\new Score \with {
+ \override TimeSignature #'transparent = ##t
+% décommenter la ligne suivante selon besoin
+% \override Clef #'transparent = ##t
+ defaultBarType = #""
+ \remove Bar_number_engraver
+} <<
+
+% à adapter selon les portées désirées
+ \new Staff \emptymusic
+ \new TabStaff \emptymusic
+>>
+@end lilypond
+
+
+++ /dev/null
-@c -*- coding: utf-8; mode: texinfo; -*-
-@ignore
- Translation of GIT committish: f7420240e4ce1fe2217646482a47d00f566af52c
-
- When revising a translation, copy the HEAD committish of the
- version that you are working on. See TRANSLATION for details.
-@end ignore
-
-@node Educational use
-@section Educational use
-
-@menu
-* Note heads::
-* Inside the staff::
-* Outside the staff::
-@end menu
-
-
-@node Note heads
-@subsection Note heads
-
-@menu
-* Easy notation note heads::
-* Shape note heads::
-* Improvisation::
-* Special noteheads::
-@end menu
-
-@node Easy Notation note heads
-@unnumberedsubsubsec Easy Notation note heads
-
-@cindex tête de note, apprentissage
-@cindex notation facile
-@cindex Hal Leonard
-
-Les notes @q{easy play} comportent le nom de la note à l'intérieur de
-la tête. On l'utilise dans des partitions pour débutants.
-
-@lilypond[quote,ragged-right,verbatim,fragment,staffsize=26]
- \easyHeadsOn
- c'2 e'4 f' | g'1
-@end lilypond
-
-La commande @code{\easyHeadsOn} remplace tous les réglages de l'objet
-@internalsref{NoteHead}. L'impression doit être de plus grande
-taille, afin que les lettres soient lisibles. Voir à ce propos
-@ref{Setting the staff size}.
-
-@refcommands
-
-@funindex \easyHeadsOn
-@code{\easyHeadsOn}
-
-
-@node Shape note heads
-@unnumberedsubsubsec Shape note heads
-
-@cindex tête de note, allure
-
-En notation profilée, le profil d'une tête de note correspond à la
-fonction harmonique de cette note dans la gamme. Ce style de notation
-était très en vogue dans les recueils de chansons américains du XIXe
-siècle.
-
-Des notes profilées sont produites après activation de
-@code{\aikenHeads} ou @code{\sacredHarpHeads}, selon le style.
-
-@lilypond[verbatim,relative=1,fragment]
- \aikenHeads
- c8 d4 e8 a2 g1
- \sacredHarpHeads
- c8 d4. e8 a2 g1
-@end lilypond
-
-Les profils sont déterminés par la hauteur dans la gamme, le premier
-degré étant défini par la commande @code{\key}.
-
-@funindex \key
-@funindex shapeNoteStyles
-@funindex \aikenHeads
-@funindex \sacredHarpHeads
-
-Les notes profilées sont mises en œuvre par la propriété
-@code{shapeNoteStyles}, dont les valeurs sont constituées d'une liste
-de symboles. Le n-ième élément indique le style à utiliser pour le
-n-ième degré de la gamme. Toutes les combinaisons sont possibles :
-
-@lilypond[verbatim,relative=1,fragment]
- \set shapeNoteStyles = ##(cross triangle fa #f mensural xcircle diamond)
- c8 d4. e8 a2 g1
-@end lilypond
-
-
-@node Improvisation
-@unnumberedsubsubsec Improvisation
-
-L'improvisation peut quelquefois s'indiquer à l'aide de notes de forme
-allongée (@emph{slash}). Ces têtes de notes sont créées par
-l'adjonction du graveur @internalsref{Pitch_squash_engraver} au
-contexte @internalsref{Voice}, de telle sorte que la commande
-
-@example
-\set squashedPosition = #0
-\override NoteHead #'style = #'slash
-@end example
-
-@noindent
-active les notes penchées.
-
-Vous disposez des raccourcis @code{\improvisationOn} et son corollaire
-@code{\improvisationOff} pour cette séquence, comme l'illustre
-l'exemple ci dessous.
-
-@lilypond[verbatim,ragged-right,quote]
-\new Voice \with {
- \consists Pitch_squash_engraver
-} \transpose c c' {
- e8 e g a a16(bes)(a8) g \improvisationOn
- e8
- ~e2~e8 f4 fis8
- ~fis2 \improvisationOff a16(bes) a8 g e
-}
-@end lilypond
-
-
-@node Special noteheads
-@unnumberedsubsubsec Special noteheads
-
-@cindex têtes de note, spéciales
-
-Certains instruments utilisent des têtes de note différentes à des
-fins spécifiques --- des croix pour le @q{parlato} des chanteurs ou les
-notes étouffées des guitares ; des losanges pour les harmoniques des
-cordes. Il existe un raccourci (@code{\harmonic}) pour les notes en
-losange ; pour les autres styles de tête, il vous faudra jouer avec la
-propriété @code{NoteHead}.
-
-@lilypond[ragged-right,relative=1,fragment,verbatim,quote]
-c4 d
-\override NoteHead #'style = #'cross
-e f
-\revert NoteHead #'style
-e d <c f\harmonic> <d a'\harmonic>
-@end lilypond
-
-@noindent
-Pour une liste exhaustive des styles de tête de note, consultez
-@ref{Note head styles}.
-
-
-@seealso
-
-Référence du programme : @internalsref{NoteHead}.
-
-
-@node Inside the staff
-@subsection Inside the staff
-
-
-@menu
-* Selecting notation font size::
-* Fingering instructions::
-* Hidden notes::
-* Coloring objects::
-* Parentheses::
-* Ambitus::
-* Stems::
-@end menu
-
-@node Selecting notation font size
-@unnumberedsubsubsec Selecting notation font size
-
-Le plus sûr moyen de régler la taille de la police, quelque soit le
-contexte, consiste à définir la propriété @code{fontSize}.
-
-@lilypond[quote,fragment,relative=1,verbatim]
-c8
-\set fontSize = #-4
-c f
-\set fontSize = #3
-g
-@end lilypond
-
-@noindent
-Ceci ne modifiera en rien la taille des différents symboles tels que
-ligatures ou liaisons.
-
-En interne, la propriété @code{fontSize} d'un contexte aura pour effet
-de définir la propriété @code{font-size} pour tous les objets de
-rendu. La valeur de @code{font-size} est un entier représentant la
-taille proportionnellement à la hauteur standard de la portée en
-cours. Chaque incrément correspond à une augmentation d'environ
-12@tie{}% de la taille de la police. Un pas de six aboutit exactement
-au doublement de la taille. La fonction Scheme @code{magstep}
-convertit le nombre affecté à @code{font-size} en facteur d'échelle.
-Vous pouvez aussi définir directement la propriété @code{font-size} de
-manière à n'affecter seulement que certains objets de rendu.
-
-@lilypond[quote,fragment,relative=1,verbatim]
-c8
-\override NoteHead #'font-size = #-4
-c f
-\override NoteHead #'font-size = #3
-g
-@end lilypond
-
-Pour changer la taille des symboles musicaux (police Feta), LilyPond met
-à l'échelle la fonte dont la taille est la plus proche de la taille voulue ---
-cf. @ref{Setting the staff size}. La taille standard, pour laquelle
-@code{font-size} vaut 0, dépend de la hauteur de la portée. À une
-portée de 20 points correspond une police de 10 points.
-
-La propriété @code{font-size} ne peut intervenir que pour les objets
-qui utilisent des polices, autrement dit ceux qui disposent de
-l'interface de rendu @internalsref{font-interface}.
-
-@refcommands
-
-Les commandes suivantes définissent @code{fontSize} pour la voix en
-cours :
-
-@funindex \tiny
-@code{\tiny},
-@funindex \small
-@code{\small},
-@funindex \normalsize
-@code{\normalsize}.
-
-
-
-@node Fingering instructions
-@unnumberedsubsubsec Fingering instructions
-
-@cindex doigté
-@cindex substitution de doigt
-
-
-Les doigtés peuvent être indiqués comme suit :
-@example
-@var{note}-@var{chiffre_du_doigt}
-@end example
-Pour les substitutions de doigts, on a recours à une indication
-textuelle (commande @code{\markup}) de doigté
-(commande @code{\finger}).
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
-c4-1 c-2 c-3 c-4
-c^\markup { \finger "2 - 3" }
-@end lilypond
-
-
-La commande @code{\thumb} peut être utilisée pour indiquer, par exemple
-dans une partition de violoncelle, si une note doit être jouée avec le
-pouce (@q{thumb} en anglais).
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-<a_\thumb a'-3>8 <b_\thumb b'-3>
-@end lilypond
-
-
-Les doigtés des accords peuvent être saisis note par note,
-en les indiquant après chaque hauteur de note.
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-< c-1 e-2 g-3 b-5 >4
-@end lilypond
-
-
-@commonprop
-
-On peut contrôler précisément les doigtés des accords en réglant
-la propriété @code{fingeringOrientations}.
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
-\set fingeringOrientations = #'(left down)
-<c-1 es-2 g-4 bes-5 > 4
-\set fingeringOrientations = #'(up right down)
-<c-1 es-2 g-4 bes-5 > 4
-@end lilypond
-
-
-Cette propriété permet également, dans de la musique monophonique,
-d'indiquer des doigtés très proches des têtes de notes.
-
-@lilypond[verbatim,ragged-right,quote,fragment]
-\set fingeringOrientations = #'(right)
-<es'-2>4
-@end lilypond
-
-
-@seealso
-
-Référence du programme : @internalsref{Fingering}.
-
-D'autres exemples : @lsr{expressive,fingering-chords.ly}.
-
-
-@node Hidden notes
-@unnumberedsubsubsec Hidden notes
-
-@cindex Masquées, notes
-@cindex Invisibles, notes
-@cindex Transparentes, notes
-
-@funindex \hideNotes
-@funindex \unHideNotes
-Les notes masquées --- ou invisibles ou encore transparentes --- sont
-utiles dans le cadre d'exercices de théorie ou de composition.
-
-@lilypond[quote,ragged-right,verbatim,relative=2,fragment]
-c4 d4
-\hideNotes
-e4 f4
-\unHideNotes
-g4 a
-@end lilypond
-
-
-@node Coloring objects
-@unnumberedsubsubsec Coloring objects
-
-Des objets peuvent être colorisés individuellement. Une listes des
-noms des couleurs disponibles se trouvent à l'annexe @ref{List of colors}.
-
-@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\override NoteHead #'color = #red
-c4 c
-\override NoteHead #'color = #(x11-color 'LimeGreen)
-d
-\override Stem #'color = #blue
-e
-@end lilypond
-
-L'intégralité de la palette des couleurs définies pour X11 est
-accessible par la fonction Scheme x11-color. Cette fonction prend
-en argument une expression symbolique
-
-@example
-\override Beam #'color = #(x11-color 'MediumTurquoise)
-@end example
-
-ou une chaîne de caractères
-
-@example
-\override Beam #'color = #(x11-color "MediumTurquoise")
-@end example
-
-La première formulation est à la fois plus rapide à écrire et aussi
-plus efficace. Néanmoins, la deuxième forme permet d'accéder aux noms
-composés des couleurs de X11.
-
-@example
-\override Beam #'color = #(x11-color "medium turquoise")
-@end example
-
-Lorsque la fonction x11-color ne trouve pas le paramètre fourni, elle
-revient à la couleur par défaut, le noir. Le problème ressort de
-façon évidente au vu de la partition finale.
-
-L'exemple suivant illustre l'utilisation de la fonction
-@code{x11-color}. Notez que, après avoir été définie à (x11-color
-'Boggle), la couleur des hampes repasse au noir.
-
-@lilypond[quote,ragged-right,verbatim]
-{
- \override Staff.StaffSymbol #'color = #(x11-color 'SlateBlue2)
- \set Staff.instrumentName = \markup {
- \with-color #(x11-color 'navy) "Clarinet"
- }
- \time 2/4
- gis''8 a''
- \override Beam #'color = #(x11-color "medium turquoise")
- gis'' a''
- \override NoteHead #'color = #(x11-color "LimeGreen")
- gis'' a''
- \override Stem #'color = #(x11-color 'Boggle)
- gis'' a''
-}
-@end lilypond
-
-
-@seealso
-
-Annexes : @ref{List of colors}.
-
-
-@refbugs
-Les couleurs de X11 ne sont pas toutes perceptibles dans un navigateur
-internet. Aussi nous vous recommandons, dans le cadre d'une
-présentation multimedia, d'utiliser des couleurs de base.
-
-Une couleur x11 n'aura pas forcément le même rendu qu'une couleur
-normale ayant un nom similaire.
-
-Vous ne pouvez pas coloriser des notes à l'intérieur d'un accord avec
-@code{\override}. si besoin est, utilisez @code{\tweak}.
-Pour plus de détails, consultez @ref{Objects connected to the input}.
-
-
-@node Parentheses
-@unnumberedsubsubsec Parentheses
-
-@cindex fantômes, notes
-@cindex notes fantômes
-@cindex parenthèses, notes entre
-
-Des objets peuvent être mis entre parenthèses en saisissant
-@code{\parenthesize} juste avant l'événement musical.
-
-@lilypond[relative=2,fragment,verbatim,ragged-right]
-<
- c
- \parenthesize d
- g
->4-\parenthesize -.
-@end lilypond
-
-Ceci n'est opérationnel que dans le cadre d'un accord, qui peut ne
-comprendre qu'une seule note.
-
-@example
-< \parenthesize NOTE>
-@end example
-
-
-@node Ambitus
-@unnumberedsubsubsec Ambitus
-@cindex ambitus
-
-L'@emph{ambitus} est l'amplitude des hauteurs d'une voix donnée dans une
-partition. Ce terme peut aussi désigner la tessiture qu'un instrument
-est capable d'atteindre. Souvent, cet ambitus est imprimé au début des
-partitions vocales, afin que les exécutants puissent voir au premier
-coup d'oeil s'ils sont en mesure de tenir la partie en question.
-
-Pour exprimer l'ambitus d'une pièce, on indique avant la clé deux notes
-représentant la hauteur la plus basse et la plus haute. Pour imprimer
-cet ambitus, il faut ajouter le graveur @internalsref{Ambitus_engraver}
-au contexte @internalsref{Voice}. Ainsi,
-
-@example
-\layout @{
- \context @{
- \Voice
- \consists Ambitus_engraver
- @}
-@}
-@end example
-
-@noindent
-donne pour résultat
-
-@lilypond[quote,ragged-right]
-\layout {
- \context {
- \Staff
- \consists Ambitus_engraver
- }
-}
-
-\relative \new Staff {
- as'' c e2 cis,2
-}
-@end lilypond
-
-Si plusieurs voix se trouvent sur une même portée, on peut attribuer le
-graveur @internalsref{Ambitus_engraver} au contexte @internalsref{Staff}
-plutôt qu'au contexte @internalsref{Voice} ; l'ambitus affiché sera
-alors celui de toutes les voix cumulées, non d'une seule des voix
-actives.
-
-@lilypond[verbatim,ragged-right,quote]
-\new Staff \with {
- \consists "Ambitus_engraver"
-}
-<<
- \new Voice \with {
- \remove "Ambitus_engraver"
- } \relative c'' {
- \override Ambitus #'X-offset = #-1.0
- \voiceOne
- c4 a d e f2
- }
- \new Voice \with {
- \remove "Ambitus_engraver"
- } \relative c' {
- \voiceTwo
- es4 f g as b2
- }
->>
-@end lilypond
-
-@noindent
-Cet exemple met en œuvre une fonctionnalité avancée :
-
-@example
-\override Ambitus #'X-offset = #-1.0
-@end example
-
-@noindent
-Ce réglage déplace l'ambitus vers la gauche. Le même résultat aurait pu
-être obtenu avec @code{extra-offset}, mais alors le système de mise en
-forme n'aurait pas attribué d'espace supplémentaire pour l'objet
-déplacé.
-
-@seealso
-
-Référence du programme : @internalsref{Ambitus},
-@internalsref{AmbitusLine}, @internalsref{AmbitusNoteHead},
-@internalsref{AmbitusAccidental}.
-
-Exemples :
-@lsr{vocal,ambitus@/.ly}.
-
-@refbugs
-
-LilyPond ne gère pas les collisions entre plusieurs ambitus présents sur
-une même portée.
-
-
-@node Stems
-@unnumberedsubsubsec Stems
-
-Dès qu'une note est rencontrée, un objet @internalsref{Stem} se crée
-automatiquement. Pour les rondes et les silences, ils sont aussi
-créés, mais en mode invisible.
-
-@refcommands
-
-@funindex \stemUp
-@code{\stemUp},
-@funindex \stemDown
-@code{\stemDown},
-@funindex \stemNeutral
-@code{\stemNeutral}.
-
-
-@commonprop
-
-Pour changer la direction des hampes au milieu de la portée, utilisez
-
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
-a4 b c b
-\override Stem #'neutral-direction = #up
-a4 b c b
-\override Stem #'neutral-direction = #down
-a4 b c b
-@end lilypond
-
-
-@node Outside the staff
-@subsection Outside the staff
-
-
-@menu
-* Balloon help::
-* Grid lines::
-* Blank music sheet::
-@end menu
-
-@node Balloon help
-@subsection Balloon help
-
-Vous pouvez marquer et nommer des éléments de notation à l'aide de
-bulles. L'objectif premier de cette fonctionnalité est d'expliquer la
-notation.
-
-En voici un exemple :
-@c KEEP LY
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
-\new Voice \with { \consists "Balloon_engraver" }
-{
- \balloonGrobText #'Stem #'(3 . 4) \markup { "Je suis une hampe" }
- <c-\balloonText #'(-2 . -2) \markup { Hello } >8
-}
-@end lilypond
-
-@noindent
-Vous disposez de deux fonctions musicales, @code{balloonText} et
-@code{balloonGrobText}. @code{balloonGrobText} prend en argument
-l'objet graphique à agrémenter, alors que @code{balloonText} s'utilise
-comme une simple articulation. Les autres arguments sont le décalage
-et le texte de la bulle.
-
-@cindex bulles
-@cindex notation, expliquer
-
-@seealso
-
-Référence du programme : @internalsref{text-balloon-interface}.
-
-
-@node Grid lines
-@subsection Grid lines
-
-Vous pouvez tracer des lignes entre les portées, synchronisées avec
-les notes.
-@c KEEP LY
-@lilypond[ragged-right,quote,verbatim]
-\layout {
- \context {
- \Staff
- \consists "Grid_point_engraver" %% active les guides
- gridInterval = #(ly:make-moment 1 4)
- }
-}
-
-\new Score \with {
- \consists "Grid_line_span_engraver"
- %% centre les lignes guides horizontalement sous les notes
- \override NoteColumn #'X-offset = #-0.5
-}
-
-\new ChoirStaff <<
- \new Staff {
- \stemUp
- \relative {
- c'4. d8 e8 f g4
- }
- }
- \new Staff {
- %% centre les lignes guides verticalement
- \override Score.GridLine #'extra-offset = #'( 0.0 . 1.0 )
- \stemDown
- \clef bass
- \relative c {
- c4 g' f e
- }
- }
->>
-@end lilypond
-
-Exemples : @lsrdir{education}
-
-
-@node Blank music sheet
-@subsection Blank music sheet
-
-@cindex Papier musique
-@cindex Portées, feuille blanche
-
-Une feuille de papier musique s'obtient en utilisant des notes
-invisibles, et en invalidant le @code{Bar_number_engraver}.
-
-@c KEEP LY
-@lilypond[quote,verbatim]
-\layout{ indent = #0 }
-emptymusic = {
- \repeat unfold 2 % À modifier pour plus de lignes.
- { s1\break }
- \bar "|."
-}
-\new Score \with {
- \override TimeSignature #'transparent = ##t
-% décommenter la ligne suivante selon besoin
-% \override Clef #'transparent = ##t
- defaultBarType = #""
- \remove Bar_number_engraver
-} <<
-
-% à adapter selon les portées désirées
- \new Staff \emptymusic
- \new TabStaff \emptymusic
->>
-@end lilypond
-
-
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
+
+
@node Expressive marks
@section Expressive marks
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
@node Fundamental concepts
@chapter Fundamental concepts
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
@node Guitar
@section Guitar
@cindex tablature de guitare
@menu
-* Guitar TODO::
+* Guitar sections::
@end menu
-@node Guitar TODO
-@subsection Guitar TODO
+@node Guitar sections
+@subsection Guitar sections
-@menu
+@menu
* String number indications::
* Tablatures basic::
* Non-guitar tablatures::
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
UNTRANSLATED NODE: IGNORE ME
@menu
-* Up and down::
+* Controlling direction::
* Distances and measurements MAYBE MOVE::
@end menu
-@node Up and down
-@subsection Up and down
+@node Controlling direction
+@subsection Controlling direction
UNTRANSLATED NODE: IGNORE ME
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Ludovic Sardain, John Mandereau
+@c Translation checkers: Jean-Charles Malahieude, Jean-Yves Baudais
+
+
@node Introduction
@chapter Introduction
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@c This file is part of lilypond-program.tely
@ignore
- Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
UNTRANSLATED NODE: IGNORE ME
+@subheading Format-specific instructions
+@subsubheading @LaTeX{}
+@subsubheading Texinfo
+@subheading Command line options
@node Filename extensions
@section Filename extensions
@omflanguage French
@end ignore
+@c Translators: John Mandereau
@ifhtml
Ce document est également disponible au format
@omflanguage French
@end ignore
+@c Translators: John Mandereau
+
@ifhtml
Ce document est également disponible au format
@uref{source/Documentation/user/lilypond-program.fr.pdf,PDF}.
@omflanguage French
@end ignore
+@c Translators: John Mandereau
+
@ifhtml
Ce document est également disponible au format
@uref{source/Documentation/user/lilypond.fr.pdf,PDF}.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Jean-Charles Malahieude
@node Non-musical notation
@chapter Non-musical notation
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Frédéric Chiasson, Jean-Charles Malahieude
@node Notation manual tables
@appendix Notation manual tables
@c -*- coding: utf-8; mode: texinfo; -*-
@ignore
- Translation of GIT committish: 1859194a9f46a8886166cafee0e450b39fc5a963
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@node Musical notation
@chapter Musical notation
-This chapter explains how to create musical notation.
+Ce chapitre explique comment créer la notation musicale standard.
@menu
-* Pitches:: Writing and display the pitches of notes.
-* Rhythms:: Writing and displaying the durations of notes.
-* Expressive marks:: Adding expression to notes.
-* Repeats:: Repeat music.
-* Simultaneous notes:: More than one note at once.
-* Staff notation:: Displaying staves.
-* Educational use:: Special notation to increase legibility.
-* Text:: Adding text to scores.
+* Pitches:: écriture et gravure des hauteurs de note.
+* Rhythms:: écriture et gravure des durées.
+* Expressive marks:: ajout de signes d'exécution et d'interprétation.
+* Repeats:: différents types de répétitions de musique.
+* Simultaneous notes:: polyphonie et accords.
+* Staff notation:: gravure de la portée.
+* Editorial annotations:: annotations d'édition ou à usage pédagogique.
+* Text:: ajout de texte à la partition.
@end menu
@include pitches.itely
@include repeats.itely
@include simultaneous.itely
@include staff.itely
-@include educational.itely
+@include editorial.itely
@include text.itely
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
@node Percussion
@section Percussion
-@menu
-* TODO percussion node fix::
+@menu
+* Percussion sections::
@end menu
-@node TODO percussion node fix
-@subsection TODO percussion node fix
+@node Percussion sections
+@subsection Percussion sections
La notation rythmique sert avant tout aux parties de percussions ou de
batterie, mais on peut aussi s'en servir à des fins pédagogiques, pour
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
@node Piano music
@section Piano music
@menu
-* TODO piano node fix::
+* Piano sections::
@end menu
-@node TODO piano node fix
-@subsection TODO piano node fix
+@node Piano sections
+@subsection Piano sections
Les systèmes de piano comprennent deux portées réunies par une accolade.
Les portées sont largement autonomes, mais il arrive que des voix passent
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Frédéric Chiasson
+@c Translation checkers: Valentin Villenave, Jean-Charles Malahieude
+
@node Pitches
@section Pitches
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
+@c Translation checkers: Ludovic Sardain
+
@node Preface
@unnumbered Preface
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
+
@node Repeats
@section Repeats
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Frédéric Chiasson
+@c Translation checkers: Valentin Villenave, Jean-Charles Malahieude
+
@node Rhythms
@section Rhythms
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@c This file is part of lilypond-program.tely
@ignore
- Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@c This file is part of lilypond-learning.tely
@ignore
- Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@c This file is part of lilypond-program.tely
@ignore
- Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Frédéric Chiasson, Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
+
@node Simultaneous notes
@section Simultaneous notes
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
* Breaks::
* Vertical spacing::
* Horizontal spacing::
+* Page layout MOVED FROM LM::
@end menu
@node Paper and pages
@section Paper and pages
UNTRANSLATED NODE: IGNORE ME
+@node Page layout MOVED FROM LM
+@section Page layout MOVED FROM LM
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu
+* Introduction to layout::
+* Global sizes::
+* Line breaks::
+* Page breaks::
+* Fitting music onto fewer pages::
+@end menu
+@node Introduction to layout
+@subsection Introduction to layout
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Global sizes
+@subsection Global sizes
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Line breaks
+@subsection Line breaks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Page breaks
+@subsection Page breaks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Fitting music onto fewer pages
+@subsection Fitting music onto fewer pages
+
+UNTRANSLATED NODE: IGNORE ME
+
-- SKELETON FILE --
When you actually translate this file, please remove these lines as
@c -*- coding: utf-8; mode: texinfo; -*-
@ignore
- Translation of GIT committish: 1859194a9f46a8886166cafee0e450b39fc5a963
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@node Specialist notation
@chapter Specialist notation
-This chapter explains how to create musical notation.
+Ce chapitre explique comment créer la notation musicale
+spécifique à certains intruments ou certaines époques.
@menu
-* Vocal music:: a
-* Chords Blah:: b
-* Piano music:: c
-* Percussion:: d
-* Guitar:: e
+* Vocal music::
+* Chords::
+* Piano music::
+* Percussion::
+* Guitar::
* Orchestral strings::
* Bagpipes::
-* Ancient notation:: g
+* Ancient notation::
@end menu
@include vocal.itely
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave, Jean-Charles Malahieude
+@c Translation checkers: John Mandereau
+
@node Staff notation
@section Staff notation
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
@node Orchestral strings
@section Orchestral strings
Cette section dispense des informations supplémentaires et utiles Ã
l'écriture pour les cordes frottées.
-@menu
-* Orchestral strings TODO::
+@menu
+* Orchestral strings sections::
@end menu
-@node Orchestral strings TODO
-@subsection Orchestral strings TODO
+@node Orchestral strings sections
+@subsection Orchestral strings sections
-@menu
+@menu
* Artificial harmonics (strings)::
@end menu
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@c This file is part of lilypond-learning.tely
@ignore
- Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+ Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Jean-Charles Malahieude
+@c Translation checkers: Valentin Villenave, John Mandereau
+
@node Text
@section Text
@c Your first LilyPond score in 10 minutes?
+@c Translators: Nicolas Grandclaude, Ludovic Sardain, Gauvain Pocentek
+@c Translation checkers: Jean-Charles Malahieude, Valentin Villenave, John Mandereau
+
+
@node Tutorial
@chapter Tutorial
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave, Nicolas Klutchnikoff
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
+
@node Tweaking output
@chapter Tweaking output
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude
@node Vocal music
@section Vocal music
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Ludovic Sardain
+@c Translation checkers: Jean-Yves Baudais, Valentin Villenave, John Mandereau, Jean-Charles Malahieude
+
@node Working on LilyPond projects
@chapter Working on LilyPond projects
TELY_FILES = $(shell ls $(depth)/Documentation/user/lilypond*.tely)
TELY_FILES += $(foreach l, $(LANGS), $(shell ls $(depth)/Documentation/$(l)/user/lilypond*.tely))
-messages: $(MO_FILES)
+messages: $(outdir)/messages
+
+$(outdir)/messages: $(MO_FILES)
for i in $(CATALOGS); do \
mkdir -p $(doc-localedir)/$$i/LC_MESSAGES; \
cp $(outdir)/$$i.mo $(doc-localedir)/$$i/LC_MESSAGES/$(DOMAIN).mo; \
done
+ touch $@
po-update:
$(PYTHON) $(buildscript-dir)/texi-langutils.py -d $(outdir) -o texi.pot --gettext $(TELY_FILES:%.tely=../%.tely)
--- /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
+#!@PYTHON@
+
+"""
+USAGE: translations-status.py BUILDSCRIPT-DIR LOCALEDIR
+
+ This script must be run from Documentation/
+
+ Reads template files translations.template.html
+and for each LANG in LANGUAGES LANG/translations.template.html
+
+ Writes translations.html.in and for each LANG in LANGUAGES
+translations.LANG.html.in
+"""
+
+import sys
+import re
+import string
+import os
+import gettext
+
+def progress (str):
+ sys.stderr.write (str + '\n')
+
+progress ("translations-status.py")
+
+buildscript_dir = sys.argv[1]
+localedir = sys.argv[2]
+
+_doc = lambda s: s
+
+sys.path.append (buildscript_dir)
+import langdefs
+
+# load gettext messages catalogs
+translation = {}
+for l in langdefs.LANGUAGES:
+ if l.enabled and l.code != 'en':
+ 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 ():
+ print "pipe failed: %(command)s" % locals ()
+ return output
+
+comments_re = re.compile (r'^@ignore\n(.|\n)*?\n@end ignore$|@c .*?$', re.M)
+space_re = re.compile (r'\s+', re.M)
+lilypond_re = re.compile (r'@lilypond({.*?}|(.|\n)*?\n@end lilypond$)', re.M)
+node_re = re.compile ('^@node .*?$', re.M)
+title_re = re.compile ('^@(top|chapter|(?:sub){0,2}section|(?:unnumbered|appendix)(?:(?:sub){0,2}sec)?) (.*?)$', re.M)
+include_re = re.compile ('^@include (.*?)$', re.M)
+
+committish_re = re.compile ('GIT [Cc]ommittish: ([a-f0-9]+)')
+translators_re = re.compile (r'^@c\s+Translators\s*:\s*(.*?)$', re.M | re.I)
+checkers_re = re.compile (r'^@c\s+Translation\s*checkers\s*:\s*(.*?)$', re.M | re.I)
+status_re = re.compile (r'^@c\s+Translation\s*status\s*:\s*(.*?)$', re.M | re.I)
+post_gdp_re = re.compile ('post.GDP', re.I)
+untranslated_node_str = 'UNTRANSLATED NODE: IGNORE ME'
+skeleton_str = '-- SKELETON FILE --'
+
+diff_cmd = 'git diff --no-color %(committish)s HEAD -- %(original)s | cat'
+
+format_table = {
+ 'not translated': {'color':'d0f0f8', 'short':_doc ('no'), 'long':_doc ('not translated')},
+ 'partially translated': {'color':'dfef77', 'short':_doc ('partially (%(p)d %%)'),
+ 'long':_doc ('partially translated (%(p)d %%)')},
+ '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 %%)')},
+ 'pre-GDP':_doc ('pre-GDP'),
+ 'post-GDP':_doc ('post-GDP')
+}
+
+texi_level = {
+# (Unumbered/Numbered/Lettered, level)
+ 'top': ('u', 0),
+ 'unnumbered': ('u', 1),
+ 'unnumberedsec': ('u', 2),
+ 'unnumberedsubsec': ('u', 3),
+ 'chapter': ('n', 1),
+ 'section': ('n', 2),
+ 'subsection': ('n', 3),
+ 'appendix': ('l', 1)
+}
+
+appendix_number_trans = string.maketrans ('@ABCDEFGHIJKLMNOPQRSTUVWXY','ABCDEFGHIJKLMNOPQRSTUVWXYZ')
+
+class SectionNumber (object):
+ def __init__ (self):
+ self.__current_number = [0]
+ self.__type = 'n'
+
+ 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
+
+ # 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':
+ return ''
+ return '.'.join ([str (i) for i in self.__current_number[1:]]) + ' '
+
+ 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
+ if type == 'l':
+ self.__current_number.append ('@')
+ else:
+ self.__current_number.append (0)
+
+ if type == self.__type:
+ self.__increase_last_index ()
+ elif type == 'l' and level == 1:
+ self.__current_number[-1] = 'A'
+ else:
+ self.__current_number[-1] = 1
+ return self.format ()
+
+
+def percentage_color (percent):
+ p = percent / 100.0
+ if p < 0.33:
+ c = [hex (int (3 * p * b + (1 - 3 * p) * a))[2:] for (a, b) in [(0xff, 0xff), (0x5c, 0xa6), (0x5c, 0x4c)]]
+ elif p < 0.67:
+ c = [hex (int ((3 * p - 1) * b + (2 - 3 * p) * a))[2:] for (a, b) in [(0xff, 0xff), (0xa6, 0xff), (0x4c, 0x3d)]]
+ else:
+ 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.
+
+ Take string tely_doc as an argument.
+ Return a list of integers.
+
+ Texinfo comments and @lilypond blocks are not included in word counts.
+ '''
+ tely_doc = comments_re.sub ('', tely_doc)
+ tely_doc = lilypond_re.sub ('', tely_doc)
+ nodes = node_re.split (tely_doc)
+ return [len (space_re.split (n)) for n in nodes]
+
+
+class TelyDocument (object):
+ def __init__ (self, filename):
+ self.filename = filename
+ self.contents = open (filename).read ()
+
+ ## record title and sectionning level of first Texinfo section
+ m = title_re.search (self.contents)
+ if m:
+ self.title = m.group (2)
+ self.level = texi_level [m.group (1)]
+ else:
+ self.title = 'Untitled'
+ self.level = ('u', 1)
+
+ included_files = [os.path.join (os.path.dirname (filename), t) for t in include_re.findall (self.contents)]
+ self.included_files = [p for p in included_files if os.path.exists (p)]
+
+ def print_title (self, section_number):
+ return section_number.increase (self.level) + self.title
+
+
+class TranslatedTelyDocument (TelyDocument):
+ def __init__ (self, filename, masterdocument, parent_translation=None):
+ TelyDocument.__init__ (self, filename)
+
+ self.masterdocument = masterdocument
+
+ ## record authoring information
+ m = translators_re.search (self.contents)
+ if m:
+ self.translators = [n.strip () for n in m.group (1).split (',')]
+ else:
+ self.translators = parent_translation.translators
+ m = checkers_re.search (self.contents)
+ if m:
+ self.checkers = [n.strip () for n in m.group (1).split (',')]
+ elif isinstance (parent_translation, TranslatedTelyDocument):
+ self.checkers = parent_translation.checkers
+ else:
+ self.checkers = []
+
+ ## check whether translation is pre- or post-GDP
+ m = status_re.search (self.contents)
+ if m:
+ self.post_gdp = bool (post_gdp_re.search (m.group (1)))
+ else:
+ self.post_gdp = False
+
+ ## record which parts (nodes) of the file are actually translated
+ self.partially_translated = not skeleton_str in self.contents
+ nodes = node_re.split (self.contents)
+ self.translated_nodes = [not untranslated_node_str in n for n in nodes]
+
+ ## calculate translation percentage
+ master_total_word_count = sum (masterdocument.word_count)
+ translation_word_count = sum ([masterdocument.word_count[k] * self.translated_nodes[k]
+ for k in range (min (len (masterdocument.word_count), len (self.translated_nodes)))])
+ self.translation_percentage = 100 * translation_word_count / master_total_word_count
+
+ ## calculate how much the file is outdated
+ m = committish_re.search (self.contents)
+ if not m:
+ sys.stderr.write ('error: ' + filename + \
+ ": no 'GIT committish: <hash>' found.\nPlease check " + \
+ '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
+
+ def completeness (self, formats=['long']):
+ if isinstance (formats, str):
+ formats = [formats]
+ p = self.translation_percentage
+ if p == 0:
+ status = 'not translated'
+ elif p == 100:
+ status = 'fully translated'
+ else:
+ status = 'partially translated'
+ return dict ([(f, format_table[status][f] % locals()) for f in formats])
+
+ def uptodateness (self, formats=['long']):
+ if isinstance (formats, str):
+ formats = [formats]
+ p = self.uptodate_percentage
+ if p == 100:
+ status = 'up to date'
+ else:
+ status = 'outdated'
+ l = {}
+ for f in formats:
+ if f == 'color':
+ l['color'] = percentage_color (p)
+ else:
+ l[f] = format_table[status][f] % locals ()
+ return l
+
+ def gdp_status (self, translation=lambda s: s):
+ if self.post_gdp:
+ return translation (format-table['post-GDP'])
+ else:
+ return translation (format-table['pre-GDP'])
+
+ def short_html_status (self):
+ s = ' <td>'
+ if self.partially_translated:
+ s += '<br>\n '.join (self.translators) + '<br>\n'
+ if self.checkers:
+ s += ' <small>' + '<br>\n '.join (self.checkers) + '</small><br>\n'
+
+ c = self.completeness (['long', 'color'])
+ s += ' <span style="background-color: #%(color)s">%(long)s</span><br>\n' % c
+
+ if self.partially_translated:
+ u = self.uptodateness (['long', 'color'])
+ s += ' <span style="background-color: #%(color)s">%(long)s</span><br>\n' % u
+
+ s += ' </td>\n'
+ return s
+
+ def html_status (self):
+ # TODO
+ return ''
+
+class MasterTelyDocument (TelyDocument):
+ 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.word_count = tely_word_count (self.contents)
+ translations = dict ([(lang, os.path.join (lang, filename)) for lang in langdefs.LANGDICT.keys()])
+ #print translations
+ self.translations = dict ([(lang, TranslatedTelyDocument (translations[lang], self, parent_translations.get (lang)))
+ for lang in langdefs.LANGDICT.keys() if os.path.exists (translations[lang])])
+ if self.translations:
+ self.includes = [MasterTelyDocument (f, self.translations) for f in self.included_files]
+ else:
+ self.includes = []
+
+ # TODO
+ def print_wc_priority (self):
+ return
+
+ def html_status (self, numbering=SectionNumber ()):
+ if self.title == 'Untitled' or not self.translations:
+ return ''
+ if self.level[1] == 0: # if self is a master document
+ s = '''<table align="center" border="2">
+ <tr align="center">
+ <th>%s</th>''' % self.print_title (numbering)
+ s += ''.join ([' <th>%s</th>\n' % l for l in self.translations.keys ()])
+ s += ' </tr>\n'
+ s += ' <tr align="left">\n <td>Section titles<br>(%d)</td>\n' \
+ % sum (self.word_count)
+
+ else:
+ s = ' <tr align="left">\n <td>%s<br>(%d)</td>\n' \
+ % (self.print_title (numbering), sum (self.word_count))
+
+ s += ''.join ([t.short_html_status () for t in self.translations.values ()])
+ s += ' </tr>\n'
+ s += ''.join ([i.html_status (numbering) for i in self.includes])
+
+ if self.level[1] == 0:
+ s += '</table>\n<p></p>\n'
+ return s
+
+progress ("Reading documents...")
+
+tely_files = read_pipe ("find -maxdepth 2 -name '*.tely'").splitlines ()
+master_docs = [MasterTelyDocument (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 ()
+
+## TODO
+#per_lang_status_pages = dict ([(l, open (os.path.join (l, 'translations.template.html')). read ())
+# for l in langdefs.LANGDICT.keys ()
+# if langdefs.LANGDICT[l].enabled])
+
+progress ("Generating status pages...")
+
+main_status_html = ' <p><i>Last updated %s</i></p>\n' % read_pipe ('LANG= date -u')
+main_status_html += '\n'.join ([doc.html_status () for doc in master_docs])
+
+html_re = re.compile ('<html>', re.I)
+end_body_re = re.compile ('</body>', 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)
+
+main_status_page = end_body_re.sub (main_status_html + '\n</body>', main_status_page)
+
+open ('translations.html.in', 'w').write (main_status_page)
-#empty
+# cancel the rule that generates .n[o lilypond images t]exi files
+$(outdir)/%.nexi: $(ITELY_FILES) $(ITEXI_FILES)
+
+$(outdir)/%/index.html: $(outdir)/%.texi
+ mkdir -p $(dir $@)
+ -$(MAKEINFO) -P $(outdir) --output=$(outdir)/$* --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
+
+$(outdir)/%-big-page.html: $(outdir)/%.texi
+ -$(MAKEINFO) -P $(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split --no-headers $<
+
+$(outdir)/%.pdftexi: $(outdir)/%.texi doc-po
+ $(PYTHON) $(buildscript-dir)/texi-gettext.py $(buildscript-dir) $(top-build-dir)/Documentation/po/$(outdir) $(ISOLANG) $<
+
+$(outdir)/%.pdf: $(outdir)/%.pdftexi
+ cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) $(TEXINFO_PAPERSIZE_OPTION) $(notdir $*).pdftexi
-# one assumes depth and ISOLANG are defined
-
-OUT_ITEXI_FILES = $(ITELY_FILES:%.itely=$(outdir)/%.itexi)
-
-TEXINFO_PAPERSIZE_OPTION= $(if $(findstring $(PAPERSIZE),a4),,-t @afourpaper)
-
-LILYPOND_BOOK_INCLUDES += \
- -I$(top-src-dir)/Documentation/user \
- -I$(top-build-dir)/Documentation/user/$(outdir)
-
default:
-$(outdir)/%.nexi: $(ITELY_FILES) $(ITEXI_FILES)
-
-MAKEINFO_FLAGS += --force
-
-$(outdir)/%/index.html: $(outdir)/%.nexi $(outdir)/user-ln doc-po
- mkdir -p $(dir $@)
- -$(MAKEINFO) $(MAKEINFO_FLAGS) -I$(outdir) --output=$(outdir)/$* --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
-
-# we don't make the big page until the whole manual is translated
-# if this happens, we'll have to define local-WWW differently for this language
-#$(outdir)/lilypond.html: $(outdir)/lilypond.nexi
-# -$(MAKEINFO) $(MAKEINFO_FLAGS) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split --no-headers $<
-
-$(outdir)/%.pdf: $(outdir)/%.texi $(outdir)/user-ln doc-po
- $(PYTHON) $(buildscript-dir)/texi-gettext.py $(buildscript-dir) $(top-build-dir)/Documentation/po/$(outdir) $(ISOLANG) $<
- cd $(outdir); texi2pdf --batch $(TEXINFO_PAPERSIZE_OPTION) $(notdir $*).pdftexi
-
-TELY_FILES = $(call src-wildcard,*.tely)
-DEEP_HTML_FILES = $(TELY_FILES:%.tely=$(outdir)/%/index.html)
-PDF_FILES = $(TELY_FILES:%.tely=$(outdir)/%.pdf)
-
-local-WWW: $(DEEP_HTML_FILES) $(PDF_FILES)
+# BIG_PAGE_HTML_FILES is defined differently in each language makefile
+local-WWW: $(DEEP_HTML_FILES) $(PDF_FILES) doc-po $(BIG_PAGE_HTML_FILES)
find $(outdir) -name '*.html' | xargs grep -L 'UNTRANSLATED NODE: IGNORE ME' | xargs $(PYTHON) $(buildscript-dir)/html-gettext.py $(buildscript-dir) $(top-build-dir)/Documentation/po/$(outdir) $(ISOLANG)
find $(outdir) -name '*.html' | xargs grep -L --label="" 'UNTRANSLATED NODE: IGNORE ME' | sed 's!$(outdir)/!!g' | xargs $(PYTHON) $(buildscript-dir)/mass-link.py --prepend-suffix .$(ISOLANG) hard $(outdir) $(top-build-dir)/Documentation/user/$(outdir) $(TELY_FILES:%.tely=%.pdf)
- find $(outdir) \( -name 'lily-??????????.png' -o -name 'lily-??????????.ly' \) -a -not -type l | sed 's!$(outdir)/!!g' | xargs $(PYTHON) $(buildscript-dir)/mass-link.py hard $(outdir) $(top-build-dir)/Documentation/user/$(outdir)
-
-LINKED_PNGS = henle-flat-gray.png baer-flat-gray.png lily-flat-bw.png
+ find $(outdir) \( -name 'lily-??????????.png' -o -name 'lily-??????????.ly' \) | sed 's!$(outdir)/!!g' | xargs $(PYTHON) $(buildscript-dir)/mass-link.py hard $(outdir) $(top-build-dir)/Documentation/user/$(outdir)
-# makeinfo MUST have PNGs in cwd for info images to work
-# symlinking PNGs...
-# texi2pdf -I flag confuses pdfetex with .aux and other files
-# from English manual
-# symlinking lily-*...
-$(outdir)/user-ln: $(top-build-dir)/Documentation/user/$(outdir)
- $(PYTHON) $(buildscript-dir)/mass-link.py symbolic $(top-build-dir)/Documentation/user/$(outdir) $(outdir) 'lily-*.pdf' 'lily-*.tex' 'lily-*.texi' 'lily-*.ly' 'lily-*.txt' 'lily-*.png' 'henle-flat-gray.*' 'baer-flat-gray.*' 'lily-flat-bw.*' 'context-example.*'
- mkdir -p $(outdir)/lilypond
- cd $(outdir)/lilypond && $(foreach i, $(LINKED_PNGS), ln -sf ../../$(depth)/Documentation/user/$(i) $(i) &&) true
- touch -mr $(top-build-dir)/Documentation/user/$(outdir) $@
local-WWW-clean: deep-WWW-clean
$(MAKE) out=www local-WWW-clean
doc-po:
- $(MAKE) -C $(depth)/Documentation/po messages
+ $(MAKE) -C $(depth)/Documentation/po out=www messages
-#empty
+# ISOLANG must be defined
+
+LANGS = $(shell $(PYTHON) $(buildscript-dir)/langdefs.py)
+
+OUT_ITEXI_FILES = $(ITELY_FILES:%.itely=$(outdir)/%.itexi)
+
+DOCUMENTATION_INCLUDES = \
+ -I $(top-src-dir)/Documentation/user \
+ -I $(top-build-dir)/Documentation/user/$(outdir)
+DOCUMENTATION_INCLUDES += $(foreach lang, $(LANGS), -I $(top-build-dir)/Documentation/$(lang)/user/$(outdir))
+
+LILYPOND_BOOK_INCLUDES += $(DOCUMENTATION_INCLUDES)
+MAKEINFO_FLAGS += --force --enable-encoding $(DOCUMENTATION_INCLUDES)
+MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
+
+TEXI2PDF_FLAGS += --batch --tidy
+TEXI2PDF_FLAGS += $(DOCUMENTATION_INCLUDES)
+
+TELY_FILES = $(call src-wildcard,*.tely)
+DEEP_HTML_FILES = $(TELY_FILES:%.tely=$(outdir)/%/index.html)
+PDF_FILES = $(TELY_FILES:%.tely=$(outdir)/%.pdf)
'''
import stat
-import string
import tempfile
import commands
import os
import sys
import re
import md5
+import operator
"""
@relocate-preamble@
################################################################
def exit (i):
if global_options.verbose:
- raise _ ('Exiting (%d)...') % i
+ raise Exception (_ ('Exiting (%d)...') % i)
else:
sys.exit (i)
header = open (ps_name).read (1024)
m = re.search ('\n%%Pages: ([0-9]+)', header)
if m:
- return string.atoi (m.group (1))
+ return int (m.group (1))
return 0
def warranty ():
return (None, None)
-def find_file (name):
+def find_file (name, raise_error=True):
for i in global_options.include_path:
full = os.path.join (i, name)
if os.path.exists (full):
return full
- error (_ ("file not found: %s") % name + '\n')
- exit (1)
+ if raise_error:
+ error (_ ("file not found: %s") % name + '\n')
+ exit (1)
return ''
def verbatim_html (s):
option_list.append (key)
else:
option_list.append (key + '=' + value)
- option_string = string.join (option_list, ',')
+ option_string = ','.join (option_list)
compose_dict = {}
compose_types = [NOTES, PREAMBLE, LAYOUT, PAPER]
elif relative > 0:
relative_quotes += "'" * relative
- paper_string = string.join (compose_dict[PAPER],
- '\n ') % override
- layout_string = string.join (compose_dict[LAYOUT],
- '\n ') % override
- notes_string = string.join (compose_dict[NOTES],
- '\n ') % vars ()
- preamble_string = string.join (compose_dict[PREAMBLE],
- '\n ') % override
+ paper_string = '\n '.join (compose_dict[PAPER]) % override
+ layout_string = '\n '.join (compose_dict[LAYOUT]) % override
+ notes_string = '\n '.join (compose_dict[NOTES]) % vars ()
+ preamble_string = '\n '.join (compose_dict[PREAMBLE]) % override
padding_mm = global_options.padding_mm
font_dump_setting = ''
if FONTLOAD in self.option_dict:
def ly_is_outdated (self):
base = self.basename ()
- ly_file = base + '.ly'
- tex_file = base + '.tex'
- eps_file = base + '.eps'
- systems_file = base + '-systems.tex'
+ ly_file = find_file (base + '.ly', raise_error=False)
+ tex_file = find_file (base + '.tex', raise_error=False)
+ systems_file = find_file (base + '-systems.tex', raise_error=False)
if (os.path.exists (ly_file)
and os.path.exists (systems_file)
def png_is_outdated (self):
base = self.basename ()
- # FIXME: refactor stupid OK stuff
- ok = not self.ly_is_outdated ()
- if global_options.format in (HTML, TEXINFO):
- ok = ok and os.path.exists (base + '.eps')
-
- page_count = 0
- if ok:
- page_count = ps_page_count (base + '.eps')
-
- if page_count <= 1:
- ok = ok and os.path.exists (base + '.png')
-
- elif page_count > 1:
- for a in range (1, page_count + 1):
- ok = ok and os.path.exists (base + '-page%d.png' % a)
-
- return not ok
+ eps_file = find_file (base + '.eps', raise_error=False)
+ png_file = find_file (base + '.png', raise_error=False)
+ if not self.ly_is_outdated () and global_options.format in (HTML, TEXINFO):
+ if os.path.exists (eps_file):
+ page_count = ps_page_count (eps_file)
+ if page_count <= 1:
+ return not os.path.exists (png_file)
+ else:
+ return not reduce (operator.or_,
+ [find_file (base + '-page%d.png' % a, raise_error=False)
+ for a in range (1, page_count + 1)])
+ return True
def texstr_is_outdated (self):
if backend == 'ps':
return 0
- # FIXME: refactor stupid OK stuff
base = self.basename ()
- ok = self.ly_is_outdated ()
- ok = ok and (os.path.exists (base + '.texstr'))
- return not ok
+ return not (self.ly_is_outdated ()
+ and find_file (base + '.texstr', raise_error=False))
def filter_text (self):
code = self.substring ('code')
# the --process=CMD switch is a bad idea
# it is too generic for lilypond-book.
if texstr_names:
- my_system (string.join ([cmd, '--backend texstr',
- 'snippet-map.ly'] + texstr_names))
+ my_system (' '.join ([cmd, '--backend texstr',
+ 'snippet-map.ly'] + texstr_names))
for l in texstr_names:
my_system ('latex %s.texstr' % l)
if ly_names:
open ('snippet-names', 'wb').write ('\n'.join (['snippet-map.ly']
- + ly_names))
+ + ly_names))
- my_system (string.join ([cmd, 'snippet-names']))
+ my_system (' '.join ([cmd, 'snippet-names']))
LATEX_INSPECTION_DOCUMENT = r'''
try:
f = open (file_name)
oldstr = f.read ()
- new_str = string.join (lines, '')
+ new_str = ''.join (lines)
if oldstr == new_str:
progress (_ ("%s is up to date.") % file_name)
progress ('\n')
+ ' --formats=%s --backend eps ' % formats)
if global_options.process_cmd:
- global_options.process_cmd += string.join ([(' -I %s' % ly.mkarg (p))
+ global_options.process_cmd += ' '.join ([(' -I %s' % ly.mkarg (p))
for p in global_options.include_path])
if global_options.format in (TEXINFO, LATEX):