Documentation/it/web/download.itexi
Documentation/it/web/introduction.itexi
Documentation/it/web/manuals.itexi
+Documentation/it/web/news-headlines.itexi
Documentation/ja/GNUmakefile
Documentation/ja/dedication.itely
Documentation/ja/included/generating-output.itexi
Documentation/pictures/bwv861-finale2008a.png
Documentation/pictures/bwv861-gessellschaft-small.png
Documentation/pictures/bwv861-gessellschaft.png
+Documentation/pictures/bwv861-lilypond-large.ly
+Documentation/pictures/bwv861-lilypond-large.png
+Documentation/pictures/bwv861-lilypond.png
Documentation/pictures/bwv861mm28-29.png
Documentation/pictures/bwv861mm33-34-annotate.png
Documentation/pictures/bwv861mm33-34-annotate.svg
Documentation/web/introduction.itexi
Documentation/web/manuals.itexi
Documentation/web/news-front.itexi
+Documentation/web/news-headlines.itexi
Documentation/web/news.itexi
Documentation/web/others-did.bib
Documentation/web/server/favicon.ico
input/regression/ledger-line-minimum.ly
input/regression/ledger-line-shorten.ly
input/regression/ledger-lines-dynamics.ly
+input/regression/ledger-lines-non-merging.ly
input/regression/ledger-lines-varying-staves.ly
input/regression/ledger-positions-customization.ly
input/regression/les-nereides.ly
input/regression/ottava-broken.ly
input/regression/ottava-edge.ly
input/regression/ottava.ly
+input/regression/output-attributes.ly
input/regression/outside-staff-placement-directive.ly
input/regression/override-nest-scheme.ly
input/regression/override-nest.ly
@macro exampleImage{IMAGE-FILE}
@html
-<div class="float-center">
+<div class="float-center example-image-wrapper">
<a class="clickable" href="ly-examples/\IMAGE-FILE\.png">
<img src="ly-examples/\IMAGE-FILE\-small.png" alt="\IMAGE-FILE\">
</a>
@node NotĆcies antigues
@unnumberedsec NotĆcies antigues
-@translationof Old news
+@translationof News
@divClass{heading-center}
@warning{Hi ha molts anuncis i registres de canvi antics a les
@end ignore
+@item
+A new @code{output-attributes} grob property is now used for svg output
+instead of the @code{id} grob property. It allows multiple attributes
+to be defined as an association list. For example, @code{#'((id . 123)
+(class . foo) (data-whatever . @qq{bar}))} will produce the following
+group tag in an SVG file: @code{<g id=@qq{123} class=@qq{foo}
+data-whatever=@qq{bar}> @dots{} </g>}.
+
@item
Slurs and phrasing slurs may now be started from individual notes
in a chord. Several simultanous slurs per @code{Voice} need to be
@macro exampleImage{IMAGE-FILE}
@html
-<div class="float-center">
+<div class="float-center example-image-wrapper">
<a class="clickable" href="ly-examples/\IMAGE-FILE\.png">
<img src="ly-examples/\IMAGE-FILE\-small.png" alt="\IMAGE-FILE\">
</a>
@include web/news-front.itexi
@divClass{float-right}
-(@ref{Old news,,,,StarÅ”Ć novinky})
+(@ref{News,,,,StarÅ”Ć novinky})
@divEnd
@divEnd
@node StarÅ”Ć novinky
@unnumberedsec StarÅ”Ć novinky
-@translationof Old news
+@translationof News
@include web/news-front.itexi
margin: 0;
}
-div#news {
+#homepage-main {
padding: 0;
margin: 0 14em 1em 0;
}
+#homepage-example-image-wrapper {
+ padding: 3em 0em 1.5em;
+}
+
+.example-image-wrapper {
+ padding: 2em 0em 0.5em;
+}
+
+.example-image-wrapper img {
+ padding: 0em 0em 1em;
+}
+
/* .news-item is styled below with columns */
.testimonial-item {
padding: 0 0.5em;
}
-div#homePageSideBar {
+#homepage-sidebar {
position: absolute;
top: 0;
right: 0;
width: 12em;
text-align: left;
+ /* negate the top-margin of the first .subheading */
+ margin-top: -0.5em;
}
-#homePageSideBar .subheading {
+#homepage-sidebar .subheading {
font-size: 15.2px;
background: #5b7f64;
color: #fff;
- padding: 0.2em 0.5em 0em 0.7em;
- margin: 0;
+ padding: 0.2em 0.5em 0.1em 0.7em;
+ margin: 0.5em 0 0.7em;
border-radius: 5px;
}
-#homePageSideBar p,
+#homepage-sidebar p,
#pondingsText {
- padding: 0.7em 0.5em;
+ padding: 0em 0.5em 0.5em;
margin: 0;
}
-/* for better spacing between "download" and "manuals" links */
-#homePageSideBar p:nth-of-type(2n) {
- padding-top: 0;
- margin-top: -3px;
-}
-
div#footer {
clear: both;
width: 100%;
}
div.float-left a.clickable,
-div.float-center a.clickable,
div.float-right a.clickable {
text-decoration: overline;
margin-left: 1em;
}
+div.float-center a.clickable {
+ text-decoration: overline;
+}
+
.clear-both {
clear: both;
}
@macro exampleImage{IMAGE-FILE}
@html
-<div class="float-center">
+<div class="float-center example-image-wrapper">
<a class="clickable" href="ly-examples/\IMAGE-FILE\.png">
<img src="ly-examples/\IMAGE-FILE\-small.png" alt="\IMAGE-FILE\">
</a>
@node Ćltere Neuigkeiten
@unnumberedsec Ćltere Neuigkeiten
-@translationof Old news
+@translationof News
@divClass{heading-center}
@warning{Viele alte AnkĆ¼ndigungen und Listen der Ćnderungen finden sich in der
@macro exampleImage{IMAGE-FILE}
@html
-<div class="float-center">
+<div class="float-center example-image-wrapper">
<a class="clickable" href="ly-examples/\IMAGE-FILE\.png">
<img src="ly-examples/\IMAGE-FILE\-small.png" alt="\IMAGE-FILE\">
</a>
@node Noticias antiguas
@unnumberedsec Noticias antiguas
-@translationof Old news
+@translationof News
@divClass{heading-center}
@warning{Hay muchos anuncios y registros de cambio antiguos en el
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 934175b31d43c95e341b098f12c2e833522a5d45
+ Translation of GIT committish: 39912f861693f1c24b8833e6e9e6ba82eb3e6746
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@end example
@noindent
-ce qui aurait pour consƩquence que le nombre 24 sera stockƩ dans la
-variable LilyPond (et Scheme) @code{vingtQuatre}.
-
-La faƧon habituelle de faire rĆ©fĆ©rence Ć une variable LilyPond consiste
-Ć la rappeler Ć l'aide d'une oblique inverse -- autrement dit saisir
-@code{\vingtQuatre}. Dans la mesure oĆ¹ ceci, pour la plupart des types
-internes de LilyPond y compris les expressions musicales, aura pour
-effet d'en recopier la valeur, les fonctions musicales n'ont pas pour
-habitude de crƩer une copie du matƩriau qu'elles vont modifier. De
-fait, une expression musicale introduite parĀ @code{#} ne devrait pas
-contenir de matƩriau inexistant auparavant ou bien littƩralement
-recopiƩ, mais plutƓt une rƩfƩrence explicite.
+ce qui aurait pour consƩquence que le nombre @emph{24} sera stockƩ dans
+la variable LilyPond (et Scheme) @code{vingtQuatre}.
+
+Scheme autorise la modification d'expressions complexes au fil de l'eau,
+ce que rƩalise LilyPond dans le cadre des fonctions musicales.
+Toutefois, lorsqu'une expression musicale est stockƩe dans une variable,
+plutĆ“t que saisie au fur et Ć mesure, on s'attend, alors qu'elle est
+passĆ©e Ć une fonction musicale, Ć ce que sa valeur originale ne soit en
+rien modifiĆ©e. C'est la raison pour laquelle faire rĆ©fĆ©rence Ć une
+variable Ć l'aide d'une oblique inverse -- autrement dit saisir
+@code{\vingtQuatre} -- aura pour effet que LilyPond crƩera une copie de
+la valeur musicale de cette variable aux fins de l'utiliser au sein de
+l'expression musicale au lieu d'utiliser directement la valeur de cette
+variable.
+
+Par voie de consĆ©quence, une expression musicale introduite parĀ @code{#}
+ne devrait pas contenir de matƩriau inexistant auparavant ou bien
+littƩralement recopiƩ, mais plutƓt une rƩfƩrence explicite.
+
+@seealso
+Manuel d'extensionĀ :
+@ref{Syntaxe Scheme dans LilyPond}.
@node Saisie de variables et Scheme
@c -*- coding: utf-8; mode: texinfo; -*-
@ignore
- Translation of GIT committish: e389a98ed32c929cb091453d9ec2856350cfb300
+ Translation of GIT committish: 0628cc44250b21d422b21890a7f266cd4b5ca584
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@c it doesn't matter, but a future implementation will probably
@c add some code which needs this restriction.
+@c @raggedright can be enabled as soon as texinfo 5.x or larger
+@c is in use for Gub and LilyDev 3.
+
@macro predefined
@noindent
@subsubheading Commandes prƩdƩfinies
+@c @raggedright
@end macro
@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
@c the macro must not be empty.
@macro endpredefined
-@c
+@c @end @raggedright
@end macro
@macro exampleImage{IMAGE-FILE}
@html
-<div class="float-center">
+<div class="float-center example-image-wrapper">
<a class="clickable" href="ly-examples/\IMAGE-FILE\.png">
<img src="ly-examples/\IMAGE-FILE\-small.png" alt="\IMAGE-FILE\">
</a>
Cette section n'est pas encore encore traduite, veuillez
vous reporter Ć la documentation correspondante en anglais.
@end macro
-
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7
+ Translation of GIT committish: 39912f861693f1c24b8833e6e9e6ba82eb3e6746
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7
+ Translation of GIT committish: 39912f861693f1c24b8833e6e9e6ba82eb3e6746
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
par l'intervention d'un autre soufflet (contraire ou non), il prendra
fin au milieu de la tĆŖte de note affublĆ©e d'un @code{\<} ou d'un
@code{\>}, et le nouveau soufflet dĆ©butera Ć l'extrĆ©mitĆ© droite de cette
-mĆŖme tĆŖte de note.
+mĆŖme tĆŖte de note. Un soufflet se terminant sur le premier temps d'une
+mesure s'arrĆŖtera Ć la barre de mesure.
@lilypond[verbatim,quote]
\relative {
@snippets
+@cindex soufflet et barre de mesure
+
@lilypondfile[verbatim,quote,texidoc,doctitle]
{setting-hairpin-behavior-at-bar-lines.ly}
liaisons d'articulation -- voir @ref{Liaisons de phrasƩ}. Dans le cas
oĆ¹ plusieurs liaisons d'articulation interviennent au sein d'un mĆŖme
contexte @code{Voice}, leurs dĆ©but et fin doivent ĆŖtre labellisĆ©s par un
-@code{\=} suivi d'un identifiant (numƩrique ou chaƮne).
+@code{\=} suivi d'un identifiant (symbole ou entier positif).
@lilypond[verbatim,quote]
\fixed c' {
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7
+ Translation of GIT committish: 3f80e0ae5eb8cea0a7a6a72fac289ea5d71d63c8
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@code{\book}. Vous pouvez modifier ce comportement Ć l'aide de la
variable @code{toplevel-score-handler} placĆ©e en tĆŖte. Le gestionnaire
par dƩfaut est dƩfini dans le fichier d'initialisation
-@file{../scm/lily.scm}.
+@file{../scm/lily.scm}, et les rƩglages par dƩfaut dans le fichier
+@file{../ly/declarations-init.ly}.
@item
Un bloc @code{\book} permet de regrouper naturellement plusieurs
@item create-page-number-stencil @tab print-page-numbers est vrai.
@item print-all-headers @tab print-all-headers est vrai.
@item first-page @tab c'est la premiĆØre page du @emph{book}.
+@item not-first-page @tab ce n'est pas la premiĆØre page du @emph{book}.
@item (on-page nombre) @tab numƩro de page = nombre
@item last-page @tab c'est la derniĆØre page du @emph{book}.
@item not-first-page @tab ce n'est la premiĆØre page du @emph{book}.
@item part-first-page @tab c'est la premiĆØre page de la partie.
+@item not-part-first-page @tab ce n'est pas la premiĆØre page de la partie.
@item part-last-page @tab c'est la derniĆØre page de la partie.
@item not-single-page @tab cette partie fait plus d'une page.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7
+ Translation of GIT committish: 39912f861693f1c24b8833e6e9e6ba82eb3e6746
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@end lilypond
@knownissues
-Une liaison de prolongation Ć l'intĆ©rieur d'un bloc @code{\retrograde}
-sera de fait rompue, ce qui gƩnƩrera un message d'avertissement.
-Des liaisons de prolongation seront toutefois gƩnƩrƩes automatiquement
-dĆØs lors qu'est activĆ© le @ref{DĆ©coupage automatique des notes}.
+La fonction @code{\retrograde} est un outil plutƓt simpliste. Dans la
+mesure oĆ¹ de nombreux Ć©vĆ©nements se reflĆØtent au lieu d'ĆŖtre Ć©changĆ©s,
+les ajustements et indicateurs de positionnement Ć l'entame d'un objet
+Ć©tendu devront ĆŖtre rĆ©pĆ©tĆ©s Ć leur terminaisonĀ : @code{^(} devra se
+terminer par @code{^)}, tout @code{\<} ou @code{\cresc} devra se
+terminer par un @code{\!} ou un @code{\endecresc} et tout @code{\>} ou
+@code{\decr} devra se terminer par un @code{\enddecr}. Les dƩrogations
+ou commandes modifiant les propriƩtƩs sur la durƩe peuvent avoir des
+effets surprenants.
@seealso
Manuel de notation :
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7
+ Translation of GIT committish: 39912f861693f1c24b8833e6e9e6ba82eb3e6746
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
>>
@end lilypond
-@warning{Paroles et objets Ć©tendus (liaisons, soufflets etc.) ne peuvent
+@warning{Paroles et objets Ć©tendus (liaisons, soufflets, etc.) ne peuvent
passer d'une voix Ć l'autre.}
@subsubsubheading IdentitƩ rythmique
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7
+ Translation of GIT committish: 137af1bb9546d8845cbd7f9ecc0936fb4a0914e3
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
d'un bloc @code{\score}.
Les valeurs des diffƩrents champs seront filtrƩes en respectant cette
-hiĆ©rarchieĀ ; les valeuers dĆ©finies le plus haut persisteront Ć moins
+hiĆ©rarchieĀ ; les valeurs dĆ©finies le plus haut persisteront Ć moins
d'ĆŖtre remplacĆ©es Ć un niveau hiĆ©rarchique infĆ©rieur.
Plusieurs blocs @code{\paper} peuvent cohabiter Ć un mĆŖme niveau,
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582
+ Translation of GIT committish: 39912f861693f1c24b8833e6e9e6ba82eb3e6746
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@rlsrnamed{Text,Texte}.
@knownissues
-Les erreurs de syntaxe en mode @emph{markup} sont peu explicites.
+Les messages d'erreur de syntaxe en mode @emph{markup} sont peu
+explicites.
@node SĆ©lection de la fonte et de la taille
\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 9dca368f5d0b7b0e0f28656f29de4fd24de7d934
+ Translation of GIT committish: 472ecfdd548d8f700d71ec1a403b7a5bdce7d5ba
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@divEnd
-@divId{news}
+@divId{homepage-main}
-@c TODO: generate this automatically, including RSS feed.
-@include web/news-front.itexi
+@divClass{column-center-top}
+
+@subheading La beautƩ par l'exemple
+
+@c This example image is the image from the website version of the essay
+@c manual, downloaded to the pictures directory for use on the home page.
+@c Large version is generated manually from ly file in pictures directory.
+@divId{homepage-example-image-wrapper}
+@imageClickable{bwv861-lilypond,png,,bwv861-lilypond-large,png,center}
+@divEnd
+
+@ifclear web_version
+ @c no anchor links, just text
+
+LilyPond est un outil Ć la fois puissant et flexible qui se charge de
+graver toutes sortes de partitions, qu'il s'agisse de musique classique
+(comme cet exemple de by J.S. Bach), notation complexe, musique
+ancienne, musique moderne, tablature, musique vocale, feuille de chant,
+applications pƩdagogiques, grands projets, sortie personnalisƩe ainsi
+que des diagrammes de Schenker.
+
+@end ifclear
+@ifset web_version
+ @c anchor links, link to individual examples by their <a> tag
+
+LilyPond est un outil Ć la fois puissant et flexible qui se charge de
+graver toutes sortes de partitions, qu'il s'agisse de
+@uref{examples.html#Musique-classique, musique classique}
+(comme cet exemple de by J.S. Bach),
+@uref{examples.html#Notation-complexe, notation complexe},
+@uref{examples.html#Musique-ancienne, musique ancienne},
+@uref{examples.html#Musique-moderne, musique moderne},
+@uref{examples.html#Tablature, tablature},
+@uref{examples.html#Musique-vocale, musique vocale},
+@uref{examples.html#Feuille-de-chant, feuille de chant},
+@uref{examples.html#Applications-pedagogiques, applications pƩdagogiques},
+@uref{examples.html#Grands-projets, grands projets},
+@uref{examples.html#Sortie-personnalisee, sortie personnalisƩe},
+ainsi que des
+@uref{examples.html#Diagrammes-de-Schenker, diagrammes de Schenker}.
+
+@end ifset
+
+Venez puiser l'inspiration dans notre galerie
+@ref{Exemples, d'exemplesĀ !}
-@divClass{float-right}
-(@ref{Archives}) @c (@ref{Old news,,,,ActualitƩs passƩes})
@divEnd
+@divClass{column-center-middle-color2}
+@subheading ActualitƩs
+
+@c TODO: generate this automatically, including RSS feed.
+@include web/news-headlines.itexi
+
+@ref{ActualitĆ©s, ActualitĆ©s suivantesā¦}
+
@divEnd
+@divEnd
@ifclear web_version
@c do nothing
@end ifclear
@ifset web_version
@c make the sidebar:
-@divId{homePageSideBar}
+@divId{homepage-sidebar}
@subheading Branche stable
@c -*- coding: utf-8; mode: texinfo; documentlanguage : fr -*-
@c This file is part of web.texi
@ignore
- Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a
+ Translation of GIT committish: 0628cc44250b21d422b21890a7f266cd4b5ca584
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
nous.
@item
-@ref{Archives} : archives des dĆ©pĆŖches.
+@ref{ActualitĆ©s} : archives des dĆ©pĆŖches.
@item
@ref{Grenier} : annonces et recensement des modifications intervenues
* Auteurs::
* Remerciements::
* Publications::
-* Archives::
+* ActualitƩs::
* Grenier::
@end menu
@divEnd
@contactUsAbout{publications universitaires}
-@node Archives
-@unnumberedsec Archives
-@translationof Old news
+@node ActualitƩs
+@unnumberedsec ActualitƩs
+@translationof News
@divClass{heading-center}
@warning{Les vieilles annonces et informations de version sont rangƩes au
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@c This file is part of web.texi
@ignore
- Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a
+ Translation of GIT committish: 0628cc44250b21d422b21890a7f266cd4b5ca584
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@divEnd
@divClass{column-center-middle-color2}
-@subheading Musique pop
+@subheading Feuille de chant
-Il est facile de crƩer des partitions de chansons pop avec la mƩlodie,
-les paroles, les chiffrages d'accords et les diagrammes de frettes.
-Vous pouvez voir des exemples de tels diagrammes qui sont prƩdƩfinis,
-mais il est possible de les personnaliser dans presque tous les cas.
+Il est facile de crƩer des feuilles de chant avec la mƩlodie, les
+paroles, les chiffrages d'accords et les diagrammes de frettes. Vous
+pouvez voir des exemples de tels diagrammes qui sont prƩdƩfinis, mais il
+est possible de les personnaliser dans presque tous les cas.
@exampleImage{chart}
@divEnd
@macro exampleImage{IMAGE-FILE}
@html
-<div class="float-center">
+<div class="float-center example-image-wrapper">
<a class="clickable" href="ly-examples/\IMAGE-FILE\.png">
<img src="ly-examples/\IMAGE-FILE\-small.png" alt="\IMAGE-FILE\">
</a>
sudo dnf install git
@end example
-Also see @ruser{Starting with Git}.
+Also see @rcontrib{Starting with Git}.
@item
To use the @code{lily-git.tcl} GUI;
sudo dnf install tk
@end example
-See @ruser{lily-git}.
+See @rcontrib{lily-git}.
@end itemize
sudo apt-get install git
@end example
-Also see @ruser{Starting with Git}.
+Also see @rcontrib{Starting with Git}.
@item
To use the @code{lily-git.tcl} GUI;
sudo apt-get install tk
@end example
-Also see @ruser{lily-git}.
+Also see @rcontrib{lily-git}.
@end itemize
sudo zypper install git
@end example
-Also see @ruser{Starting with Git}.
+Also see @rcontrib{Starting with Git}.
@item
To use the @code{lily-git.tcl} GUI;
sudo zypper install tk
@end example
-Also see @ruser{lily-git}.
+Also see @rcontrib{lily-git}.
@end itemize
sudo apt-get install git
@end example
-Also see @ruser{Starting with Git}.
+Also see @rcontrib{Starting with Git}.
@item
To use the @code{lily-git.tcl} GUI;
sudo apt-get install tk
@end example
-Also see @ruser{lily-git}.
+Also see @rcontrib{lily-git}.
@end itemize
@c -*- coding: utf-8; mode: texinfo; -*-
@ignore
- Translation of GIT committish: 13d24779fd6b71e8130f785063dd112bfd9f8511
+ Translation of GIT committish: 136e94ea422fc94ef2587c588d516a03e01275e1
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@c it doesn't matter, but a future implementation will probably
@c add some code which needs this restriction.
+@c @raggedright can be enabled as soon as texinfo 5.x or larger
+@c is in use for Gub and LilyDev 3.
+
@macro predefined
@noindent
@subsubheading Comandi predefiniti
+@c @raggedright
@end macro
@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
@c the next macro must not be empty.
@macro endpredefined
-@c
+@c @end raggedright
@end macro
@macro exampleImage{IMAGE-FILE}
@html
-<div class="float-center">
+<div class="float-center example-image-wrapper">
<a class="clickable" href="ly-examples/\IMAGE-FILE\.png">
<img src="ly-examples/\IMAGE-FILE\-small.png" alt="\IMAGE-FILE\">
</a>
\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
@ignore
- Translation of GIT committish: 1244656c3b2d852f29bd75007469e1b1ed0b616f
+ Translation of GIT committish: 472ecfdd548d8f700d71ec1a403b7a5bdce7d5ba
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
-@divId{news}
+@divId{homepage-main}
+
+@divClass{column-center-top}
+
+@c traduzione libera, altrimenti il titolo perde efficacia - fb
+@subheading Musica bella per gli occhi
+
+@c This example image is the image from the website version of the essay
+@c manual, downloaded to the pictures directory for use on the home page.
+@c Large version is generated manually from ly file in pictures directory.
+@divId{homepage-example-image-wrapper}
+@imageClickable{bwv861-lilypond,png,,bwv861-lilypond-large,png,center}
+@divEnd
+
+@ifclear web_version
+ @c no anchor links, just text
+
+LilyPond ĆØ uno strumento potente e flessibile, adatto a ogni genere di
+spartito, per esempio musica classica (come nell'esempio precedente di J.S.
+Bach), notazione complessa, musica antica, musica moderna, tablatura,
+musica vocale, spartiti semplificati, materiali didattici, grandi
+progetti orchestrali, output personalizzato e perfino grafici Schenker.
+
+@end ifclear
+@ifset web_version
+ @c anchor links, link to individual examples by their <a> tag
+
+LilyPond ĆØ uno strumento potente e flessibile, adatto a ogni genere di
+spartito, per esempio
+@uref{examples.html#Musica-Classica, musica classica}
+(come nell'esempio precedente di J.S. Bach),
+@uref{examples.html#Notazione-Complessa, notazione complessa},
+@uref{examples.html#Musica-Antica, musica antica},
+@uref{examples.html#Musica-Moderna, musica moderna},
+@uref{examples.html#Intavolatura, tablatura},
+@uref{examples.html#Musica-Vocale, musica vocale},
+@uref{examples.html#Spartiti-Semplificati, spartiti semplificati},
+@uref{examples.html#Materiali-didattici, materiali didattici},
+@uref{examples.html#Grandi-Progetti, grandi progetti orhestrali},
+@uref{examples.html#Output-personalizzato, output personalizzato},
+e perfino
+@uref{examples.html#Grafici-Schenker, grafici Schenker}.
+
+@end ifset
+
+Guarda la galleria di @ref{Esempi} e lasciati ispirare!
+
+@divEnd
+
+@divClass{column-center-middle-color2}
+@subheading Notizie
+
@c TODO: generate this automatically, including RSS feed.
-@include web/news-front.itexi
+@include web/news-headlines.itexi
-@divClass{float-right}
-(@ref{Notizie vecchie})
+(@ref{Notizie, Altre notizie...})
@divEnd
@divEnd
@c do nothing
@end ifclear
@ifset web_version
-@divId{homePageSideBar}
+@divId{homepage-sidebar}
@subheading Stabile
@ref{Download, Download @versionStable}
@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
@ignore
- Translation of GIT committish: 58d22c26c9ed6f1845ebb5a7f36bdba8edf1b03b
+ Translation of GIT committish: 136e94ea422fc94ef2587c588d516a03e01275e1
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@ref{Pubblicazioni}: cosa abbiamo scritto, e cosa ĆØ stato scritto su di noi.
@item
-@ref{Notizie vecchie}: un archivio.
+@ref{Notizie}: notizie sul progetto LilyPond.
@item
@ref{Attic}: annunci e changelog delle versioni precedenti.
* Autori::
* Riconoscimenti::
* Pubblicazioni::
-* Notizie vecchie::
+* Notizie::
* Soffitta::
@end menu
@divEnd
@contactUsAbout{articoli accademici}
-@node Notizie vecchie
-@unnumberedsec Notizie vecchie
-@translationof Old news
+@node Notizie
+@unnumberedsec Notizie
+@translationof News
@divClass{heading-center}
@warning{Molti dei vecchi annunci e changelog si possono trovare
@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
@ignore
- Translation of GIT committish: d4756c74976a991bd80cf757f774e5525d0830cb
+ Translation of GIT committish: 136e94ea422fc94ef2587c588d516a03e01275e1
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@divEnd
@divClass{column-center-middle-color2}
-@subheading Applicazioni didattiche
+@subheading Materiali didattici
-LilyPond ĆØ molto indicato anche per applicazioni didattiche.
+LilyPond ĆØ molto indicato anche per creare materiali didattici.
Ecco un esempio di un semplice esercizio di contrappunto.
@exampleImage{theory}
@divEnd
@divClass{column-center-middle-color2}
-@subheading Musica Popolare
+@subheading Spartiti semplificati
-Ć semplice creare spartiti semplificati pop con melodia, testo,
+Ć semplice creare spartiti semplificati con melodia, testo,
nomi degli accordi, e tastiere. In questo esempio puoi vedere alcuni
dei diagrammi di tastiera predefiniti, ma questi possono essere ampiamente
personalizzati per adattarsi a quasi ogni situazione.
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
+@c This file is used in the web.texi file.
+
+@ignore
+ Translation of GIT committish: 36e230cf09bf2755528d2252ee256f88f330e66d
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. For details, see the Contributors'
+ Guide, node Updating translation committishes..
+@end ignore
+
+@c when you add a new item, consider removing the lowest item(s)
+
+@c used for news about the upcoming release; see CG on Release Work
+
+@c We use @uref for the actual website to link to individual news items
+@c by their <a> tags. We use @ref for other output formats.
+
+@ifclear web_version
+ @c no anchor links, just link to News page
+
+@ref{News, Rilasciato LilyPond 2.19.48 - @emph{13 Settembre 2016}}
+
+@ref{News, Due progetti LilyPond nel Google Summer of Code 2016 - @emph{23 Aprile 2016}}
+
+@ref{News, Rilasciato LilyPond 2.18.2 - @emph{23 Marzo 2014}}
+
+@ref{News, Rilasciato LilyPond 2.18.0 - @emph{29 Dicembre 2013}}
+
+@end ifclear
+@ifset web_version
+ @c anchor links, link to individual news items by their <a> tag
+
+@uref{news.it.html#LilyPond-2_002e19_002e48-released-September-13_002c-2016,
+ Rilasciato LilyPond 2.19.48 - @emph{13 Settembre 2016}}
+
+@uref{news.it.html#Two-LilyPond-projects-in-Google-Summer-of-Code-2016-April-23_002c-2016,
+ Two LilyPond projects in Google Summer of Code 2016 - @emph{23 Aprile 2016}}
+
+@uref{news.it.html#LilyPond-2_002e18_002e2-released_0021-March-23_002c-2014,
+ Rilasciato LilyPond 2.18.2 - @emph{23 Marzo 2014}}
+
+@uref{news.it.html#LilyPond-2_002e18_002e0-released_0021-December-29_002c-2013,
+ Rilasciato LilyPond 2.18.0 - @emph{29 Dicembre 2013}}
+
+@end ifset
@macro exampleImage{IMAGE-FILE}
@html
-<div class="float-center">
+<div class="float-center example-image-wrapper">
<a class="clickable" href="ly-examples/\IMAGE-FILE\.png">
<img src="ly-examples/\IMAGE-FILE\-small.png" alt="\IMAGE-FILE\">
</a>
\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
@ignore
- Translation of GIT committish: 7215236a0a49dd112348d2620fa132f7e5f12aff
+ Translation of GIT committish: 472ecfdd548d8f700d71ec1a403b7a5bdce7d5ba
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@divEnd
-@divId{news}
+@divId{homepage-main}
+
+@divClass{column-center-top}
+
+@subheading ē¾ććę„½č
+
+@c This example image is the image from the website version of the essay
+@c manual, downloaded to the pictures directory for use on the home page.
+@c Large version is generated manually from ly file in pictures directory.
+@divId{homepage-example-image-wrapper}
+@imageClickable{bwv861-lilypond,png,,bwv861-lilypond-large,png,center}
+@divEnd
+
+@ifclear web_version
+ @c no anchor links, just text
+
+LilyPond ćÆććććŖćēØ®é”ć®čå»ć«ćåƾåæć§ććć@c
+å¼·åć§ćčŖē±åŗ¦ć®é«ććć¼ć«ć§ćć@c
+ä¾ćć°ććÆć©ć·ććÆé³ę„½ļ¼J. S. Bach ä½ć®äøć®ä¾ć®ććć«ļ¼ć@c
+č¤éćŖę„½čćå¤ę„½ćē¾ä»£é³ę„½ććæćčćå£°ę„½ććŖć¼ćčćęęć@c
+大ććŖćŖć¼ć±ć¹ćć©ćććøć§ćÆććć«ć¹ćæćć¤ćŗćććåŗåć@c
+ććć« Schenker graphs ć«ćä½æćć¾ćć
+
+@end ifclear
+@ifset web_version
+ @c anchor links, link to individual examples by their <a> tag
+
+LilyPond ćÆććććŖćēØ®é”ć®čå»ć«ćåƾåæć§ććć@c
+å¼·åć§ćčŖē±åŗ¦ć®é«ććć¼ć«ć§ćć@c
+ä¾ćć°ć
+@uref{examples.html#g_t_30af_30e9_30b7_30c3_30af_97f3_697d, ćÆć©ć·ććÆé³ę„½}
+ļ¼J. S. Bach ä½ć®äøć®ä¾ć®ććć«ļ¼ć
+@uref{examples.html#g_t_8907_96d1_306a_697d_8b5c, č¤éćŖę„½č}ć
+@uref{examples.html#g_t_53e4_697d, å¤ę„½}ć
+@uref{examples.html#g_t_73fe_4ee3_97f3_697d, ē¾ä»£é³ę„½}ć
+@uref{examples.html#g_t_30bf_30d6_8b5c, ćæćč}ć
+@uref{examples.html#g_t_58f0_697d, å£°ę„½}ć
+@uref{examples.html#g_t_30ea_30fc_30c9_8b5c, ćŖć¼ćč}ć
+@uref{examples.html#g_t_6559_80b2, ęę}ć
+@uref{examples.html#g_t_5927_304d_306a_30d7_30ed_30b8_30a7_30af_30c8, 大ććŖćŖć¼ć±ć¹ćć©ćććøć§ćÆć}ć
+@uref{examples.html#g_t_30ab_30b9_30bf_30de_30a4_30ba, ć«ć¹ćæćć¤ćŗćććåŗå}ć
+ććć«
+@uref{examples.html#Schenker-Graphs, Schenker graphs}
+ć«ćä½æćć¾ćć
+
+@end ifset
+
+ę„½čć® @ref{ä¾} ćč¦ć¦ćåŗęæćåćć¦ćć ććļ¼
+
+@divEnd
+
+@divClass{column-center-middle-color2}
+@subheading ćć„ć¼ć¹
@c TODO: generate this automatically, including RSS feed.
-@include web/news-front.itexi
+@include web/news-headlines.itexi
+
+@ref{News, ćć®ä»ć®ćć„ć¼ć¹...}
-@divClass{float-right}
-(@ref{å¤ććć„ć¼ć¹})
@divEnd
@divEnd
@end ifclear
@ifset web_version
@c make the side bar:
-@divId{homePageSideBar}
+@divId{homepage-sidebar}
@subheading å®å®ē
@c TODO: javascript to detect OS and suggest download?
@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
@ignore
- Translation of GIT committish: 7215236a0a49dd112348d2620fa132f7e5f12aff
+ Translation of GIT committish: 36e230cf09bf2755528d2252ee256f88f330e66d
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@ref{åŗēē©}: ęć
ćęøćććć®ćęć
ć«ć¤ćć¦ćććććć®ć
@item
-@ref{å¤ććć„ć¼ć¹}: ć¢ć¼ć«ć¤ćć
+@ref{ćć„ć¼ć¹}: LilyPond ćććøć§ćÆćććć®ćć„ć¼ć¹ć
@item
@ref{ē©ē½®}: ć¢ćć¦ć³ć¹ćØéå»ć®ćć¼ćøć§ć³ććć®å¤ę“ćć°ć
* čč
::
* č¬č¾::
* åŗēē©::
-* å¤ććć„ć¼ć¹::
+* ćć„ć¼ć¹::
* ē©ē½®::
@end menu
@divEnd
@contactUsAbout{academic papers}
-@node å¤ććć„ć¼ć¹
-@unnumberedsec å¤ććć„ć¼ć¹
-@translationof Old news
+@node ćć„ć¼ć¹
+@unnumberedsec ćć„ć¼ć¹
+@translationof News
@divClass{heading-center}
@warning{å¤ćć®å¤ćć¢ćć¦ć³ć¹ćØå¤ę“屄ę“ć @ref{ē©ē½®} ć§č¦ć¤ććć¾ćć}
@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
@ignore
- Translation of GIT committish: 7215236a0a49dd112348d2620fa132f7e5f12aff
+ Translation of GIT committish: 36e230cf09bf2755528d2252ee256f88f330e66d
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@divClass{column-center-top}
@subheading ē¾ććä¾
-@c Beautiful examples
+@c Beautiful Examples
LilyPond ćÆććććŖćēØ®é”ć®čå»ć«ćåƾåæć§ććć@c
å¼·åć§ćčŖē±åŗ¦ć®é«ććć¼ć«ć§ćć@c
@divEnd
@divClass{column-center-middle-color2}
-@subheading Ć£\83\9dĆ£\83\94Ć£\83Ā„Ć£\83Ā©Ć£\83Ā¼Ć©\9fĀ³Ć¦Ā„Ā½
-@c Popular Music
+@subheading Ć£\83ĀŖĆ£\83Ā¼Ć£\83\89ĆØĀ\9c
+@c Lead Sheets
ć”ććć£ć¼ćęč©ćć³ć¼ćåććć¬ćććć¼ććęć¤@c
-Ć£\83\9dĆ£\83\94Ć£\83Ā„Ć£\83Ā©Ć£\83Ā¼Ć©\9fĀ³Ć¦Ā„Ā½Ć£\81Ā®Ć£\83ĀŖĆ£\83Ā¼Ć£\83\89ĆØĀ\9cĆ£\82\92ƧĀ°Ā”Ć„\8d\98Ć£\81Ā«Ć¤Ā½\9cĆ£\82\8cĆ£\81Ā¾Ć£\81\99Ć£\80\82@c
+ćŖć¼ćčćē°”åć«ä½ćć¾ćć@c
仄äøć®ä¾ć§ćÆćććććå®ē¾©ććć¦ćććć¬ćććć¼ć ćć¤ć¢ć°ć©ć ć@c
ä½æēØćć¦ćć¾ććć@c
ē¶ę³ć«åććć¦ę§ć
ćŖć«ć¹ćæćć¤ćŗćč”ćććØćć§ćć¾ćć
@macro exampleImage{IMAGE-FILE}
@html
-<div class="float-center">
+<div class="float-center example-image-wrapper">
<a class="clickable" href="ly-examples/\IMAGE-FILE\.png">
<img src="ly-examples/\IMAGE-FILE\-small.png" alt="\IMAGE-FILE\">
</a>
@macro exampleImage{IMAGE-FILE}
@html
-<div class="float-center">
+<div class="float-center example-image-wrapper">
<a class="clickable" href="ly-examples/\IMAGE-FILE\.png">
<img src="ly-examples/\IMAGE-FILE\-small.png" alt="\IMAGE-FILE\">
</a>
@include web/news-front.itexi
@divClass{float-right}
-(@ref{Old news}) @c (@ref{Old news,,,,Oud nieuws})
+(@ref{News}) @c (@ref{News,,,,Oud nieuws})
@divEnd
@divEnd
A @code{\score} block. This score will be collected with other
toplevel scores, and combined as a single @code{\book}.
This behavior can be changed by setting the variable
-@code{toplevel-score-handler} at toplevel. The default handler is
-defined in the init file @file{../scm/lily.scm}.
+@code{toplevel-score-handler} at toplevel. (The default handler is
+defined in the file @file{../scm/lily-library.scm} and set in the file
+@file{../ly/declarations-init.ly}.)
@item
A @code{\book} block logically combines multiple movements
@item create-page-number-stencil @tab print-page-numbers true?
@item print-all-headers @tab print-all-headers true?
@item first-page @tab first page in the book?
+@item not-first-page @tab not first page in the book?
@item (on-page nmbr) @tab page number = nmbr?
@item last-page @tab last page in the book?
-@item not-first-page @tab not first page in the book?
@item part-first-page @tab first page in the book part?
+@item not-part-first-page @tab not first page in the book part?
@item part-last-page @tab last page in the book part?
@item not-single-page @tab pages in book part > 1?
--- /dev/null
+\version "2.19.48"
+
+% Engrave to png with these options to create
+% the large version of image for home page:
+% -dno-point-and-click --png -dresolution=300
+
+% The small version you see on the home page
+% itself is simply the image from the essay manual,
+% downloaded from the website version of the
+% essay manual.
+
+\layout {
+ line-width = 15.9 \cm
+}
+
+\paper {
+ indent = 0
+ paper-height = 8 \cm
+ paper-width = 18 \cm
+}
+
+\header {
+ tagline = ##f
+}
+
+#(set-global-staff-size 14.3)
+
+
+global = { \key g \minor }
+
+partI = \relative {
+ \voiceOne
+ fis'8 d' ees g, fis4 g
+ r8 a16 bes c8 bes16 a d8 r r4
+ r2 r8 d16 ees f8 ees16 d
+ ees4 ~ 16 d c bes a4 r8 ees'16 d
+ c8 d16 ees d8 e16 fis g8 fis16 g a4 ~
+ 8 d, g f ees d c bes
+ a2 g \fermata \bar "|."
+}
+
+partII = \relative {
+ \voiceTwo
+ d'4 r4 r8 d'16 c bes8 c16 d
+ ees8 d c ees a, r r4
+ r8 fis16 g a8 g16 fis g2 ~
+ 2 r8 d' ees g,
+ fis4 g r8 a16 bes c8 bes16 a
+ bes4. <g b>8 <a c> r <d, g> r
+ <ees g>4 <d fis> d2
+}
+
+partIII = \relative {
+ \voiceOne
+ r2 r8 d' ees g, fis4 g r8 a16 bes c8 bes16 a
+ bes2 ~ 8 b16 a g8 a16 b
+ c4 r r2
+ R1
+ r8 d ees g, fis4 g
+ r8 a16 bes c8 bes16 a b2
+}
+
+partIV = \relative {
+ \voiceTwo
+ d4 r r2
+ r8 d ees g, fis4 a
+ d,8 d'16 c bes8 c16 d ees2 ~
+ 8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a
+ d,8 d'16 c bes8 c16 d ees8 c a fis'
+ g f ees d c bes a g
+ c a d d, g2 \fermata
+}
+
+\score {
+ <<
+ % \set Score.barNumberVisibility = #all-bar-numbers-visible
+ % required in 2.13
+ \set Score.currentBarNumber = #28
+ \bar ""
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \global
+ \new Voice = "voiceI" { \partI }
+ \new Voice = "voiceII" { \partII }
+ >>
+
+ \new Staff = "LH" <<
+ \clef "bass"
+ \global
+ \new Voice = "voiceIII" { \partIII }
+ \new Voice = "voiceIV" { \partIV }
+ >>
+ >>
+ >>
+ \layout {
+ \context {
+ \Staff
+ \remove "Time_signature_engraver"
+ }
+ \context {
+ \PianoStaff
+ \override StaffGrouper.staff-staff-spacing.padding = #1
+ }
+ }
+}
@unnumbered MIDI
@nodeprefix MIDI
-@ruser{MIDI output}
+@ruser{Creating MIDI output}
@lysnippets
-
@divEnd
-@divId{news}
+@divId{homepage-main}
+
+@divClass{column-center-top}
+
+@subheading Beautiful Sheet Music
+
+@c This example image is the image from the website version of the essay
+@c manual, downloaded to the pictures directory for use on the home page.
+@c Large version is generated manually from ly file in pictures directory.
+@divId{homepage-example-image-wrapper}
+@imageClickable{bwv861-lilypond,png,,bwv861-lilypond-large,png,center}
+@divEnd
+
+@ifclear web_version
+ @c no anchor links, just text
+
+LilyPond is a powerful and flexible tool for engraving tasks of
+all kinds, for example classical music (like the example above by J.S.
+Bach), complex notation, early music, modern music, tablature,
+vocal music, lead sheets, educational materials, large
+orchestral projects, customized output, and even Schenker graphs.
+
+@end ifclear
+@ifset web_version
+ @c anchor links, link to individual examples by their <a> tag
+ @c Translators should use the localized anchor name
+ @c (e.g. examples.html#Musica-Antica)
+ @c to be found in out-www/web/examples.LL.html
+
+LilyPond is a powerful and flexible tool for engraving tasks of
+all kinds, for example
+@uref{examples.html#Classical-Music, classical music}
+(like the example above by J.S. Bach),
+@uref{examples.html#Complex-Notation, complex notation},
+@uref{examples.html#Early-Music, early music},
+@uref{examples.html#Modern-Music, modern music},
+@uref{examples.html#Tablature, tablature},
+@uref{examples.html#Vocal-Music, vocal music},
+@uref{examples.html#Lead-Sheets, lead sheets},
+@uref{examples.html#Educational-Applications, educational materials},
+@uref{examples.html#Large-Projects, large orchestral projects},
+@uref{examples.html#Customized-Output, customized output},
+and even
+@uref{examples.html#Schenker-Graphs, Schenker graphs}.
+
+@end ifset
+
+Browse our gallery of @ref{Examples} and be inspired!
+
+@divEnd
+
+@divClass{column-center-middle-color2}
+@subheading News
@c TODO: generate this automatically, including RSS feed.
-@include web/news-front.itexi
+@include web/news-headlines.itexi
+
+@ref{News, More news...}
-@divClass{float-right}
-(@ref{Old news})
@divEnd
@divEnd
@end ifclear
@ifset web_version
@c make the side bar:
-@divId{homePageSideBar}
+@divId{homepage-sidebar}
@subheading Stable Release
@c TODO: javascript to detect OS and suggest download?
@ref{Publications}: what we wrote, and have had written about us.
@item
-@ref{Old news}: an archive.
+@ref{News}: news from the LilyPond project.
@item
@ref{Attic}: announcements and changelogs from past versions.
* Authors::
* Acknowledgements::
* Publications::
-* Old news::
+* News::
* Attic::
@end menu
@divEnd
@contactUsAbout{academic papers}
-@node Old news
-@unnumberedsec Old news
+@node News
+@unnumberedsec News
@divClass{heading-center}
@warning{Many old announcements and changelogs can be found in
@divClass{column-center-top}
-@subheading Beautiful examples
+@subheading Beautiful Examples
LilyPond is a powerful and flexible tool for engraving tasks of
all kinds. Please browse our gallery of examples and be inspired!
@divEnd
@divClass{column-center-middle-color2}
-@subheading Popular Music
+@subheading Lead Sheets
-It is simple to create pop lead sheets with melody, lyrics,
+It is simple to create lead sheets with melody, lyrics,
chord names, and fretboards. In this example you see some of the
predefined fretboard diagrams, but these can be heavily customized
to suit nearly any situation.
@c -*- coding: utf-8; mode: texinfo; -*-
-@c This file is part of lilypond-web.texi and community.itexi
+@c This file is part of community.itexi
@c when you add a new item, consider moving the lowest item(s)
@c into news.itexi.
@c keep two blank lines between news entries
-@c used for news about the upcoming release; see CG 10.2
+@c used for news about the upcoming release; see CG on Release Work
@newsItem
-@subheading LilyPond 2.19.48 released @emph{September 13, 2016}
+@subheading LilyPond 2.19.49 released @emph{October 16, 2016}
We are happy to announce the release of LilyPond
-2.19.48. This release includes a number of enhancements, and contains some
+2.19.49. This release includes a number of enhancements, and contains some
work in progress. You will have access to the very latest features, but
some may be incomplete, and you may encounter bugs and crashes. If you
require a stable version of LilyPond, we recommend using the 2.18
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c This file is used in the web.texi file.
+
+@c when you add a new item, consider removing the lowest item(s)
+
+@c used for news about the upcoming release; see CG on Release Work
+
+@c We use @uref for the actual website to link to individual news items
+@c by their <a> tags. We use @ref for other output formats.
+
+@ifclear web_version
+ @c no anchor links, just link to News page
+
+@ref{News, LilyPond 2.19.49 released - @emph{October 16, 2016}}
+
+@ref{News, Two LilyPond projects in Google Summer of Code 2016 - @emph{April 23, 2016}}
+
+@ref{News, LilyPond 2.18.2 released! - @emph{March 23, 2014}}
+
+@ref{News, LilyPond 2.18.0 released! - @emph{December 29, 2013}}
+
+@end ifclear
+@ifset web_version
+ @c anchor links, link to individual news items by their <a> tag
+
+@uref{news.html#LilyPond-2_002e19_002e49-released-October-16_002c-2016,
+ LilyPond 2.19.49 released - @emph{October 16, 2016}}
+
+@uref{news.html#Two-LilyPond-projects-in-Google-Summer-of-Code-2016-April-23_002c-2016,
+ Two LilyPond projects in Google Summer of Code 2016 - @emph{April 23, 2016}}
+
+@uref{news.html#LilyPond-2_002e18_002e2-released_0021-March-23_002c-2014,
+ LilyPond 2.18.2 released! - @emph{March 23, 2014}}
+
+@uref{news.html#LilyPond-2_002e18_002e0-released_0021-December-29_002c-2013,
+ LilyPond 2.18.0 released! - @emph{December 29, 2013}}
+
+@end ifset
* don't duplicate entries from news-front.itexi
@end ignore
+@newsItem
+@subheading LilyPond 2.19.48 released @emph{September 13, 2016}
+
+We are happy to announce the release of LilyPond
+2.19.48. This release includes a number of enhancements, and contains some
+work in progress. You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes. If you
+require a stable version of LilyPond, we recommend using the 2.18
+version.
+
+@newsEnd
+
@newsItem
@subheading LilyPond 2.19.47 released @emph{August 31, 2016}
#RedirectMatch ^/bugs http://code.google.com/p/lilypond/issues/list
# the new website already has an /authors
#RedirectMatch ^/authors /doc/Documentation/topdocs/AUTHORS
-# the new website has news on the main page
-RedirectMatch ^/news /
RedirectMatch ^/stable /doc/stable
# the new website has a dedicated page for development.
#RedirectMatch ^/development /doc/development
@macro exampleImage{IMAGE-FILE}
@html
-<div class="float-center">
+<div class="float-center example-image-wrapper">
<a class="clickable" href="ly-examples/\IMAGE-FILE\.png">
<img src="ly-examples/\IMAGE-FILE\-small.png" alt="\IMAGE-FILE\">
</a>
@ref{Publications}: what we wrote, and have had written about us.
@item
-@ref{Old news}: an archive.
+@ref{News}: an archive.
@item
@ref{Attic}: announcements and changelogs from past versions.
@node ę§é»
@unnumberedsec ę§é»
-@translationof Old news
+@translationof News
@divClass{heading-center}
@warning{Many old announcements and changelogs can be found in
sudo dnf install git
- Also see *note (lilypond-notation)Starting with Git::.
+ Also see *note (lilypond-contributor)Starting with Git::.
ā¢ To use the ālily-git.tclā GUI;
sudo dnf install tk
- See *note (lilypond-notation)lily-git::.
+ See *note (lilypond-contributor)lily-git::.
Note: By default, when building LilyPondās documentation,
āpdfTeXā is be used. However ligatures (fi, fl, ff etc.) may
sudo apt-get install git
- Also see *note (lilypond-notation)Starting with Git::.
+ Also see *note (lilypond-contributor)Starting with Git::.
ā¢ To use the ālily-git.tclā GUI;
sudo apt-get install tk
- Also see *note (lilypond-notation)lily-git::.
+ Also see *note (lilypond-contributor)lily-git::.
Note: By default, when building LilyPondās documentation,
āpdfTeXā is be used. However ligatures (fi, fl, ff etc.) may
sudo zypper install git
- Also see *note (lilypond-notation)Starting with Git::.
+ Also see *note (lilypond-contributor)Starting with Git::.
ā¢ To use the ālily-git.tclā GUI;
sudo zypper install tk
- Also see *note (lilypond-notation)lily-git::.
+ Also see *note (lilypond-contributor)lily-git::.
Note: By default, when building LilyPondās documentation,
āpdfTeXā is be used. However ligatures (fi, fl, ff etc.) may
sudo apt-get install git
- Also see *note (lilypond-notation)Starting with Git::.
+ Also see *note (lilypond-contributor)Starting with Git::.
ā¢ To use the ālily-git.tclā GUI;
sudo apt-get install tk
- Also see *note (lilypond-notation)lily-git::.
+ Also see *note (lilypond-contributor)lily-git::.
Note: By default, when building LilyPondās documentation,
āpdfTeXā is be used. However ligatures (fi, fl, ff etc.) may
New features in 2.20 since 2.18
*******************************
+ ā¢ A new āoutput-attributesā grob property is now used for svg output
+ instead of the āidā grob property. It allows multiple attributes
+ to be defined as an association list. For example, ā#'((id . 123)
+ (class . foo) (data-whatever . ābarā))ā will produce the following
+ group tag in an SVG file: ā<g id=ā123ā class=āfooā
+ data-whatever=ābarā> ... </g>ā.
+
ā¢ Slurs and phrasing slurs may now be started from individual notes
in a chord. Several simultanous slurs per āVoiceā need to be
distinguished by āspanner-idā setting.
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=19
-PATCH_LEVEL=48
+PATCH_LEVEL=49
MY_PATCH_LEVEL=
VERSION_STABLE=2.18.2
-VERSION_DEVEL=2.19.48
+VERSION_DEVEL=2.19.49
-\version "2.17.6"
+\version "2.19.49"
\header {
texidoc = "Shows the id property of a grob being set. This should have
-no effect in the PS backend.
+no effect.
"
}
--- /dev/null
+\version "2.19.49"
+
+\header {
+ texidoc = "In some rare cases like these the
+extents of two ledger lines at the same vertical
+position in the same note column do not overlap
+horizontally, and they should not be merged into
+a single ledger line.
+See LSR 505: Displaying complex chords
+http://lsr.di.unimi.it/LSR/Item?id=505
+"
+}
+
+fixA = {
+ \once \override Stem.length = #11
+}
+
+fixB = {
+ \once \override NoteHead.X-offset = #1.7
+ \once \override Stem.length = #7
+ \once \override Stem.rotation = #'(45 0 0)
+ \once \override Stem.extra-offset = #'(-0.1 . -0.2)
+ \once \override Flag.style = #'no-flag
+ \once \override Accidental.extra-offset = #'(4 . -.1)
+}
+
+\relative c' {
+ % case 1
+ \pitchedTrill a'' \startTrillSpan a
+ % case 2
+ << { \fixA <b,,, d!>8 } \\ { \voiceThree \fixB dis } >> s
+}
--- /dev/null
+\version "2.17.6"
+
+\header {
+ texidoc = "Shows the output-attributes property of a grob being set.
+This should have no effect in the Postscript backend. In the SVG
+backend these settings should produce this group tag:
+@code{<g id=\"123\" class=\"foo\" data-whatever=\"bar\"> @dots{} </g>}
+"
+}
+
+{
+ \override NoteHead.output-attributes =
+ #'((id . 123) (class . foo) (data-whatever . "bar"))
+ c
+}
retval = Stencil (retval.extent_box (), expr);
}
- SCM id = get_property ("id");
- if (scm_is_string (id))
+ SCM attributes = get_property ("output-attributes");
+ if (scm_is_pair (attributes))
{
- SCM expr = scm_list_3 (ly_symbol2scm ("id"),
- id,
+ SCM expr = scm_list_3 (ly_symbol2scm ("output-attributes"),
+ attributes,
retval.expr ());
retval = Stencil (retval.extent_box (), expr);
"cause "
"color "
"cross-staff "
- "id "
"extra-offset "
"footnote-music "
"forced-spacing "
"horizontal-skylines "
+ "id "
"interfaces "
"layer "
"meta "
"minimum-X-extent "
"minimum-Y-extent "
+ "output-attributes "
"parenthesis-friends "
"pure-Y-offset-in-progress "
"rotation "
Interval max_head_extent_;
int max_position_;
vector <Head_data> heads_;
- map <Real, Interval> ledger_extents_;
+ // The map's keys are vertical ledger line positions. The values are
+ // vectors of the x-extents of ledger lines.
+ map <Real, vector <Interval> > ledger_extents_;
Ledger_request ()
{
max_ledger_extent_.set_empty ();
// Iterate through ledger requests and the data they have about each
// note head to generate the final extents for all ledger lines.
- // Note heads that are different widths produce different ledger
- // extents and these are merged so the widest extent prevails
- // (the union of the intervals) for each ledger line.
+ // Note heads of different widths produce different ledger extents.
for (Ledger_requests::iterator i (reqs.begin ());
i != reqs.end (); i++)
{
natural + downstem.
*/
}
+ // When the extents of two ledgers at the same
+ // vertical position overlap horizontally, we merge
+ // them together to produce a single stencil. In rare
+ // cases they do not overlap and we do not merge them.
+
if (lr.ledger_extents_.find (lpos) == lr.ledger_extents_.end ())
- lr.ledger_extents_[lpos] = x_extent;
+ // Found nothing for this lpos.
+ lr.ledger_extents_[lpos].push_back(x_extent);
else
- lr.ledger_extents_[lpos].unite (x_extent);
+ {
+ vector<Interval> &extents = lr.ledger_extents_.find (lpos)->second;
+ for (vsize e = 0; e < extents.size (); e++)
+ {
+ if (intersection (extents[e], x_extent).is_empty ())
+ extents.push_back (x_extent);
+ else
+ extents[e].unite (x_extent);
+ }
+ }
}
}
}
// Create the stencil for the ledger line spanner by iterating
// through the ledger requests and their data on ledger extents.
Stencil ledgers;
- Real ledgerlinethickness
- = Staff_symbol::get_ledger_line_thickness (staff);
+ Real thickness = Staff_symbol::get_ledger_line_thickness (staff);
+ Real half_thickness = thickness * 0.5;
+ Interval y_extent = Interval (-half_thickness, half_thickness);
- for (Ledger_requests::iterator i (reqs.begin ());
- i != reqs.end (); i++)
+ for (Ledger_requests::iterator i (reqs.begin ()); i != reqs.end (); i++)
{
for (DOWN_and_UP (d))
{
- map<Real, Interval> &lex = i->second[d].ledger_extents_;
- for (map<Real, Interval>::iterator k = lex.begin ();
+ map<Real, vector<Interval> > &lex = i->second[d].ledger_extents_;
+ for (map<Real, vector<Interval> >::iterator k = lex.begin ();
k != lex.end (); k++)
{
- Real blotdiameter = ledgerlinethickness;
Real lpos = k->first;
- Interval x_extent = k->second;
- Interval y_extent
- = Interval (-0.5 * (ledgerlinethickness),
- +0.5 * (ledgerlinethickness));
- Stencil ledger_line
- = Lookup::round_filled_box (Box (x_extent, y_extent), blotdiameter);
-
- ledger_line.translate_axis ( lpos * halfspace, Y_AXIS);
- ledgers.add_stencil (ledger_line);
+ vector<Interval> &x_extents = k->second;
+
+ for (vsize n = 0; n < x_extents.size (); n++)
+ {
+ // thickness (ledger line thickness) is the blot diameter
+ Stencil line = Lookup::round_filled_box (Box (x_extents[n], y_extent),
+ thickness);
+
+ line.translate_axis (lpos * halfspace, Y_AXIS);
+ ledgers.add_stencil (line);
+ }
}
}
}
-
- ledgers.translate_axis (-me->relative_coordinate (common_x, X_AXIS),
- X_AXIS);
-
+ ledgers.translate_axis (-me->relative_coordinate (common_x, X_AXIS), X_AXIS);
return ledgers.smobbed_copy ();
}
return stencil_traverser (trans, scm_caddr (expr));
else if (scm_is_eq (scm_car (expr), ly_symbol2scm ("transparent-stencil")))
return stencil_traverser (trans, scm_cadr (expr));
- else if (scm_is_eq (scm_car (expr), ly_symbol2scm ("id")))
+ else if (scm_is_eq (scm_car (expr), ly_symbol2scm ("output-attributes")))
return stencil_traverser (trans, scm_caddr (expr));
else
{
return;
}
- else if (scm_is_eq (head, ly_symbol2scm ("id")))
+ else if (scm_is_eq (head, ly_symbol2scm ("output-attributes")))
{
- SCM id = scm_cadr (expr);
+ SCM attributes = scm_cadr (expr);
- (*func) (func_arg, scm_list_2 (ly_symbol2scm ("start-enclosing-id-node"), id));
+ (*func) (func_arg, scm_list_2 (ly_symbol2scm ("start-group-node"),
+ ly_quote_scm (attributes)));
interpret_stencil_expression (scm_caddr (expr), func, func_arg, o);
- (*func) (func_arg, scm_list_1 (ly_symbol2scm ("end-enclosing-id-node")));
+ (*func) (func_arg, scm_list_1 (ly_symbol2scm ("end-group-node")));
return;
}
%}
-\version "2.19.48" % necessary for upgrading to future LilyPond versions.
+\version "2.19.49" % necessary for upgrading to future LilyPond versions.
\header{
title = "A scale in LilyPond"
%}
-\version "2.19.48" % necessary for upgrading to future LilyPond versions.
+\version "2.19.49" % necessary for upgrading to future LilyPond versions.
\header{
title = "A scale in LilyPond"
-See http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=log;h=refs/tags/release/2.19.48-1
+See http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=log;h=refs/tags/release/2.19.49-1
-commit fd22d6c4d857718d0046dc2b8b802b9ddff13cb5
+commit d9b80e6ee9187ab71ffc2778c9b18c435f3ef73f
Author: Phil Holmes <mail@philholmes.net>
-Date: Tue Sep 13 11:09:38 2016 +0100
+Date: Sun Oct 16 12:16:18 2016 +0100
Release: bump Welcome versions.
diff --git a/ly/Welcome-to-LilyPond-MacOS.ly b/ly/Welcome-to-LilyPond-MacOS.ly
-index 5768d8b..6424d75 100644
+index 6424d75..2b11d39 100644
--- a/ly/Welcome-to-LilyPond-MacOS.ly
+++ b/ly/Welcome-to-LilyPond-MacOS.ly
@@ -23,7 +23,7 @@ That's it. For more information, visit http://lilypond.org .
%}
--\version "2.19.47" % necessary for upgrading to future LilyPond versions.
-+\version "2.19.48" % necessary for upgrading to future LilyPond versions.
+-\version "2.19.48" % necessary for upgrading to future LilyPond versions.
++\version "2.19.49" % necessary for upgrading to future LilyPond versions.
\header{
title = "A scale in LilyPond"
diff --git a/ly/Welcome_to_LilyPond.ly b/ly/Welcome_to_LilyPond.ly
-index 0dae0bf..77503b4 100644
+index 77503b4..176075c 100644
--- a/ly/Welcome_to_LilyPond.ly
+++ b/ly/Welcome_to_LilyPond.ly
@@ -32,7 +32,7 @@ Good luck with LilyPond! Happy engraving.
%}
--\version "2.19.47" % necessary for upgrading to future LilyPond versions.
-+\version "2.19.48" % necessary for upgrading to future LilyPond versions.
+-\version "2.19.48" % necessary for upgrading to future LilyPond versions.
++\version "2.19.49" % necessary for upgrading to future LilyPond versions.
\header{
title = "A scale in LilyPond"
# Esperanto translation of LilyPond.
-# Copyright (C) 2015 Free Software Foundation, Inc.
+# Copyright (C) 2015, 2016 Free Software Foundation, Inc.
# This file is distributed under the same license as the lilypond package.
-# Felipe Castro <fefcas@gmail.com>, 2012, 2013, 2015
+# Felipe Castro <fefcas@gmail.com>, 2012, 2013, 2015, 2016.
#
msgid ""
msgstr ""
-"Project-Id-Version: lilypond 2.19.16\n"
+"Project-Id-Version: lilypond 2.19.26\n"
"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2015-02-28 14:31+0000\n"
-"PO-Revision-Date: 2015-03-03 10:33-0300\n"
+"POT-Creation-Date: 2015-08-27 10:48+0100\n"
+"PO-Revision-Date: 2016-10-12 22:17-0300\n"
"Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
"Language: eo\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Poedit 1.6.10\n"
+"X-Generator: Poedit 1.5.4\n"
#: book_base.py:26
#, python-format
#: convertrules.py:82 convertrules.py:1856 convertrules.py:2032
#: convertrules.py:2175 convertrules.py:2506 convertrules.py:2801
-#: convertrules.py:3151 convertrules.py:3385 convertrules.py:3697
+#: convertrules.py:3151 convertrules.py:3388 convertrules.py:3700
msgid "bump version for release"
msgstr "aktualigi la version por eldono"
#: convertrules.py:2820
msgid ""
"oldaddlyrics is no longer supported. \n"
-" Use addlyrics or lyrsicsto instead.\n"
+" Use addlyrics or lyricsto instead.\n"
msgstr ""
"oldaddlyrics ne plu estas subtenata. \n"
-" Uzu addlyrics aÅ lyricsto anstataÅe.\n"
+" Uzu addlyrics aÅ lyricsto anstataÅe.\n"
#: convertrules.py:2826
msgid ""
msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n"
msgstr "input/regression/beam-broken-classic.ly montras kiel rompitaj vostligoj estas traktataj nun.\n"
-#: convertrules.py:3369
+#: convertrules.py:3372
msgid "beamExceptions controls whole-measure beaming."
msgstr "beamExceptions regas tut-mezuran vostligadon."
-#: convertrules.py:3606
+#: convertrules.py:3609
msgid "Flag.transparent and Flag.color inherit from Stem"
msgstr "Flag.transparent kaj Flag.color heredas el Stem"
-#: convertrules.py:3672
+#: convertrules.py:3675
msgid "Staff-padding now controls the distance to the baseline, not the nearest point."
msgstr "Liniaro-Åovo nun regas la distancon al la bazlinio, ne al la plej proksima punkto."
msgid "Unable to find instrument for ID=%s\n"
msgstr "Ne eblas trovi instrumenton por ID=%s\n"
-#: abc2ly.py:1386 convert-ly.py:85 lilypond-book.py:122 midi2ly.py:1044
+#: abc2ly.py:1389 convert-ly.py:85 lilypond-book.py:122 midi2ly.py:1044
#, python-format
msgid "%s [OPTION]... FILE"
msgstr "%s [MODIFILO]... DOSIERO"
-#: abc2ly.py:1387
+#: abc2ly.py:1390
#, python-format
msgid ""
"abc2ly converts ABC music files (see\n"
"abc2ly konvertas muzikajn dosierojn ABC (vidu\n"
"%s) al LilyPond-kodumaro.\n"
-#: abc2ly.py:1395 convert-ly.py:92 etf2ly.py:1208 lilypond-book.py:231
-#: midi2ly.py:1095 musicxml2ly.py:2590 main.cc:183
+#: abc2ly.py:1398 convert-ly.py:92 etf2ly.py:1208 lilypond-book.py:231
+#: midi2ly.py:1095 musicxml2ly.py:2590 main.cc:184
msgid "show version number and exit"
msgstr "montri versi-numeron kaj eliri"
-#: abc2ly.py:1398 convert-ly.py:96 etf2ly.py:1204 lilypond-book.py:140
-#: midi2ly.py:1062 musicxml2ly.py:2572 main.cc:162
+#: abc2ly.py:1401 convert-ly.py:96 etf2ly.py:1204 lilypond-book.py:140
+#: midi2ly.py:1062 musicxml2ly.py:2572 main.cc:163
msgid "show this help and exit"
msgstr "montri tiun Äi helpon kaj eliri"
-#: abc2ly.py:1401 etf2ly.py:1209 midi2ly.py:1071
+#: abc2ly.py:1404 etf2ly.py:1209 midi2ly.py:1071
msgid "write output to FILE"
msgstr "skribi eligon al DOSIERO"
-#: abc2ly.py:1404
+#: abc2ly.py:1407
msgid "be strict about success"
msgstr "esti severa pri sukceso"
-#: abc2ly.py:1407
+#: abc2ly.py:1410
msgid "preserve ABC's notion of beams"
msgstr "konservi la nocion de vostligoj de ABC"
-#: abc2ly.py:1410
+#: abc2ly.py:1413
msgid "suppress progress messages"
msgstr "formeti mesaÄojn pri progreso"
#. "Report bugs in English via %s",
#. or if there is a LilyPond users list or forum in your language
#. "Report bugs in English via %s or in YOUR_LANG via URI"
-#: abc2ly.py:1413 convert-ly.py:157 etf2ly.py:1218 lilypond-book.py:258
-#: midi2ly.py:1107 musicxml2ly.py:2674 main.cc:317
+#: abc2ly.py:1416 convert-ly.py:157 etf2ly.py:1218 lilypond-book.py:258
+#: midi2ly.py:1107 musicxml2ly.py:2674 main.cc:318
#, c-format, python-format
msgid "Report bugs via %s"
msgstr "Raportu program-misojn per %s (angle)"
msgstr "Montri protokolajn mesaÄojn laÅĀ PROTOKOLNIVELO (NONE, ERROR, WARNING, PROGRESS (apriore), DEBUG)"
#: convert-ly.py:111 lilypond-book.py:163 lilypond-book.py:181
-#: musicxml2ly.py:2629 main.cc:176
+#: musicxml2ly.py:2629 main.cc:177
msgid "LOGLEVEL"
msgstr "PROTOKOLNIVELO"
msgstr "fari numeritan savkopion [aprioras: dosiernomo.suf~]"
#: convert-ly.py:152 etf2ly.py:1212 lilypond-book.py:234 midi2ly.py:1096
-#: main.cc:185
+#: main.cc:186
msgid "show warranty and copyright"
msgstr "montri garantion kaj kopirajton"
msgid "Processing `%s'... "
msgstr "Procezado de '%s'... "
-#: convert-ly.py:368
+#: convert-ly.py:366
#, python-format
msgid "%s: Unable to open file"
msgstr "%s: Ne eblas malfermi dosieron"
-#: convert-ly.py:374
+#: convert-ly.py:372
#, python-format
msgid "%s: Unable to determine version. Skipping"
msgstr "%s: ne eblas determini version. Preterpase"
-#: convert-ly.py:380
+#: convert-ly.py:378
#, python-format
msgid ""
"%s: Invalid version string `%s' \n"
"%s: Malvalida versi-Äeno '%s' \n"
"Validaj versi-Äenoj konsistas el tri numeroj, apartitaj per punktoj, t.e. '2.8.12'"
-#: convert-ly.py:386
+#: convert-ly.py:384
#, python-format
msgid "There was %d error."
msgid_plural "There were %d errors."
"Coda Music Technology. etf2ly konvertas subaron de ETF al tujuzebla dosiero LilyPond.\n"
#: etf2ly.py:1210 midi2ly.py:1067 midi2ly.py:1072 musicxml2ly.py:2659
-#: main.cc:168 main.cc:180
+#: main.cc:169 main.cc:181
msgid "FILE"
msgstr "DOSIERO"
msgstr "aldoni UJOn al la inkluziva vojo"
#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:169
-#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:167
+#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:168
msgid "DIR"
msgstr "UJO"
msgstr "ÅOVO"
#: lilypond-book.py:157
-msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)"
+msgid "pad left side of music to align music in spite of uneven bar numbers (in mm)"
msgstr "Åovi maldekstran flankon de muziko por rektigi Äin malgraÅ la ne egalaj mezur-numeroj (en mm)"
#: lilypond-book.py:162
msgid "accidental typesetting list must begin with context-name: %s"
msgstr "kromsigna kompostada listo devas komenci per kuntekst-nomo': %s"
-#: accidental-engraver.cc:210
+#: accidental-engraver.cc:207
#, c-format
msgid "procedure or context-name expected for accidental rule, found %s"
msgstr "proceduro aÅĀ kuntekst-nomo estis atendata por kromsigna regulo, trovite %s"
msgid "natural alteration glyph not found"
msgstr "signobildo de natura aliigo ne estis trovata"
-#: all-font-metrics.cc:149
+#: all-font-metrics.cc:159
#, c-format
msgid "cannot find font: `%s'"
msgstr "ne eblas trovi tiparon: '%s'"
msgid "no heads for arpeggio found?"
msgstr "Äu neniu kapo por arpeÄo trovite?"
-#: auto-change-iterator.cc:74 change-iterator.cc:72
-#, c-format
-msgid "cannot change, already in translator: %s"
-msgstr "ne eblas ÅanÄi, jam estas en tradukilo: %s"
-
#: axis-group-engraver.cc:149
msgid "Axis_group_engraver: vertical group already has a parent"
msgstr "Axis_group_engraver: vertikala grupo jam havas praulon"
msgid "removing this vertical group"
msgstr "forigado de tiu Äi vertikala grupo"
-#: axis-group-interface.cc:714
+#: axis-group-interface.cc:716
#, c-format
msgid "\"%s\" is not a valid outside-staff-placement-directive"
msgstr "\"%s\" ne estas valida 'outside-staff-placement-directive'"
-#: axis-group-interface.cc:786
+#: axis-group-interface.cc:788
msgid "an outside-staff object should have a direction, defaulting to up"
msgstr "objekto 'outside-staff' devas havi direkton, ni aprioras supren"
msgstr "vostligo estis ekigata Äi tie"
#. We are completely screwed.
-#: beam-quanting.cc:839
+#: beam-quanting.cc:850
msgid "no viable initial configuration found: may not find good beam slope"
msgstr "neniu realigebla ek-agordado estis trovata: eble ne estos trovata bona vostliga inklino"
-#: beam.cc:181
+#: beam.cc:183
msgid "removing beam with no stems"
msgstr "ni forigas vostligon sen stangoj"
msgstr "ne eblas ÅanÄi '%s' al '%s'"
#. FIXME: constant error message.
-#: change-iterator.cc:93
+#: change-iterator.cc:67
msgid "cannot find context to switch to"
msgstr "ne eblas trovi kuntekston por alternative uzi"
+#. No enclosing context was found because the iterator's immediate
+#. context is the kind that was sought.
#. We could change the current translator's id, but that would make
#. errors hard to catch.
#.
#. last->translator_id_string () = get_change
#. ()->change_to_id_string ();
-#: change-iterator.cc:102
+#: change-iterator.cc:78
#, c-format
msgid "not changing to same context type: %s"
msgstr "ni ne ÅanÄas al sama kunteksta tipo: %s"
-#. FIXME: uncomprehensable message
-#: change-iterator.cc:106
+#. FIXME: incomprehensible message
+#: change-iterator.cc:82
msgid "none of these in my family"
msgstr "neniu el tiuj Äi en mia familio"
msgid "need symbol arguments for \\override and \\revert"
msgstr "necesas simbol-argumentoj por \\override kaj \\revert"
-#: context.cc:143
+#: context.cc:144
#, c-format
msgid "cannot find or create new `%s'"
msgstr "ne eblas trovi aÅ krei novan '%s'"
-#: context.cc:222
+#: context.cc:223
#, c-format
msgid "cannot find or create `%s' called `%s'"
msgstr "ne eblas trovi aÅ krei '%s' nomata '%s'"
-#: context.cc:419
+#: context.cc:416
#, c-format
msgid "cannot find or create: `%s'"
msgstr "ne eblas trovi aÅ krei: '%s'"
-#: context.cc:433
+#: context.cc:430
#, c-format
msgid "cannot find or create new Bottom = \"%s\""
msgstr "ne eblas trovi aÅ krei novan Bottom = \"%s\""
msgid "custos `%s' not found"
msgstr "custos '%s' ne estis trovata"
-#: dispatcher.cc:83
+#: dispatcher.cc:82
msgid "Event class should be a list"
msgstr "Event-klaso devas esti listo"
-#: dispatcher.cc:166
+#: dispatcher.cc:165
#, c-format
msgid "Junking event: %s"
msgstr "Rubaĵa evento: %s"
-#: dispatcher.cc:271
+#: dispatcher.cc:279
msgid "Attempting to remove nonexisting listener."
msgstr "Provo forigi neekzistantan aÅdanton."
-#: dispatcher.cc:297
+#: dispatcher.cc:305
msgid "Already listening to dispatcher, ignoring request"
msgstr "Jam aÅdadas la disdonilon, ni preteratentas la peton"
msgid "dot `%s' not found"
msgstr "punkto '%s' ne estis trovata"
-#: dynamic-engraver.cc:168
+#: dynamic-engraver.cc:169
#, c-format
msgid ""
"unknown crescendo style: %s\n"
"nekonata tipo de 'crescendo': %s\n"
"ni uzas apriore pinÄil-forman."
-#: dynamic-engraver.cc:233 slur-proto-engraver.cc:119
+#: dynamic-engraver.cc:234 slur-proto-engraver.cc:119
#, c-format
msgid "unterminated %s"
msgstr "nefinita %s"
msgid "unterminated extender"
msgstr "nefinigita etendigilo"
-#: flag.cc:134
+#: flag.cc:133
#, c-format
msgid "flag `%s' not found"
msgstr "flago '%s' ne estis trovata"
-#: flag.cc:154
+#: flag.cc:153
#, c-format
msgid "flag stroke `%s' not found"
msgstr "flag-streko '%s' ne estis trovata"
-#: font-config-scheme.cc:151 font-config.cc:53
+#: font-config-scheme.cc:151 font-config.cc:82
#, c-format
msgid "failed adding font directory: %s"
msgstr "malsukceso dum aldonado de tipara dosierujo: %s"
-#: font-config-scheme.cc:153 font-config.cc:55
+#: font-config-scheme.cc:153 font-config.cc:84
#, c-format
msgid "Adding font directory: %s"
msgstr "Aldonado de tipara dosierujo: %s"
msgid "Initializing FontConfig..."
msgstr "Ekigo de FontConfig..."
-#: font-config.cc:58
+#: font-config.cc:70
+#, c-format
+msgid "failed to add fontconfig configuration file `%s'"
+msgstr "malsukceso dum aldonado de tipar-agorda dosiero (fontconfig) '%s'"
+
+#: font-config.cc:73
+#, c-format
+msgid "Adding fontconfig configuration file: %s"
+msgstr "Aldonado de tipar-agorda dosiero (fontconfig): %s"
+
+#: font-config.cc:86
msgid "Building font database..."
msgstr "Konstruado de tipara datumbazo..."
msgid "Grob `%s' has no interface for property `%s'"
msgstr "La grob '%s' havas neniun interfacon por la atributo '%s'"
-#: grob-property.cc:35
+#: grob-property.cc:33
#, c-format
msgid "%d: %s"
msgstr "%d: %s"
-#: grob.cc:481
+#: grob.cc:492
#, c-format
msgid "ignored infinite %s-offset"
msgstr "preteratentis senliman %s-deÅovon"
msgid "unterminated hyphen; removing"
msgstr "nefinigita streketo; ni forigas"
-#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108
+#: includable-lexer.cc:71 lily-guile.cc:92 lily-parser-scheme.cc:108
#, c-format
msgid "cannot find file: `%s'"
msgstr "ne eblas trovi la dosieron: '%s'"
msgid "(search path: `%s')"
msgstr "(serÄvojo: '%s')"
-#: input.cc:138 source-file.cc:177 source-file.cc:192
+#: input.cc:138 source-file.cc:180 source-file.cc:195
msgid "position unknown"
msgstr "nekonata pozicio"
-#: key-engraver.cc:198
+#: key-engraver.cc:197
msgid "Incomplete keyAlterationOrder for key signature"
msgstr "Nekompleta keyAlterationOrder por antaÅsigno"
msgid "ligature was started here"
msgstr "kantligaturo estis komencata Äi tie"
-#: lily-guile.cc:93
+#: lily-guile.cc:94
#, c-format
msgid "(load path: `%s')"
msgstr "(Åarg-vojo: '%s')"
-#: lily-guile.cc:412
+#: lily-guile.cc:413
#, c-format
msgid "cannot find property type-check for `%s' (%s)."
msgstr "ne eblas trovi la econ 'type-check' por '%s' (%s)."
-#: lily-guile.cc:415
+#: lily-guile.cc:416
msgid "perhaps a typing error?"
msgstr "eble tajperaro?"
-#: lily-guile.cc:422
+#: lily-guile.cc:423
msgid "skipping assignment"
msgstr "ni preterpasas asignon"
msgid "type check for `%s' failed; value `%s' must be of type `%s'"
msgstr "kontrolo pri tipo por '%s' fiaskis; valoro '%s' devas esti el tipo '%s'"
-#: lily-lexer.cc:249
+#. Uh oh. unsmob<T> delivered 0, yet
+#. unsmob<T> delivers true. This means that unsmob<T> is a
+#. matching check from a base class of T, but var is of an
+#. incompatible derived type.
+#: lily-guile.cc:462
+msgid "Wrong kind of "
+msgstr "Malkorekta tipo de"
+
+#: lily-lexer.cc:251
msgid "include files are not allowed in safe mode"
msgstr "inkluziv-dosieroj ne estas permesataj en sekura reÄimo"
-#: lily-lexer.cc:276
+#: lily-lexer.cc:278
#, c-format
msgid "identifier name is a keyword: `%s'"
msgstr "identigila nomo estas Ålosilvorto: '%s'"
-#: lily-lexer.cc:297 lily-lexer.cc:310
+#: lily-lexer.cc:299 lily-lexer.cc:312
#, c-format
msgid "%s:EOF"
msgstr "%s:EOF"
+#: lily-modules.cc:81
+#, c-format
+msgid "Uninitialized variable `%s' in module (%s)"
+msgstr "Ne-ekigita variablo '%s' en modulo (%s)"
+
#: lily-parser-scheme.cc:80
#, c-format
msgid "Changing working directory to: `%s'"
msgid "Processing `%s'"
msgstr "Procezado de '%s'"
-#: lily-parser-scheme.cc:209
+#: lily-parser-scheme.cc:210
msgid "ly:parser-parse-string is only valid with a new parser. Use ly:parser-include-string instead."
msgstr "ly:parser-parse-string nur estas valida kun nova analizilo. Uzu ly:parser-include-string anstataÅe."
-#: lily-parser-scheme.cc:240
+#: lily-parser-scheme.cc:241
msgid "ly:parse-string-expression is only valid with a new parser. Use ly:parser-include-string instead."
msgstr "ly:parser-string-expression nur estas valida kun nova analizilo. Uzu ly:parser-include-string anstataÅe."
-#: lily-parser.cc:107
+#: lily-parser.cc:106
msgid "Parsing..."
msgstr "Analizado..."
-#: lookup.cc:181
+#: lookup.cc:178
#, c-format
msgid "Not drawing a box with negative dimension, %.2f by %.2f."
msgstr "Ni ne desegnas skatolon kun negativan dimension, %.2f oble %.2f."
msgid "argument of \\lyricsto should contain Lyrics context"
msgstr "argumento de \\lyricsto devas enhavi kuntekston Lyrics"
-#: lyric-combine-music-iterator.cc:349
+#: lyric-combine-music-iterator.cc:344
#, c-format
msgid "cannot find %s `%s'"
msgstr "ne eblas trovi %s '%s'"
-#: main.cc:105
+#: main.cc:106
#, c-format
msgid ""
"This program is free software. It is covered by the GNU General Public\n"
"Publika Permeso kaj vi estas bonvena ÅanÄi Äin kaj/aÅĀ re-disdoni kopiojn de Äi\n"
"laÅ iaj kondiÄoj. LanÄu kiel '%s --warranty' por pli da informo.\n"
-#: main.cc:111
+#: main.cc:112
msgid ""
" This program is free software; you can redistribute it and/or\n"
"modify it under the terms of the GNU General Public License as \n"
"Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
"Boston, MA 02111-1307, USA.\n"
-#: main.cc:149
+#: main.cc:150
msgid "SYM[=VAL]"
msgstr "SIM[=VAL]"
-#: main.cc:150
+#: main.cc:151
msgid ""
"set Scheme option SYM to VAL (default: #t).\n"
"Use -dhelp for help."
"difini modifilon Scheme SIM al VAL (apriore: *t).\n"
"Uzu -dhelp por ricevi helpon."
-#: main.cc:154
+#: main.cc:155
msgid "EXPR"
msgstr "ESPR"
-#: main.cc:154
+#: main.cc:155
msgid "evaluate scheme code"
msgstr "analizi kodumaron de scheme"
#. Bug in option parser: --output =foe is taken as an abbreviation
#. for --output-format.
-#: main.cc:157
+#: main.cc:158
msgid "FORMATs"
msgstr "FORMOj"
-#: main.cc:157
+#: main.cc:158
msgid "dump FORMAT,... Also as separate options:"
msgstr "Åuti FORMOn,... AnkaÅ kiel apartaj modifiloj:"
-#: main.cc:158
+#: main.cc:159
msgid "generate PDF (default)"
msgstr "generi PDF (apriore)"
-#: main.cc:159
+#: main.cc:160
msgid "generate PNG"
msgstr "generi PNG"
-#: main.cc:160
+#: main.cc:161
msgid "generate PostScript"
msgstr "generi PostScript"
-#: main.cc:161
+#: main.cc:162
msgid "generate big PDF files"
msgstr "generi grandajn PDF-dosierojn"
-#: main.cc:164
+#: main.cc:165
msgid "FIELD"
msgstr "KAMPO"
-#: main.cc:164
+#: main.cc:165
msgid ""
"dump header field FIELD to file\n"
"named BASENAME.FIELD"
"Åuti kap-kampo KAMPO al dosiero\n"
"nomata BAZNOMO.KAMPO"
-#: main.cc:167
+#: main.cc:168
msgid "add DIR to search path"
msgstr "aldoni UJOn al la serÄvojo"
-#: main.cc:168
+#: main.cc:169
msgid "use FILE as init file"
msgstr "uzi DOSIEROn kiel ekig-dosieron"
-#: main.cc:171
+#: main.cc:172
msgid "USER, GROUP, JAIL, DIR"
msgstr "UZANTO, GRUPO, KAÄO, UJO"
-#: main.cc:171
+#: main.cc:172
msgid ""
"chroot to JAIL, become USER:GROUP\n"
"and cd into DIR"
"chroot al KAÄO, fariÄi UZANTO:GRUPO\n"
"kaj cd en UJOn"
-#: main.cc:176
+#: main.cc:177
msgid ""
"print log messages according to LOGLEVEL. Possible values are:\n"
"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG."
"printi protokol-mesaÄojn laÅ PROTOKOLNIVELO. Eblaj valoroj estas:\n"
"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (apriore) kaj DEBUG."
-#: main.cc:180
+#: main.cc:181
msgid "write output to FILE (suffix will be added)"
msgstr "skribi eligon al DOSIERO (sufikso estos aldonata)"
-#: main.cc:181
+#: main.cc:182
msgid "relocate using directory of lilypond program"
msgstr "relokigi uzante dosierujon de la programo lilypond"
-#: main.cc:182
+#: main.cc:183
msgid "no progress, only error messages (equivalent to loglevel=ERROR)"
msgstr "sen progreso, nur eraraj mesaÄoj (egale al loglevel=ERROR)"
-#: main.cc:184
+#: main.cc:185
msgid "be verbose (equivalent to loglevel=DEBUG)"
msgstr "esti detalema (egale al loglevel=DEBUG)"
#. Do not update the copyright years here, run `make grand-replace'
-#: main.cc:263
+#: main.cc:264
#, c-format
msgid ""
"Copyright (c) %s by\n"
"%s kaj aliaj."
#. No version number or newline here. It confuses help2man.
-#: main.cc:301
+#: main.cc:302
#, c-format
msgid "Usage: %s [OPTION]... FILE..."
msgstr "Uzado: %s [MODIFILO]... DOSIERO..."
-#: main.cc:303
+#: main.cc:304
msgid "Typeset music and/or produce MIDI from FILE."
msgstr "Kompostado de muziko kaj/aÅ produktado de MIDI el DOSIERO."
-#: main.cc:305
+#: main.cc:306
msgid "LilyPond produces beautiful music notation."
msgstr "LilyPond produktas belan muzikan notadon."
-#: main.cc:307
+#: main.cc:308
#, c-format
msgid "For more information, see %s"
msgstr "Por pli da informo, vidu %s"
-#: main.cc:309
+#: main.cc:310
msgid "Options:"
msgstr "Modifiloj:"
-#: main.cc:376
+#: main.cc:377
#, c-format
msgid "expected %d arguments with jail, found: %u"
msgstr "estis atendataj %d argumentoj kun kaÄo, estis trovataj: %u"
-#: main.cc:390
+#: main.cc:391
#, c-format
msgid "no such user: %s"
msgstr "neniu tia uzanto: %s"
-#: main.cc:392
+#: main.cc:393
#, c-format
msgid "cannot get user id from user name: %s: %s"
msgstr "ne eblas preni uzanto-id el uzant-nomo: %s: %s"
-#: main.cc:407
+#: main.cc:408
#, c-format
msgid "no such group: %s"
msgstr "neniu tia grupo: %s"
-#: main.cc:409
+#: main.cc:410
#, c-format
msgid "cannot get group id from group name: %s: %s"
msgstr "ne eblas preni grupo-id el grup-nomo: %s: %s"
-#: main.cc:417
+#: main.cc:418
#, c-format
msgid "cannot chroot to: %s: %s"
msgstr "ne eblas apliki 'chroot' al: %s: %s"
-#: main.cc:424
+#: main.cc:425
#, c-format
msgid "cannot change group id to: %d: %s"
msgstr "ne eblas ÅanÄi grupo-id al: %d: %s"
-#: main.cc:430
+#: main.cc:431
#, c-format
msgid "cannot change user id to: %d: %s"
msgstr "ne eblas ÅanÄi uzant-id al: %d: %s"
-#: main.cc:436
+#: main.cc:437
#, c-format
msgid "cannot change working directory to: %s: %s"
msgstr "ne eblas ÅanÄi aktualan dosierujon al: %s: %s"
-#: main.cc:825
+#: main.cc:826
#, c-format
msgid "exception caught: %s"
msgstr "kaptita krom-okazo: %s"
#. FIXME: constant error message.
-#: mark-engraver.cc:156
+#: mark-engraver.cc:150
msgid "rehearsalMark must have integer value"
msgstr "'rehearsalMark' devas havis entjeran valoron"
-#: mark-engraver.cc:162
+#: mark-engraver.cc:156
msgid "mark label must be a markup object"
msgstr "mark-etikedo devas estis markada objekto"
msgid "unexpected case fall-through"
msgstr "fiasko pro neatendita okazo"
-#: midi-control-function-performer.cc:109 staff-performer.cc:152
+#: midi-control-function-performer.cc:107 staff-performer.cc:153
#, c-format
msgid "ignoring out-of-range value change for MIDI property `%s'"
msgstr "ni preteratentas valorajn ÅanÄojn for de intervalo por la atributo de MIDI '%s'"
msgid "usable-duration-logs must be a non-empty list. Falling back to whole rests."
msgstr "'usable-duration-logs' devas esti ne-malplena listo. Ni revenas al plenaj paÅzoj."
-#: music.cc:149
+#: music.cc:150
#, c-format
msgid "octave check failed; expected \"%s\", found: \"%s\""
msgstr "kontrolo de okto fiaskis; atendite \"%s\", trovite: \"%s\""
msgid "NoteEvent without pitch"
msgstr "NoteEvent sen tonalto"
-#: open-type-font.cc:46
+#: open-type-font.cc:45
#, c-format
msgid "cannot allocate %lu bytes"
msgstr "ne eblas rezervi %lu bajtojn"
-#: open-type-font.cc:50
+#: open-type-font.cc:49
#, c-format
msgid "cannot load font table: %s"
msgstr "ne eblas Åargi je tipara tabelo: %s"
-#: open-type-font.cc:55
+#: open-type-font.cc:54
#, c-format
msgid "FreeType error: %s"
msgstr "Eraro de FreeType: %s"
-#: open-type-font.cc:112
+#: open-type-font.cc:115
#, c-format
msgid "unsupported font format: %s"
msgstr "ne subtenata formo de tiparo: %s"
-#: open-type-font.cc:114
+#: open-type-font.cc:117
#, c-format
msgid "error reading font file %s: %s"
msgstr "eraro dum legado de tipara dosiero %s: %s"
-#: open-type-font.cc:189
+#: open-type-font.cc:192
#, c-format
msgid "FT_Get_Glyph_Name () Freetype error: %s"
msgstr "Eraro de FT_Get_Glyph_Name () en Freetype: %s"
-#: open-type-font.cc:337 pango-font.cc:257
+#: open-type-font.cc:340 pango-font.cc:258
#, c-format
msgid "FT_Get_Glyph_Name () error: %s"
msgstr "Eraro de FT_Get_Glyph_Name (): %s"
msgid "best score for this sys-count: %f"
msgstr "plej bona poento por tiu Äi 'sys-count': %f"
-#: optimal-page-breaking.cc:216 page-turn-page-breaking.cc:248
+#: optimal-page-breaking.cc:216 page-turn-page-breaking.cc:249
#: paper-score.cc:156
msgid "Drawing systems..."
msgstr "Desegnado de sistemoj..."
-#: output-def.cc:230
+#: output-def.cc:229
msgid "margins do not fit with line-width, setting default values"
msgstr "marÄenoj ne akordas kun lini-larÄo, ni uzas apriorajn valorojn"
-#: output-def.cc:237
+#: output-def.cc:236
msgid "systems run off the page due to improper paper settings, setting default values"
msgstr "sistemoj iras preter la paÄo pro malÄustaj paperaj agordoj, ni uzas apriorajn valorojn"
msgid "page %d has been compressed"
msgstr "la paÄo %d estas densigita"
-#: page-layout-problem.cc:402
+#: page-layout-problem.cc:400
msgid "A page layout problem has been initiated that cannot accommodate footnotes."
msgstr "PaÄ-aranÄa problemo estis ekigata, kaj Äi ne povas enteni piednotojn."
-#: page-layout-problem.cc:731
+#: page-layout-problem.cc:729
msgid "ragged-bottom was specified, but page must be compressed"
msgstr "'ragged-bottom' estis indikata, sed paÄo devas esti densigita"
-#: page-layout-problem.cc:734
+#: page-layout-problem.cc:732
#, c-format
msgid "compressing over-full page by %.1f staff-spaces"
msgstr "ni densigas tra tuta paÄo per %.1f liniar-spacoj"
-#: page-layout-problem.cc:1199
+#: page-layout-problem.cc:1197
msgid "staff-affinities should only decrease"
msgstr "'staff-affinities' devus nur malpliiÄi"
-#: page-turn-page-breaking.cc:168
+#: page-turn-page-breaking.cc:169
#, c-format
msgid "page-turn-page-breaking: breaking from %d to %d"
msgstr "'page-turn-page-breaking': saltado de %d al %d"
-#: page-turn-page-breaking.cc:217
+#: page-turn-page-breaking.cc:218
msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number."
msgstr "ne eblas adapti la unuan paÄsalto sur unuopan paÄon. Konsideru difino de 'first-page-number' al para numero."
-#: page-turn-page-breaking.cc:230
+#: page-turn-page-breaking.cc:231
#, c-format
msgid "Calculating page and line breaks (%d possible page breaks)..."
msgstr "Kalkulado de paÄa kaj liniaj saltoj (%d eblaj paÄsaltoj)..."
-#: page-turn-page-breaking.cc:300
+#: page-turn-page-breaking.cc:301
#, c-format
msgid "break starting at page %d"
msgstr "salto komencanta je paÄo %d"
-#: page-turn-page-breaking.cc:301
+#: page-turn-page-breaking.cc:302
#, c-format
msgid "\tdemerits: %f"
msgstr "\t:poentaro %f"
-#: page-turn-page-breaking.cc:302
+#: page-turn-page-breaking.cc:303
#, c-format
msgid "\tsystem count: %d"
msgstr "\tnombro da sistemoj: %d"
-#: page-turn-page-breaking.cc:303
+#: page-turn-page-breaking.cc:304
#, c-format
msgid "\tpage count: %d"
msgstr "\tnombro da paÄoj: %d"
-#: page-turn-page-breaking.cc:304
+#: page-turn-page-breaking.cc:305
#, c-format
msgid "\tprevious break: %d"
msgstr "\tantaÅa salto: %d"
-#: pango-font.cc:246
+#: pango-font.cc:247
#, c-format
msgid "no glyph for character U+%0X in font `%s'"
msgstr "ne estas signobildo por la signo U+%0X en la tiparo '%s'"
-#: pango-font.cc:273
+#: pango-font.cc:274
#, c-format
msgid ""
"Glyph has no name, but font supports glyph naming.\n"
"Signobildo ne havas nomon, sed la tiparo subtenas nomigon de signobildoj.\n"
"Ni preterpasas signobildon U+%0X, dosiero %s"
-#: pango-font.cc:323
+#: pango-font.cc:324
#, c-format
msgid "no PostScript font name for font `%s'"
msgstr "neniu tiparnomo PostScript por la tiparo '%s'"
-#: pango-font.cc:373
+#: pango-font.cc:374
msgid "FreeType face has no PostScript font name"
msgstr "Tiparo FreeType ne havas tiparnomon PostScript"
-#: paper-book.cc:201
+#: paper-book.cc:200
#, c-format
msgid "program option -dprint-pages not supported by backend `%s'"
msgstr "programa modifilo -dprint-pages ne estas subtenata de la intern-interfaco '%s'"
-#: paper-book.cc:220
+#: paper-book.cc:219
#, c-format
msgid "program option -dpreview not supported by backend `%s'"
msgstr "programa modifilo -dpreview ne estas subtenata de la intern-interfaco '%s'"
msgid "Preprocessing graphical objects..."
msgstr "AntaÅprocezado de grafikaj objektoj..."
-#: parse-scm.cc:128
+#: parse-scm.cc:124
msgid "GUILE signaled an error for the expression beginning here"
msgstr "GUILE signalis eraron por la esprimo komenciÄanta Äi tie"
msgid "unterminated percent repeat"
msgstr "nefinigita elcenta ripeto"
-#: performance.cc:55
+#: performance.cc:76
msgid "Track..."
msgstr "Sekvado..."
-#: performance.cc:90
+#: performance.cc:126
#, c-format
msgid "MIDI output to `%s'..."
msgstr "MIDI-eligo al '%s'..."
msgid "Failed octave check, got: "
msgstr "Malsukcesis kontrolo de okto, oni havis: "
-#: relocate.cc:52
+#: relocate.cc:56
#, c-format
msgid "Setting %s to %s"
msgstr "Akomodado de %s al %s"
#. this warning should only be printed in debug mode!
-#: relocate.cc:73
+#: relocate.cc:77
#, c-format
msgid "no such file: %s for %s"
msgstr "ne tia dosiero: %s por %s"
#. this warning should only be printed in debug mode!
#. this warning should only be printed in debug mode
-#: relocate.cc:84 relocate.cc:102
+#: relocate.cc:88 relocate.cc:106
#, c-format
msgid "no such directory: %s for %s"
msgstr "ne tia dosierujo: %s por %s"
-#: relocate.cc:93
+#: relocate.cc:97
#, c-format
msgid "%s=%s (prepend)\n"
msgstr "%s=%s (antaÅmeti)\n"
msgid "Relocation : from cwd: argv0=%s\n"
msgstr "Relokigo : de cwd: argv0=%s\n"
-#: relocate.cc:194
+#: relocate.cc:196
#, c-format
msgid ""
"Relocation: from PATH=%s\n"
"Relokigo: de VOJO=%s\n"
"argv0=%s\n"
-#: relocate.cc:220
+#: relocate.cc:222
msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
msgstr "LILYPONDPREFIX estas malaktuala, uzu LILYPOND_DATADIR"
-#: relocate.cc:345
+#: relocate.cc:347
#, c-format
msgid "Relocation file: %s"
msgstr "Relokiga dosiero: %s"
-#: relocate.cc:349 source-file.cc:65
+#: relocate.cc:351 source-file.cc:65
#, c-format
msgid "cannot open file: `%s'"
msgstr "ne eblas malfermi dosieron: '%s'"
-#: relocate.cc:379
+#: relocate.cc:381
#, c-format
msgid "Unknown relocation command %s"
msgstr "Nekonata relokiga komando %s"
-#: rest-collision.cc:153
+#: rest-collision.cc:154
msgid "cannot resolve rest collision: rest direction not set"
msgstr "ne eblas solvi paÅzan kolizion: la paÅz-direkto ne estis difinata"
-#: rest-collision.cc:164 rest-collision.cc:273
+#: rest-collision.cc:165 rest-collision.cc:274
msgid "too many colliding rests"
msgstr "tro multe da koliziantaj paÅzoj"
msgid "rest `%s' not found"
msgstr "paÅzo '%s' ne estis trovata"
-#: score-engraver.cc:79
+#: score-engraver.cc:77
#, c-format
msgid "cannot find `%s'"
msgstr "ne eblas trovi '%s'"
-#: score-engraver.cc:81
+#: score-engraver.cc:79
msgid "Music font has not been installed properly."
msgstr "Muzika tiparo ne estas instalita Äuste."
-#: score-engraver.cc:83
+#: score-engraver.cc:81
#, c-format
msgid "Search path `%s'"
msgstr "SerÄvojo '%s'"
-#: score-engraver.cc:85
+#: score-engraver.cc:83
msgid "Aborting"
msgstr "Ni Äesas"
-#: score.cc:160
+#: score.cc:161
msgid "already have music in score"
msgstr "jam estas muziko en la partituro"
-#: score.cc:161
+#: score.cc:163
msgid "this is the previous music"
msgstr "tio Äi estas la antaÅa muziko"
-#: score.cc:166
+#: score.cc:169
msgid "errors found, ignoring music expression"
msgstr "eraroj trovitaj, ni preterpasas la muzikan esprimon"
msgid "cannot end %s"
msgstr "ne eblas finigi %s"
-#: slur.cc:434
+#: slur.cc:436
#, c-format
msgid "Ignoring grob for slur: %s. avoid-slur not set?"
msgstr "Preteratento de 'grob' por ligarko: %s. Äu 'avoid-slur' ne estas difinita?"
msgid "weird stem size, check for narrow beams"
msgstr "stranga grando de stango, kontrolu mallarÄajn vostligojn"
-#: system.cc:201
+#: system.cc:202
#, c-format
msgid "Element count %d"
msgstr "Nombro da elementoj: %d"
-#: system.cc:512
+#: system.cc:513
#, c-format
msgid "Grob count %d"
msgstr "Nombro da 'grob': %d"
#. TODO: Also print the arguments of the markup!
-#: text-interface.cc:138
+#: text-interface.cc:139
#, c-format
msgid "Markup depth exceeds maximal value of %d; Markup: %s"
msgstr "Markada profundo superas maksimuman valoron %d; Markado: %s"
msgid "unterminated tie"
msgstr "nefinigita ligaturo"
-#: tie-engraver.cc:373
+#: tie-engraver.cc:377
msgid "lonely tie"
msgstr "sola ligaturo"
msgid "strange time signature found: %d/%d"
msgstr "stranga takt-indiko estis trovata: %d/%d"
-#: translator-ctors.cc:65
+#: translator-ctors.cc:68
#, c-format
msgid "unknown translator: `%s'"
msgstr "nekonata tradukilo: '%s'"
msgid "fatal error. Couldn't find type: %s"
msgstr "fatala eraro. Ne eblis trovi tipon: %s"
-#: translator-group.cc:188
+#: translator-group.cc:187
#, c-format
msgid "cannot find: `%s'"
msgstr "ne eblas trovi: '%s'"
-#: translator.cc:320
+#: translator.cc:310
#, c-format
msgid "Two simultaneous %s events, junking this one"
msgstr "Du samtempaj eventoj %s, ni forĵetas tiun Äi"
-#: translator.cc:321
+#: translator.cc:311
#, c-format
msgid "Previous %s event here"
msgstr "AntaÅa evento %s Äi tie"
msgid "giving up"
msgstr "ni rezignas"
-#: parser.yy:463 parser.yy:847 parser.yy:928 parser.yy:1150
+#: parser.yy:476 parser.yy:947 parser.yy:1028 parser.yy:1248
msgid "bad expression type"
msgstr "malÄusta esprim-tipo"
-#: parser.yy:759 parser.yy:1361 parser.yy:1406
+#: parser.yy:859 parser.yy:1458 parser.yy:1503
msgid "not a context mod"
msgstr "ne estas kunteksta 'mod'"
-#: parser.yy:954
+#: parser.yy:1054
msgid "Missing music in \\score"
msgstr "Mankas muziko en \\score"
-#: parser.yy:991
+#: parser.yy:1091
msgid "\\paper cannot be used in \\score, use \\layout instead"
msgstr "\\paper ne povas esti uzata en \\score, uzu \\layout anstataÅe"
-#: parser.yy:1027
+#: parser.yy:1126
msgid "Spurious expression in \\score"
msgstr "Hazarda esprimo en \\score"
-#: parser.yy:1057
+#: parser.yy:1156
msgid "need \\paper for paper block"
msgstr "necesas \\paper por papera bloko"
-#: parser.yy:1234
+#: parser.yy:1331
msgid "music expected"
msgstr "estis atendata muziko"
-#: parser.yy:1244 parser.yy:1278
+#: parser.yy:1341 parser.yy:1375
msgid "unexpected post-event"
msgstr "malatendita post-evento"
-#: parser.yy:1286
+#: parser.yy:1383
msgid "Ignoring non-music expression"
msgstr "Ni preterpasas ne-muzikan esprimon"
-#: parser.yy:1587
+#: parser.yy:1691
msgid "not a symbol"
msgstr "ne estas simbolo"
-#: parser.yy:2337 parser.yy:2451 parser.yy:2464 parser.yy:2473
+#: parser.yy:2491 parser.yy:2605 parser.yy:2618 parser.yy:2627
msgid "bad grob property path"
msgstr "malÄusta vojo de eco de 'grob'"
-#: parser.yy:2431
+#: parser.yy:2585
msgid "only \\consists and \\remove take non-string argument."
msgstr "nur \\consists kaj \\remove prenas ne-Äenan argumenton."
-#: parser.yy:2492
+#: parser.yy:2646
msgid "bad context property path"
msgstr "malÄusta vojo de eco de kunteksto"
-#: parser.yy:2593
+#: parser.yy:2733
msgid "simple string expected"
msgstr "estis atendata simpla Äeno"
-#: parser.yy:2611
+#: parser.yy:2750
msgid "symbol expected"
msgstr "simbolo estis atendata"
-#: parser.yy:2747
+#: parser.yy:2886
msgid "not a rhythmic event"
msgstr "ne estas ritma evento"
-#: parser.yy:2797
+#: parser.yy:2936
msgid "post-event expected"
msgstr "post-evento estis atendata"
-#: parser.yy:2806 parser.yy:2811
+#: parser.yy:2945 parser.yy:2950
msgid "have to be in Lyric mode for lyrics"
msgstr "devas esti en reÄimo Lyric por tekstoj"
-#: parser.yy:2887
+#: parser.yy:3026
msgid "expecting string or post-event as script definition"
msgstr "ni atendas Äenon aÅĀ post-eventon kiel difinon de skripto"
-#: parser.yy:2991
+#: parser.yy:3130
msgid "not an articulation"
msgstr "ne estas artikulacio"
-#: parser.yy:3063 parser.yy:3106
+#: parser.yy:3202 parser.yy:3245
msgid "not a duration"
msgstr "ne estas daÅro"
-#: parser.yy:3127
+#: parser.yy:3266
msgid "bass number expected"
msgstr "estis atendata bas-simbolo"
-#: parser.yy:3219
+#: parser.yy:3358
msgid "have to be in Note mode for notes"
msgstr "devas esti en reÄimo Note por notoj"
-#: parser.yy:3258
+#: parser.yy:3397
msgid "have to be in Chord mode for chords"
msgstr "devas esti en reÄimo Chord por akordoj"
-#: parser.yy:3301
+#: parser.yy:3440
msgid "markup outside of text script or \\lyricmode"
msgstr "markado for de teksta skripto aÅ \\lyricmode"
-#: parser.yy:3306
+#: parser.yy:3445
msgid "unrecognized string, not in text script or \\lyricmode"
msgstr "nerekonita Äeno, ne estas en teksta skripto aÅ \\lyricmode"
-#: parser.yy:3458 parser.yy:3467
+#: parser.yy:3597 parser.yy:3606
msgid "not an unsigned integer"
msgstr "ne estas sensigna entjero"
-#: parser.yy:3541
+#: parser.yy:3693
msgid "not a markup"
msgstr "ne estas markado"
-#: lexer.ll:192
+#: lexer.ll:193
msgid "stray UTF-8 BOM encountered"
msgstr "perdita UTF-8 BOM aperis"
-#: lexer.ll:195
+#: lexer.ll:196
msgid "Skipping UTF-8 BOM"
msgstr "Preterpasado de UTF-8 BOM"
-#: lexer.ll:247
+#: lexer.ll:248
#, c-format
msgid "Renaming input to: `%s'"
msgstr "Renomigo de la enigo al: '%s'"
-#: lexer.ll:264
+#: lexer.ll:265
msgid "quoted string expected after \\version"
msgstr "citita Äeno estas atendata post \\version"
-#: lexer.ll:268
+#: lexer.ll:269
msgid "quoted string expected after \\sourcefilename"
msgstr "citita Äeno estas atendata post \\sourcefilename"
-#: lexer.ll:272
+#: lexer.ll:273
msgid "integer expected after \\sourcefileline"
msgstr "entjero estas atendata post \\sourcefileline"
-#: lexer.ll:299
+#: lexer.ll:300
msgid "\\maininput not allowed outside init files"
msgstr "\\maininput ne estas permesata ekstere de dosieroj 'init'"
-#: lexer.ll:323
+#: lexer.ll:324
#, c-format
msgid "wrong or undefined identifier: `%s'"
msgstr "malÄusta aÅ nedifinita identigilo: '%s'"
-#: lexer.ll:348
+#: lexer.ll:349
msgid "string expected after \\include"
msgstr "Äeno estas atendata post \\include"
-#: lexer.ll:358
+#: lexer.ll:359
msgid "end quote missing"
msgstr "fina citilo mankas"
-#: lexer.ll:713
+#: lexer.ll:714
msgid "EOF found inside a comment"
msgstr "EOF estis trovata interne de komento"
-#: lexer.ll:718
+#: lexer.ll:719
msgid "EOF found inside string"
msgstr "EOF estis trovata ene de Äeno"
-#: lexer.ll:733
+#: lexer.ll:734
msgid "Unfinished main input"
msgstr "Nefinigita Äefenigo"
-#: lexer.ll:804
+#: lexer.ll:805
#, c-format
msgid "invalid character: `%s'"
msgstr "malvalida signo: '%s'"
-#: lexer.ll:924
+#: lexer.ll:925
#, c-format
msgid "unknown escaped string: `\\%s'"
msgstr "nekonata eskapita Äeno: '\\%s'"
-#: lexer.ll:944
+#: lexer.ll:945
#, c-format
msgid "undefined character or shorthand: %s"
msgstr "nedifinita signo aÅ mallongigo: %s"
-#: lexer.ll:1235
+#: lexer.ll:1236
msgid "non-UTF-8 input"
msgstr "ne-unikoda enigo"
-#: lexer.ll:1279
+#: lexer.ll:1280
#, c-format
msgid "Invalid version string \"%s\""
msgstr "Malvalida versio-Äeno \"%s\""
-#: lexer.ll:1284
+#: lexer.ll:1285
#, c-format
msgid "file too old: %s (oldest supported: %s)"
msgstr "dosiero tro malnova: %s (pli malnova subtenata: %s)"
-#: lexer.ll:1285
+#: lexer.ll:1286
msgid "consider updating the input with the convert-ly script"
msgstr "konsideru Äisdatigi la enigon per la skripto 'convert-ly'"
-#: lexer.ll:1291
+#: lexer.ll:1292
#, c-format
msgid "program too old: %s (file requires: %s)"
msgstr "programo tro malnova: %s (la dosiero postulas: %s)"
msgid "`~a' failed (~a)\n"
msgstr "'~a' fiaskis (~a)\n"
-#: backend-library.scm:94
+#: backend-library.scm:108
#, scheme-format
msgid "Converting to `~a'...\n"
msgstr "Konvertado al '~a'...\n"
#. Do not try to guess the name of the png file,
#. GS produces PNG files like BASE-page%d.png.
-#: backend-library.scm:103
+#: backend-library.scm:118
#, scheme-format
msgid "Converting to ~a..."
msgstr "Konvertado al ~a..."
-#: backend-library.scm:141
+#: backend-library.scm:134
+#, scheme-format
+msgid "Copying to `~a'...\n"
+msgstr "Kopiado al '~a'...\n"
+
+#: backend-library.scm:200
+#, scheme-format
+msgid "Deleting `~a'...\n"
+msgstr "Forigado de '~a'...\n"
+
+#: backend-library.scm:219
#, scheme-format
msgid "Writing header field `~a' to `~a'..."
msgstr "Skribado de kapa kampo '~a' al '~a'..."
-#: backend-library.scm:190
+#: backend-library.scm:268
#, scheme-format
msgid "missing stencil expression `~S'"
msgstr "mankas esprimo de 'stencil' '~S'"
msgid "Undefined parent event class `~S'"
msgstr "nekonata patra event-klaso '~S'"
-#: define-markup-commands.scm:1062
+#: define-markup-commands.scm:1098
msgid "no systems found in \\score markup, does it have a \\layout block?"
msgstr "neniu sistemo estis trovata en markado \\score, Äu Äi havas blokon \\layout?"
-#: define-markup-commands.scm:2886
+#: define-markup-commands.scm:2922
#, scheme-format
msgid "Cannot find glyph ~a"
msgstr "Ne eblas trovi signobildon ~a"
-#: define-markup-commands.scm:3362
+#: define-markup-commands.scm:3398
#, scheme-format
msgid "no brace found for point size ~S "
msgstr "neniu kurbkrampo estis trovata por la punkta grando ~S "
-#: define-markup-commands.scm:3363
+#: define-markup-commands.scm:3399
#, scheme-format
msgid "defaulting to ~S pt"
msgstr "apriore al ~S pt"
-#: define-markup-commands.scm:3615
+#: define-markup-commands.scm:3643
#, scheme-format
msgid "not a valid duration string: ~a"
msgstr "ne estas valida daÅro-Äeno: ~a"
-#: define-markup-commands.scm:3826
+#: define-markup-commands.scm:3854
#, scheme-format
msgid "not a valid duration string: ~a - ignoring"
msgstr "ne estas valida daÅro-Äeno: ~a - ni preteratentas"
-#: define-music-types.scm:797
+#: define-music-types.scm:803
#, scheme-format
msgid "symbol expected: ~S"
msgstr "atendata simbolo: ~S"
-#: define-music-types.scm:800
+#: define-music-types.scm:806
#, scheme-format
msgid "cannot find music object: ~S"
msgstr "ne eblas trovi muzik-objekton: ~S"
-#: define-music-types.scm:820
+#: define-music-types.scm:826
#, scheme-format
msgid "bad make-music argument: ~S"
msgstr "malÄusta argumento make-music: ~S"
-#: define-note-names.scm:972
+#: define-note-names.scm:1000
msgid "Select note names language."
msgstr "Elekti lingvon de not-nomoj."
-#: define-note-names.scm:978
+#: define-note-names.scm:1006
#, scheme-format
msgid "Using `~a' note names..."
msgstr "Aplikado de not-nomoj '~a'..."
-#: define-note-names.scm:981
+#: define-note-names.scm:1009
#, scheme-format
msgid "Could not find language `~a'. Ignoring."
msgstr "Ne eblis trovi la lingvon '~a'. Preterpaso."
msgid "cannot find description for property ~S (~S)"
msgstr "ne eblas trovi priskribon por la atributo ~S (~S)"
-#: flag-styles.scm:162
+#: flag-styles.scm:155
#, scheme-format
msgid "flag stroke `~a' or `~a' not found"
msgstr "flag-streko '~a' aÅ '~a' ne estis trovata"
-#: framework-eps.scm:108
+#: framework-eps.scm:112
#, scheme-format
msgid "Writing ~a..."
msgstr "Skribado de ~a..."
msgid "do not know how to embed font ~s ~s ~s"
msgstr "ni ne scias kiel enkorpigi la tiparon ~s ~s ~s"
-#: framework-ps.scm:729
+#: framework-ps.scm:723
msgid ""
"\n"
"The PostScript backend does not support the\n"
msgid "Error in beam quanting. Expected ~S 0, found ~S."
msgstr "Eraro en kalkulado de vostligo. Atendante ~S 0, trovis ~S."
-#: lily-library.scm:350
+#: lily-library.scm:333
msgid "Music unsuitable for context-mod"
msgstr "La muziko ne taÅgas por 'context-mod'"
-#: lily-library.scm:405
+#: lily-library.scm:388
#, scheme-format
msgid "Cannot find context-def \\~a"
msgstr "Ne eblas trovi context-def \\~a"
-#: lily-library.scm:421
+#: lily-library.scm:404
msgid "Music unsuitable for output-def"
msgstr "La muziko ne taÅgas por output-def"
-#: lily-library.scm:921
+#: lily-library.scm:904
msgid ""
"Find the index between @var{start} and @var{end} (an integer)\n"
"which produces the closest match to @var{target-val} if\n"
"kiu produktas plej bonan kongruon al @var{target-val} se\n"
"aplikata al la funkcio @var{getter}."
-#: lily-library.scm:1015
+#: lily-library.scm:998
#, scheme-format
msgid "unknown unit: ~S"
msgstr "nekonata unuo: ~S"
-#: lily-library.scm:1040
+#: lily-library.scm:1023
#, scheme-format
msgid "no \\version statement found, please add~afor future compatibility"
msgstr "neniu komando \\version estis trovata, bonvolu aldoni ~a por estonta kongrueco"
-#: lily.scm:75
+#: lily.scm:93
msgid "call-after-session used after session start"
msgstr "call-after-session estis uzata post komenco de seanco"
-#: lily.scm:93
+#: lily.scm:111
msgid "define-session used after session start"
msgstr "define-session estis uzata post komenco de seanco"
-#: lily.scm:399
+#: lily.scm:417
msgid "Using (ice-9 curried-definitions) module\n"
msgstr "Ni uzas la modulon (ice-9 curried-definitions)\n"
-#: lily.scm:402
+#: lily.scm:420
msgid "Guile 1.8\n"
msgstr "Guile 1.8\n"
-#: lily.scm:459
+#: lily.scm:477
#, scheme-format
msgid "cannot find: ~A"
msgstr "ne eblas trovi: ~A"
-#: lily.scm:886
+#: lily.scm:903
msgid "Success: compilation successfully completed"
msgstr "Sukceso: la kompilado sukcese plenumiÄis"
-#: lily.scm:887
+#: lily.scm:904
msgid "Compilation completed with warnings or errors"
msgstr "La kompilado plenumiÄis kun avertoj aÅ eraroj"
-#: lily.scm:948
+#: lily.scm:965
#, scheme-format
msgid "job ~a terminated with signal: ~a"
msgstr "la laboro ~a finis kun signalo: ~a"
-#: lily.scm:951
+#: lily.scm:968
#, scheme-format
msgid ""
"logfile ~a (exit ~a):\n"
"protokol-dosiero ~a (eliro ~a):\n"
"~a"
-#: lily.scm:973 lily.scm:1062
+#: lily.scm:990 lily.scm:1079
#, scheme-format
msgid "failed files: ~S"
msgstr "fiaskintajn dosieroj: ~S"
-#: lily.scm:1053
+#: lily.scm:1070
#, scheme-format
msgid "Redirecting output to ~a..."
msgstr "Redirektigo de eligo al ~a..."
-#: lily.scm:1072 ps-to-png.scm:66
+#: lily.scm:1089
#, scheme-format
msgid "Invoking `~a'...\n"
msgstr "Alvokado de '~a'...\n"
-#: ly-syntax-constructors.scm:66
+#: ly-syntax-constructors.scm:27
#, scheme-format
msgid "~a function cannot return ~a"
msgstr "funkcio ~a ne povas liveri ~a"
-#: ly-syntax-constructors.scm:76
+#: ly-syntax-constructors.scm:60
#, scheme-format
msgid "wrong type for argument ~a. Expecting ~a, found ~s"
msgstr "malÄusta tipo por argumento ~a. Atendate ~a, trovite ~s"
-#: ly-syntax-constructors.scm:200
-#, scheme-format
-msgid "Invalid property operation ~a"
-msgstr "Malvalida atribut-operacio ~a"
-
#: markup-macros.scm:331
#, scheme-format
msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S"
msgid "negative replication count; ignoring"
msgstr "negativa nombro da rekopiado; preterpaso"
-#: music-functions.scm:311
+#: music-functions.scm:319
#, scheme-format
msgid "invalid tremolo repeat count: ~a"
msgstr "malvalida tremson-ripeta nombro: ~a"
-#: music-functions.scm:340
+#: music-functions.scm:348
#, scheme-format
msgid "unknown repeat type `~S': must be volta, unfold, percent, or tremolo"
msgstr "nekonata ripeto-tipo '~S': devas esti volta, unfold, percent, aÅĀ tremolo"
-#: music-functions.scm:344
+#: music-functions.scm:352
msgid "More alternatives than repeats. Junking excess alternatives"
msgstr "Pli da alternativoj ol ripetoj. Forĵeto de kromaj alternativoj"
-#: music-functions.scm:480
+#: music-functions.scm:487
#, scheme-format
msgid "bad grob property path ~a"
msgstr "malÄusta vojo de eco de 'grob' ~a"
-#: music-functions.scm:779
+#: music-functions.scm:511
+#, scheme-format
+msgid "bad context property ~a"
+msgstr "malÄusta eco de kunteksto ~a"
+
+#: music-functions.scm:534
+#, scheme-format
+msgid "bad music property ~a"
+msgstr "malÄusta eco de muziko ~a"
+
+#: music-functions.scm:840
msgid "Bad chord repetition"
msgstr "MalÄusta ripeto de akordo"
-#: music-functions.scm:884
+#: music-functions.scm:945
#, scheme-format
msgid "music expected: ~S"
msgstr "atendita muziko: ~S"
-#: music-functions.scm:1226
+#: music-functions.scm:1295
#, scheme-format
msgid "cannot find quoted music: `~S'"
msgstr "ne eblas trovi la cititan muzikon: '~S'"
-#: music-functions.scm:1366
+#: music-functions.scm:1432
msgid "Add @var{octave-shift} to the octave of @var{pitch}."
msgstr "Aldoni @var{octave-shift} al la okto de @var{pitch}."
-#: music-functions.scm:1429
+#: music-functions.scm:1495
#, scheme-format
msgid "Unknown octaveness type: ~S "
msgstr "Nekonata okteca tipo: ~S "
-#: music-functions.scm:1430
+#: music-functions.scm:1496
msgid "Defaulting to 'any-octave."
msgstr "Apriore al 'any-octave."
-#: music-functions.scm:1822
+#: music-functions.scm:1888
#, scheme-format
msgid "unknown accidental style: ~S"
msgstr "nekonata stilo de aliigo: ~S"
-#: music-functions.scm:2040
+#: music-functions.scm:2098
msgid "Missing duration"
msgstr "Mankas daÅro"
-#: music-functions.scm:2549
+#: music-functions.scm:2626
#, scheme-format
msgid "not a symbol list: ~a"
msgstr "ne estas simbolo-listo: ~a"
-#: music-functions.scm:2552
+#: music-functions.scm:2629
#, scheme-format
msgid "conflicting tag group ~a"
msgstr "konfliktanta mark-grupo ~a"
msgid "cannot find SVG font ~S"
msgstr "ne eblas trovi SVG-tiparon ~S"
-#: paper.scm:122
+#: paper.scm:121
msgid "set-global-staff-size: not in toplevel scope"
msgstr "set-global-staff-size: ne en supernivela rango"
-#: paper.scm:322
+#: paper.scm:321
#, scheme-format
msgid "This is not a \\layout {} object, ~S"
msgstr "Tio Äi ne estas objekto \\layout {}, ~S"
-#: paper.scm:330
+#: paper.scm:329
#, scheme-format
msgid "Unknown paper size: ~a"
msgstr "Nekonata paper-grando: ~a"
#. TODO: should raise (generic) exception with throw, and catch
#. that in parse-scm.cc
-#: paper.scm:349
+#: paper.scm:348
msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
msgstr "Uzendas #(set-paper-size .. ) interne de \\paper { ... }"
msgid "supported clefs: ~a"
msgstr "subtenataj klefoj: ~a"
-#: parser-ly-from-scheme.scm:74
+#: parser-ly-from-scheme.scm:73
msgid "error in #{ ... #}"
msgstr "eraro en #{ ... #}"
-#: part-combiner.scm:748
+#: part-combiner.scm:894
#, scheme-format
msgid "quoted music `~a' is empty"
msgstr "la citita muziko '~a' estas malplena"
-#: ps-to-png.scm:70
+#: ps-to-png.scm:72 ps-to-png.scm:75
+#, scheme-format
+msgid "Copying `~a' to `~a'..."
+msgstr "Kopiado de '~a' al '~a'..."
+
+#: ps-to-png.scm:77 ps-to-png.scm:79
#, scheme-format
-msgid "~a exited with status: ~S"
-msgstr "~a finis kun stato: ~S"
+msgid "Deleting `~a'..."
+msgstr "Forigado de '~a'..."
#: to-xml.scm:190
#, scheme-format
"Neniu etikedo por freto ~a (sur kordo ~a);\n"
"nur ~a fret-etikedoj estis provizataj"
+#~ msgid "cannot change, already in translator: %s"
+#~ msgstr "ne eblas ÅanÄi, jam estas en tradukilo: %s"
+
+#~ msgid "Invalid property operation ~a"
+#~ msgstr "Malvalida atribut-operacio ~a"
+
+#~ msgid "~a exited with status: ~S"
+#~ msgstr "~a finis kun stato: ~S"
+
#~ msgid "cannot find Voice `%s'"
#~ msgstr "ne eblas trovi VoÄon '%s'"
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: lilypond 2.19.48\n"
+"Project-Id-Version: lilypond 2.19.49\n"
"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu."
"lilypond.bugs\n"
-"POT-Creation-Date: 2016-09-13 11:07+0100\n"
+"POT-Creation-Date: 2016-10-16 11:55+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"point."
msgstr ""
+#: convertrules.py:3918
+msgid "Previously the \"id\" grob property (string) was used for SVG output."
+msgstr ""
+
+#: convertrules.py:3919
+msgid "Now \"output-attributes\" (association list) is used instead."
+msgstr ""
+
#: fontextract.py:25
#, python-format
msgid "Scanning %s"
msgid "Music unsuitable for output-def"
msgstr ""
-#: lily-library.scm:914
+#: lily-library.scm:900
msgid ""
"Find the index between @var{start} and @var{end} (an integer)\n"
"which produces the closest match to @var{target-val} if\n"
"applied to function @var{getter}."
msgstr ""
-#: lily-library.scm:1008
+#: lily-library.scm:994
#, scheme-format
msgid "unknown unit: ~S"
msgstr ""
-#: lily-library.scm:1033
+#: lily-library.scm:1019
#, scheme-format
msgid "no \\version statement found, please add~afor future compatibility"
msgstr ""
msgid "Dangling tie in \\retrograde"
msgstr ""
-#: music-functions.scm:319
+#: music-functions.scm:321
#, scheme-format
msgid "invalid tremolo repeat count: ~a"
msgstr ""
-#: music-functions.scm:348
+#: music-functions.scm:350
#, scheme-format
msgid "unknown repeat type `~S': must be volta, unfold, percent, or tremolo"
msgstr ""
-#: music-functions.scm:352
+#: music-functions.scm:354
msgid "More alternatives than repeats. Junking excess alternatives"
msgstr ""
-#: music-functions.scm:487
+#: music-functions.scm:489
#, scheme-format
msgid "bad grob property path ~a"
msgstr ""
-#: music-functions.scm:511
+#: music-functions.scm:513
#, scheme-format
msgid "bad context property ~a"
msgstr ""
-#: music-functions.scm:534
+#: music-functions.scm:536
#, scheme-format
msgid "bad music property ~a"
msgstr ""
-#: music-functions.scm:842
+#: music-functions.scm:844
msgid "Bad chord repetition"
msgstr ""
-#: music-functions.scm:947
+#: music-functions.scm:949
#, scheme-format
msgid "music expected: ~S"
msgstr ""
-#: music-functions.scm:1297
+#: music-functions.scm:1299
#, scheme-format
msgid "cannot find quoted music: `~S'"
msgstr ""
-#: music-functions.scm:1434
+#: music-functions.scm:1436
msgid "Add @var{octave-shift} to the octave of @var{pitch}."
msgstr ""
-#: music-functions.scm:1497
+#: music-functions.scm:1499
#, scheme-format
msgid "Unknown octaveness type: ~S "
msgstr ""
-#: music-functions.scm:1498
+#: music-functions.scm:1500
msgid "Defaulting to 'any-octave."
msgstr ""
-#: music-functions.scm:1872
+#: music-functions.scm:1874
#, scheme-format
msgid "unknown accidental style: ~S"
msgstr ""
-#: music-functions.scm:2097
+#: music-functions.scm:2099
msgid "Missing duration"
msgstr ""
-#: music-functions.scm:2633
+#: music-functions.scm:2635
#, scheme-format
msgid "not a symbol list: ~a"
msgstr ""
-#: music-functions.scm:2636
+#: music-functions.scm:2638
#, scheme-format
msgid "conflicting tag group ~a"
msgstr ""
-#: output-ps.scm:271 output-svg.scm:539
+#: output-ps.scm:271 output-svg.scm:544
#, scheme-format
msgid "unknown line-cap-style: ~S"
msgstr ""
-#: output-ps.scm:276 output-svg.scm:545
+#: output-ps.scm:276 output-svg.scm:550
#, scheme-format
msgid "unknown line-join-style: ~S"
msgstr ""
-#: output-svg.scm:148
+#: output-svg.scm:153
#, scheme-format
msgid "cannot decypher Pango description: ~a"
msgstr ""
-#: output-svg.scm:228
+#: output-svg.scm:233
msgid "Glyph must have a unicode value"
msgstr ""
-#: output-svg.scm:280 output-svg.scm:290
+#: output-svg.scm:285 output-svg.scm:295
#, scheme-format
msgid "cannot find SVG font ~S"
msgstr ""
'', str)
return str
+@rule ((2, 19, 49), r"""id -> output-attributes.id or output-attributes
+for \tweak, \override, \overrideProperty, and \revert""")
+def conv (str):
+ # path cannot start with '-' or '_' and matches zero or more path
+ # units that each end in a dot
+ path = r"(?:[a-zA-Z\200-\377](?:[-_]?[a-zA-Z\200-\377])*(?:\s*\.\s*))*"
+
+ # Manual editing is needed when id is set to #(...) or \xxx
+ manual_edits = r"(\\(?:tweak|override|overrideProperty)\s+" + path + r")id(\s*=?\s*(?:\\|#\s*\())"
+ automatic = r"(\\(?:tweak|override|overrideProperty|revert)\s+" + path + r")id"
+ if re.search (manual_edits, str):
+ stderr_write (NOT_SMART % "\"output-attributes\"")
+ stderr_write (_ ("Previously the \"id\" grob property (string) was used for SVG output.") + "\n")
+ stderr_write (_ ("Now \"output-attributes\" (association list) is used instead.") + "\n")
+ stderr_write (UPDATE_MANUALLY)
+
+ # First, for manual editing cases we convert 'id' to 'output-attributes'
+ # because Grob.output-attributes.id = #(lambda ... ) will not work.
+ # Then for the rest we convert 'id' to 'output-attributes.id'
+ str = re.sub (manual_edits, r"\1output-attributes\2", str)
+ str = re.sub (automatic, r"\1output-attributes.id", str)
+ return str
+
# Guidelines to write rules (please keep this at the end of this file)
#
# - keep at most one rule per version; if several conversions should be done,
;;;
;;; i
;;;
- (id ,string? "An id string for the grob. Depending on the typestting
-backend being used, this id will be assigned to a group containing all of
-the stencils that comprise a given grob. For example, in the svg backend,
-the string will be assigned to the @code{id} attribute of a group (<g>)
-that encloses the stencils that comprise the grob. In the Postscript
-backend, as there is no way to group items, the setting of the id property
-will have no effect.")
+ (id ,string? "An id string for the grob.")
(ignore-ambitus ,boolean? "If set, don't consider this notehead
for ambitus calculation.")
(ignore-collision ,boolean? "If set, don't do note collision
;;;
;;; o
;;;
+ (output-attributes ,list? "An alist of attributes for the grob, to
+be included in output files. When the SVG typesetting backend is used,
+the attributes are assigned to a group (<g>) containing all of the
+stencils that comprise a given grob. For example,
+@code{'((id . 123) (class . foo) (data-whatever . @qq{bar}))} will produce
+@code{<g id=@qq{123} class=@qq{foo} data-whatever=@qq{bar}> @dots{} </g>}.
+In the Postscript backend, where there is no way to group items, the
+setting of the output-attributes property will have no effect.")
(outside-staff-horizontal-padding ,number? "By default, an
outside-staff-object can be placed so that is it very close to another
grob horizontally. If this property is set, the outside-staff-object
ellipse
embedded-ps
embedded-svg
- end-enclosing-id-node
+ end-group-node
glyph-string
grob-cause
named-glyph
setcolor
setrotation
setscale
- start-enclosing-id-node
+ start-group-node
text
unknown
url-link
combine-stencil
delay-stencil-evaluation
footnote
- id
+ output-attributes
rotate-stencil
scale-stencil
translate-stencil
(flatten-list
(map (lambda (x)
(coord-translate
- (coord-rotate x (atan (/ y (* 2 0.25))))
+ (coord-rotated x (cons y (* 2 0.25)))
'(1.0 . 0)))
l)))
`(((0 . ,y) (,x . ,y) (,x . 0))
(map (lambda (l)
(flatten-list
(map (lambda (x)
- (coord-rotate x (atan (/ y (* 2 0.25)))))
+ (coord-rotated x (cons y (* 2 0.25))))
l)))
`(,(list-tail up-part 1)
,(list-head down-part 1)
(define saxophone-rh-high-fis-key-stencil
(standard-path-stencil
- (append
- '((0.0 1.0) (0.0 1.4 0.6 1.4 0.6 1.0) (0.6 0.0))
- (map (lambda (l)
- (flatten-list
- (map (lambda (x)
- (coord-rotate x (atan (* -1 (/ PI 6)))))
- l)))
- '(((0.6 . -1.0))
- ((0.6 . -1.4) (0.0 . -1.4) (0.0 . -1.0))
- ((0.0 . 0.0)))))
+ (let* ((angle -30)
+ (dir2 (ly:directed (* -0.5 angle)))
+ ;; This comparatively awful expression calculates how far
+ ;; along the tangents opened by 'angle' with a radius of 0.6
+ ;; the control points need to move in order to have the
+ ;; middle of the bezier curve exactly on radius.
+ (out (* 0.6 (coord-y dir2) (- 4/3 (* 1/3 (coord-x dir2))))))
+ (append
+ '((0.0 1.0) (0.0 1.4 0.6 1.4 0.6 1.0) (0.6 0.0))
+ `((0.6 ,(- out)
+ ,@(flatten-list (map (lambda (x) (coord-rotated x angle))
+ `((0.6 . ,out)
+ (0.6 . 0.0))))))
+ (map (lambda (l)
+ (flatten-list
+ (map (lambda (x)
+ (coord-rotated x angle))
+ l)))
+ '(((0.6 . -1.0))
+ ((0.6 . -1.4) (0.0 . -1.4) (0.0 . -1.0))
+ ((0.0 . 0.0))))))
0.75
0.75))
(coord-operation * amount coordinate))
(define-public (coord-rotate coordinate angle-in-radians)
- ;; getting around (sin PI) not being exactly zero by switching to cos at
- ;; appropiate angles and/or taking the negative value (vice versa for cos)
- (let* ((quadrant (inexact->exact (round (/ angle-in-radians (/ PI 2)))))
- (moved-angle (- angle-in-radians (* quadrant (/ PI 2))))
- (s (sin moved-angle))
- (c (cos moved-angle))
- (x (coord-x coordinate))
- (y (coord-y coordinate)))
- (case (modulo quadrant 4)
- ((0) ;; -45 .. 45
- (cons (- (* c x) (* s y))
- (+ (* s x) (* c y))))
- ((1) ;; 45 .. 135
- (cons (- (* (- s) x) (* c y))
- (+ (* c x) (* (- s) y))))
- ((2) ;; 135 .. 225
- (cons (- (* (- c) x) (* (- s) y))
- (+ (* (- s) x) (* (- c) y))))
- ((3) ;; 225 .. 315
- (cons (- (* s x) (* (- c) y))
- (+ (* (- c) x) (* s y))))
- ;; for other angles (modulo quadrant 4) returns one of the above cases
- )))
+ (coord-rotated coordinate (/ angle-in-radians PI-OVER-180)))
+
+(define-public (coord-rotated coordinate direction)
+ ;; Same, in degrees or with a given direction
+ (let ((dir (ly:directed direction)))
+ (cons (- (* (car dir) (car coordinate))
+ (* (cdr dir) (cdr coordinate)))
+ (+ (* (car dir) (cdr coordinate))
+ (* (cdr dir) (car coordinate))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; trig
(define-public (music-filter pred? music)
"Filter out music expressions that do not satisfy @var{pred?}."
- (define (inner-music-filter pred? music)
+ (define (inner-music-filter music)
"Recursive function."
(let* ((es (ly:music-property music 'elements))
(e (ly:music-property music 'element))
(as (ly:music-property music 'articulations))
- (filtered-as (filter ly:music? (map (lambda (y) (inner-music-filter pred? y)) as)))
+ (filtered-as (filter ly:music? (map inner-music-filter as)))
(filtered-e (if (ly:music? e)
- (inner-music-filter pred? e)
+ (inner-music-filter e)
e))
- (filtered-es (filter ly:music? (map (lambda (y) (inner-music-filter pred? y)) es))))
+ (filtered-es (filter ly:music? (map inner-music-filter es))))
(if (not (null? e))
(set! (ly:music-property music 'element) filtered-e))
(if (not (null? es))
(set! (ly:music-property music 'elements) filtered-es))
(if (not (null? as))
(set! (ly:music-property music 'articulations) filtered-as))
- ;; if filtering emptied the expression, we remove it completely.
+ ;; if filtering invalidated 'element, we remove the music unless
+ ;; there are remaining 'elements in which case we just hope and
+ ;; pray.
(if (or (not (pred? music))
- (and (eq? filtered-es '()) (not (ly:music? e))
- (or (not (eq? es '()))
- (ly:music? e))))
+ (and (null? filtered-es)
+ (not (ly:music? filtered-e))
+ (ly:music? e)))
(set! music '()))
music))
- (set! music (inner-music-filter pred? music))
+ (set! music (inner-music-filter music))
(if (ly:music? music)
music
(make-music 'Music))) ;must return music.
"false")
radius thick))
-(define (start-enclosing-id-node s)
+(define (start-group-node attributes)
"")
-(define (end-enclosing-id-node)
+(define (end-group-node)
"")
(define (dashed-line thick on off dx dy phase)
"c = close"
(format #f "</~S>\n" entity))
-(define (start-enclosing-id-node s)
- (string-append "<g id=\"" s "\">\n"))
-
-(define (end-enclosing-id-node)
+(define (start-group-node attributes)
+ (define attributes-string
+ (string-concatenate
+ (map (lambda (item)
+ (ly:format " ~a=\"~a\"" (car item) (cdr item)))
+ attributes)))
+ (string-append "<g" attributes-string ">\n"))
+
+(define (end-group-node)
"</g>\n")
(define-public (comment s)
(begin
(ly:warning "Both angle-increments and radial-increments must be positive numbers.")
stil)
- (let* ((2pi 6.283185307)
- (angle-inc (/ 2pi angle-increments))
+ (let* ((angle-inc (/ 360 angle-increments))
(radial-inc (/ thickness radial-increments)))
(define (circle-plot ang dec radius original-stil new-stil)
- ;; ang (angle) and dec (decrement) are in radians, not degrees
+ ;; ang (angle) and dec (decrement) are in degrees, not radians
(if (<= ang 0)
new-stil
(circle-plot (- ang dec) dec radius original-stil
(ly:stencil-add
new-stil
(ly:stencil-translate original-stil
- (cons
- (* radius (cos ang))
- (* radius (sin ang))))))))
+ (ly:directed ang radius))))))
(define (radial-plot radius original-stil new-stil)
(if (<= radius 0)
(radial-plot
(- radius radial-inc)
original-stil
- (circle-plot 2pi angle-inc
+ (circle-plot 360 angle-inc
radius original-stil empty-stencil)))))
(let ((whiteout-expr
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2016-07-20.14}
+\def\texinfoversion{2016-09-17.16}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
\temp
}
-% @| inserts a changebar to the left of the current line. It should
-% surround any changed text. This approach does *not* work if the
-% change spans more than two lines of output. To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change). This command
-% is not documented, not supported, and doesn't work.
-%
-\def\|{%
- % \vadjust can only be used in horizontal mode.
- \leavevmode
- %
- % Append this vertical mode material after the current line in the output.
- \vadjust{%
- % We want to insert a rule with the height and depth of the current
- % leading; that is exactly what \strutbox is supposed to record.
- \vskip-\baselineskip
- %
- % \vadjust-items are inserted at the left edge of the type. So
- % the \llap here moves out into the left-hand margin.
- \llap{%
- %
- % For a thicker or thinner bar, change the `1pt'.
- \vrule height\baselineskip width1pt
- %
- % This is the space between the bar and the text.
- \hskip 12pt
- }%
- }%
-}
-
% @include FILE -- \input text of FILE.
%
\def\include{\parseargusing\filenamecatcodes\includezzz}
% For LuaTeX
%
+\newif\iftxiuseunicodedestname
+\txiuseunicodedestnamefalse % For pdfTeX etc.
+
\ifx\luatexversion\thisisundefined
\else
- % Escape PDF strings UTF-8 to UTF-16
+ % Use Unicode destination names
+ \txiuseunicodedestnametrue
+ % Escape PDF strings with converting UTF-16 from UTF-8
\begingroup
\catcode`\%=12
\directlua{
end
}
\endgroup
- \def\pdfescapestring#1{\directlua{UTF16oct('\luaescapestring{#1}')}}
+ \def\pdfescapestrutfsixteen#1{\directlua{UTF16oct('\luaescapestring{#1}')}}
+ % Escape PDF strings without converting
+ \begingroup
+ \directlua{
+ function PDFescstr(str)
+ for c in string.bytes(str) do
+ if c <= 0x20 or c >= 0x80 or c == 0x28 or c == 0x29 or c == 0x5c then
+ tex.sprint(
+ string.format(string.char(0x5c) .. string.char(0x25) .. '03o',
+ c))
+ else
+ tex.sprint(string.char(c))
+ end
+ end
+ end
+ }
+ \endgroup
+ \def\pdfescapestring#1{\directlua{PDFescstr('\luaescapestring{#1}')}}
\ifnum\luatexversion>84
% For LuaTeX >= 0.85
\def\pdfdest{\pdfextension dest}
\xdef#1{\pdfescapestring{#1}}%
\fi
}
+\def\txiescapepdfutfsixteen#1{%
+ \ifx\pdfescapestrutfsixteen\thisisundefined
+ % No UTF-16 converting macro available.
+ \txiescapepdf{#1}%
+ \else
+ \xdef#1{\pdfescapestrutfsixteen{#1}}%
+ \fi
+}
\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
with PDF output, and none of those formats could be found. (.eps cannot
\pdfrefximage \pdflastximage
\fi}
%
- \def\pdfmkdest#1{{%
+ \def\setpdfdestname#1{{%
% We have to set dummies so commands such as @code, and characters
% such as \, aren't expanded when present in a section title.
\indexnofonts
\makevalueexpandable
\turnoffactive
- % Use ASCII approximations in destination names.
- \passthroughcharsfalse
+ \iftxiuseunicodedestname
+ \ifx \declaredencoding \latone
+ % Pass through Latin-1 characters.
+ % LuaTeX with byte wise I/O converts Latin-1 characters to Unicode.
+ \else
+ \ifx \declaredencoding \utfeight
+ % Pass through Unicode characters.
+ \else
+ % Use ASCII approximations in destination names.
+ \passthroughcharsfalse
+ \fi
+ \fi
+ \else
+ % Use ASCII approximations in destination names.
+ \passthroughcharsfalse
+ \fi
\def\pdfdestname{#1}%
\txiescapepdf\pdfdestname
- \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}}
%
+ \def\setpdfoutlinetext#1{{%
+ \indexnofonts
+ \makevalueexpandable
+ \turnoffactive
+ \ifx \declaredencoding \latone
+ % The PDF format can use an extended form of Latin-1 in bookmark
+ % strings. See Appendix D of the PDF Reference, Sixth Edition, for
+ % the "PDFDocEncoding".
+ \passthroughcharstrue
+ % Pass through Latin-1 characters.
+ % LuaTeX: Convert to Unicode
+ % pdfTeX: Use Latin-1 as PDFDocEncoding
+ \def\pdfoutlinetext{#1}%
+ \else
+ \ifx \declaredencoding \utfeight
+ \ifx\luatexversion\thisisundefined
+ % For pdfTeX with UTF-8.
+ % TODO: the PDF format can use UTF-16 in bookmark strings,
+ % but the code for this isn't done yet.
+ % Use ASCII approximations.
+ \passthroughcharsfalse
+ \def\pdfoutlinetext{#1}%
+ \else
+ % For LuaTeX with UTF-8.
+ % Pass through Unicode characters for title texts.
+ \passthroughcharstrue
+ \def\pdfoutlinetext{#1}%
+ \fi
+ \else
+ % For non-Latin-1 or non-UTF-8 encodings.
+ % Use ASCII approximations.
+ \passthroughcharsfalse
+ \def\pdfoutlinetext{#1}%
+ \fi
+ \fi
+ % LuaTeX: Convert to UTF-16
+ % pdfTeX: Use Latin-1 as PDFDocEncoding
+ \txiescapepdfutfsixteen\pdfoutlinetext
+ }}
+ %
+ \def\pdfmkdest#1{%
+ \setpdfdestname{#1}%
+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+ }
+ %
% used to mark target names; must be expandable.
\def\pdfmkpgn#1{#1}
%
% page number. We could generate a destination for the section
% text in the case where a section has no node, but it doesn't
% seem worth the trouble, since most documents are normally structured.
- {
- \ifx\luatexversion\thisisundefined \else
- \turnoffactive % LuaTeX can use Unicode strings for PDF
- \fi
- \edef\pdfoutlinedest{#3}%
- \ifx\pdfoutlinedest\empty
- \def\pdfoutlinedest{#4}%
- \else
- \txiescapepdf\pdfoutlinedest
- \fi
- %
- % Also escape PDF chars in the display string.
- \bgroup
- \ifx \declaredencoding \latone
- % The PDF format can use an extended form of Latin-1 in bookmark
- % strings. See Appendix D of the PDF Reference, Sixth Edition, for
- % the "PDFDocEncoding".
- \passthroughcharstrue
- \fi
- \ifx \declaredencoding \utfeight
- % TODO: the PDF format can use UTF-16 in bookmark strings, but the
- % code for this isn't done yet.
- \fi
- \globaldefs=1
- \edef\pdfoutlinetext{#1}%
- \txiescapepdf\pdfoutlinetext
- \egroup
- %
- \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
- }
+ \setpdfoutlinetext{#1}
+ \setpdfdestname{#3}
+ \ifx\pdfdestname\empty
+ \def\pdfdestname{#4}%
+ \fi
+ %
+ \pdfoutline goto name{\pdfmkpgn{\pdfdestname}}#2{\pdfoutlinetext}%
}
%
\def\pdfmakeoutlines{%
%
% For XeTeX
%
-\newif\iftxiuseunicodedestname
\ifx\XeTeXrevision\thisisundefined
\else
%
%
\ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99996}>-1
% TeX Live 2016 contains XeTeX 0.99996 and xdvipdfmx 20160307.
- % It can be used `dvipdfmx:config' special (from TeX Live SVN r40941).
- % For avoiding PDF destination name replacement, we use the special
- % instead of xdvipdfmx commandline option `-C 0x0010'.
+ % It can use the `dvipdfmx:config' special (from TeX Live SVN r40941).
+ % For avoiding PDF destination name replacement, we use this special
+ % instead of xdvipdfmx's command line option `-C 0x0010'.
\special{dvipdfmx:config C 0x0010}
- % XeTeX 0.99995+ contains xdvipdfmx 20160307+.
- % It can handle Unicode destination name for PDF.
+ % XeTeX 0.99995+ comes with xdvipdfmx 20160307+.
+ % It can handle Unicode destination names for PDF.
\txiuseunicodedestnametrue
\else
- % XeTeX < 0.99996 (TeX Live < 2016) cannot be used
+ % XeTeX < 0.99996 (TeX Live < 2016) cannot use the
% `dvipdfmx:config' special.
% So for avoiding PDF destination name replacement,
- % xdvipdfmx commandline option `-C 0x0010' is necessary.
+ % xdvipdfmx's command line option `-C 0x0010' is necessary.
%
- % XeTeX < 0.99995 can not handle Unicode destination name for PDF
- % because xdvipdfmx 20150315 has UTF-16 convert issue.
- % It fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
+ % XeTeX < 0.99995 can not handle Unicode destination names for PDF
+ % because xdvipdfmx 20150315 has a UTF-16 conversion issue.
+ % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
\txiuseunicodedestnamefalse
\fi
%
+ % Color support
+ %
+ \def\rgbDarkRed{0.50 0.09 0.12}
+ \def\rgbBlack{0 0 0}
+ %
+ \def\pdfsetcolor#1{\special{pdf:scolor [#1]}}
+ %
+ % Set color, and create a mark which defines \thiscolor accordingly,
+ % so that \makeheadline knows which color to restore.
+ \def\setcolor#1{%
+ \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+ \domark
+ \pdfsetcolor{#1}%
+ }
+ %
+ \def\maincolor{\rgbBlack}
+ \pdfsetcolor{\maincolor}
+ \edef\thiscolor{\maincolor}
+ \def\lastcolordefs{}
+ %
+ \def\makefootline{%
+ \baselineskip24pt
+ \line{\pdfsetcolor{\maincolor}\the\footline}%
+ }
+ %
+ \def\makeheadline{%
+ \vbox to 0pt{%
+ \vskip-22.5pt
+ \line{%
+ \vbox to8.5pt{}%
+ % Extract \thiscolor definition from the marks.
+ \getcolormarks
+ % Typeset the headline with \maincolor, then restore the color.
+ \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+ }%
+ \vss
+ }%
+ \nointerlineskip
+ }
+ %
% PDF outline support
%
- % Emulate the primitive of pdfTeX
+ % Emulate pdfTeX primitive
\def\pdfdest name#1 xyz{%
- \special{pdf:dest (name#1) [@thispage /XYZ @xpos @ypos null]}%
+ \special{pdf:dest (#1) [@thispage /XYZ @xpos @ypos null]}%
}
- \def\pdfmkdest#1{{%
+ %
+ \def\setpdfdestname#1{{%
% We have to set dummies so commands such as @code, and characters
% such as \, aren't expanded when present in a section title.
\indexnofonts
+ \makevalueexpandable
+ \turnoffactive
\iftxiuseunicodedestname
- \def\pdfdestname{#1}% Pass through Unicode characters.
+ % Pass through Unicode characters.
\else
- \edef\pdfdestname{#1}% Replace Unicode characters to ASCII.
+ % Use ASCII approximations in destination names.
+ \passthroughcharsfalse
\fi
- \turnoffactive
- \makevalueexpandable
+ \def\pdfdestname{#1}%
\txiescapepdf\pdfdestname
- \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}}
%
+ \def\setpdfoutlinetext#1{{%
+ \turnoffactive
+ % Always use Unicode characters in title texts.
+ \def\pdfoutlinetext{#1}%
+ % For XeTeX, xdvipdfmx converts to UTF-16.
+ % So we do not convert.
+ \txiescapepdf\pdfoutlinetext
+ }}
+ %
+ \def\pdfmkdest#1{%
+ \setpdfdestname{#1}%
+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+ }
+ %
+ % by default, use black for everything.
+ \def\urlcolor{\rgbBlack}
+ \def\linkcolor{\rgbBlack}
+ \def\endlink{\setcolor{\maincolor}\pdfendlink}
+ %
\def\dopdfoutline#1#2#3#4{%
- \iftxiuseunicodedestname
- \def\pdfoutlinedest{#3}% Pass through Unicode characters.
- \else
- \edef\pdfoutlinedest{#3}% Replace Unicode characters to ASCII.
+ \setpdfoutlinetext{#1}
+ \setpdfdestname{#3}
+ \ifx\pdfdestname\empty
+ \def\pdfdestname{#4}%
\fi
- \ifx\pdfoutlinedest\empty
- \def\pdfoutlinedest{#4}%
- \fi
- {
- \turnoffactive
- \txiescapepdf\pdfoutlinedest
- \edef\pdfoutlinetext{#1}%
- \txiescapepdf\pdfoutlinetext
- %
- \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A
- << /S /GoTo /D (name\pdfoutlinedest) >> >> }%
- }
+ %
+ \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A
+ << /S /GoTo /D (\pdfdestname) >> >> }%
}
%
\def\pdfmakeoutlines{%
\begingroup
%
- % In the case of XeTeX, counts of subentries is not necesary.
- % Therefore, read toc only once.
+ % For XeTeX, counts of subentries are not necessary.
+ % Therefore, we read toc only once.
%
- % We use the node names as the destinations.
+ % We use node names as destinations.
\def\partentry##1##2##3##4{}% ignore parts in the outlines
\def\numchapentry##1##2##3##4{%
\dopdfoutline{##1}{1}{##3}{##4}}%
\let\unnsubsecentry\numsubsecentry%
\let\unnsubsubsecentry\numsubsubsecentry%
%
- % In the case of XeTeX, xdvipdfmx converts strings to UTF-16.
+ % For XeTeX, xdvipdfmx converts strings to UTF-16.
% Therefore, the encoding and the language may not be considered.
%
\indexnofonts
\special{pdf:docview << /PageMode /UseOutlines >> }
% ``\special{pdf:tounicode ...}'' is not necessary
% because xdvipdfmx converts strings from UTF-8 to UTF-16 without it.
- % However, due to UTF-16 convert issue of xdvipdfmx 20150315,
- % ``\special{pdf:dest ...}'' can not handle non-ASCII strings.
- % It fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
+ % However, due to a UTF-16 conversion issue of xdvipdfmx 20150315,
+ % ``\special{pdf:dest ...}'' cannot handle non-ASCII strings.
+ % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
%
\def\skipspaces#1{\def\PP{#1}\def\D{|}%
\ifx\PP\D\let\nextsp\relax
{\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
\def\pdflink#1{%
\special{pdf:bann << /Border [0 0 0]
- /Type /Annot /Subtype /Link /A << /S /GoTo /D (name#1) >> >>}%
+ /Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}%
\setcolor{\linkcolor}#1\endlink}
\def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
%
\def\xeteximagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
\def\xeteximageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
%
- % XeTeX (and the PDF format) support .pdf, .png, .jpg (among
+ % XeTeX (and the PDF format) supports .pdf, .png, .jpg (among
% others). Let's try in that order, PDF first since if
% someone has a scalable image, presumably better to use that than a
% bitmap.
}
\fi
-\message{fonts,}
-
-% Change the current font style to #1, remembering it in \curfontstyle.
-% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
-% italics, not bold italics.
-%
-\def\setfontstyle#1{%
- \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
- \csname ten#1\endcsname % change the current font
-}
-% Select #1 fonts with the current style.
%
-\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
-
-\def\rm{\fam=0 \setfontstyle{rm}}
-\def\it{\fam=\itfam \setfontstyle{it}}
-\def\sl{\fam=\slfam \setfontstyle{sl}}
-\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
-\def\tt{\fam=\ttfam \setfontstyle{tt}}
-
-% Unfortunately, we have to override this for titles and the like, since
-% in those cases "rm" is bold. Sigh.
-\def\rmisbold{\rm\def\curfontstyle{bf}}
-
-% Texinfo sort of supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf.
-\newfam\sffam
-\def\sf{\fam=\sffam \setfontstyle{sf}}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-% We don't need math for this font style.
-\def\ttsl{\setfontstyle{ttsl}}
-
+\message{fonts,}
% Set the baselineskip to #1, and the lineskip and strut size
% correspondingly. There is no deep meaning behind these magic numbers
\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
\setfont\defsl\slshape{10}{\magstep1}{OT1TT}
\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf
-\let\tenttsl=\defttsl \let\tensl=\defsl \bf}
+\def\df{\let\ttfont=\deftt \let\bffont = \defbf
+\let\ttfontsl=\defttsl \let\slfont=\defsl \bf}
% Fonts for indices, footnotes, small examples (9pt).
\def\smallnominalsize{9pt}
\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
\setfont\defsl\slshape{10}{\magstephalf}{OT1TT}
\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf
-\let\tensl=\defsl \let\tenttsl=\defttsl \bf}
+\def\df{\let\ttfont=\deftt \let\bffont = \defbf
+\let\slfont=\defsl \let\ttfontsl=\defttsl \bf}
% Fonts for indices, footnotes, small examples (9pt).
\def\smallnominalsize{9pt}
\rm
} % end of 10pt text font size definitions, \definetextfontsizex
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
% We provide the user-level command
% @fonttextsize 10
\endgroup
}
+%
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+ \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+ \csname #1font\endcsname % change the current font
+}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Unfortunately, we have to override this for titles and the like, since
+% in those cases "rm" is bold. Sigh.
+\def\rmisbold{\rm\def\curfontstyle{bf}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+
% In order for the font changes to affect most math symbols and letters,
% we have to define the \textfont of the standard families. We don't
% bother to reset \scriptfont and \scriptscriptfont; awaiting user need.
%
\def\resetmathfonts{%
- \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
- \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
- \textfont\ttfam=\tentt \textfont\sffam=\tensf
+ \textfont0=\rmfont \textfont1=\ifont \textfont2=\syfont
+ \textfont\itfam=\itfont \textfont\slfam=\slfont \textfont\bffam=\bffont
+ \textfont\ttfam=\ttfont \textfont\sffam=\sffont
}
-% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% Select #1 fonts with the current style. Used to change font size
+% in, e.g., the LaTeX logo and acronyms.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+% The font-changing commands (all called \...fonts) redefine the meanings of
+% \STYLEfont, instead
% of just \STYLE. We do this because \STYLE needs to also set the
% current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire
-% \tenSTYLE to set the current font.
+% \STYLEfont to set the current font.
%
% Each font-changing command also sets the names \lsize (one size lower)
% and \lllsize (three sizes lower). These relative commands are used
% This all needs generalizing, badly.
%
\def\textfonts{%
- \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
- \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
- \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
- \let\tenttsl=\textttsl
+ \let\rmfont=\textrm \let\itfont=\textit \let\slfont=\textsl
+ \let\bffont=\textbf \let\ttfont=\texttt \let\smallcaps=\textsc
+ \let\sffont=\textsf \let\ifont=\texti \let\syfont=\textsy
+ \let\ttfontsl=\textttsl
\def\curfontsize{text}%
\def\lsize{reduced}\def\lllsize{smaller}%
\resetmathfonts \setleading{\textleading}}
\def\titlefonts{%
- \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
- \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
- \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
- \let\tenttsl=\titlettsl
+ \let\rmfont=\titlerm \let\itfont=\titleit \let\slfont=\titlesl
+ \let\bffont=\titlebf \let\ttfont=\titlett \let\smallcaps=\titlesc
+ \let\sffont=\titlesf \let\ifont=\titlei \let\syfont=\titlesy
+ \let\ttfontsl=\titlettsl
\def\curfontsize{title}%
\def\lsize{chap}\def\lllsize{subsec}%
\resetmathfonts \setleading{27pt}}
\def\titlefont#1{{\titlefonts\rmisbold #1}}
\def\chapfonts{%
- \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
- \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
- \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
- \let\tenttsl=\chapttsl
+ \let\rmfont=\chaprm \let\itfont=\chapit \let\slfont=\chapsl
+ \let\bffont=\chapbf \let\ttfont=\chaptt \let\smallcaps=\chapsc
+ \let\sffont=\chapsf \let\ifont=\chapi \let\syfont=\chapsy
+ \let\ttfontsl=\chapttsl
\def\curfontsize{chap}%
\def\lsize{sec}\def\lllsize{text}%
\resetmathfonts \setleading{19pt}}
\def\secfonts{%
- \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
- \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
- \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
- \let\tenttsl=\secttsl
+ \let\rmfont=\secrm \let\itfont=\secit \let\slfont=\secsl
+ \let\bffont=\secbf \let\ttfont=\sectt \let\smallcaps=\secsc
+ \let\sffont=\secsf \let\ifont=\seci \let\syfont=\secsy
+ \let\ttfontsl=\secttsl
\def\curfontsize{sec}%
\def\lsize{subsec}\def\lllsize{reduced}%
\resetmathfonts \setleading{17pt}}
\def\subsecfonts{%
- \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
- \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
- \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
- \let\tenttsl=\ssecttsl
+ \let\rmfont=\ssecrm \let\itfont=\ssecit \let\slfont=\ssecsl
+ \let\bffont=\ssecbf \let\ttfont=\ssectt \let\smallcaps=\ssecsc
+ \let\sffont=\ssecsf \let\ifont=\sseci \let\syfont=\ssecsy
+ \let\ttfontsl=\ssecttsl
\def\curfontsize{ssec}%
\def\lsize{text}\def\lllsize{small}%
\resetmathfonts \setleading{15pt}}
\let\subsubsecfonts = \subsecfonts
\def\reducedfonts{%
- \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
- \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
- \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
- \let\tenttsl=\reducedttsl
+ \let\rmfont=\reducedrm \let\itfont=\reducedit \let\slfont=\reducedsl
+ \let\bffont=\reducedbf \let\ttfont=\reducedtt \let\reducedcaps=\reducedsc
+ \let\sffont=\reducedsf \let\ifont=\reducedi \let\syfont=\reducedsy
+ \let\ttfontsl=\reducedttsl
\def\curfontsize{reduced}%
\def\lsize{small}\def\lllsize{smaller}%
\resetmathfonts \setleading{10.5pt}}
\def\smallfonts{%
- \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
- \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
- \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
- \let\tenttsl=\smallttsl
+ \let\rmfont=\smallrm \let\itfont=\smallit \let\slfont=\smallsl
+ \let\bffont=\smallbf \let\ttfont=\smalltt \let\smallcaps=\smallsc
+ \let\sffont=\smallsf \let\ifont=\smalli \let\syfont=\smallsy
+ \let\ttfontsl=\smallttsl
\def\curfontsize{small}%
\def\lsize{smaller}\def\lllsize{smaller}%
\resetmathfonts \setleading{10.5pt}}
\def\smallerfonts{%
- \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
- \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
- \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
- \let\tenttsl=\smallerttsl
+ \let\rmfont=\smallerrm \let\itfont=\smallerit \let\slfont=\smallersl
+ \let\bffont=\smallerbf \let\ttfont=\smallertt \let\smallcaps=\smallersc
+ \let\sffont=\smallersf \let\ifont=\smalleri \let\syfont=\smallersy
+ \let\ttfontsl=\smallerttsl
\def\curfontsize{smaller}%
\def\lsize{smaller}\def\lllsize{smaller}%
\resetmathfonts \setleading{9.5pt}}
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}{OT1}
-\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12
-\setfont\shortcontsl\slshape{12}{1000}{OT1}
-\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
-
% Define these just so they can be easily changed for other fonts.
\def\angleleft{$\langle$}
\def\angleright{$\rangle$}
\let\atchar=\@
% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
-% Unless we're in typewriter, use \ecfont because the CM text fonts do
-% not have braces, and we don't want to switch into math.
-\def\mylbrace{{\ifmonospace\char123\else\ensuremath\lbrace\fi}}
-\def\myrbrace{{\ifmonospace\char125\else\ensuremath\rbrace\fi}}
-\let\{=\mylbrace \let\lbracechar=\{
-\let\}=\myrbrace \let\rbracechar=\}
-\begingroup
- % Definitions to produce \{ and \} commands for indices,
- % and @{ and @} for the aux/toc files.
- \catcode`\{ = \other \catcode`\} = \other
- \catcode`\[ = 1 \catcode`\] = 2
- \catcode`\! = 0 \catcode`\\ = \other
- !gdef!lbracecmd[\{]%
- !gdef!rbracecmd[\}]%
- !gdef!lbraceatcmd[@{]%
- !gdef!rbraceatcmd[@}]%
-!endgroup
+\def\lbracechar{{\ifmonospace\char123\else\ensuremath\lbrace\fi}}
+\def\rbracechar{{\ifmonospace\char125\else\ensuremath\rbrace\fi}}
+\let\{=\lbracechar
+\let\}=\rbracechar
% @comma{} to avoid , parsing problems.
\let\comma = ,
%
\newbox\errorbox
%
-{\tentt \global\dimen0 = 3em}% Width of the box.
+{\ttfont \global\dimen0 = 3em}% Width of the box.
\dimen2 = .55pt % Thickness of rules
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
% Macros to be used within @titlepage:
-\let\subtitlerm=\tenrm
+\let\subtitlerm=\rmfont
\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
\parseargdef\title{%
\message{tables,}
-% Tables -- @table, @ftable, @ktable, @vtable, @item(x).
+% Tables -- @table, @ftable, @vtable, @item(x).
% default indentation of table text
\newdimen\tableindent \tableindent=.8in
% used internally for \itemindent minus \itemmargin
\newdimen\itemmax
-% Note @table, @ftable, @ktable and @vtable define @item, @itemx, etc., with
+% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
% these defs.
% They also define \itemindex
% to index the item name in whatever manner is desired (perhaps none).
\def\item{\errmessage{@item while not in a list environment}}
\def\itemx{\errmessage{@itemx while not in a list environment}}
-% @table, @ftable, @ktable, @vtable.
+% @table, @ftable, @vtable.
\envdef\table{%
\let\itemindex\gobble
\tablecheck{table}%
\def\itemindex ##1{\doind {fn}{\code{##1}}}%
\tablecheck{ftable}%
}
-\envdef\ktable{%
- \def\itemindex ##1{\doind {ky}{\code{##1}}}%
- \tablecheck{ktable}%
-}
\envdef\vtable{%
\def\itemindex ##1{\doind {vr}{\code{##1}}}%
\tablecheck{vtable}%
}
\def\Etable{\endgraf\afterenvbreak}
\let\Eftable\Etable
-\let\Ektable\Etable
\let\Evtable\Etable
\let\Eitemize\Etable
\let\Eenumerate\Etable
% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
% #3 the target index (bar).
\def\dosynindex#1#2#3{%
- % Only do \closeout if we haven't already done it, else we'll end up
- % closing the target index.
- \expandafter \ifx\csname donesynindex#2\endcsname \relax
- % The \closeout helps reduce unnecessary open files; the limit on the
- % Acorn RISC OS is a mere 16 files.
- \expandafter\closeout\csname#2indfile\endcsname
- \expandafter\let\csname donesynindex#2\endcsname = 1
- \fi
+ \requireopenindexfile{#3}%
% redefine \fooindfile:
\expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
\expandafter\let\csname#2indfile\endcsname=\temp
%
\def\indexdummies{%
\escapechar = `\\ % use backslash in output files.
- \def\@{@}% change to @@ when we switch to @ as escape char in index files.
- \def\ {\realbackslash\space }%
- %
- % Need these unexpandable (because we define \tt as a dummy)
- % definitions when @{ or @} appear in index entry text. Also, more
- % complicated, when \tex is in effect and \{ is a \delimiter again.
- % We can't use \lbracecmd and \rbracecmd because texindex assumes
- % braces and backslashes are used only as delimiters. Perhaps we
- % should use @lbracechar and @rbracechar?
- \def\{{{\tt\char123}}%
- \def\}{{\tt\char125}}%
+ \definedummyletter\@%
+ \definedummyletter\ %
+ %
+ % For texindex which always views { and } as separators.
+ \def\{{\lbracechar{}}%
+ \def\}{\rbracechar{}}%
%
% Do the redefinitions.
\definedummies
% Used for the aux and toc files, where @ is the escape character.
%
-% For the aux and toc files, @ is the escape character. So we want to
-% redefine everything using @ as the escape character (instead of
-% \realbackslash, still used for index files). When everything uses @,
-% this will be simpler.
-%
\def\atdummies{%
- \def\@{@@}%
- \def\ {@ }%
- \let\{ = \lbraceatcmd
- \let\} = \rbraceatcmd
+ \definedummyletter\@%
+ \definedummyletter\ %
+ \definedummyletter\{%
+ \definedummyletter\}%
%
% Do the redefinitions.
\definedummies
\definedummyword\TeX
%
% Assorted special characters.
+ \definedummyword\atchar
\definedummyword\arrow
\definedummyword\bullet
\definedummyword\comma
\def\LaTeX{LaTeX}%
\def\TeX{TeX}%
%
- % Assorted special characters.
- % (The following {} will end up in the sort string, but that's ok.)
- \def\arrow{->}%
- \def\bullet{bullet}%
- \def\comma{,}%
- \def\copyright{copyright}%
- \def\dots{...}%
- \def\enddots{...}%
- \def\equiv{==}%
- \def\error{error}%
- \def\euro{euro}%
- \def\expansion{==>}%
- \def\geq{>=}%
- \def\guillemetleft{<<}%
- \def\guillemetright{>>}%
- \def\guilsinglleft{<}%
- \def\guilsinglright{>}%
- \def\leq{<=}%
- \def\minus{-}%
- \def\point{.}%
- \def\pounds{pounds}%
- \def\print{-|}%
- \def\quotedblbase{"}%
- \def\quotedblleft{"}%
- \def\quotedblright{"}%
- \def\quoteleft{`}%
- \def\quoteright{'}%
- \def\quotesinglbase{,}%
- \def\registeredsymbol{R}%
- \def\result{=>}%
- \def\textdegree{o}%
+ % Assorted special characters. \defglyph gives the control sequence a
+ % definition that removes the {} that follows its use.
+ \defglyph\atchar{@}%
+ \defglyph\arrow{->}%
+ \defglyph\bullet{bullet}%
+ \defglyph\comma{,}%
+ \defglyph\copyright{copyright}%
+ \defglyph\dots{...}%
+ \defglyph\enddots{...}%
+ \defglyph\equiv{==}%
+ \defglyph\error{error}%
+ \defglyph\euro{euro}%
+ \defglyph\expansion{==>}%
+ \defglyph\geq{>=}%
+ \defglyph\guillemetleft{<<}%
+ \defglyph\guillemetright{>>}%
+ \defglyph\guilsinglleft{<}%
+ \defglyph\guilsinglright{>}%
+ \defglyph\leq{<=}%
+ \defglyph\lbracechar{\{}%
+ \defglyph\minus{-}%
+ \defglyph\point{.}%
+ \defglyph\pounds{pounds}%
+ \defglyph\print{-|}%
+ \defglyph\quotedblbase{"}%
+ \defglyph\quotedblleft{"}%
+ \defglyph\quotedblright{"}%
+ \defglyph\quoteleft{`}%
+ \defglyph\quoteright{'}%
+ \defglyph\quotesinglbase{,}%
+ \defglyph\rbracechar{\}}%
+ \defglyph\registeredsymbol{R}%
+ \defglyph\result{=>}%
+ \defglyph\textdegree{o}%
%
% We need to get rid of all macros, leaving only the arguments (if present).
% Of course this is not nearly correct, but it is the best we can do for now.
\macrolist
\let\value\indexnofontsvalue
}
+\def\defglyph#1#2{\def#1##1{#2}} % see above
\f
% \initial {@}
% as its first line, TeX doesn't complain about mismatched braces
% (because it thinks @} is a control sequence).
- \catcode`\@ = 11
+ \catcode`\@ = 12
% See comment in \requireopenindexfile.
\def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi
\openin 1 \jobname.\indexname s
\let\indexlbrace\{ % Likewise, set these sequences for braces
\let\indexrbrace\} % used in the sort key.
\begindoublecolumns
- \let\entryorphanpenalty=\indexorphanpenalty
+ \let\entrywidowpenalty=\indexwidowpenalty
%
% Read input from the index file line by line.
\loopdo
%
\def\entry{%
\begingroup
+ %
+ % For pdfTeX and XeTeX.
+ % The redefinition of \domark stops marks being added in \pdflink to
+ % preserve coloured links across page boundaries. Otherwise the marks
+ % would get in the way of \lastbox in \insertindexentrybox.
+ \let\domark\relax
%
% Start a new paragraph if necessary, so our assignments below can't
% affect previous text.
\def\*{\unskip\space\ignorespaces}%
\def\entrybreak{\hfil\break}% An undocumented command
%
- % A bit of stretch before each entry for the benefit of balancing
- % columns.
- \vskip 0pt plus0.5pt
- %
% Swallow the left brace of the text (first parameter):
\afterassignment\doentry
\let\temp =
%
\ifpdf
\pdfgettoks#1.%
- \bgroup\let\domark\relax
- \hskip\skip\thinshrinkable\the\toksA
- \egroup
- % The redefinion of \domark stops marks being added in \pdflink to
- % preserve coloured links across page boundaries. Otherwise the marks
- % would get in the way of \lastbox in \insertindexentrybox.
+ \hskip\skip\thinshrinkable\the\toksA
\else
\ifx\XeTeXrevision\thisisundefined
\hskip\skip\thinshrinkable #1%
\else
\pdfgettoks#1.%
- \bgroup\let\domark\relax
- \hskip\skip\thinshrinkable\the\toksA
- \egroup
+ \hskip\skip\thinshrinkable\the\toksA
\fi
\fi
\fi
\global\setbox\entryindexbox=\vbox{\unhbox\boxA}%
\else
\global\setbox\entryindexbox=\vbox\bgroup
- \prevdepth=\entrylinedepth
- \noindent
% We want the text of the entries to be aligned to the left, and the
% page numbers to be aligned to the right.
%
+ \parindent = 0pt
\advance\leftskip by 0pt plus 1fil
\advance\leftskip by 0pt plus -1fill
\rightskip = 0pt plus -1fil
% if the list of page numbers is long, to be aligned to the right.
\parfillskip=0pt plus -1fill
%
- \hangindent=1em
- %
\advance\rightskip by \entryrightmargin
% Determine how far we can stretch into the margin.
% This allows, e.g., "Appendix H GNU Free Documentation License" to
\ifdim\dimen@ > 0.8\dimen@ii % due to long index text
\dimen@ = 0.7\dimen@ % Try to split the text roughly evenly
\dimen@ii = \hsize
- \advance \dimen@ii by -1em
\ifnum\dimen@>\dimen@ii
% If the entry is too long, use the whole line
\dimen@ = \dimen@ii
\fi
\advance\leftskip by 0pt plus 1fill % ragged right
\advance \dimen@ by 1\rightskip
- \parshape = 2 0pt \dimen@ 1em \dimen@ii
- % Ideally we'd add a finite glue at the end of the first line only, but
- % TeX doesn't seem to provide a way to do such a thing.
+ \parshape = 2 0pt \dimen@ 0em \dimen@ii
+ % Ideally we'd add a finite glue at the end of the first line only,
+ % instead of using \parshape with explicit line lengths, but TeX
+ % doesn't seem to provide a way to do such a thing.
+ %
+ \leftskip = 1em
+ \parindent = -1em
\fi\fi
+ \indent % start paragraph
\unhbox\boxA
%
% Do not prefer a separate line ending with a hyphen to fewer lines.
\endgroup
% delay text of entry until after penalty
\bgroup\aftergroup\insertindexentrybox
- \entryorphanpenalty
+ \entrywidowpenalty
}}
\newskip\thinshrinkable
\newbox\entryindexbox
\def\insertindexentrybox{%
- \copy\entryindexbox
- % The following gets the depth of the last box. This is for even
- % line spacing when entries span several lines.
- \setbox\dummybox\vbox{%
- \unvbox\entryindexbox
- \nointerlineskip
- \lastbox
- \global\entrylinedepth=\prevdepth
+ \ourunvbox\entryindexbox
+}
+
+% Use \lastbox to take apart vbox box by box, and add each sub-box
+% to the current vertical list.
+\def\ourunvbox#1{%
+\bgroup % for local binding of \delayedbox
+ % Remove the last box from box #1
+ \global\setbox#1=\vbox{%
+ \unvbox#1%
+ \unskip % remove any glue
+ \unpenalty
+ \global\setbox\interbox=\lastbox
}%
- % Note that we couldn't simply \unvbox\entryindexbox followed by
- % \nointerlineskip\lastbox to remove the last box and then reinstate it,
- % because this resets how far the box has been \moveleft'ed to 0. \unvbox
- % doesn't affect \prevdepth either.
+ \setbox\delayedbox=\box\interbox
+ \ifdim\ht#1=0pt\else
+ \ourunvbox#1 % Repeat on what's left of the box
+ \nobreak
+ \fi
+ \box\delayedbox
+\egroup
}
-\newdimen\entrylinedepth
+\newbox\delayedbox
+\newbox\interbox
% Default is no penalty
-\let\entryorphanpenalty\egroup
+\let\entrywidowpenalty\egroup
% Used from \printindex. \firsttoken should be the first token
% after the \entry. If it's not another \entry, we are at the last
% line of a group of index entries, so insert a penalty to discourage
-% orphaned index entries.
-\long\def\indexorphanpenalty{%
+% widowed index entries.
+\long\def\indexwidowpenalty{%
\def\isentry{\entry}%
\ifx\firsttoken\isentry
\else
- \unskip\penalty 9000
- % The \unskip here stops breaking before the glue. It relies on the
- % \vskip above being there, otherwise there is an error
- % "You can't use `\unskip' in vertical mode". There has to be glue
- % in the current vertical list that hasn't been added to the
- % "current page". See Chapter 24 of the TeXbook. This contradicts
- % Section 8.3.7 in "TeX by Topic," though.
+ \penalty 9000
\fi
\egroup % now comes the box added with \aftergroup
}
\newbox\partialpage
\newdimen\doublecolumnhsize
-\newdimen\doublecolumntopgap
-\doublecolumntopgap = 0pt
% Use inside an output routine to save \topmark and \firstmark
\def\savemarks{%
%
% Double the \vsize as well. (We don't need a separate register here,
% since nobody clobbers \vsize.)
- \global\doublecolumntopgap = \topskip
- \global\advance\doublecolumntopgap by -1\baselineskip
- \advance\vsize by -1\doublecolumntopgap
\vsize = 2\vsize
- \topskip=0pt
- \global\entrylinedepth=0pt\relax
+ %
+ % For the benefit of balancing columns
+ \advance\baselineskip by 0pt plus 0.5pt
}
% The double-column output routine for all double-column pages except
%
\hsize = \doublecolumnhsize
\wd0=\hsize \wd2=\hsize
- \vbox{%
- \vskip\doublecolumntopgap
- \hbox to\txipagewidth{\box0\hfil\box2}}%
+ \hbox to\txipagewidth{\box0\hfil\box2}%
}
\dimen@ = \ht0
\advance\dimen@ by \topskip
\advance\dimen@ by-\baselineskip
- \ifdim\dimen@<14\baselineskip
+ \ifdim\dimen@<5\baselineskip
% Don't split a short final column in two.
\setbox2=\vbox{}%
\else
\divide\dimen@ by 2 % target to split to
\dimen@ii = \dimen@
\splittopskip = \topskip
- % Loop until the second column is no higher than the first
+ % Loop until left column is at least as high as the right column.
{%
\vbadness = 10000
\loop
\global\setbox3 = \copy0
\global\setbox1 = \vsplit3 to \dimen@
- % Remove glue from bottom of first column to
- % make sure it is higher than the second.
- \global\setbox1 = \vbox{\unvbox1\unpenalty\unskip}%
- \ifdim\ht3>\ht1
+ \ifdim\ht1<\ht3
\global\advance\dimen@ by 1pt
\repeat
}%
+ % Now the left column is in box 1, and the right column in box 3.
+ % Check whether the left column has come out higher than the page itself.
+ % (Note that we have doubled \vsize for the double columns, so
+ % the actual height of the page is 0.5\vsize).
\ifdim2\ht1>\vsize
- % The left column has come out longer than the page itself. (Note
- % that we have doubled \vsize for the double columns, so
- % the actual height of the page is 0.5\vsize). Just split the last
- % of the double column material roughly in half.
+ % Just split the last of the double column material roughly in half.
\setbox2=\box0
\setbox0 = \vsplit2 to \dimen@ii
- \setbox0=\vbox to\dimen@ii{\unvbox0}%
- \setbox2=\vbox to\dimen@ii{\unvbox2}%
+ \setbox0=\vbox to \dimen@ii {\unvbox0\vfill}%
+ \setbox2=\vbox to \dimen@ii {\unvbox2\vfill}%
\else
- \multiply\dimen@ii by 5
- \divide\dimen@ii by 4
- \global\setbox3 = \copy0
- \global\setbox1 = \vsplit3 to \dimen@ii
- \global\setbox\balancedcolumns=\vbox{\pagesofar}%
- \ifdim\ht3<\dimen@ii
+ % Compare the heights of the two columns.
+ \ifdim4\ht1>5\ht3
% Column heights are too different, so don't make their bottoms
- % flush with each other. The glue at the end of the second column
- % allows a second column to stretch, reducing the difference in
- % height between the two.
- \setbox0=\vbox to\dimen@{\unvbox1\vfill}%
- \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}%
+ % flush with each other.
+ \setbox2=\vbox to \ht1 {\unvbox3\vfill}%
+ \setbox0=\vbox to \ht1 {\unvbox1\vfill}%
\else
- \setbox0=\vbox to\dimen@{\unvbox1}%
- \setbox2=\vbox to\dimen@{\unvbox3}%
+ % Make column bottoms flush with each other.
+ \setbox2=\vbox to\ht1{\unvbox3\unskip}%
+ \setbox0=\vbox to\ht1{\unvbox1\unskip}%
\fi
\fi
\fi
\fi % no return type
#3% output function name
}%
- {\rm\enskip}% hskip 0.5 em of \tenrm
+ {\rm\enskip}% hskip 0.5 em of \rmfont
%
\boldbrax
% arguments will be output next, if any.
\ifpdf
% For pdfTeX and LuaTeX
{\indexnofonts
- \turnoffactive
\makevalueexpandable
+ \turnoffactive
% This expands tokens, so do it after making catcode changes, so _
% etc. don't get their TeX definitions. This ignores all spaces in
% #4, including (wrongly) those in the middle of the filename.
%
% This (wrongly) does not take account of leading or trailing
% spaces in #1, which should be ignored.
- \edef\pdfxrefdest{#1}%
- \ifx\pdfxrefdest\empty
- \def\pdfxrefdest{Top}% no empty targets
- \else
- \txiescapepdf\pdfxrefdest % escape PDF special chars
+ \setpdfdestname{#1}%
+ %
+ \ifx\pdfdestname\empty
+ \def\pdfdestname{Top}% no empty targets
\fi
%
\leavevmode
\startlink attr{/Border [0 0 0]}%
\ifnum\filenamelength>0
- goto file{\the\filename.pdf} name{\pdfxrefdest}%
+ goto file{\the\filename.pdf} name{\pdfdestname}%
\else
- goto name{\pdfmkpgn{\pdfxrefdest}}%
+ goto name{\pdfmkpgn{\pdfdestname}}%
\fi
}%
\setcolor{\linkcolor}%
\else
% For XeTeX
{\indexnofonts
- \turnoffactive
\makevalueexpandable
+ \turnoffactive
% This expands tokens, so do it after making catcode changes, so _
% etc. don't get their TeX definitions. This ignores all spaces in
% #4, including (wrongly) those in the middle of the filename.
%
% This (wrongly) does not take account of leading or trailing
% spaces in #1, which should be ignored.
- \iftxiuseunicodedestname
- \def\pdfxrefdest{#1}% Pass through Unicode characters.
- \else
- \edef\pdfxrefdest{#1}% Replace Unicode characters to ASCII.
- \fi
- \ifx\pdfxrefdest\empty
- \def\pdfxrefdest{Top}% no empty targets
- \else
- \txiescapepdf\pdfxrefdest % escape PDF special chars
+ \setpdfdestname{#1}%
+ %
+ \ifx\pdfdestname\empty
+ \def\pdfdestname{Top}% no empty targets
\fi
%
\leavevmode
\ifnum\filenamelength>0
- % By the default settings,
+ % With default settings,
% XeTeX (xdvipdfmx) replaces link destination names with integers.
% In this case, the replaced destination names of
- % remote PDF cannot be known. In order to avoid replacement,
- % you can use commandline option `-C 0x0010' for xdvipdfmx.
+ % remote PDFs are no longer known. In order to avoid a replacement,
+ % you can use xdvipdfmx's command line option `-C 0x0010'.
% If you use XeTeX 0.99996+ (TeX Live 2016+),
- % the commandline option is not neccesary
- % because we can use `dvipdfmx:config' special.
+ % this command line option is no longer necessary
+ % because we can use the `dvipdfmx:config' special.
\special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A
- << /S /GoToR /F (\the\filename.pdf) /D (name\pdfxrefdest) >> >>}%
+ << /S /GoToR /F (\the\filename.pdf) /D (\pdfdestname) >> >>}%
\else
\special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A
- << /S /GoTo /D (name\pdfxrefdest) >> >>}%
+ << /S /GoTo /D (\pdfdestname) >> >>}%
\fi
}%
\setcolor{\linkcolor}%
\global\righthyphenmin = #3\relax
}
-% XeTeX and LuaTeX can handle native Unicode.
-% Their default I/O is UTF-8 sequence instead of byte-wise.
-% Other TeX engine (pdfTeX etc.) I/O is byte-wise.
+% XeTeX and LuaTeX can handle Unicode natively.
+% Their default I/O uses UTF-8 sequences instead of a byte-wise operation.
+% Other TeX engines' I/O (pdfTeX, etc.) is byte-wise.
%
\newif\iftxinativeunicodecapable
\newif\iftxiusebytewiseio
%
\else \ifx \declaredencoding \utfeight
\iftxinativeunicodecapable
- % For native Unicode (XeTeX and LuaTeX)
+ % For native Unicode handling (XeTeX and LuaTeX)
\nativeunicodechardefs
\else
- % For UTF-8 byte sequence (TeX, eTeX and pdfTeX)
+ % For treating UTF-8 as byte sequences (TeX, eTeX and pdfTeX)
\setnonasciicharscatcode\active
% since we already invoked \utfeightchardefs at the top level
- % (below), do not re-invoke it, then our check for duplicated
- % definitions triggers. Making non-ascii chars active is enough.
+ % (below), do not re-invoke it, otherwise our check for duplicated
+ % definitions gets triggered. Making non-ascii chars active is
+ % sufficient.
\fi
%
\else
\fi % latone
\fi % lattwo
\fi % ascii
+ %
+ \ifx\XeTeXrevision\thisisundefined
+ \else
+ \ifx \declaredencoding \utfeight
+ \else
+ \ifx \declaredencoding \ascii
+ \else
+ \message{Warning: XeTeX with non-UTF-8 encodings cannot handle %
+ non-ASCII characters in auxiliary files.}%
+ \fi
+ \fi
+ \fi
}
% emacs-page
\gdefchar^^a0{\tie}
\gdefchar^^a1{\exclamdown}
\gdefchar^^a2{{\tcfont \char162}} % cent
- \gdefchar^^a3{\pounds}
+ \gdefchar^^a3{\pounds{}}
\gdefchar^^a4{{\tcfont \char164}} % currency
\gdefchar^^a5{{\tcfont \char165}} % yen
\gdefchar^^a6{{\tcfont \char166}} % broken bar
\gdefchar^^a7{\S}
\gdefchar^^a8{\"{}}
- \gdefchar^^a9{\copyright}
+ \gdefchar^^a9{\copyright{}}
\gdefchar^^aa{\ordf}
- \gdefchar^^ab{\guillemetleft}
+ \gdefchar^^ab{\guillemetleft{}}
\gdefchar^^ac{\ensuremath\lnot}
\gdefchar^^ad{\-}
- \gdefchar^^ae{\registeredsymbol}
+ \gdefchar^^ae{\registeredsymbol{}}
\gdefchar^^af{\={}}
%
\gdefchar^^b0{\textdegree}
\gdefchar^^b8{\cedilla\ }
\gdefchar^^b9{$^1$}
\gdefchar^^ba{\ordm}
- \gdefchar^^bb{\guillemetright}
+ \gdefchar^^bb{\guillemetright{}}
\gdefchar^^bc{$1\over4$}
\gdefchar^^bd{$1\over2$}
\gdefchar^^be{$3\over4$}
% Encoding is almost identical to Latin1.
\latonechardefs
%
- \gdefchar^^a4{\euro}
+ \gdefchar^^a4{\euro{}}
\gdefchar^^a6{\v S}
\gdefchar^^a8{\v s}
\gdefchar^^b4{\v Z}
\gdefchar^^ae{\v Z}
\gdefchar^^af{\dotaccent Z}
%
- \gdefchar^^b0{\textdegree}
+ \gdefchar^^b0{\textdegree{}}
\gdefchar^^b1{\ogonek{a}}
\gdefchar^^b2{\ogonek{ }}
\gdefchar^^b3{\l}
\def\U#1{%
\expandafter\ifx\csname uni:#1\endcsname \relax
\iftxinativeunicodecapable
- % Any Unicode characters can be used by native Unicode.
- % However, if the font does not have the glyph, the letter will miss.
+ % All Unicode characters can be used if native Unicode handling is
+ % active. However, if the font does not have the glyph,
+ % letters are missing.
\begingroup
\uccode`\.="#1\relax
\uppercase{.}
\def\UTFviiiFourOctetsName#1#2#3#4{%
\csname u8:#1\string #2\string #3\string #4\endcsname}%
-% For UTF-8 byte sequence (TeX, e-TeX and pdfTeX)
-% Definition macro to replace the Unicode character
-% Definition macro that is used by @U command
+% For UTF-8 byte sequences (TeX, e-TeX and pdfTeX),
+% provide a definition macro to replace a Unicode character;
+% this gets used by the @U command
%
\begingroup
\catcode`\"=12
\uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
\endgroup
-% For native Unicode (XeTeX and LuaTeX)
-% Definition macro that is set catcode other non global
+% For native Unicode handling (XeTeX and LuaTeX),
+% provide a definition macro that sets a catcode to `other' non-globally
%
\def\DeclareUnicodeCharacterNativeOther#1#2{%
\catcode"#1=\other
\DeclareUnicodeCharacter{00A0}{\tie}%
\DeclareUnicodeCharacter{00A1}{\exclamdown}%
\DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent
- \DeclareUnicodeCharacter{00A3}{\pounds}%
+ \DeclareUnicodeCharacter{00A3}{\pounds{}}%
\DeclareUnicodeCharacter{00A4}{{\tcfont \char164}}% 0244=currency
\DeclareUnicodeCharacter{00A5}{{\tcfont \char165}}% 0245=yen
\DeclareUnicodeCharacter{00A6}{{\tcfont \char166}}% 0246=brokenbar
\DeclareUnicodeCharacter{00A7}{\S}%
\DeclareUnicodeCharacter{00A8}{\"{ }}%
- \DeclareUnicodeCharacter{00A9}{\copyright}%
+ \DeclareUnicodeCharacter{00A9}{\copyright{}}%
\DeclareUnicodeCharacter{00AA}{\ordf}%
- \DeclareUnicodeCharacter{00AB}{\guillemetleft}%
+ \DeclareUnicodeCharacter{00AB}{\guillemetleft{}}%
\DeclareUnicodeCharacter{00AC}{\ensuremath\lnot}%
\DeclareUnicodeCharacter{00AD}{\-}%
- \DeclareUnicodeCharacter{00AE}{\registeredsymbol}%
+ \DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}%
\DeclareUnicodeCharacter{00AF}{\={ }}%
%
\DeclareUnicodeCharacter{00B0}{\ringaccent{ }}%
\DeclareUnicodeCharacter{00B8}{\cedilla{ }}%
\DeclareUnicodeCharacter{00B9}{$^1$}%
\DeclareUnicodeCharacter{00BA}{\ordm}%
- \DeclareUnicodeCharacter{00BB}{\guillemetright}%
+ \DeclareUnicodeCharacter{00BB}{\guillemetright{}}%
\DeclareUnicodeCharacter{00BC}{$1\over4$}%
\DeclareUnicodeCharacter{00BD}{$1\over2$}%
\DeclareUnicodeCharacter{00BE}{$3\over4$}%
% Punctuation
\DeclareUnicodeCharacter{2013}{--}%
\DeclareUnicodeCharacter{2014}{---}%
- \DeclareUnicodeCharacter{2018}{\quoteleft}%
- \DeclareUnicodeCharacter{2019}{\quoteright}%
- \DeclareUnicodeCharacter{201A}{\quotesinglbase}%
- \DeclareUnicodeCharacter{201C}{\quotedblleft}%
- \DeclareUnicodeCharacter{201D}{\quotedblright}%
- \DeclareUnicodeCharacter{201E}{\quotedblbase}%
+ \DeclareUnicodeCharacter{2018}{\quoteleft{}}%
+ \DeclareUnicodeCharacter{2019}{\quoteright{}}%
+ \DeclareUnicodeCharacter{201A}{\quotesinglbase{}}%
+ \DeclareUnicodeCharacter{201C}{\quotedblleft{}}%
+ \DeclareUnicodeCharacter{201D}{\quotedblright{}}%
+ \DeclareUnicodeCharacter{201E}{\quotedblbase{}}%
\DeclareUnicodeCharacter{2020}{\ensuremath\dagger}%
\DeclareUnicodeCharacter{2021}{\ensuremath\ddagger}%
- \DeclareUnicodeCharacter{2022}{\bullet}%
+ \DeclareUnicodeCharacter{2022}{\bullet{}}%
\DeclareUnicodeCharacter{202F}{\thinspace}%
- \DeclareUnicodeCharacter{2026}{\dots}%
- \DeclareUnicodeCharacter{2039}{\guilsinglleft}%
- \DeclareUnicodeCharacter{203A}{\guilsinglright}%
+ \DeclareUnicodeCharacter{2026}{\dots{}}%
+ \DeclareUnicodeCharacter{2039}{\guilsinglleft{}}%
+ \DeclareUnicodeCharacter{203A}{\guilsinglright{}}%
%
- \DeclareUnicodeCharacter{20AC}{\euro}%
+ \DeclareUnicodeCharacter{20AC}{\euro{}}%
%
- \DeclareUnicodeCharacter{2192}{\expansion}%
- \DeclareUnicodeCharacter{21D2}{\result}%
+ \DeclareUnicodeCharacter{2192}{\expansion{}}%
+ \DeclareUnicodeCharacter{21D2}{\result{}}%
%
% Mathematical symbols
\DeclareUnicodeCharacter{2200}{\ensuremath\forall}%
\DeclareUnicodeCharacter{2203}{\ensuremath\exists}%
\DeclareUnicodeCharacter{2208}{\ensuremath\in}%
- \DeclareUnicodeCharacter{2212}{\minus}%
+ \DeclareUnicodeCharacter{2212}{\minus{}}%
\DeclareUnicodeCharacter{2217}{\ast}%
\DeclareUnicodeCharacter{221E}{\ensuremath\infty}%
\DeclareUnicodeCharacter{2225}{\ensuremath\parallel}%
\DeclareUnicodeCharacter{2227}{\ensuremath\wedge}%
\DeclareUnicodeCharacter{2229}{\ensuremath\cap}%
- \DeclareUnicodeCharacter{2261}{\equiv}%
+ \DeclareUnicodeCharacter{2261}{\equiv{}}%
\DeclareUnicodeCharacter{2264}{\ensuremath\leq}%
\DeclareUnicodeCharacter{2265}{\ensuremath\geq}%
\DeclareUnicodeCharacter{2282}{\ensuremath\subset}%
\newif\ifpassthroughchars
\passthroughcharsfalse
-% For native Unicode (XeTeX and LuaTeX)
-% Definition macro to replace / pass-through the Unicode character
+% For native Unicode handling (XeTeX and LuaTeX),
+% provide a definition macro to replace/pass-through a Unicode character
%
\def\DeclareUnicodeCharacterNative#1#2{%
\catcode"#1=\active
\endgroup
}
-% Native Unicode (XeTeX and LuaTeX) character replacing definitions
-% It makes the setting that replace the Unicode characters.
+% Native Unicode handling (XeTeX and LuaTeX) character replacing definition.
+% It activates the setting that replaces Unicode characters.
\def\nativeunicodechardefs{%
\let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNative
\unicodechardefs
}
-% For native Unicode (XeTeX and LuaTeX). Make the character token expand
+% For native Unicode handling (XeTeX and LuaTeX),
+% make the character token expand
% to the sequences given in \unicodechardefs for printing.
\def\DeclareUnicodeCharacterNativeAtU#1#2{%
\def\UTFAtUTmp{#2}
\expandafter\globallet\csname uni:#1\endcsname \UTFAtUTmp
}
-% Native Unicode (XeTeX and LuaTeX) @U command definitions
+% @U command definitions for native Unicode handling (XeTeX and LuaTeX).
\def\nativeunicodechardefsatu{%
\let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNativeAtU
\unicodechardefs
\relax
}
-% define all the unicode characters we know about, for the sake of @U.
+% define all Unicode characters we know about, for the sake of @U.
\iftxinativeunicodecapable
\nativeunicodechardefsatu
\else
@c vim:sw=2:
-@ignore
- arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
-@end ignore
@enablebackslashhack