From: Dr. Tobias Quathamer Date: Fri, 28 Oct 2016 15:31:53 +0000 (+0200) Subject: Merge tag 'upstream/2.19.49' into debian-experimental X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=dfb8333e640cd2e84ba1d5438af87c5c9bedde6e;hp=f5c6e2e4d661604789e4ae8741756375695296aa;p=lilypond.git Merge tag 'upstream/2.19.49' into debian-experimental Upstream version 2.19.49 --- diff --git a/.gitfilelist b/.gitfilelist index abcb24f56a..7487861715 100644 --- a/.gitfilelist +++ b/.gitfilelist @@ -1304,6 +1304,7 @@ Documentation/it/web/community.itexi 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 @@ -1535,6 +1536,9 @@ Documentation/pictures/bwv861-breitkopf.png 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 @@ -2230,6 +2234,7 @@ Documentation/web/download.itexi 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 @@ -2852,6 +2857,7 @@ input/regression/ledger-extra.ly 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 @@ -3318,6 +3324,7 @@ input/regression/optional-args.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 diff --git a/Documentation/ca/macros.itexi b/Documentation/ca/macros.itexi index 6e14cb3b0b..2fe43ab603 100644 --- a/Documentation/ca/macros.itexi +++ b/Documentation/ca/macros.itexi @@ -747,7 +747,7 @@ Per a la versió del LilyPond @version{} @macro exampleImage{IMAGE-FILE} @html -
+
\IMAGE-FILE\ diff --git a/Documentation/ca/web/community.itexi b/Documentation/ca/web/community.itexi index c8eba165de..43507271a5 100644 --- a/Documentation/ca/web/community.itexi +++ b/Documentation/ca/web/community.itexi @@ -1196,7 +1196,7 @@ que introduís més advertiments dels que hi ha actualment. @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 diff --git a/Documentation/changes.tely b/Documentation/changes.tely index c9315d59da..64707801d2 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -61,6 +61,14 @@ which scares away people. @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{ @dots{} }. + @item Slurs and phrasing slurs may now be started from individual notes in a chord. Several simultanous slurs per @code{Voice} need to be diff --git a/Documentation/cs/macros.itexi b/Documentation/cs/macros.itexi index 14c7dd9770..85be1a1404 100644 --- a/Documentation/cs/macros.itexi +++ b/Documentation/cs/macros.itexi @@ -707,7 +707,7 @@ Pro LilyPond ve verzi @version{} @macro exampleImage{IMAGE-FILE} @html -
+
\IMAGE-FILE\ diff --git a/Documentation/cs/web.texi b/Documentation/cs/web.texi index 255ade4032..1c3680ff13 100644 --- a/Documentation/cs/web.texi +++ b/Documentation/cs/web.texi @@ -138,7 +138,7 @@ Více se dočtete v @ref{Úvod,,úvodu}! @include web/news-front.itexi @divClass{float-right} -(@ref{Old news,,,,Starší novinky}) +(@ref{News,,,,Starší novinky}) @divEnd @divEnd diff --git a/Documentation/cs/web/community.itexi b/Documentation/cs/web/community.itexi index cdf319690a..55829684f1 100644 --- a/Documentation/cs/web/community.itexi +++ b/Documentation/cs/web/community.itexi @@ -848,7 +848,7 @@ příručky se nacházejí na @url{http://lilypond.org}.} @node Starší novinky @unnumberedsec Starší novinky -@translationof Old news +@translationof News @include web/news-front.itexi diff --git a/Documentation/css/lilypond-website.css b/Documentation/css/lilypond-website.css index 46723fa47f..e018b49774 100644 --- a/Documentation/css/lilypond-website.css +++ b/Documentation/css/lilypond-website.css @@ -340,11 +340,23 @@ div#quickSummary { 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 { @@ -367,35 +379,31 @@ div#news { 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%; @@ -512,12 +520,15 @@ img.float-right { } 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; } diff --git a/Documentation/de/macros.itexi b/Documentation/de/macros.itexi index 1a41265bd4..df1a8c3f1c 100644 --- a/Documentation/de/macros.itexi +++ b/Documentation/de/macros.itexi @@ -740,7 +740,7 @@ Für LilyPond Version @version{} @macro exampleImage{IMAGE-FILE} @html -
+
\IMAGE-FILE\ diff --git a/Documentation/de/web/community.itexi b/Documentation/de/web/community.itexi index de6578eec8..9b3c480191 100644 --- a/Documentation/de/web/community.itexi +++ b/Documentation/de/web/community.itexi @@ -1203,7 +1203,7 @@ automatisiert Patches, die zusätzliche Warnungen erzeugen, abzulehnen. @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 diff --git a/Documentation/es/macros.itexi b/Documentation/es/macros.itexi index 58c40c19b8..eeba20876c 100644 --- a/Documentation/es/macros.itexi +++ b/Documentation/es/macros.itexi @@ -746,7 +746,7 @@ Para la versión de LilyPond @version{} @macro exampleImage{IMAGE-FILE} @html -
+
\IMAGE-FILE\ diff --git a/Documentation/es/web/community.itexi b/Documentation/es/web/community.itexi index cdbf9c870d..173b079097 100644 --- a/Documentation/es/web/community.itexi +++ b/Documentation/es/web/community.itexi @@ -1312,7 +1312,7 @@ ellos disponible para el GSoC 2016) @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 diff --git a/Documentation/fr/extending/scheme-tutorial.itely b/Documentation/fr/extending/scheme-tutorial.itely index 4664a82cc2..991bd39108 100644 --- a/Documentation/fr/extending/scheme-tutorial.itely +++ b/Documentation/fr/extending/scheme-tutorial.itely @@ -1,7 +1,7 @@ @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' @@ -862,18 +862,28 @@ vingtQuatre = #(* 2 douze) @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 diff --git a/Documentation/fr/macros.itexi b/Documentation/fr/macros.itexi index 698fe20845..31bb17fe03 100644 --- a/Documentation/fr/macros.itexi +++ b/Documentation/fr/macros.itexi @@ -1,6 +1,6 @@ @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' @@ -218,16 +218,20 @@ Pour LilyPond version @version{} @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 @@ -770,7 +774,7 @@ Pour LilyPond version @version{} @macro exampleImage{IMAGE-FILE} @html -
+
\IMAGE-FILE\ @@ -843,4 +847,3 @@ cette page de Wikimedia Commons}. Cette section n'est pas encore encore traduite, veuillez vous reporter à la documentation correspondante en anglais. @end macro - diff --git a/Documentation/fr/notation/editorial.itely b/Documentation/fr/notation/editorial.itely index b403636bb1..24ecee56f5 100644 --- a/Documentation/fr/notation/editorial.itely +++ b/Documentation/fr/notation/editorial.itely @@ -1,7 +1,7 @@ @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' diff --git a/Documentation/fr/notation/expressive.itely b/Documentation/fr/notation/expressive.itely index bb1ce12cfa..9972b47c17 100644 --- a/Documentation/fr/notation/expressive.itely +++ b/Documentation/fr/notation/expressive.itely @@ -1,7 +1,7 @@ @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' @@ -306,7 +306,8 @@ la tête de note à laquelle il est attaché. Dans le cas où il se termine 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 { @@ -450,6 +451,8 @@ avec ou sans extenseur, ainsi que les indications de pédale. @snippets +@cindex soufflet et barre de mesure + @lilypondfile[verbatim,quote,texidoc,doctitle] {setting-hairpin-behavior-at-bar-lines.ly} @@ -703,7 +706,7 @@ liaison externe indique un phrasé, et un phrasé peut recouvrir plusieurs 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' { diff --git a/Documentation/fr/notation/input.itely b/Documentation/fr/notation/input.itely index 38a58ffdf3..2db032abc0 100644 --- a/Documentation/fr/notation/input.itely +++ b/Documentation/fr/notation/input.itely @@ -1,7 +1,7 @@ @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' @@ -395,7 +395,8 @@ avec les autres partitions se trouvant au même niveau pour composer le @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 @@ -1200,10 +1201,12 @@ LilyPond dispose d'ores et déjà d'un certain nombre de procédures : @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. diff --git a/Documentation/fr/notation/pitches.itely b/Documentation/fr/notation/pitches.itely index ed8e133c81..80975c0ded 100644 --- a/Documentation/fr/notation/pitches.itely +++ b/Documentation/fr/notation/pitches.itely @@ -1,7 +1,7 @@ @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' @@ -905,10 +905,15 @@ music = \relative { c'8. ees16( fis8. a16 b8.) gis16 f8. d16 } @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 : diff --git a/Documentation/fr/notation/simultaneous.itely b/Documentation/fr/notation/simultaneous.itely index bd89ab955c..1ef48714bd 100644 --- a/Documentation/fr/notation/simultaneous.itely +++ b/Documentation/fr/notation/simultaneous.itely @@ -1,6 +1,6 @@ @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' @@ -602,7 +602,7 @@ vont vers le haut, celles des voix paires vers le bas : >> @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 diff --git a/Documentation/fr/notation/spacing.itely b/Documentation/fr/notation/spacing.itely index 339c9d448e..8c0e61fd50 100644 --- a/Documentation/fr/notation/spacing.itely +++ b/Documentation/fr/notation/spacing.itely @@ -1,7 +1,7 @@ @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' @@ -124,7 +124,7 @@ Un bloc @code{\paper} ne doit donc en aucun cas prendre place au sein 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, diff --git a/Documentation/fr/notation/text.itely b/Documentation/fr/notation/text.itely index 3b5ad35351..87bb956de3 100644 --- a/Documentation/fr/notation/text.itely +++ b/Documentation/fr/notation/text.itely @@ -1,7 +1,7 @@ @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' @@ -536,7 +536,8 @@ Morceaux choisis : @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 diff --git a/Documentation/fr/web.texi b/Documentation/fr/web.texi index 6268bd6e89..4f1083f202 100644 --- a/Documentation/fr/web.texi +++ b/Documentation/fr/web.texi @@ -1,6 +1,6 @@ \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' @@ -137,24 +137,74 @@ Plus sur LilyPond dans notre @ref{Introduction} ! @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 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 diff --git a/Documentation/fr/web/community.itexi b/Documentation/fr/web/community.itexi index 4ad3c3db92..c3871201ff 100644 --- a/Documentation/fr/web/community.itexi +++ b/Documentation/fr/web/community.itexi @@ -1,7 +1,7 @@ @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' @@ -81,7 +81,7 @@ aujourd'hui. 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 @@ -104,7 +104,7 @@ aux cours des versions précédentes. * Auteurs:: * Remerciements:: * Publications:: -* Archives:: +* Actualités:: * Grenier:: @end menu @divEnd @@ -1346,9 +1346,9 @@ indisponibles pour le GSoc 2016) @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 diff --git a/Documentation/fr/web/introduction.itexi b/Documentation/fr/web/introduction.itexi index ceedcaeded..e11e8234c2 100644 --- a/Documentation/fr/web/introduction.itexi +++ b/Documentation/fr/web/introduction.itexi @@ -1,7 +1,7 @@ @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' @@ -478,12 +478,12 @@ pédagogiques. Voici par exemple un exercice de contrepoint. @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 diff --git a/Documentation/hu/macros.itexi b/Documentation/hu/macros.itexi index 78cf9a3fa7..44c61911bd 100644 --- a/Documentation/hu/macros.itexi +++ b/Documentation/hu/macros.itexi @@ -697,7 +697,7 @@ A LilyPond @version{} verziójához @macro exampleImage{IMAGE-FILE} @html -
+
\IMAGE-FILE\ diff --git a/Documentation/included/compile.itexi b/Documentation/included/compile.itexi index b198e40c6e..5568fb5dae 100644 --- a/Documentation/included/compile.itexi +++ b/Documentation/included/compile.itexi @@ -214,7 +214,7 @@ it is recommended that you also need to install @code{git}. 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; @@ -223,7 +223,7 @@ To use the @code{lily-git.tcl} GUI; sudo dnf install tk @end example -See @ruser{lily-git}. +See @rcontrib{lily-git}. @end itemize @@ -297,7 +297,7 @@ it is recommended that you also need to install @code{git}. 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; @@ -306,7 +306,7 @@ 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 @@ -365,7 +365,7 @@ it is recommended that you also need to install @code{git}. 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; @@ -374,7 +374,7 @@ 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 @@ -424,7 +424,7 @@ it is recommended that you also need to install @code{git}. 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; @@ -433,7 +433,7 @@ 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 diff --git a/Documentation/it/macros.itexi b/Documentation/it/macros.itexi index 5847b695e2..4378722350 100644 --- a/Documentation/it/macros.itexi +++ b/Documentation/it/macros.itexi @@ -1,6 +1,6 @@ @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' @@ -203,16 +203,20 @@ Per la versione di LilyPond @version{} @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 @@ -746,7 +750,7 @@ Per la versione di LilyPond @version{} @macro exampleImage{IMAGE-FILE} @html -
+
\IMAGE-FILE\ diff --git a/Documentation/it/web.texi b/Documentation/it/web.texi index 82551ac928..96d864cbf6 100644 --- a/Documentation/it/web.texi +++ b/Documentation/it/web.texi @@ -1,6 +1,6 @@ \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' @@ -102,13 +102,63 @@ Maggiori informazioni nella nostra @ref{Introduzione}! -@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 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 @@ -117,7 +167,7 @@ Maggiori informazioni nella nostra @ref{Introduzione}! @c do nothing @end ifclear @ifset web_version -@divId{homePageSideBar} +@divId{homepage-sidebar} @subheading Stabile @ref{Download, Download @versionStable} diff --git a/Documentation/it/web/community.itexi b/Documentation/it/web/community.itexi index a7d974919a..e6a915b358 100644 --- a/Documentation/it/web/community.itexi +++ b/Documentation/it/web/community.itexi @@ -1,6 +1,6 @@ @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' @@ -70,7 +70,7 @@ quando si discute di LilyPond. @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. @@ -92,7 +92,7 @@ quando si discute di LilyPond. * Autori:: * Riconoscimenti:: * Pubblicazioni:: -* Notizie vecchie:: +* Notizie:: * Soffitta:: @end menu @divEnd @@ -1272,9 +1272,9 @@ per GSoC 2016) @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 diff --git a/Documentation/it/web/introduction.itexi b/Documentation/it/web/introduction.itexi index f61466cbf1..0e00e01a22 100644 --- a/Documentation/it/web/introduction.itexi +++ b/Documentation/it/web/introduction.itexi @@ -1,6 +1,6 @@ @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' @@ -418,18 +418,18 @@ e le parentesi quadre sulle sezioni legate. @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. diff --git a/Documentation/it/web/news-headlines.itexi b/Documentation/it/web/news-headlines.itexi new file mode 100644 index 0000000000..c41665a518 --- /dev/null +++ b/Documentation/it/web/news-headlines.itexi @@ -0,0 +1,46 @@ +@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 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 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 diff --git a/Documentation/ja/macros.itexi b/Documentation/ja/macros.itexi index 2530ab362a..4f11299db5 100644 --- a/Documentation/ja/macros.itexi +++ b/Documentation/ja/macros.itexi @@ -722,7 +722,7 @@ LilyPond バージョン @version{} 用 @macro exampleImage{IMAGE-FILE} @html -
+
\IMAGE-FILE\ diff --git a/Documentation/ja/web.texi b/Documentation/ja/web.texi index 38db614f76..8e407d4527 100644 --- a/Documentation/ja/web.texi +++ b/Documentation/ja/web.texi @@ -1,6 +1,6 @@ \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' @@ -139,13 +139,65 @@ LilyPond はフリーソフトウェアであり、@uref{http://gnu.org,GNU プ @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 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 @@ -156,7 +208,7 @@ LilyPond はフリーソフトウェアであり、@uref{http://gnu.org,GNU プ @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? diff --git a/Documentation/ja/web/community.itexi b/Documentation/ja/web/community.itexi index 8be2657353..6c7d7deca1 100644 --- a/Documentation/ja/web/community.itexi +++ b/Documentation/ja/web/community.itexi @@ -1,6 +1,6 @@ @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' @@ -72,7 +72,7 @@ @ref{出版物}: 我々が書いたもの、我々についてかかれたもの。 @item -@ref{古いニュース}: アーカイブ。 +@ref{ニュース}: LilyPond プロジェクトからのニュース。 @item @ref{物置}: アナウンスと過去のバージョンからの変更ログ。 @@ -94,7 +94,7 @@ * 著者:: * 謝辞:: * 出版物:: -* 古いニュース:: +* ニュース:: * 物置:: @end menu @divEnd @@ -1267,9 +1267,9 @@ GSoC 2016) @contactUsAbout{academic papers} -@node 古いニュース -@unnumberedsec 古いニュース -@translationof Old news +@node ニュース +@unnumberedsec ニュース +@translationof News @divClass{heading-center} @warning{多くの古いアナウンスと変更履歴が @ref{物置} で見つかります。} diff --git a/Documentation/ja/web/introduction.itexi b/Documentation/ja/web/introduction.itexi index ba880085f0..ed4924cb4f 100644 --- a/Documentation/ja/web/introduction.itexi +++ b/Documentation/ja/web/introduction.itexi @@ -1,6 +1,6 @@ @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' @@ -341,7 +341,7 @@ LilyPond を試してみる決心がついたのなら、@c @divClass{column-center-top} @subheading 美しい例 -@c Beautiful examples +@c Beautiful Examples LilyPond は、いかなる種類の譜刻にも対応できる、@c 強力で、自由度の高いツールです。@c @@ -470,11 +470,11 @@ LilyPond は教育を目的とした使用にも適しています。@c @divEnd @divClass{column-center-middle-color2} -@subheading ポピュラー音楽 -@c Popular Music +@subheading リード譜 +@c Lead Sheets メロディー、歌詞、コード名、フレットボードを持つ@c -ポピュラー音楽のリード譜を簡単に作れます。@c +リード譜を簡単に作れます。@c 以下の例ではあらかじめ定義されているフレットボード ダイアグラムを@c 使用していますが、@c 状況に合わせて様々なカスタマイズを行うことができます。 diff --git a/Documentation/macros.itexi b/Documentation/macros.itexi index cc09619dcc..3558d0c811 100644 --- a/Documentation/macros.itexi +++ b/Documentation/macros.itexi @@ -733,7 +733,7 @@ For LilyPond version @version{} @macro exampleImage{IMAGE-FILE} @html -
+
\IMAGE-FILE\ diff --git a/Documentation/nl/macros.itexi b/Documentation/nl/macros.itexi index 2f82070f2c..4de99bb1d4 100644 --- a/Documentation/nl/macros.itexi +++ b/Documentation/nl/macros.itexi @@ -754,7 +754,7 @@ Voor LilyPond versie @version{} @macro exampleImage{IMAGE-FILE} @html -
+
\IMAGE-FILE\ diff --git a/Documentation/nl/web.texi b/Documentation/nl/web.texi index e977208b10..783e26a348 100644 --- a/Documentation/nl/web.texi +++ b/Documentation/nl/web.texi @@ -140,7 +140,7 @@ Lees meer in onze @ref{Inleiding}! @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 diff --git a/Documentation/notation/input.itely b/Documentation/notation/input.itely index f131cd6012..2c8df57890 100644 --- a/Documentation/notation/input.itely +++ b/Documentation/notation/input.itely @@ -374,8 +374,9 @@ books within the file (see @ref{Titles explained}). 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 @@ -1143,10 +1144,11 @@ provided: @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? diff --git a/Documentation/pictures/bwv861-lilypond-large.ly b/Documentation/pictures/bwv861-lilypond-large.ly new file mode 100644 index 0000000000..b14f0930e7 --- /dev/null +++ b/Documentation/pictures/bwv861-lilypond-large.ly @@ -0,0 +1,105 @@ +\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. 8 r r + 4 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 + } + } +} diff --git a/Documentation/pictures/bwv861-lilypond-large.png b/Documentation/pictures/bwv861-lilypond-large.png new file mode 100644 index 0000000000..099fe3d31c Binary files /dev/null and b/Documentation/pictures/bwv861-lilypond-large.png differ diff --git a/Documentation/pictures/bwv861-lilypond.png b/Documentation/pictures/bwv861-lilypond.png new file mode 100644 index 0000000000..b3a7e31a40 Binary files /dev/null and b/Documentation/pictures/bwv861-lilypond.png differ diff --git a/Documentation/snippets/midi-intro.itely b/Documentation/snippets/midi-intro.itely index 3302e03eab..4a1104fe63 100644 --- a/Documentation/snippets/midi-intro.itely +++ b/Documentation/snippets/midi-intro.itely @@ -2,7 +2,6 @@ @unnumbered MIDI @nodeprefix MIDI -@ruser{MIDI output} +@ruser{Creating MIDI output} @lysnippets - diff --git a/Documentation/web.texi b/Documentation/web.texi index 935f8e8b78..3081e4d3c8 100644 --- a/Documentation/web.texi +++ b/Documentation/web.texi @@ -133,13 +133,65 @@ Read more in our @ref{Introduction}! @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 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 @@ -150,7 +202,7 @@ Read more in our @ref{Introduction}! @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? diff --git a/Documentation/web/community.itexi b/Documentation/web/community.itexi index 31b400fa89..0cad92d715 100644 --- a/Documentation/web/community.itexi +++ b/Documentation/web/community.itexi @@ -69,7 +69,7 @@ discussing LilyPond. @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. @@ -91,7 +91,7 @@ discussing LilyPond. * Authors:: * Acknowledgements:: * Publications:: -* Old news:: +* News:: * Attic:: @end menu @divEnd @@ -1253,8 +1253,8 @@ GSoC 2016) @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 diff --git a/Documentation/web/introduction.itexi b/Documentation/web/introduction.itexi index 2ea2085ab9..a3bde1bf94 100644 --- a/Documentation/web/introduction.itexi +++ b/Documentation/web/introduction.itexi @@ -303,7 +303,7 @@ already decided to try LilyPond, first read about our @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! @@ -420,9 +420,9 @@ Here is an example of a simple counterpoint exercise. @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. diff --git a/Documentation/web/news-front.itexi b/Documentation/web/news-front.itexi index d9a715518b..645364afe8 100644 --- a/Documentation/web/news-front.itexi +++ b/Documentation/web/news-front.itexi @@ -1,18 +1,18 @@ @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 diff --git a/Documentation/web/news-headlines.itexi b/Documentation/web/news-headlines.itexi new file mode 100644 index 0000000000..469eda1c34 --- /dev/null +++ b/Documentation/web/news-headlines.itexi @@ -0,0 +1,38 @@ +@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 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 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 diff --git a/Documentation/web/news.itexi b/Documentation/web/news.itexi index 990d92ceaa..655c04f9ca 100644 --- a/Documentation/web/news.itexi +++ b/Documentation/web/news.itexi @@ -26,6 +26,18 @@ NOTE: * 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} diff --git a/Documentation/web/server/lilypond.org.htaccess b/Documentation/web/server/lilypond.org.htaccess index d6bc37fb59..9a11bb1859 100644 --- a/Documentation/web/server/lilypond.org.htaccess +++ b/Documentation/web/server/lilypond.org.htaccess @@ -43,8 +43,6 @@ RedirectMatch ^/bugs /bug-reports #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 diff --git a/Documentation/zh/macros.itexi b/Documentation/zh/macros.itexi index 5289304b13..69fc85ec77 100644 --- a/Documentation/zh/macros.itexi +++ b/Documentation/zh/macros.itexi @@ -732,7 +732,7 @@ LilyPond 版本 @version{} @macro exampleImage{IMAGE-FILE} @html -
+
\IMAGE-FILE\ diff --git a/Documentation/zh/web/community.itexi b/Documentation/zh/web/community.itexi index 5e3efa38ca..78208bae21 100644 --- a/Documentation/zh/web/community.itexi +++ b/Documentation/zh/web/community.itexi @@ -68,7 +68,7 @@ discussing LilyPond. @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. @@ -1152,7 +1152,7 @@ any patch which introduced extra warnings. @node 旧闻 @unnumberedsec 旧闻 -@translationof Old news +@translationof News @divClass{heading-center} @warning{Many old announcements and changelogs can be found in diff --git a/INSTALL.txt b/INSTALL.txt index b285145bd2..3b8dda69a8 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -176,13 +176,13 @@ build the documentation. 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 @@ -232,13 +232,13 @@ LilyPond and build the documentation.. 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 @@ -280,13 +280,13 @@ the documentation. 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 @@ -323,13 +323,13 @@ compile LilyPond and build the documentation. 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 diff --git a/NEWS.txt b/NEWS.txt index 0aac6fc370..ac7ad1d469 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -1,6 +1,13 @@ 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: ‘ ... ’. + • 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. diff --git a/VERSION b/VERSION index 5a26a8bd8e..ae4cbbca64 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ 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 diff --git a/input/regression/id.ly b/input/regression/id.ly index 7595621102..c7a34dea6d 100644 --- a/input/regression/id.ly +++ b/input/regression/id.ly @@ -1,8 +1,8 @@ -\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. " } diff --git a/input/regression/ledger-lines-non-merging.ly b/input/regression/ledger-lines-non-merging.ly new file mode 100644 index 0000000000..ac3bbed2cc --- /dev/null +++ b/input/regression/ledger-lines-non-merging.ly @@ -0,0 +1,32 @@ +\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 8 } \\ { \voiceThree \fixB dis } >> s +} diff --git a/input/regression/output-attributes.ly b/input/regression/output-attributes.ly new file mode 100644 index 0000000000..4068294066 --- /dev/null +++ b/input/regression/output-attributes.ly @@ -0,0 +1,15 @@ +\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{ @dots{} } +" +} + +{ + \override NoteHead.output-attributes = + #'((id . 123) (class . foo) (data-whatever . "bar")) + c +} diff --git a/lily/grob.cc b/lily/grob.cc index 23a1cafae4..924c80e500 100644 --- a/lily/grob.cc +++ b/lily/grob.cc @@ -189,11 +189,11 @@ Grob::get_print_stencil () const 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); @@ -816,16 +816,17 @@ ADD_INTERFACE (Grob, "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 " diff --git a/lily/ledger-line-spanner.cc b/lily/ledger-line-spanner.cc index 2fe2d7d9c3..8aeb71aab2 100644 --- a/lily/ledger-line-spanner.cc +++ b/lily/ledger-line-spanner.cc @@ -161,7 +161,9 @@ struct Ledger_request Interval max_head_extent_; int max_position_; vector heads_; - map ledger_extents_; + // The map's keys are vertical ledger line positions. The values are + // vectors of the x-extents of ledger lines. + map > ledger_extents_; Ledger_request () { max_ledger_extent_.set_empty (); @@ -294,9 +296,7 @@ Ledger_line_spanner::print (SCM smob) // 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++) { @@ -337,10 +337,25 @@ Ledger_line_spanner::print (SCM smob) 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 &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); + } + } } } } @@ -349,36 +364,34 @@ Ledger_line_spanner::print (SCM smob) // 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 &lex = i->second[d].ledger_extents_; - for (map::iterator k = lex.begin (); + map > &lex = i->second[d].ledger_extents_; + for (map >::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 &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 (); } diff --git a/lily/stencil-integral.cc b/lily/stencil-integral.cc index ee12c53f36..1b9aa5181b 100644 --- a/lily/stencil-integral.cc +++ b/lily/stencil-integral.cc @@ -944,7 +944,7 @@ stencil_traverser (PangoMatrix trans, SCM expr) 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 { diff --git a/lily/stencil-interpret.cc b/lily/stencil-interpret.cc index 87e6496de7..25fad0d842 100644 --- a/lily/stencil-interpret.cc +++ b/lily/stencil-interpret.cc @@ -78,13 +78,14 @@ interpret_stencil_expression (SCM expr, 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; } diff --git a/ly/Welcome-to-LilyPond-MacOS.ly b/ly/Welcome-to-LilyPond-MacOS.ly index 6424d756e5..2b11d39d38 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.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 77503b4ff8..176075cd5c 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.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/out/ChangeLog b/out/ChangeLog index 404ab88043..a9afe7b51f 100644 --- a/out/ChangeLog +++ b/out/ChangeLog @@ -1 +1 @@ -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 diff --git a/out/RELEASE-COMMIT b/out/RELEASE-COMMIT index 3f56d35050..2a30437392 100644 --- a/out/RELEASE-COMMIT +++ b/out/RELEASE-COMMIT @@ -1,32 +1,32 @@ -commit fd22d6c4d857718d0046dc2b8b802b9ddff13cb5 +commit d9b80e6ee9187ab71ffc2778c9b18c435f3ef73f Author: Phil Holmes -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" diff --git a/po/eo.po b/po/eo.po index bb416b100e..c49268baa2 100644 --- a/po/eo.po +++ b/po/eo.po @@ -1,22 +1,23 @@ # 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 , 2012, 2013, 2015 +# Felipe Castro , 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 \n" "Language-Team: Esperanto \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 @@ -167,7 +168,7 @@ msgstr "evitinda \\textstyle, nova sintakso \\key" #: 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" @@ -587,10 +588,10 @@ msgstr "Forigi oldaddlyrics" #: 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 "" @@ -830,15 +831,15 @@ msgstr "Nun 'consistent-broken-slope' estas traktata per la voko 'positions'.\n" 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." @@ -944,12 +945,12 @@ msgstr "Antaŭsigna aliiga okto aperas por neekzistanta aliigo n-ro %s, disponeb 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" @@ -958,29 +959,29 @@ msgstr "" "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" @@ -988,8 +989,8 @@ 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)" @@ -1040,7 +1041,7 @@ msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS 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" @@ -1072,7 +1073,7 @@ msgid "make a numbered backup [default: filename.ext~]" 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" @@ -1093,17 +1094,17 @@ msgstr "Ĉeso ĉe lasta sukcesa regulo" 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" @@ -1112,7 +1113,7 @@ msgstr "" "%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." @@ -1133,7 +1134,7 @@ msgstr "" "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" @@ -1171,7 +1172,7 @@ msgid "add DIR to include path" 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" @@ -1184,7 +1185,7 @@ msgid "PAD" 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 @@ -1721,7 +1722,7 @@ msgstr "formetita averto: %s" 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" @@ -1735,7 +1736,7 @@ msgstr "Ne eblis trovi 'glyph-name' por aliigo %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'" @@ -1748,11 +1749,6 @@ msgstr "argumento de \\applycontext ne estas proceduro" 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" @@ -1765,12 +1761,12 @@ msgstr "ĉu estas du 'Axis_group_engraver'?" 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" @@ -1800,11 +1796,11 @@ msgid "beam was started here" 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" @@ -1814,22 +1810,24 @@ msgid "cannot change `%s' to `%s'" 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" @@ -1868,22 +1866,22 @@ msgstr "ne eblas trovi lini-salton kiu kontentigas limigojn" 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\"" @@ -1893,20 +1891,20 @@ 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" @@ -1915,7 +1913,7 @@ 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" @@ -1924,7 +1922,7 @@ msgstr "" "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" @@ -1952,22 +1950,22 @@ msgstr "nefinigita episemo" 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" @@ -1986,7 +1984,17 @@ msgstr "Aldonado de tipar-dosiero: %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..." @@ -2050,12 +2058,12 @@ msgstr "Nekonata interfaco '%s'" 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" @@ -2084,7 +2092,7 @@ msgstr "forigo de nefinigita streketo" 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'" @@ -2094,11 +2102,11 @@ 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" @@ -2139,21 +2147,21 @@ msgstr "ni preteratentas paŭzon: kantligaturo ne povas enhavi paŭzon" 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" @@ -2162,20 +2170,33 @@ 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 delivered 0, yet +#. unsmob delivers true. This means that unsmob 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'" @@ -2196,19 +2217,19 @@ msgstr "ne eblas trovi dosieron init: '%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." @@ -2217,12 +2238,12 @@ 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" @@ -2234,7 +2255,7 @@ msgstr "" "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" @@ -2266,11 +2287,11 @@ msgstr "" "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." @@ -2278,45 +2299,45 @@ msgstr "" "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" @@ -2324,19 +2345,19 @@ msgstr "" "ŝ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" @@ -2344,7 +2365,7 @@ msgstr "" "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." @@ -2352,24 +2373,24 @@ msgstr "" "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" @@ -2379,84 +2400,84 @@ msgstr "" "%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" @@ -2508,7 +2529,7 @@ msgstr "" 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'" @@ -2544,7 +2565,7 @@ msgstr "Kalkulado de paĝsaltoj..." 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\"" @@ -2578,37 +2599,37 @@ msgstr "neniu el notkapoj '%s' aŭ '%s' estis trovataj" 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" @@ -2646,16 +2667,16 @@ msgstr "provado de %d sistemoj" 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" @@ -2672,68 +2693,68 @@ msgstr "'min-systems-per-page' estas pli granda ol 'max-systems-per-page', ni pr 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" @@ -2742,21 +2763,21 @@ msgstr "" "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'" @@ -2779,7 +2800,7 @@ msgstr "Nombro da elementoj: %d (etendigiloj %d) " 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" @@ -2792,11 +2813,11 @@ msgstr "Konvertado de ĉeno '%s' al UTF-16be fiaskis: %s" 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'..." @@ -2831,25 +2852,25 @@ msgstr "ne estas 'grob'-nomo, '%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" @@ -2879,7 +2900,7 @@ msgstr "Relokigo: estas absoluta: argv0=%s\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" @@ -2888,30 +2909,30 @@ msgstr "" "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" @@ -2920,33 +2941,33 @@ 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" @@ -2985,7 +3006,7 @@ msgstr "%s sen kaŭzo" 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?" @@ -3020,18 +3041,18 @@ msgstr "eble la enigo devus indiki polifoniajn voĉojn" 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" @@ -3052,7 +3073,7 @@ msgstr "nefinigita tekst-etendigilo" msgid "unterminated tie" msgstr "nefinigita ligaturo" -#: tie-engraver.cc:373 +#: tie-engraver.cc:377 msgid "lonely tie" msgstr "sola ligaturo" @@ -3066,7 +3087,7 @@ 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'" @@ -3076,17 +3097,17 @@ 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" @@ -3151,206 +3172,206 @@ msgstr "ankaŭ jam ekzistas finigita etendigilo" 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)" @@ -3369,24 +3390,34 @@ msgstr "Alvokado de '~a'..." 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'" @@ -3442,60 +3473,60 @@ msgstr "ne eblas redifini event-klason '~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." @@ -3535,12 +3566,12 @@ msgstr "ne eblas trovi priskribon por la atributo '~S' (~S)" 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..." @@ -3565,7 +3596,7 @@ msgstr "ni ne scias kiel enkorpigi ~S=~S" 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" @@ -3613,20 +3644,20 @@ msgstr "Eraro en kalkulado de vostligo. Atendante (~S,~S), trovis ~S." 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" @@ -3636,51 +3667,51 @@ msgstr "" "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" @@ -3689,36 +3720,31 @@ msgstr "" "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" @@ -3758,67 +3784,77 @@ msgstr "la inversigota tonalto ne estas en skalo; preterpaso" 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" @@ -3847,23 +3883,23 @@ msgstr "Signobildo devas havi unikodan valoron" 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 { ... }" @@ -3877,19 +3913,24 @@ msgstr "nekonata kleftipo '~a'" 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 @@ -3938,6 +3979,15 @@ msgstr "" "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'" diff --git a/po/lilypond.pot b/po/lilypond.pot index c51faefffd..33764d1f88 100644 --- a/po/lilypond.pot +++ b/po/lilypond.pot @@ -6,10 +6,10 @@ #, 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 \n" "Language-Team: LANGUAGE \n" @@ -787,6 +787,14 @@ msgid "" "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" @@ -3784,19 +3792,19 @@ msgstr "" 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 "" @@ -3910,101 +3918,101 @@ 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 "" diff --git a/python/convertrules.py b/python/convertrules.py index f64312a839..b3000400da 100644 --- a/python/convertrules.py +++ b/python/convertrules.py @@ -3903,6 +3903,29 @@ def conv (str): '', 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, diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index d55ab4c8c7..06358986b0 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -524,13 +524,7 @@ left and one to the right of this grob.") ;;; ;;; 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 () -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 @@ -720,6 +714,14 @@ different voices. Default value@tie{}1.") ;;; ;;; 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 () containing all of the +stencils that comprise a given grob. For example, +@code{'((id . 123) (class . foo) (data-whatever . @qq{bar}))} will produce +@code{ @dots{} }. +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 diff --git a/scm/define-stencil-commands.scm b/scm/define-stencil-commands.scm index 7eb31a9600..23c17abb9b 100644 --- a/scm/define-stencil-commands.scm +++ b/scm/define-stencil-commands.scm @@ -29,7 +29,7 @@ defined in the output modules (@file{output-*.scm})." ellipse embedded-ps embedded-svg - end-enclosing-id-node + end-group-node glyph-string grob-cause named-glyph @@ -46,7 +46,7 @@ defined in the output modules (@file{output-*.scm})." setcolor setrotation setscale - start-enclosing-id-node + start-group-node text unknown url-link @@ -63,7 +63,7 @@ are used internally in @file{lily/@/stencil-interpret.cc}." combine-stencil delay-stencil-evaluation footnote - id + output-attributes rotate-stencil scale-stencil translate-stencil diff --git a/scm/define-woodwind-diagrams.scm b/scm/define-woodwind-diagrams.scm index 48aaf68239..409090b7a5 100644 --- a/scm/define-woodwind-diagrams.scm +++ b/scm/define-woodwind-diagrams.scm @@ -632,7 +632,7 @@ returns @samp{1/3}." (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)) @@ -644,7 +644,7 @@ returns @samp{1/3}." (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) @@ -938,16 +938,27 @@ returns @samp{1/3}." (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)) diff --git a/scm/lily-library.scm b/scm/lily-library.scm index bbbe3cc53a..214c095cf2 100644 --- a/scm/lily-library.scm +++ b/scm/lily-library.scm @@ -708,29 +708,15 @@ right (@var{dir}=+1)." (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 diff --git a/scm/music-functions.scm b/scm/music-functions.scm index 9c36ceaf4d..e7728ec889 100644 --- a/scm/music-functions.scm +++ b/scm/music-functions.scm @@ -82,31 +82,33 @@ First it recurses over the children, then the function is applied to (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. diff --git a/scm/output-ps.scm b/scm/output-ps.scm index 6d3ab63c2f..97909da80c 100644 --- a/scm/output-ps.scm +++ b/scm/output-ps.scm @@ -52,10 +52,10 @@ "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) diff --git a/scm/output-svg.scm b/scm/output-svg.scm index 78bda3c35b..653664122c 100644 --- a/scm/output-svg.scm +++ b/scm/output-svg.scm @@ -61,10 +61,15 @@ "c = close" (format #f "\n" entity)) -(define (start-enclosing-id-node s) - (string-append "\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 "\n")) + +(define (end-group-node) "\n") (define-public (comment s) diff --git a/scm/stencil.scm b/scm/stencil.scm index bda7e29a8f..17f5f9084f 100644 --- a/scm/stencil.scm +++ b/scm/stencil.scm @@ -751,21 +751,18 @@ of the white stencil we make between 0 and 2*pi." (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) @@ -774,7 +771,7 @@ of the white stencil we make between 0 and 2*pi." (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 diff --git a/tex/texinfo.tex b/tex/texinfo.tex index 79bc925655..fad2bc4dc3 100644 --- a/tex/texinfo.tex +++ b/tex/texinfo.tex @@ -3,7 +3,7 @@ % 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, @@ -862,36 +862,6 @@ where each line of input produces a line of output.} \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} @@ -1108,9 +1078,14 @@ where each line of input produces a line of output.} % 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{ @@ -1138,7 +1113,24 @@ where each line of input produces a line of output.} 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} @@ -1199,6 +1191,14 @@ where each line of input produces a line of output.} \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 @@ -1308,19 +1308,77 @@ output) for that.)} \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} % @@ -1348,36 +1406,13 @@ output) for that.)} % 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{% @@ -1535,7 +1570,6 @@ output) for that.)} % % For XeTeX % -\newif\iftxiuseunicodedestname \ifx\XeTeXrevision\thisisundefined \else % @@ -1543,73 +1577,125 @@ output) for that.)} % \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}}% @@ -1629,7 +1715,7 @@ output) for that.)} \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 @@ -1651,9 +1737,9 @@ output) for that.)} \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 @@ -1713,7 +1799,7 @@ output) for that.)} {\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} % @@ -1725,7 +1811,7 @@ output) for that.)} \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. @@ -1769,40 +1855,9 @@ output) for that.)} } \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 @@ -2153,8 +2208,8 @@ end \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} @@ -2287,8 +2342,8 @@ end \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} @@ -2394,6 +2449,12 @@ end \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 @@ -2420,20 +2481,55 @@ end \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 @@ -2442,78 +2538,72 @@ end % 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$} @@ -3297,23 +3387,10 @@ end \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 = , @@ -3432,7 +3509,7 @@ end % \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} @@ -3691,7 +3768,7 @@ end % Macros to be used within @titlepage: -\let\subtitlerm=\tenrm +\let\subtitlerm=\rmfont \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} \parseargdef\title{% @@ -3896,7 +3973,7 @@ end \message{tables,} -% Tables -- @table, @ftable, @ktable, @vtable, @item(x). +% Tables -- @table, @ftable, @vtable, @item(x). % default indentation of table text \newdimen\tableindent \tableindent=.8in @@ -3908,7 +3985,7 @@ end % 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). @@ -3976,7 +4053,7 @@ end \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}% @@ -3985,10 +4062,6 @@ end \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}% @@ -4032,7 +4105,6 @@ end } \def\Etable{\endgraf\afterenvbreak} \let\Eftable\Etable -\let\Ektable\Etable \let\Evtable\Etable \let\Eitemize\Etable \let\Eenumerate\Etable @@ -4786,14 +4858,7 @@ end % #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 @@ -4818,17 +4883,12 @@ end % \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 @@ -4836,16 +4896,11 @@ end % 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 @@ -4917,6 +4972,7 @@ end \definedummyword\TeX % % Assorted special characters. + \definedummyword\atchar \definedummyword\arrow \definedummyword\bullet \definedummyword\comma @@ -5133,37 +5189,40 @@ end \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. @@ -5178,6 +5237,7 @@ end \macrolist \let\value\indexnofontsvalue } +\def\defglyph#1#2{\def#1##1{#2}} % see above @@ -5427,7 +5487,7 @@ end % \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 @@ -5455,7 +5515,7 @@ end \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 @@ -5555,6 +5615,12 @@ end % \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. @@ -5569,10 +5635,6 @@ end \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 = @@ -5606,20 +5668,13 @@ end % \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 @@ -5628,11 +5683,10 @@ end \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 @@ -5641,8 +5695,6 @@ end % 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 @@ -5662,17 +5714,21 @@ end \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. @@ -5690,7 +5746,7 @@ end \endgroup % delay text of entry until after penalty \bgroup\aftergroup\insertindexentrybox - \entryorphanpenalty + \entrywidowpenalty }} \newskip\thinshrinkable @@ -5698,40 +5754,43 @@ end \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 } @@ -5771,8 +5830,6 @@ end \newbox\partialpage \newdimen\doublecolumnhsize -\newdimen\doublecolumntopgap -\doublecolumntopgap = 0pt % Use inside an output routine to save \topmark and \firstmark \def\savemarks{% @@ -5855,12 +5912,10 @@ end % % 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 @@ -5890,9 +5945,7 @@ end % \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize - \vbox{% - \vskip\doublecolumntopgap - \hbox to\txipagewidth{\box0\hfil\box2}}% + \hbox to\txipagewidth{\box0\hfil\box2}% } @@ -5959,51 +6012,44 @@ end \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 @@ -7874,7 +7920,7 @@ end \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. @@ -8838,8 +8884,8 @@ end \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. @@ -8847,19 +8893,18 @@ end % % 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}% @@ -8868,8 +8913,8 @@ end \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. @@ -8877,32 +8922,27 @@ end % % 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}% @@ -9809,9 +9849,9 @@ directory should work if nowhere else does.} \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 @@ -9935,14 +9975,15 @@ directory should work if nowhere else does.} % \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 @@ -9953,6 +9994,18 @@ directory should work if nowhere else does.} \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 @@ -9984,18 +10037,18 @@ directory should work if nowhere else does.} \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} @@ -10009,7 +10062,7 @@ directory should work if nowhere else does.} \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$} @@ -10089,7 +10142,7 @@ directory should work if nowhere else does.} % 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} @@ -10118,7 +10171,7 @@ directory should work if nowhere else does.} \gdefchar^^ae{\v Z} \gdefchar^^af{\dotaccent Z} % - \gdefchar^^b0{\textdegree} + \gdefchar^^b0{\textdegree{}} \gdefchar^^b1{\ogonek{a}} \gdefchar^^b2{\ogonek{ }} \gdefchar^^b3{\l} @@ -10290,8 +10343,9 @@ directory should work if nowhere else does.} \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{.} @@ -10314,9 +10368,9 @@ directory should work if nowhere else does.} \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 @@ -10404,8 +10458,8 @@ directory should work if nowhere else does.} \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 @@ -10429,18 +10483,18 @@ directory should work if nowhere else does.} \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{ }}% @@ -10454,7 +10508,7 @@ directory should work if nowhere else does.} \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$}% @@ -10926,36 +10980,36 @@ directory should work if nowhere else does.} % 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}% @@ -11111,8 +11165,8 @@ directory should work if nowhere else does.} \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 @@ -11135,21 +11189,22 @@ directory should work if nowhere else does.} \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 @@ -11160,7 +11215,7 @@ directory should work if nowhere else does.} \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 @@ -11636,7 +11691,4 @@ directory should work if nowhere else does.} @c vim:sw=2: -@ignore - arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 -@end ignore @enablebackslashhack