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