From 2fef7b7eb7ac5d7a2ed237bf22a6ec6fe5d946d9 Mon Sep 17 00:00:00 2001 From: "Dr. Tobias Quathamer" Date: Tue, 3 Oct 2017 14:06:37 +0200 Subject: [PATCH] New upstream version 2.19.65 --- .gitfilelist | 69 +- AUTHORS.txt | 20 +- Documentation/ca/learning.tely | 4 + .../ca/learning/common-notation.itely | 40 +- Documentation/ca/learning/fundamental.itely | 60 +- Documentation/ca/learning/templates.itely | 4 + Documentation/ca/learning/tutorial.itely | 46 +- Documentation/ca/learning/tweaks.itely | 62 +- Documentation/ca/macros.itexi | 6 +- Documentation/ca/notation.tely | 4 + Documentation/ca/notation/expressive.itely | 1466 ++ Documentation/ca/notation/notation.itely | 15 +- Documentation/ca/notation/pitches.itely | 36 +- Documentation/ca/notation/repeats.itely | 910 + Documentation/ca/notation/rhythms.itely | 3871 +++++ Documentation/ca/notation/simultaneous.itely | 1304 ++ Documentation/ca/notation/staff.itely | 1577 ++ Documentation/ca/translations.itexi | 379 +- Documentation/ca/usage.tely | 2 + Documentation/ca/usage/running.itely | 14 +- Documentation/ca/usage/suggestions.itely | 9 +- Documentation/ca/usage/updating.itely | 3 + Documentation/ca/web.texi | 151 +- Documentation/ca/web/community.itexi | 16 +- Documentation/ca/web/download.itexi | 4 + Documentation/ca/web/introduction.itexi | 514 +- Documentation/ca/web/manuals.itexi | 3 + Documentation/ca/web/news-front.itexi | 1 + Documentation/changes.tely | 124 +- Documentation/common-macros.itexi | 2 +- Documentation/contributor.texi | 4 +- .../contributor/doc-translation-list.itexi | 40 +- ...{feta-font.itexi => emmentaler-font.itexi} | 43 +- Documentation/contributor/issues.itexi | 4 +- Documentation/contributor/quick-start.itexi | 38 +- Documentation/contributor/regressions.itexi | 49 +- Documentation/contributor/release-work.itexi | 4 +- Documentation/contributor/source-code.itexi | 21 +- Documentation/cs/learning.tely | 2 +- Documentation/cs/macros.itexi | 2 +- Documentation/cs/translations.itexi | 164 +- Documentation/cs/usage/running.itely | 2 +- Documentation/cs/web.texi | 2 +- Documentation/cs/web/community.itexi | 8 +- Documentation/cs/web/manuals.itexi | 2 +- Documentation/css/lilypond-manuals.css | 168 +- Documentation/css/lilypond-website.css | 24 +- Documentation/de/learning.tely | 2 +- Documentation/de/macros.itexi | 2 +- Documentation/de/notation/ancient.itely | 11 +- .../de/notation/changing-defaults.itely | 6 +- .../de/notation/fretted-strings.itely | 4 +- Documentation/de/notation/input.itely | 6 +- .../de/notation/notation-appendices.itely | 30 +- Documentation/de/notation/pitches.itely | 2 +- Documentation/de/notation/repeats.itely | 8 +- Documentation/de/notation/rhythms.itely | 4 +- Documentation/de/notation/spacing.itely | 2 +- Documentation/de/notation/text.itely | 10 +- Documentation/de/notation/vocal.itely | 4 +- .../de/texidocs/hymn-template.texidoc | 2 +- Documentation/de/translations.itexi | 656 +- Documentation/de/usage/running.itely | 2 +- Documentation/de/web/community.itexi | 6 +- Documentation/es/changes.tely | 133 +- .../es/extending/scheme-tutorial.itely | 40 +- Documentation/es/included/acknowledge.itexi | 52 + Documentation/es/included/helpus.itexi | 2 +- .../es/learning/common-notation.itely | 12 +- Documentation/es/learning/fundamental.itely | 184 +- Documentation/es/learning/tutorial.itely | 2 +- Documentation/es/learning/tweaks.itely | 2 +- Documentation/es/macros.itexi | 12 +- Documentation/es/notation/ancient.itely | 6 +- .../es/notation/changing-defaults.itely | 465 +- Documentation/es/notation/chords.itely | 22 +- Documentation/es/notation/contemporary.itely | 2 +- Documentation/es/notation/editorial.itely | 35 +- Documentation/es/notation/expressive.itely | 15 +- .../es/notation/fretted-strings.itely | 4 +- Documentation/es/notation/input.itely | 92 +- Documentation/es/notation/keyboards.itely | 2 +- .../es/notation/notation-appendices.itely | 51 +- Documentation/es/notation/percussion.itely | 90 +- Documentation/es/notation/pitches.itely | 209 +- Documentation/es/notation/rhythms.itely | 71 +- Documentation/es/notation/simultaneous.itely | 24 +- Documentation/es/notation/spacing.itely | 99 +- Documentation/es/notation/staff.itely | 29 +- Documentation/es/notation/text.itely | 24 +- .../es/notation/unfretted-strings.itely | 6 +- Documentation/es/notation/vocal.itely | 10 +- Documentation/es/notation/wind.itely | 2 +- .../accordion-discant-symbols.texidoc | 10 +- .../es/texidocs/accordion-registers.texidoc | 11 - ...ured-bass-above-or-below-the-notes.texidoc | 2 +- .../texidocs/adding-ambitus-per-voice.texidoc | 2 +- ...ing-an-extra-staff-at-a-line-break.texidoc | 2 +- .../es/texidocs/adding-an-extra-staff.texidoc | 2 +- ...n-ottava-marking-to-a-single-voice.texidoc | 2 +- ...ng-bar-lines-to-chordnames-context.texidoc | 2 +- ...sing-tuplet-and-non-tuplet-rhythms.texidoc | 2 +- .../es/texidocs/adding-drum-parts.texidoc | 2 +- ...adding-extra-fingering-with-scheme.texidoc | 2 +- .../adding-fingerings-to-a-score.texidoc | 2 +- .../adding-fingerings-to-tablatures.texidoc | 2 +- ...aves-which-get-split-after-a-break.texidoc | 13 +- .../texidocs/adding-links-to-objects.texidoc | 2 +- ...g-orchestral-cues-to-a-vocal-score.texidoc | 2 +- ...an-expressive-mark-or-chordal-note.texidoc | 2 +- ...adding-the-current-date-to-a-score.texidoc | 2 +- ...ing-timing-marks-to-long-glissandi.texidoc | 2 +- ...olta-brackets-to-additional-staves.texidoc | 2 +- ...itional-voices-to-avoid-collisions.texidoc | 2 +- .../adjusting-grace-note-spacing.texidoc | 2 +- .../adjusting-lyrics-vertical-spacing.texidoc | 2 +- ...sting-the-shape-of-falls-and-doits.texidoc | 2 +- ...ing-and-centering-instrument-names.texidoc | 2 +- .../es/texidocs/aligning-bar-numbers.texidoc | 2 +- ...cts-created-with-the--mark-command.texidoc | 2 +- .../aligning-syllables-with-melisma.texidoc | 2 +- ...ngs-to-be-printed-inside-the-staff.texidoc | 2 +- ...ltering-the-length-of-beamed-stems.texidoc | 2 +- .../alternative-bar-numbering.texidoc | 2 +- .../texidocs/alternative-breve-notes.texidoc | 2 +- .../ambitus-with-multiple-voices.texidoc | 2 +- Documentation/es/texidocs/ambitus.texidoc | 2 +- .../analysis-brackets-above-the-staff.texidoc | 2 +- .../es/texidocs/ancient-fonts.texidoc | 6 +- ...n-transcription-of-gregorian-music.texidoc | 2 +- ...rn-transcription-of-mensural-music.texidoc | 14 - .../texidocs/ancient-time-signatures.texidoc | 2 +- .../texidocs/anglican-psalm-template.texidoc | 2 +- ...depending-on-the-step-of-the-scale.texidoc | 2 +- .../es/texidocs/arabic-improvisation.texidoc | 2 +- .../es/texidocs/asymmetric-slurs.texidoc | 2 +- .../automatic-beam-subdivisions.texidoc | 2 +- .../automatically-change-durations.texidoc | 4 +- ...he-middle-note-based-on-the-melody.texidoc | 2 +- ...g-collisions-with-chord-fingerings.texidoc | 2 +- ...tion-for-guitar--with-text-spanner.texidoc | 10 - .../beam-endings-in-score-context.texidoc | 2 +- .../beam-grouping-in-7-8-time.texidoc | 11 - .../texidocs/beams-across-line-breaks.texidoc | 2 +- ...-lines-using-the--whiteout-command.texidoc | 2 +- Documentation/es/texidocs/book-parts.texidoc | 2 +- .../es/texidocs/breathing-signs.texidoc | 2 +- .../texidocs/broken-crescendo-hairpin.texidoc | 7 +- .../caesura-railtracks-with-fermata.texidoc | 2 +- ...center-text-below-hairpin-dynamics.texidoc | 2 +- .../texidocs/centered-measure-numbers.texidoc | 2 +- ...markup-on-note-heads-automatically.texidoc | 15 - .../changing--flageolet-mark-size.texidoc | 2 +- ...ing-a-single-notes-size-in-a-chord.texidoc | 2 +- .../texidocs/changing-beam-knee-gap.texidoc | 2 +- .../texidocs/changing-chord-separator.texidoc | 2 +- ...anging-form-of-multi-measure-rests.texidoc | 2 +- .../changing-fret-orientations.texidoc | 2 +- ...di-output-to-one-channel-per-voice.texidoc | 2 +- .../changing-partcombine-texts.texidoc | 2 +- ...ng-properties-for-individual-grobs.texidoc | 2 +- .../es/texidocs/changing-stanza-fonts.texidoc | 2 +- ...d-spanner-styles-for-text-dynamics.texidoc | 2 +- .../texidocs/changing-the-ambitus-gap.texidoc | 2 +- ...lur-from-solid-to-dotted-or-dashed.texidoc | 2 +- .../changing-the-breath-mark-symbol.texidoc | 2 +- ...-to-german-or-semi-german-notation.texidoc | 2 +- ...nging-the-default-text-font-family.texidoc | 2 +- ...the-interval-of-lines-on-the-stave.texidoc | 2 +- ...mber-of-augmentation-dots-per-note.texidoc | 2 +- ...ing-the-number-of-lines-in-a-staff.texidoc | 2 +- ...itions-of-figured-bass-alterations.texidoc | 2 +- ...ging-the-size-of-woodwind-diagrams.texidoc | 2 +- .../texidocs/changing-the-staff-size.texidoc | 2 +- ...the-tempo-without-a-metronome-mark.texidoc | 2 +- ...ging-the-text-for-sustain-markings.texidoc | 2 +- .../changing-the-tuplet-number.texidoc | 7 +- ...tric-section-using--scaledurations.texidoc | 2 +- .../texidocs/chant-or-psalms-notation.texidoc | 4 +- .../chord-glissando-in-tablature.texidoc | 4 +- .../es/texidocs/chord-name-exceptions.texidoc | 2 +- .../es/texidocs/chord-name-major7.texidoc | 2 +- .../chordchanges-for-fretboards.texidoc | 2 +- ...be-transposed-by-arbitrary-amounts.texidoc | 2 +- .../es/texidocs/clip-systems.texidoc | 2 +- Documentation/es/texidocs/clusters.texidoc | 2 +- ...ing-notes-depending-on-their-pitch.texidoc | 2 +- ...mbining-dynamics-with-markup-texts.texidoc | 2 +- ...bining-two-parts-on-the-same-staff.texidoc | 2 +- .../texidocs/compound-time-signatures.texidoc | 6 +- ...ting-signs,-measure-grouping-signs.texidoc | 6 +- ...sistently-left-aligned-bar-numbers.texidoc | 2 +- .../texidocs/contemporary-glissando.texidoc | 2 +- ...nner-visibility-after-a-line-break.texidoc | 2 +- ...-the-placement-of-chord-fingerings.texidoc | 2 +- ...g-the-vertical-ordering-of-scripts.texidoc | 2 +- ...trolling-tuplet-bracket-visibility.texidoc | 2 +- .../texidocs/creating-a-delayed-turn.texidoc | 2 +- ...quence-of-notes-on-various-pitches.texidoc | 2 +- ...s-across-notes-in-different-voices.texidoc | 2 +- .../es/texidocs/creating-blank-staves.texidoc | 2 +- ...s-staff-arpeggios-in-a-piano-staff.texidoc | 2 +- ...-staff-arpeggios-in-other-contexts.texidoc | 2 +- .../creating-double-digit-fingerings.texidoc | 2 +- ...ing-metronome-marks-in-markup-mode.texidoc | 2 +- ...eating-real-parenthesized-dynamics.texidoc | 2 +- ...ating-simultaneous-rehearsal-marks.texidoc | 2 +- .../creating-slurs-across-voices.texidoc | 2 +- .../texidocs/creating-text-spanners.texidoc | 2 +- .../es/texidocs/cross-staff-stems.texidoc | 2 +- .../es/texidocs/cross-staff-tremolos.texidoc | 2 +- Documentation/es/texidocs/custodes.texidoc | 2 +- ...ustomizing-fretboard-fret-diagrams.texidoc | 2 +- .../customizing-markup-fret-diagrams.texidoc | 2 +- ...ms-on-the-center-line-of-the-staff.texidoc | 2 +- ...graver-in-scheme--ambitus-engraver.texidoc | 2 +- ...d-fretboards-for-other-instruments.texidoc | 2 +- .../es/texidocs/demo-midiinstruments.texidoc | 2 +- .../demonstrating-all-headers.texidoc | 2 +- ...et-with-only-one-staff-in-a-system.texidoc | 2 +- ...if-only-one-of-its-staves-is-alive.texidoc | 2 +- .../displaying-complex-chords.texidoc | 2 +- .../texidocs/displaying-grob-ancestry.texidoc | 55 +- .../es/texidocs/dotted-harmonics.texidoc | 2 +- .../es/texidocs/double-glissando.texidoc | 2 +- .../drawing-boxes-around-grobs.texidoc | 2 +- .../drawing-circles-around-note-heads.texidoc | 2 +- ...ing-circles-around-various-objects.texidoc | 2 +- ...namics-custom-text-spanner-postfix.texidoc | 2 +- .../dynamics-text-spanner-postfix.texidoc | 2 +- ...tive-postscript-in-a--markup-block.texidoc | 2 +- .../es/texidocs/engravers-one-by-one.texidoc | 2 +- .../texidocs/engraving-ties-manually.texidoc | 2 +- ...aving-tremolos-with-floating-beams.texidoc | 2 +- ...lets-using-only-one--times-command.texidoc | 16 - ...extending-glissandi-across-repeats.texidoc | 2 +- .../faking-a-hammer-in-tablatures.texidoc | 2 +- .../fine-tuning-pedal-brackets.texidoc | 2 +- ...ering-symbols-for-wind-instruments.texidoc | 2 +- ...cations,-and-right-hand-fingerings.texidoc | 2 +- .../es/texidocs/flamenco-notation.texidoc | 2 +- .../texidocs/flat-flags-and-beam-nibs.texidoc | 2 +- .../es/texidocs/flute-slap-notation.texidoc | 2 +- ...cing-a-clef-symbol-to-be-displayed.texidoc | 2 +- .../forcing-horizontal-shift-of-notes.texidoc | 2 +- .../forcing-hyphens-to-be-shown.texidoc | 2 +- ...h-to-adapt-to-metronomemarks-width.texidoc | 8 +- ...tart-from-a-given-letter-or-number.texidoc | 2 +- .../formatting-lyrics-syllables.texidoc | 2 +- ...t-diagrams-explained-and-developed.texidoc | 2 +- .../fretboards-alternate-tables.texidoc | 2 +- ...tted-string-harmonics-in-tablature.texidoc | 2 +- .../texidocs/generating-custom-flags.texidoc | 4 +- .../texidocs/generating-random-notes.texidoc | 2 +- ...in-scheme-without-using-the-parser.texidoc | 2 +- .../texidocs/glissandi-can-skip-grobs.texidoc | 2 +- ...aphical-and-text-woodwind-diagrams.texidoc | 2 +- ...d-lines--changing-their-appearance.texidoc | 2 +- ...-rhythms-and-notes-synchronization.texidoc | 2 +- .../es/texidocs/guitar-slides.texidoc | 4 +- .../es/texidocs/guitar-strum-rhythms.texidoc | 2 +- ...airpins-with-different-line-styles.texidoc | 2 +- ...tomized-polymetric-time-signatures.texidoc | 2 +- ...notes-at-the-start-of-a-new-system.texidoc | 2 +- ...he-extender-line-for-text-dynamics.texidoc | 2 +- ...cs-e.g.-sempre-pp,-piu-f,-subito-p.texidoc | 13 +- ...ow-to-change-fret-diagram-position.texidoc | 2 +- ...nd-below-the-same-barline-method-1.texidoc | 2 +- ...nd-below-the-same-barline-method-2.texidoc | 2 +- ...t-ties-between-syllables-in-lyrics.texidoc | 2 +- .../es/texidocs/hymn-template.texidoc | 2 +- Documentation/es/texidocs/incipit.texidoc | 15 +- ...staff-chords-with-arpeggio-bracket.texidoc | 2 +- .../es/texidocs/inserting-a-caesura.texidoc | 2 +- ...ragments-above-a-staff,-as-markups.texidoc | 2 +- .../texidocs/isolated-percent-repeats.texidoc | 2 +- .../es/texidocs/jazz-combo-template.texidoc | 2 +- .../keep-change-clefs-full-sized.texidoc | 2 +- .../es/texidocs/laissez-vibrer-ties.texidoc | 2 +- .../letter-tablature-formatting.texidoc | 2 +- Documentation/es/texidocs/line-arrows.texidoc | 2 +- .../es/texidocs/lyrics-alignment.texidoc | 2 +- .../es/texidocs/makam-example.texidoc | 2 +- ...ible-with-the-transparent-property.texidoc | 2 +- .../making-glissandi-breakable.texidoc | 2 +- ...-slurs-with-complex-dash-structure.texidoc | 2 +- ...taff-lines-thicker-than-the-others.texidoc | 2 +- ...ss-extenders-for-only-some-numbers.texidoc | 2 +- ...anually-controlling-beam-positions.texidoc | 2 +- ...ken-parts-with-a-cross-on-the-stem.texidoc | 2 +- .../es/texidocs/markup-lines.texidoc | 4 +- .../es/texidocs/measure-counter.texidoc | 2 +- ...ayout-bar-lines-between-the-staves.texidoc | 5 +- ...measure-rests-in-a-polyphonic-part.texidoc | 2 +- ...or-articulation-shorthand-notation.texidoc | 2 +- .../modifying-tuplet-bracket-length.texidoc | 2 +- .../moving-dotted-notes-in-polyphony.texidoc | 2 +- .../moving-slur-positions-vertically.texidoc | 2 +- .../multi-measure-rest-markup.texidoc | 2 +- .../es/texidocs/nesting-staves.texidoc | 2 +- .../non-default-tuplet-numbers.texidoc | 2 +- .../non-traditional-key-signatures.texidoc | 8 +- .../numbering-groups-of-measures.texidoc | 2 +- .../numbers-as-easy-note-heads.texidoc | 2 +- ...2-lyrics-spacing-in-newer-versions.texidoc | 2 +- ...open-string-harmonics-in-tablature.texidoc | 2 +- ...rchestra,-choir-and-piano-template.texidoc | 2 +- Documentation/es/texidocs/ottava-text.texidoc | 2 +- .../outputting-the-version-number.texidoc | 2 +- ...ing-articulations-of-destinct-type.texidoc | 2 +- Documentation/es/texidocs/page-label.texidoc | 2 +- .../partcombine-and-autobeamoff.texidoc | 2 +- .../percent-repeat-count-visibility.texidoc | 2 +- .../texidocs/percent-repeat-counter.texidoc | 2 +- .../es/texidocs/percussion-beaters.texidoc | 2 +- ...-line-breaks-within-beamed-tuplets.texidoc | 2 +- .../es/texidocs/piano-template-simple.texidoc | 2 +- ...iano-template-with-centered-lyrics.texidoc | 2 +- ...no-template-with-melody-and-lyrics.texidoc | 2 +- ...placement-of-right-hand-fingerings.texidoc | 2 +- .../texidocs/polyphony-in-tablature.texidoc | 2 +- .../es/texidocs/positioning-arpeggios.texidoc | 2 +- ...ng-fingering-indications-precisely.texidoc | 2 +- ...at-the-height-of-normal-note-beams.texidoc | 2 +- ...ng-grace-notes-with-floating-space.texidoc | 2 +- .../positioning-multi-measure-rests.texidoc | 2 +- ...ing-segno-and-coda-with-line-break.texidoc | 2 +- ...itioning-text-markups-inside-slurs.texidoc | 2 +- ...als-from-being-automatically-added.texidoc | 2 +- ...al-mark-from-removing-final-tuplet.texidoc | 2 +- ...ted-when-the-key-signature-changes.texidoc | 2 +- ...t-sign-at-the-beginning-of-a-piece.texidoc | 7 - ...g-bar-numbers-at-regular-intervals.texidoc | 2 +- ...ar-numbers-inside-boxes-or-circles.texidoc | 2 +- ...rinting-hairpins-in-various-styles.texidoc | 2 +- ...-hairpins-using-al-niente-notation.texidoc | 2 +- ...rinting-marks-at-the-end-of-a-line.texidoc | 2 +- .../printing-marks-on-every-staff.texidoc | 2 +- ...nd-rehearsal-marks-below-the-staff.texidoc | 2 +- ...sic-with-different-time-signatures.texidoc | 2 +- ...-with-and-without-an-octave-marker.texidoc | 2 +- .../printing-text-from-right-to-left.texidoc | 2 +- ...e-bar-number-for-the-first-measure.texidoc | 2 +- .../proportional-strict-notespacing.texidoc | 2 +- .../putting-lyrics-inside-the-staff.texidoc | 2 +- ...g-another-voice-with-transposition.texidoc | 2 +- .../es/texidocs/quoting-another-voice.texidoc | 2 +- .../texidocs/recorder-fingering-chart.texidoc | 2 +- ...efining-grace-note-global-defaults.texidoc | 2 +- .../removing-bar-numbers-from-a-score.texidoc | 2 +- ...ffgroup,-pianostaff,-or-grandstaff.texidoc | 2 +- .../removing-the-first-empty-line.texidoc | 2 +- Documentation/es/texidocs/rest-styles.texidoc | 2 +- .../reverting-default-beam-endings.texidoc | 2 +- .../es/texidocs/rhythmic-slashes.texidoc | 2 +- .../satb-choir-template---four-staves.texidoc | 2 +- .../score-for-diatonic-accordion.texidoc | 5 +- .../es/texidocs/script-chart.texidoc | 2 +- ...lations-from-key-signature-changes.texidoc | 2 +- ...ting-hairpin-behavior-at-bar-lines.texidoc | 2 +- .../setting-system-separators.texidoc | 2 +- ...he-double-repeat-default-for-volte.texidoc | 2 +- ...ing-the-minimum-length-of-hairpins.texidoc | 2 +- .../shortening-volta-brackets.texidoc | 2 +- .../showing-chords-at-changes.texidoc | 2 +- ...on-above-and-below-a-note-or-chord.texidoc | 2 +- .../es/texidocs/simple-lead-sheet.texidoc | 2 +- ...ate-with-notes,-lyrics,-and-chords.texidoc | 2 +- ...th-notes,-lyrics,-chords-and-frets.texidoc | 2 +- ...aff-template-with-notes-and-chords.texidoc | 2 +- ...aff-template-with-notes-and-lyrics.texidoc | 2 +- ...gle-staff-template-with-only-notes.texidoc | 2 +- .../es/texidocs/skips-in-lyric-mode-2.texidoc | 2 +- .../es/texidocs/skips-in-lyric-mode.texidoc | 2 +- .../es/texidocs/slides-in-tablature.texidoc | 2 +- ...snap-pizzicato-or-bartok-pizzicato.texidoc | 2 +- .../stand-alone-two-column-markup.texidoc | 2 +- ...tem-and-beam-behavior-in-tablature.texidoc | 2 +- Documentation/es/texidocs/stemlets.texidoc | 2 +- .../es/texidocs/strict-beat-beaming.texidoc | 2 +- .../string-number-extender-lines.texidoc | 2 +- .../string-quartet-template-simple.texidoc | 2 +- ...artet-template-with-separate-parts.texidoc | 2 +- .../es/texidocs/subdividing-beams.texidoc | 2 +- ...warnings-for-clashing-note-columns.texidoc | 2 +- .../es/texidocs/table-of-contents.texidoc | 4 +- .../es/texidocs/three-sided-box.texidoc | 2 +- .../es/texidocs/tick-bar-lines.texidoc | 2 +- ...ignature-in-parentheses---method-3.texidoc | 2 +- .../time-signature-in-parentheses.texidoc | 2 +- ...s-a-number-instead-of-the-fraction.texidoc | 2 +- ...tion-of-ancient-music-with-incipit.texidoc | 11 - ...inimum-accidentals-smart-transpose.texidoc | 2 +- .../texidocs/tweaking-clef-properties.texidoc | 40 +- ...tweaking-grace-layout-within-music.texidoc | 2 +- ...cket-at-the-start-of-a-staff-group.texidoc | 2 +- ...g-a-tick-as-the-breath-mark-symbol.texidoc | 2 +- .../using-alternative-flag-styles.texidoc | 5 +- ...racket-to-make-divisi-more-visible.texidoc | 2 +- ...utochange-with-more-than-one-voice.texidoc | 2 +- ...ing-double-slurs-for-legato-chords.texidoc | 2 +- ...ace-note-slashes-with-normal-heads.texidoc | 2 +- ...object-to-access-grobs-with--tweak.texidoc | 10 +- ...-generate-special-note-head-shapes.texidoc | 2 +- ...-command-to-tweak-individual-grobs.texidoc | 2 +- .../using-the-whiteout-property.texidoc | 2 +- .../using-ties-with-arpeggios.texidoc | 2 +- Documentation/es/texidocs/utf-8.texidoc | 2 +- ...-without-connecting-systemstartbar.texidoc | 2 +- ...ine-as-a-baroque-articulation-mark.texidoc | 2 +- ...y-aligned-dynamics-and-textscripts.texidoc | 2 +- ...ing-dynamics-across-multiple-notes.texidoc | 2 +- ...tically-aligning-ossias-and-lyrics.texidoc | 2 +- .../vertically-centered-common-lyrics.texidoc | 6 +- ...ring-paired-figured-bass-extenders.texidoc | 2 +- ...ate-with-automatic-piano-reduction.texidoc | 2 +- ...aligned-below-and-above-the-staves.texidoc | 2 +- ...le-template-with-verse-and-refrain.texidoc | 2 +- .../texidocs/vocal-ensemble-template.texidoc | 2 +- .../es/texidocs/volta-below-chords.texidoc | 2 +- .../es/texidocs/volta-multi-staff.texidoc | 2 +- ...a-text-markup-using-repeatcommands.texidoc | 2 +- .../woodwind-diagrams-key-lists.texidoc | 4 +- .../woodwind-diagrams-listing.texidoc | 2 +- Documentation/es/translations.itexi | 576 +- Documentation/es/usage/running.itely | 10 +- Documentation/es/usage/suggestions.itely | 2 +- Documentation/es/usage/updating.itely | 48 +- Documentation/es/web.texi | 72 +- Documentation/es/web/community.itexi | 418 +- Documentation/es/web/introduction.itexi | 108 +- Documentation/es/web/manuals.itexi | 12 +- Documentation/es/web/news-front.itexi | 277 - Documentation/es/web/news.itexi | 6331 ------- Documentation/fr/changes.tely | 1038 ++ .../fr/learning/common-notation.itely | 12 +- Documentation/fr/learning/fundamental.itely | 226 +- Documentation/fr/macros.itexi | 4 +- Documentation/fr/notation/ancient.itely | 8 +- .../fr/notation/changing-defaults.itely | 439 +- Documentation/fr/notation/chords.itely | 6 +- Documentation/fr/notation/editorial.itely | 36 +- Documentation/fr/notation/expressive.itely | 5 +- Documentation/fr/notation/input.itely | 15 +- .../fr/notation/notation-appendices.itely | 56 +- Documentation/fr/notation/percussion.itely | 87 +- Documentation/fr/notation/pitches.itely | 175 +- Documentation/fr/notation/rhythms.itely | 38 +- Documentation/fr/notation/simultaneous.itely | 60 +- Documentation/fr/notation/spacing.itely | 64 +- Documentation/fr/notation/staff.itely | 27 +- Documentation/fr/notation/text.itely | 28 +- .../fr/texidocs/adding-drum-parts.texidoc | 2 +- ...ing-and-centering-instrument-names.texidoc | 2 +- .../analysis-brackets-with-labels.texidoc | 10 + .../fr/texidocs/clip-systems.texidoc | 2 +- ...bining-two-parts-on-the-same-staff.texidoc | 2 +- ...tomized-polymetric-time-signatures.texidoc | 2 +- ...cs-e.g.-sempre-pp,-piu-f,-subito-p.texidoc | 2 +- .../fr/texidocs/jazz-combo-template.texidoc | 2 +- ...rchestra,-choir-and-piano-template.texidoc | 2 +- .../fr/texidocs/piano-template-simple.texidoc | 2 +- ...g-another-voice-with-transposition.texidoc | 2 +- .../fr/texidocs/quoting-another-voice.texidoc | 2 +- .../string-quartet-template-simple.texidoc | 2 +- ...artet-template-with-separate-parts.texidoc | 2 +- .../fr/texidocs/three-sided-box.texidoc | 2 +- ...inimum-accidentals-smart-transpose.texidoc | 2 +- Documentation/fr/translations.itexi | 712 +- Documentation/fr/usage/updating.itely | 47 +- Documentation/fr/web/community.itexi | 287 +- Documentation/fr/web/introduction.itexi | 105 +- Documentation/fr/web/manuals.itexi | 14 +- Documentation/hu/learning/templates.itely | 8 - Documentation/hu/learning/tweaks.itely | 29 - Documentation/hu/macros.itexi | 2 +- Documentation/hu/translations.itexi | 30 +- Documentation/hu/web.texi | 2 +- Documentation/hu/web/community.itexi | 82 +- Documentation/included/authors.itexi | 7 + Documentation/included/gsoc.itexi | 375 + Documentation/it/changes.tely | 135 +- .../it/learning/common-notation.itely | 32 +- Documentation/it/learning/fundamental.itely | 223 +- Documentation/it/learning/templates.itely | 24 +- Documentation/it/learning/tutorial.itely | 18 +- Documentation/it/learning/tweaks.itely | 60 +- Documentation/it/macros.itexi | 23 +- .../it/notation/changing-defaults.itely | 446 +- Documentation/it/notation/editorial.itely | 53 +- Documentation/it/notation/expressive.itely | 46 +- Documentation/it/notation/input.itely | 90 +- .../it/notation/notation-appendices.itely | 49 +- Documentation/it/notation/pitches.itely | 214 +- Documentation/it/notation/repeats.itely | 16 +- Documentation/it/notation/rhythms.itely | 104 +- Documentation/it/notation/simultaneous.itely | 34 +- Documentation/it/notation/spacing.itely | 119 +- Documentation/it/notation/staff.itely | 51 +- Documentation/it/notation/text.itely | 57 +- Documentation/it/notation/vocal.itely | 74 +- Documentation/it/notation/world.itely | 8 +- .../analysis-brackets-above-the-staff.texidoc | 8 + .../analysis-brackets-with-labels.texidoc | 10 + ...bining-two-parts-on-the-same-staff.texidoc | 2 +- .../it/texidocs/jazz-combo-template.texidoc | 2 +- .../moving-the-ends-of-hairpins.texidoc | 13 + ...rchestra,-choir-and-piano-template.texidoc | 2 +- .../it/texidocs/piano-template-simple.texidoc | 2 +- .../string-quartet-template-simple.texidoc | 2 +- ...artet-template-with-separate-parts.texidoc | 2 +- ...inimum-accidentals-smart-transpose.texidoc | 2 +- Documentation/it/translations.itexi | 452 +- Documentation/it/usage/external.itely | 8 +- Documentation/it/usage/lilypond-book.itely | 21 +- Documentation/it/usage/running.itely | 25 +- Documentation/it/usage/suggestions.itely | 8 +- Documentation/it/usage/updating.itely | 44 +- Documentation/it/web/community.itexi | 280 +- Documentation/it/web/download.itexi | 2 +- Documentation/it/web/introduction.itexi | 112 +- Documentation/it/web/manuals.itexi | 6 +- Documentation/it/web/news-headlines.itexi | 20 +- Documentation/it/web/news-new.itexi | 154 + Documentation/ja/GNUmakefile | 27 + Documentation/ja/learning.tely | 2 +- Documentation/ja/macros.itexi | 10 +- Documentation/ja/notation.tely | 2 +- .../ja/notation/changing-defaults.itely | 6 +- Documentation/ja/notation/input.itely | 9 +- Documentation/ja/notation/rhythms.itely | 4 +- Documentation/ja/notation/spacing.itely | 5 +- Documentation/ja/notation/text.itely | 8 +- Documentation/ja/search-box.ihtml | 28 + Documentation/ja/translations.itexi | 344 +- Documentation/ja/usage.tely | 2 +- Documentation/ja/web.texi | 2 +- Documentation/ja/web/community.itexi | 6 +- Documentation/ja/web/introduction.itexi | 492 +- Documentation/learning/common-notation.itely | 10 +- Documentation/learning/fundamental.itely | 180 +- Documentation/lilypond-texi2html.init | 2 +- Documentation/ly-examples/granados.ly | 5 +- Documentation/macros.itexi | 2 +- Documentation/music-glossary.tely | 46 +- Documentation/nl/macros.itexi | 2 +- Documentation/nl/translations.itexi | 152 +- Documentation/nl/web.texi | 2 +- Documentation/notation/ancient.itely | 6 +- .../notation/changing-defaults.itely | 422 +- Documentation/notation/chords.itely | 4 +- Documentation/notation/editorial.itely | 33 +- Documentation/notation/expressive.itely | 3 + Documentation/notation/input.itely | 11 +- .../notation/notation-appendices.itely | 44 +- Documentation/notation/percussion.itely | 88 +- Documentation/notation/pitches.itely | 179 +- Documentation/notation/rhythms.itely | 28 +- Documentation/notation/simultaneous.itely | 56 + Documentation/notation/spacing.itely | 57 +- Documentation/notation/staff.itely | 19 +- Documentation/notation/text.itely | 71 +- Documentation/pictures/GNUmakefile | 2 +- Documentation/snippets/adding-drum-parts.ly | 31 +- ...aligning-and-centering-instrument-names.ly | 66 +- .../snippets/analysis-brackets-with-labels.ly | 46 + Documentation/snippets/clip-systems.ly | 18 +- .../combining-two-parts-on-the-same-staff.ly | 39 +- .../contexts-and-engravers.snippet-list | 1 + .../editorial-annotations.snippet-list | 1 + .../snippets/expressive-marks.snippet-list | 1 + .../snippets/figured-bass-headword.ly | 93 +- ...y-customized-polymetric-time-signatures.ly | 23 +- ...ynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly | 69 +- Documentation/snippets/jazz-combo-template.ly | 58 +- .../snippets/moving-the-ends-of-hairpins.ly | 38 + .../snippets/new/adding-drum-parts.ly | 50 + ...aligning-and-centering-instrument-names.ly | 62 + .../new/analysis-brackets-with-labels.ly | 38 + Documentation/snippets/new/clip-systems.ly | 88 + .../combining-two-parts-on-the-same-staff.ly | 65 + .../snippets/new/figured-bass-headword.ly | 101 + ...y-customized-polymetric-time-signatures.ly | 38 + ...ynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly | 187 + .../snippets/new/jazz-combo-template.ly | 276 + .../new/moving-the-ends-of-hairpins.ly | 30 + .../orchestra,-choir-and-piano-template.ly | 153 + .../snippets/new/piano-template-simple.ly | 37 + ...uoting-another-voice-with-transposition.ly | 42 + .../snippets/new/quoting-another-voice.ly | 54 + Documentation/snippets/new/staff-headword.ly | 31 +- .../new/string-quartet-template-simple.ly | 58 + ...ng-quartet-template-with-separate-parts.ly | 146 + Documentation/snippets/new/three-sided-box.ly | 45 + ...ith-minimum-accidentals-smart-transpose.ly | 84 + .../using-marklines-in-a-frenched-score.ly | 2 +- Documentation/snippets/new/wind-headword.ly | 12 +- .../orchestra,-choir-and-piano-template.ly | 163 +- .../snippets/piano-template-simple.ly | 22 +- ...uoting-another-voice-with-transposition.ly | 25 +- .../snippets/quoting-another-voice.ly | 40 +- Documentation/snippets/staff-headword.ly | 33 +- .../snippets/staff-notation.snippet-list | 1 + .../string-quartet-template-simple.ly | 42 +- ...ng-quartet-template-with-separate-parts.ly | 107 +- Documentation/snippets/three-sided-box.ly | 23 +- ...ith-minimum-accidentals-smart-transpose.ly | 17 +- .../tweaks-and-overrides.snippet-list | 1 + .../using-marklines-in-a-frenched-score.ly | 105 + Documentation/snippets/wind-headword.ly | 14 +- Documentation/translations.itexi | 1497 +- Documentation/usage/running.itely | 24 - Documentation/usage/updating.itely | 38 + Documentation/web/community.itexi | 235 +- Documentation/web/introduction.itexi | 97 +- Documentation/web/news-headlines.itexi | 6 +- .../web/{news-front.itexi => news-new.itexi} | 6 +- .../web/{news.itexi => news-old.itexi} | 156 +- Documentation/zh/macros.itexi | 2 +- Documentation/zh/translations.itexi | 78 +- Documentation/zh/web.texi | 2 +- Documentation/zh/web/community.itexi | 6 +- NEWS.txt | 102 +- VERSION | 4 +- aclocal.m4 | 40 +- config.hh.in | 3 + configure | 1012 +- configure.ac | 26 +- elisp/lilypond-what-beat.el | 10 +- flower/file-name.cc | 18 +- flower/test-file-path.cc | 4 +- guile18/.gitignore | 77 + guile18/ABOUT-NLS | 1101 ++ guile18/ANNOUNCE | 60 + guile18/AUTHORS | 345 + guile18/COPYING.LESSER | 504 + guile18/ChangeLog | 17 + guile18/ChangeLog-2008 | 3315 ++++ guile18/GUILE-VERSION | 56 + guile18/HACKING | 339 + guile18/LICENSE | 2 + guile18/Makefile.am | 46 + guile18/NEWS | 7432 ++++++++ guile18/README | 382 + guile18/THANKS | 121 + guile18/acinclude.m4 | 310 + guile18/am/ChangeLog-2008 | 18 + guile18/am/Makefile.am | 28 + guile18/am/README | 3 + guile18/am/maintainer-dirs | 34 + guile18/am/pre-inst-guile | 34 + guile18/autogen.sh | 16 + guile18/benchmark-guile.in | 48 + guile18/benchmark-suite/ChangeLog-2008 | 85 + guile18/benchmark-suite/Makefile.am | 10 + guile18/benchmark-suite/README | 18 + .../benchmark-suite/benchmarks/0-reference.bm | 2 + .../benchmarks/continuations.bm | 5 + guile18/benchmark-suite/benchmarks/if.bm | 51 + guile18/benchmark-suite/benchmarks/logand.bm | 6 + guile18/benchmark-suite/benchmarks/read.bm | 62 + guile18/benchmark-suite/benchmarks/subr.bm | 66 + .../benchmarks/uniform-vector-read.bm | 53 + guile18/benchmark-suite/guile-benchmark | 220 + guile18/benchmark-suite/lib.scm | 530 + guile18/build-aux/config.rpath | 666 + guile18/check-guile.in | 49 + guile18/config.rpath | 666 + guile18/configure.in | 1605 ++ guile18/doc/.gitignore | 1 + guile18/doc/ChangeLog-2008 | 996 ++ guile18/doc/ChangeLog-guile-doc | 48 + guile18/doc/Makefile.am | 46 + guile18/doc/NEWS | 44 + guile18/doc/README | 33 + guile18/doc/THANKS | 19 + guile18/doc/example-smob/ChangeLog-2008 | 56 + guile18/doc/example-smob/README | 6 + guile18/doc/example-smob/image-type.c | 137 + guile18/doc/example-smob/image-type.h | 3 + guile18/doc/example-smob/myguile.c | 37 + guile18/doc/goops/ChangeLog-2008 | 76 + guile18/doc/goops/Makefile.am | 29 + guile18/doc/goops/goops-tutorial.texi | 837 + guile18/doc/goops/goops.texi | 2905 ++++ guile18/doc/goops/hierarchy.eps | 127 + guile18/doc/goops/hierarchy.pdf | 74 + guile18/doc/goops/hierarchy.png | Bin 0 -> 6251 bytes guile18/doc/goops/hierarchy.txt | 14 + guile18/doc/goops/mop.text | 66 + guile18/doc/groupings.alist | 176 + guile18/doc/guile-api.alist | 3219 ++++ guile18/doc/guile.1 | 99 + guile18/doc/hacks.el | 16 + guile18/doc/maint/ChangeLog-2008 | 75 + guile18/doc/maint/README | 35 + guile18/doc/maint/docstring.el | 622 + guile18/doc/mbapi.texi | 987 ++ guile18/doc/mltext.texi | 146 + guile18/doc/oldfmt.c | 193 + guile18/doc/r5rs/ChangeLog-2008 | 17 + guile18/doc/r5rs/Makefile.am | 26 + guile18/doc/r5rs/r5rs.texi | 8537 ++++++++++ guile18/doc/recipe-guidelines.txt | 80 + guile18/doc/ref/.gitignore | 1 + guile18/doc/ref/ChangeLog-2008 | 2627 +++ guile18/doc/ref/ChangeLog-guile-doc-ref | 890 + guile18/doc/ref/Makefile.am | 92 + guile18/doc/ref/api-binding.texi | 283 + guile18/doc/ref/api-compound.texi | 3889 +++++ guile18/doc/ref/api-control.texi | 1506 ++ guile18/doc/ref/api-data.texi | 5142 ++++++ guile18/doc/ref/api-debug.texi | 1905 +++ guile18/doc/ref/api-evaluation.texi | 645 + guile18/doc/ref/api-i18n.texi | 158 + guile18/doc/ref/api-init.texi | 110 + guile18/doc/ref/api-io.texi | 1286 ++ guile18/doc/ref/api-memory.texi | 483 + guile18/doc/ref/api-options.texi | 757 + guile18/doc/ref/api-overview.texi | 112 + guile18/doc/ref/api-procedures.texi | 877 + guile18/doc/ref/api-scheduling.texi | 820 + guile18/doc/ref/api-scm.texi | 45 + guile18/doc/ref/api-smobs.texi | 198 + guile18/doc/ref/api-snarf.texi | 143 + guile18/doc/ref/api-translation.texi | 54 + guile18/doc/ref/api-undocumented.texi | 994 ++ guile18/doc/ref/api-utility.texi | 841 + guile18/doc/ref/api.txt | 185 + guile18/doc/ref/autoconf.texi | 271 + guile18/doc/ref/data-rep.texi | 1347 ++ guile18/doc/ref/expect.texi | 148 + guile18/doc/ref/extend.texi | 50 + guile18/doc/ref/fdl.texi | 452 + guile18/doc/ref/gh.texi | 1201 ++ guile18/doc/ref/indices.texi | 58 + guile18/doc/ref/libguile-concepts.texi | 618 + guile18/doc/ref/libguile-extensions.texi | 115 + guile18/doc/ref/libguile-linking.texi | 190 + guile18/doc/ref/libguile-program.texi | 788 + guile18/doc/ref/libguile-smobs.texi | 699 + guile18/doc/ref/libguile-snarf.texi | 131 + guile18/doc/ref/misc-modules.texi | 1532 ++ guile18/doc/ref/mod-getopt-long.texi | 341 + guile18/doc/ref/new-docstrings.texi | 3 + guile18/doc/ref/preface.texi | 191 + guile18/doc/ref/repl-modules.texi | 293 + guile18/doc/ref/scheme-debugging.texi | 124 + guile18/doc/ref/scheme-ideas.texi | 1582 ++ guile18/doc/ref/scheme-indices.texi | 16 + guile18/doc/ref/scheme-intro.texi | 41 + guile18/doc/ref/scheme-reading.texi | 35 + guile18/doc/ref/scheme-scripts.texi | 529 + guile18/doc/ref/script-getopt.texi | 94 + guile18/doc/ref/scsh.texi | 26 + guile18/doc/ref/slib.texi | 122 + guile18/doc/ref/srfi-modules.texi | 3274 ++++ guile18/doc/ref/tcltk.texi | 9 + guile18/doc/ref/tools.texi | 397 + guile18/doc/sources/ChangeLog-2008 | 5 + guile18/doc/sources/Makefile.am | 7 + guile18/doc/sources/contributors.texi | 80 + guile18/doc/sources/debug-c.texi | 2 + guile18/doc/sources/debug-scheme.texi | 2 + guile18/doc/sources/env.texi | 1165 ++ guile18/doc/sources/format.texi | 434 + guile18/doc/sources/guile-slib.texi | 2 + guile18/doc/sources/jimb-org.texi | 131 + guile18/doc/sources/libguile-overview.texi | 30 + guile18/doc/sources/libguile-tools.texi | 191 + guile18/doc/sources/new-types.texi | 2 + guile18/doc/sources/old-intro.texi | 290 + guile18/doc/sources/sample-APIs.texi | 6 + guile18/doc/sources/scheme-concepts.texi | 249 + guile18/doc/sources/scm-ref.texi | 4 + guile18/doc/sources/strings.texi | 45 + guile18/doc/sources/tk.texi | 5 + guile18/doc/sources/unix-other.texi | 132 + guile18/doc/sources/unix.texi | 622 + guile18/doc/tutorial/ChangeLog-2008 | 54 + .../doc/tutorial/ChangeLog-guile-doc-tutorial | 16 + guile18/doc/tutorial/Makefile.am | 26 + guile18/doc/tutorial/guile-tut.texi | 1373 ++ guile18/doc/use-cases.fig | 199 + guile18/doc/use-cases.txt | 22 + guile18/emacs/ChangeLog-2008 | 321 + guile18/emacs/Makefile.am | 27 + guile18/emacs/README | 12 + guile18/emacs/gds-scheme.el | 534 + guile18/emacs/gds-server.el | 111 + guile18/emacs/gds.el | 629 + guile18/emacs/gud-guile.el | 81 + guile18/emacs/guile-c.el | 178 + guile18/emacs/guile-emacs.scm | 154 + guile18/emacs/guile-scheme.el | 346 + guile18/emacs/guile.el | 215 + guile18/emacs/multistring.el | 222 + guile18/emacs/patch.el | 106 + guile18/emacs/ppexpand.el | 94 + guile18/emacs/update-changelog.el | 145 + guile18/examples/ChangeLog-2008 | 155 + guile18/examples/Makefile.am | 94 + guile18/examples/README | 40 + guile18/examples/box-dynamic-module/README | 77 + .../examples/box-dynamic-module/box-mixed.scm | 44 + .../box-dynamic-module/box-module.scm | 25 + guile18/examples/box-dynamic-module/box.c | 127 + guile18/examples/box-dynamic/README | 58 + guile18/examples/box-dynamic/box.c | 128 + guile18/examples/box-module/README | 56 + guile18/examples/box-module/box.c | 160 + guile18/examples/box/README | 48 + guile18/examples/box/box.c | 148 + guile18/examples/check.test | 238 + guile18/examples/compat/acconfig.h | 1 + guile18/examples/compat/acinclude.m4 | 18 + guile18/examples/compat/compat.h | 161 + guile18/examples/compat/configure.in | 15 + guile18/examples/modules/README | 32 + guile18/examples/modules/main | 52 + guile18/examples/modules/module-0.scm | 24 + guile18/examples/modules/module-1.scm | 24 + guile18/examples/modules/module-2.scm | 28 + guile18/examples/safe/README | 41 + guile18/examples/safe/evil.scm | 27 + guile18/examples/safe/safe | 85 + guile18/examples/safe/untrusted.scm | 33 + guile18/examples/scripts/README | 38 + guile18/examples/scripts/fact | 69 + guile18/examples/scripts/hello | 57 + guile18/examples/scripts/simple-hello.scm | 16 + guile18/guile-1.8.pc.in | 15 + guile18/guile-config/ChangeLog-2008 | 229 + guile18/guile-config/Makefile.am | 46 + guile18/guile-config/guile-config.in | 279 + guile18/guile-config/guile.m4 | 196 + guile18/guile-readline/ChangeLog-2008 | 722 + .../guile-readline/LIBGUILEREADLINE-VERSION | 14 + guile18/guile-readline/Makefile.am | 62 + guile18/guile-readline/autogen.sh | 8 + guile18/guile-readline/configure.in | 87 + guile18/guile-readline/ice-9/Makefile.am | 28 + guile18/guile-readline/ice-9/readline.scm | 243 + guile18/guile-readline/readline-activator.scm | 17 + guile18/guile-readline/readline.c | 569 + guile18/guile-readline/readline.h | 65 + guile18/guile-tools.in | 115 + guile18/ice-9/ChangeLog-2008 | 4824 ++++++ guile18/ice-9/Makefile.am | 68 + guile18/ice-9/README | 12 + guile18/ice-9/and-let-star.scm | 49 + guile18/ice-9/arrays.scm | 23 + guile18/ice-9/boot-9.scm | 3478 ++++ guile18/ice-9/buffered-input.scm | 112 + guile18/ice-9/calling.scm | 326 + guile18/ice-9/channel.scm | 170 + guile18/ice-9/common-list.scm | 278 + guile18/ice-9/compile-psyntax.scm | 27 + guile18/ice-9/debug.scm | 134 + guile18/ice-9/debugger.scm | 146 + guile18/ice-9/debugger/command-loop.scm | 542 + guile18/ice-9/debugger/commands.scm | 154 + guile18/ice-9/debugger/state.scm | 47 + guile18/ice-9/debugger/trc.scm | 63 + guile18/ice-9/debugger/utils.scm | 203 + guile18/ice-9/debugging/example-fns.scm | 17 + .../debugging/ice-9-debugger-extensions.scm | 173 + guile18/ice-9/debugging/steps.scm | 106 + guile18/ice-9/debugging/trace.scm | 157 + guile18/ice-9/debugging/traps.scm | 1037 ++ guile18/ice-9/debugging/trc.scm | 63 + guile18/ice-9/deprecated.scm | 180 + guile18/ice-9/documentation.scm | 213 + guile18/ice-9/emacs.scm | 276 + guile18/ice-9/expect.scm | 171 + guile18/ice-9/format.scm | 1690 ++ guile18/ice-9/ftw.scm | 380 + guile18/ice-9/gap-buffer.scm | 283 + guile18/ice-9/gds-client.scm | 592 + guile18/ice-9/gds-server.scm | 193 + guile18/ice-9/getopt-long.scm | 425 + guile18/ice-9/hcons.scm | 80 + guile18/ice-9/history.scm | 41 + guile18/ice-9/lineio.scm | 115 + guile18/ice-9/list.scm | 36 + guile18/ice-9/ls.scm | 96 + guile18/ice-9/mapping.scm | 128 + guile18/ice-9/match.scm | 199 + guile18/ice-9/networking.scm | 84 + guile18/ice-9/null.scm | 35 + guile18/ice-9/occam-channel.scm | 262 + guile18/ice-9/optargs.scm | 425 + guile18/ice-9/poe.scm | 122 + guile18/ice-9/popen.scm | 215 + guile18/ice-9/posix.scm | 69 + guile18/ice-9/pretty-print.scm | 278 + guile18/ice-9/psyntax.pp | 11 + guile18/ice-9/psyntax.ss | 2212 +++ guile18/ice-9/q.scm | 153 + guile18/ice-9/r4rs.scm | 213 + guile18/ice-9/r5rs.scm | 44 + guile18/ice-9/rdelim.scm | 172 + guile18/ice-9/receive.scm | 28 + guile18/ice-9/regex.scm | 238 + guile18/ice-9/runq.scm | 241 + guile18/ice-9/rw.scm | 27 + guile18/ice-9/safe-r5rs.scm | 144 + guile18/ice-9/safe.scm | 34 + guile18/ice-9/serialize.scm | 114 + guile18/ice-9/session.scm | 525 + guile18/ice-9/slib.scm | 42 + guile18/ice-9/stack-catch.scm | 43 + guile18/ice-9/streams.scm | 217 + guile18/ice-9/string-fun.scm | 279 + guile18/ice-9/syncase.scm | 249 + guile18/ice-9/test.scm | 1006 ++ guile18/ice-9/threads.scm | 221 + guile18/ice-9/time.scm | 58 + guile18/ice-9/weak-vector.scm | 31 + guile18/lang/Makefile.am | 68 + guile18/lang/elisp/ChangeLog-2008 | 401 + guile18/lang/elisp/README | 303 + guile18/lang/elisp/STATUS | 35 + guile18/lang/elisp/base.scm | 48 + guile18/lang/elisp/example.el | 39 + guile18/lang/elisp/interface.scm | 128 + guile18/lang/elisp/internals/evaluation.scm | 13 + guile18/lang/elisp/internals/format.scm | 62 + guile18/lang/elisp/internals/fset.scm | 113 + guile18/lang/elisp/internals/lambda.scm | 108 + guile18/lang/elisp/internals/load.scm | 44 + guile18/lang/elisp/internals/null.scm | 13 + guile18/lang/elisp/internals/set.scm | 20 + guile18/lang/elisp/internals/signal.scm | 18 + guile18/lang/elisp/internals/time.scm | 14 + guile18/lang/elisp/internals/trace.scm | 28 + guile18/lang/elisp/primitives/buffers.scm | 16 + guile18/lang/elisp/primitives/char-table.scm | 24 + guile18/lang/elisp/primitives/features.scm | 26 + guile18/lang/elisp/primitives/fns.scm | 45 + guile18/lang/elisp/primitives/format.scm | 6 + guile18/lang/elisp/primitives/guile.scm | 20 + guile18/lang/elisp/primitives/keymaps.scm | 26 + guile18/lang/elisp/primitives/lists.scm | 103 + guile18/lang/elisp/primitives/load.scm | 17 + guile18/lang/elisp/primitives/match.scm | 68 + guile18/lang/elisp/primitives/numbers.scm | 43 + guile18/lang/elisp/primitives/pure.scm | 8 + guile18/lang/elisp/primitives/read.scm | 10 + guile18/lang/elisp/primitives/signal.scm | 6 + guile18/lang/elisp/primitives/strings.scm | 40 + guile18/lang/elisp/primitives/symprop.scm | 40 + guile18/lang/elisp/primitives/syntax.scm | 266 + guile18/lang/elisp/primitives/system.scm | 14 + guile18/lang/elisp/primitives/time.scm | 17 + guile18/lang/elisp/transform.scm | 111 + guile18/lang/elisp/variables.scm | 42 + guile18/libguile.h | 131 + guile18/libguile/.gitignore | 15 + guile18/libguile/ChangeLog-1996-1999 | 9828 +++++++++++ guile18/libguile/ChangeLog-2000 | 5555 ++++++ guile18/libguile/ChangeLog-2008 | 14195 ++++++++++++++++ guile18/libguile/ChangeLog-gh | 256 + guile18/libguile/ChangeLog-scm | 2610 +++ guile18/libguile/ChangeLog-threads | 251 + guile18/libguile/Makefile.am | 397 + guile18/libguile/__scm.h | 641 + guile18/libguile/_scm.h | 164 + guile18/libguile/alist.c | 387 + guile18/libguile/alist.h | 53 + guile18/libguile/alloca.c | 499 + guile18/libguile/arbiters.c | 170 + guile18/libguile/arbiters.h | 40 + guile18/libguile/async.c | 493 + guile18/libguile/async.h | 94 + guile18/libguile/backtrace.c | 835 + guile18/libguile/backtrace.h | 49 + guile18/libguile/boolean.c | 81 + guile18/libguile/boolean.h | 54 + guile18/libguile/c-tokenize.lex | 200 + guile18/libguile/chars.c | 370 + guile18/libguile/chars.h | 73 + guile18/libguile/continuations.c | 427 + guile18/libguile/continuations.h | 108 + guile18/libguile/conv-integer.i.c | 149 + guile18/libguile/conv-uinteger.i.c | 118 + guile18/libguile/convert.c | 146 + guile18/libguile/convert.h | 50 + guile18/libguile/convert.i.c | 171 + guile18/libguile/coop-pthreads.c | 1040 ++ guile18/libguile/coop-pthreads.h | 81 + guile18/libguile/coop.c | 761 + guile18/libguile/cpp_cnvt.awk | 7 + guile18/libguile/cpp_err_symbols.in | 122 + guile18/libguile/cpp_errno.c | 9 + guile18/libguile/cpp_sig_symbols.in | 36 + guile18/libguile/cpp_signal.c | 9 + guile18/libguile/debug-malloc.c | 246 + guile18/libguile/debug-malloc.h | 44 + guile18/libguile/debug.c | 569 + guile18/libguile/debug.h | 194 + guile18/libguile/deprecated.c | 1505 ++ guile18/libguile/deprecated.h | 588 + guile18/libguile/deprecation.c | 173 + guile18/libguile/deprecation.h | 46 + guile18/libguile/discouraged.c | 306 + guile18/libguile/discouraged.h | 183 + guile18/libguile/dynl.c | 330 + guile18/libguile/dynl.h | 44 + guile18/libguile/dynwind.c | 387 + guile18/libguile/dynwind.h | 78 + guile18/libguile/environments.c | 2349 +++ guile18/libguile/environments.h | 188 + guile18/libguile/eq.c | 322 + guile18/libguile/eq.h | 40 + guile18/libguile/error.c | 283 + guile18/libguile/error.h | 68 + guile18/libguile/eval.c | 6077 +++++++ guile18/libguile/eval.h | 228 + guile18/libguile/evalext.c | 134 + guile18/libguile/evalext.h | 45 + guile18/libguile/extensions.c | 167 + guile18/libguile/extensions.h | 43 + guile18/libguile/feature.c | 132 + guile18/libguile/feature.h | 39 + guile18/libguile/filesys.c | 1757 ++ guile18/libguile/filesys.h | 76 + guile18/libguile/fluids.c | 631 + guile18/libguile/fluids.h | 96 + guile18/libguile/fports.c | 943 + guile18/libguile/fports.h | 71 + guile18/libguile/futures.c | 379 + guile18/libguile/futures.h | 90 + guile18/libguile/gc-card.c | 473 + guile18/libguile/gc-freelist.c | 198 + guile18/libguile/gc-malloc.c | 497 + guile18/libguile/gc-mark.c | 511 + guile18/libguile/gc-segment.c | 571 + guile18/libguile/gc.c | 1094 ++ guile18/libguile/gc.h | 429 + guile18/libguile/gc_os_dep.c | 1957 +++ guile18/libguile/gdb_interface.h | 153 + guile18/libguile/gdbint.c | 295 + guile18/libguile/gdbint.h | 39 + guile18/libguile/gen-scmconfig.c | 409 + guile18/libguile/gen-scmconfig.h.in | 39 + guile18/libguile/gettext.h | 69 + guile18/libguile/gh.h | 243 + guile18/libguile/gh_data.c | 659 + guile18/libguile/gh_eval.c | 109 + guile18/libguile/gh_funcs.c | 157 + guile18/libguile/gh_init.c | 94 + guile18/libguile/gh_io.c | 50 + guile18/libguile/gh_list.c | 181 + guile18/libguile/gh_predicates.c | 124 + guile18/libguile/goops.c | 3040 ++++ guile18/libguile/goops.h | 320 + guile18/libguile/gsubr.c | 273 + guile18/libguile/gsubr.h | 62 + guile18/libguile/guardians.c | 356 + guile18/libguile/guardians.h | 41 + guile18/libguile/guile-doc-snarf.in | 35 + guile18/libguile/guile-func-name-check.in | 65 + guile18/libguile/guile-snarf-docs.in | 26 + guile18/libguile/guile-snarf.awk.in | 146 + guile18/libguile/guile-snarf.in | 96 + guile18/libguile/guile.c | 71 + guile18/libguile/hash.c | 269 + guile18/libguile/hash.h | 45 + guile18/libguile/hashtab.c | 1089 ++ guile18/libguile/hashtab.h | 144 + guile18/libguile/hooks.c | 305 + guile18/libguile/hooks.h | 98 + guile18/libguile/i18n.c | 326 + guile18/libguile/i18n.h | 41 + guile18/libguile/inet_aton.c | 174 + guile18/libguile/init.c | 568 + guile18/libguile/init.h | 50 + guile18/libguile/inline.c | 23 + guile18/libguile/inline.h | 381 + guile18/libguile/ioext.c | 309 + guile18/libguile/ioext.h | 46 + guile18/libguile/iselect.h | 72 + guile18/libguile/keywords.c | 129 + guile18/libguile/keywords.h | 49 + guile18/libguile/lang.c | 54 + guile18/libguile/lang.h | 49 + guile18/libguile/list.c | 945 + guile18/libguile/list.h | 83 + guile18/libguile/load.c | 533 + guile18/libguile/load.h | 47 + guile18/libguile/macros.c | 252 + guile18/libguile/macros.h | 61 + guile18/libguile/mallocs.c | 86 + guile18/libguile/mallocs.h | 45 + guile18/libguile/measure-hwm.scm | 136 + guile18/libguile/memmove.c | 28 + guile18/libguile/mkstemp.c | 129 + guile18/libguile/modules.c | 684 + guile18/libguile/modules.h | 119 + guile18/libguile/net_db.c | 463 + guile18/libguile/net_db.h | 45 + guile18/libguile/null-threads.c | 72 + guile18/libguile/null-threads.h | 107 + guile18/libguile/numbers.c | 6232 +++++++ guile18/libguile/numbers.h | 487 + guile18/libguile/objects.c | 363 + guile18/libguile/objects.h | 218 + guile18/libguile/objprop.c | 105 + guile18/libguile/objprop.h | 41 + guile18/libguile/options.c | 276 + guile18/libguile/options.h | 53 + guile18/libguile/pairs.c | 208 + guile18/libguile/pairs.h | 159 + guile18/libguile/ports.c | 1760 ++ guile18/libguile/ports.h | 315 + guile18/libguile/posix.c | 2114 +++ guile18/libguile/posix.h | 96 + guile18/libguile/print.c | 1201 ++ guile18/libguile/print.h | 116 + guile18/libguile/private-gc.h | 263 + guile18/libguile/procprop.c | 244 + guile18/libguile/procprop.h | 48 + guile18/libguile/procs.c | 370 + guile18/libguile/procs.h | 170 + guile18/libguile/properties.c | 139 + guile18/libguile/properties.h | 40 + guile18/libguile/pthread-threads.h | 100 + guile18/libguile/putenv.c | 126 + guile18/libguile/quicksort.i.c | 243 + guile18/libguile/ramap.c | 1238 ++ guile18/libguile/ramap.h | 58 + guile18/libguile/random.c | 615 + guile18/libguile/random.h | 115 + guile18/libguile/rdelim.c | 282 + guile18/libguile/rdelim.h | 41 + guile18/libguile/read.c | 1298 ++ guile18/libguile/read.h | 83 + guile18/libguile/regex-posix.c | 317 + guile18/libguile/regex-posix.h | 42 + guile18/libguile/remaining-docs-needed | 2 + guile18/libguile/root.c | 201 + guile18/libguile/root.h | 66 + guile18/libguile/run-test | 4 + guile18/libguile/rw.c | 287 + guile18/libguile/rw.h | 41 + guile18/libguile/scmconfig.h.top | 16 + guile18/libguile/scmsigs.c | 701 + guile18/libguile/scmsigs.h | 50 + guile18/libguile/script.c | 752 + guile18/libguile/script.h | 47 + guile18/libguile/simpos.c | 241 + guile18/libguile/simpos.h | 42 + guile18/libguile/smob.c | 520 + guile18/libguile/smob.h | 163 + guile18/libguile/snarf.h | 284 + guile18/libguile/socket.c | 1809 ++ guile18/libguile/socket.h | 73 + guile18/libguile/sort.c | 596 + guile18/libguile/sort.h | 50 + guile18/libguile/srcprop.c | 346 + guile18/libguile/srcprop.h | 85 + guile18/libguile/srfi-13.c | 3585 ++++ guile18/libguile/srfi-13.h | 119 + guile18/libguile/srfi-14.c | 1572 ++ guile18/libguile/srfi-14.h | 112 + guile18/libguile/srfi-4.c | 1006 ++ guile18/libguile/srfi-4.h | 319 + guile18/libguile/srfi-4.i.c | 210 + guile18/libguile/stackchk.c | 103 + guile18/libguile/stackchk.h | 72 + guile18/libguile/stacks.c | 759 + guile18/libguile/stacks.h | 117 + guile18/libguile/stime.c | 815 + guile18/libguile/stime.h | 75 + guile18/libguile/strerror.c | 34 + guile18/libguile/strings.c | 1111 ++ guile18/libguile/strings.h | 179 + guile18/libguile/strorder.c | 169 + guile18/libguile/strorder.h | 47 + guile18/libguile/strports.c | 565 + guile18/libguile/strports.h | 66 + guile18/libguile/struct.c | 927 + guile18/libguile/struct.h | 117 + guile18/libguile/symbols.c | 452 + guile18/libguile/symbols.h | 76 + guile18/libguile/tags.h | 697 + guile18/libguile/threads.c | 1760 ++ guile18/libguile/threads.h | 226 + guile18/libguile/throw.c | 855 + guile18/libguile/throw.h | 105 + guile18/libguile/unif.c | 2957 ++++ guile18/libguile/unif.h | 194 + guile18/libguile/validate.h | 391 + guile18/libguile/values.c | 98 + guile18/libguile/values.h | 41 + guile18/libguile/variable.c | 135 + guile18/libguile/variable.h | 56 + guile18/libguile/vectors.c | 669 + guile18/libguile/vectors.h | 112 + guile18/libguile/version.c | 143 + guile18/libguile/version.h.in | 47 + guile18/libguile/vports.c | 235 + guile18/libguile/vports.h | 38 + guile18/libguile/weaks.c | 378 + guile18/libguile/weaks.h | 79 + guile18/libguile/win32-dirent.c | 132 + guile18/libguile/win32-dirent.h | 64 + guile18/libguile/win32-socket.c | 631 + guile18/libguile/win32-socket.h | 41 + guile18/libguile/win32-uname.c | 145 + guile18/libguile/win32-uname.h | 51 + guile18/m4/.gitignore | 2 + guile18/m4/autobuild.m4 | 39 + guile18/oop/ChangeLog-2008 | 295 + guile18/oop/Makefile.am | 33 + guile18/oop/goops.scm | 1715 ++ guile18/oop/goops/Makefile.am | 34 + guile18/oop/goops/accessors.scm | 81 + guile18/oop/goops/active-slot.scm | 66 + guile18/oop/goops/compile.scm | 139 + guile18/oop/goops/composite-slot.scm | 82 + guile18/oop/goops/describe.scm | 200 + guile18/oop/goops/dispatch.scm | 266 + guile18/oop/goops/internal.scm | 25 + guile18/oop/goops/old-define-method.scm | 60 + guile18/oop/goops/save.scm | 874 + guile18/oop/goops/simple.scm | 28 + guile18/oop/goops/stklos.scm | 97 + guile18/oop/goops/util.scm | 71 + guile18/pre-inst-guile-env.in | 81 + guile18/pre-inst-guile.in | 99 + guile18/qt/CHANGES | 15 + guile18/qt/ChangeLog-2008 | 283 + guile18/qt/Makefile.am | 54 + guile18/qt/Makefile.base | 112 + guile18/qt/README | 89 + guile18/qt/README.MISC | 56 + guile18/qt/README.PORT | 112 + guile18/qt/b.h | 11 + guile18/qt/config | 308 + guile18/qt/copyright.h | 12 + guile18/qt/libqthreads.def | 10 + guile18/qt/md/Makefile.am | 30 + guile18/qt/md/_sparc.s | 142 + guile18/qt/md/_sparc_b.s | 106 + guile18/qt/md/arm.h | 96 + guile18/qt/md/arm.s | 34 + guile18/qt/md/axp.1.Makefile | 5 + guile18/qt/md/axp.2.Makefile | 5 + guile18/qt/md/axp.Makefile | 5 + guile18/qt/md/axp.README | 10 + guile18/qt/md/axp.c | 133 + guile18/qt/md/axp.h | 160 + guile18/qt/md/axp.s | 160 + guile18/qt/md/axp_b.s | 111 + guile18/qt/md/default.Makefile | 6 + guile18/qt/md/hppa-cnx.Makefile | 9 + guile18/qt/md/hppa.Makefile | 9 + guile18/qt/md/hppa.h | 194 + guile18/qt/md/hppa.s | 237 + guile18/qt/md/hppa_b.s | 203 + guile18/qt/md/i386.README | 7 + guile18/qt/md/i386.asm | 112 + guile18/qt/md/i386.h | 120 + guile18/qt/md/i386.s | 108 + guile18/qt/md/i386_b.s | 30 + guile18/qt/md/ksr1.Makefile | 6 + guile18/qt/md/ksr1.h | 164 + guile18/qt/md/ksr1.s | 424 + guile18/qt/md/ksr1_b.s | 49 + guile18/qt/md/m88k.Makefile | 6 + guile18/qt/md/m88k.c | 111 + guile18/qt/md/m88k.h | 159 + guile18/qt/md/m88k.s | 132 + guile18/qt/md/m88k_b.s | 117 + guile18/qt/md/mips-irix5.s | 182 + guile18/qt/md/mips.h | 134 + guile18/qt/md/mips.s | 164 + guile18/qt/md/mips_b.s | 99 + guile18/qt/md/null.README | 0 guile18/qt/md/null.c | 14 + guile18/qt/md/solaris.README | 19 + guile18/qt/md/sparc.h | 140 + guile18/qt/md/sparc.s | 142 + guile18/qt/md/sparc_b.s | 106 + guile18/qt/md/vax.h | 130 + guile18/qt/md/vax.s | 69 + guile18/qt/md/vax_b.s | 92 + guile18/qt/meas.c | 1049 ++ guile18/qt/qt.c | 48 + guile18/qt/qt.h.in | 186 + guile18/qt/stp.c | 199 + guile18/qt/stp.h | 51 + guile18/qt/time/Makefile.am | 24 + guile18/qt/time/README.time | 17 + guile18/qt/time/assim | 42 + guile18/qt/time/cswap | 37 + guile18/qt/time/go | 43 + guile18/qt/time/init | 42 + guile18/qt/time/prim | 41 + guile18/qt/time/raw | 58 + guile18/scripts/ChangeLog-2008 | 319 + guile18/scripts/Makefile.am | 68 + guile18/scripts/PROGRAM | 45 + guile18/scripts/README | 76 + guile18/scripts/api-diff | 181 + guile18/scripts/autofrisk | 221 + guile18/scripts/display-commentary | 70 + guile18/scripts/doc-snarf | 442 + guile18/scripts/frisk | 292 + guile18/scripts/generate-autoload | 146 + guile18/scripts/lint | 320 + guile18/scripts/punify | 89 + guile18/scripts/read-rfc822 | 133 + guile18/scripts/read-scheme-source | 284 + guile18/scripts/read-text-outline | 255 + guile18/scripts/scan-api | 225 + guile18/scripts/snarf-check-and-output-texi | 324 + guile18/scripts/snarf-guile-m4-docs | 88 + guile18/scripts/summarize-guile-TODO | 215 + guile18/scripts/use2dot | 113 + guile18/srfi/ChangeLog-2008 | 1319 ++ guile18/srfi/Makefile.am | 97 + guile18/srfi/README | 100 + guile18/srfi/srfi-1.c | 2231 +++ guile18/srfi/srfi-1.h | 91 + guile18/srfi/srfi-1.scm | 588 + guile18/srfi/srfi-10.scm | 89 + guile18/srfi/srfi-11.scm | 254 + guile18/srfi/srfi-13.c | 43 + guile18/srfi/srfi-13.h | 56 + guile18/srfi/srfi-13.scm | 132 + guile18/srfi/srfi-14.c | 37 + guile18/srfi/srfi-14.h | 38 + guile18/srfi/srfi-14.scm | 99 + guile18/srfi/srfi-16.scm | 126 + guile18/srfi/srfi-17.scm | 174 + guile18/srfi/srfi-19.scm | 1545 ++ guile18/srfi/srfi-2.scm | 31 + guile18/srfi/srfi-26.scm | 49 + guile18/srfi/srfi-31.scm | 35 + guile18/srfi/srfi-34.scm | 80 + guile18/srfi/srfi-35.scm | 345 + guile18/srfi/srfi-37.scm | 230 + guile18/srfi/srfi-39.scm | 137 + guile18/srfi/srfi-4.c | 38 + guile18/srfi/srfi-4.h | 27 + guile18/srfi/srfi-4.scm | 71 + guile18/srfi/srfi-6.scm | 33 + guile18/srfi/srfi-60.c | 421 + guile18/srfi/srfi-60.h | 45 + guile18/srfi/srfi-60.scm | 72 + guile18/srfi/srfi-69.scm | 329 + guile18/srfi/srfi-8.scm | 31 + guile18/srfi/srfi-88.scm | 50 + guile18/srfi/srfi-9.scm | 91 + guile18/test-suite/ChangeLog-2008 | 2604 +++ guile18/test-suite/Makefile.am | 111 + guile18/test-suite/README | 47 + guile18/test-suite/guile-test | 241 + guile18/test-suite/lib.scm | 559 + guile18/test-suite/standalone/.gitignore | 12 + guile18/test-suite/standalone/Makefile.am | 159 + guile18/test-suite/standalone/README | 29 + guile18/test-suite/standalone/test-asmobs | 118 + .../test-suite/standalone/test-asmobs-lib.c | 208 + .../standalone/test-bad-identifiers | 77 + .../test-suite/standalone/test-conversion.c | 1101 ++ .../standalone/test-fast-slot-ref.in | 39 + guile18/test-suite/standalone/test-gh.c | 95 + guile18/test-suite/standalone/test-list.c | 64 + .../test-suite/standalone/test-num2integral.c | 170 + .../standalone/test-require-extension | 18 + guile18/test-suite/standalone/test-round.c | 136 + .../test-suite/standalone/test-scm-c-read.c | 130 + .../standalone/test-scm-take-locale-symbol.c | 63 + .../standalone/test-scm-with-guile.c | 66 + .../test-suite/standalone/test-system-cmds | 42 + guile18/test-suite/standalone/test-unwind.c | 317 + .../test-suite/standalone/test-use-srfi.in | 67 + .../standalone/test-with-guile-module.c | 81 + guile18/test-suite/tests/alist.test | 244 + guile18/test-suite/tests/and-let-star.test | 78 + guile18/test-suite/tests/arbiters.test | 102 + guile18/test-suite/tests/bit-operations.test | 364 + guile18/test-suite/tests/c-api.test | 46 + guile18/test-suite/tests/c-api/Makefile | 16 + guile18/test-suite/tests/c-api/README | 11 + guile18/test-suite/tests/c-api/strings.c | 74 + guile18/test-suite/tests/c-api/testlib.c | 121 + guile18/test-suite/tests/c-api/testlib.h | 28 + guile18/test-suite/tests/chars.test | 45 + guile18/test-suite/tests/common-list.test | 219 + guile18/test-suite/tests/continuations.test | 68 + guile18/test-suite/tests/dynamic-scope.test | 91 + guile18/test-suite/tests/elisp.test | 334 + guile18/test-suite/tests/environments.test | 1045 ++ guile18/test-suite/tests/eval.test | 413 + guile18/test-suite/tests/exceptions.test | 478 + guile18/test-suite/tests/filesys.test | 129 + guile18/test-suite/tests/format.test | 100 + guile18/test-suite/tests/fractions.test | 403 + guile18/test-suite/tests/ftw.test | 73 + guile18/test-suite/tests/gc.test | 80 + guile18/test-suite/tests/getopt-long.test | 274 + guile18/test-suite/tests/goops.test | 481 + guile18/test-suite/tests/guardians.test | 271 + guile18/test-suite/tests/hash.test | 288 + guile18/test-suite/tests/hooks.test | 124 + guile18/test-suite/tests/import.test | 51 + guile18/test-suite/tests/interp.test | 53 + guile18/test-suite/tests/list.test | 692 + guile18/test-suite/tests/load.test | 128 + guile18/test-suite/tests/modules.test | 50 + guile18/test-suite/tests/multilingual.nottest | 81 + guile18/test-suite/tests/numbers.test | 3232 ++++ guile18/test-suite/tests/optargs.test | 118 + guile18/test-suite/tests/options.test | 30 + guile18/test-suite/tests/pairs.test | 131 + guile18/test-suite/tests/poe.test | 139 + guile18/test-suite/tests/popen.test | 210 + guile18/test-suite/tests/ports.test | 745 + guile18/test-suite/tests/posix.test | 164 + guile18/test-suite/tests/procprop.test | 61 + guile18/test-suite/tests/q.test | 93 + guile18/test-suite/tests/r4rs.test | 1006 ++ guile18/test-suite/tests/r5rs_pitfall.test | 311 + guile18/test-suite/tests/ramap.test | 186 + guile18/test-suite/tests/reader.test | 196 + guile18/test-suite/tests/receive.test | 32 + guile18/test-suite/tests/regexp.test | 250 + guile18/test-suite/tests/signals.test | 29 + guile18/test-suite/tests/socket.test | 425 + guile18/test-suite/tests/sort.test | 78 + guile18/test-suite/tests/srcprop.test | 55 + guile18/test-suite/tests/srfi-1.test | 2592 +++ guile18/test-suite/tests/srfi-10.test | 30 + guile18/test-suite/tests/srfi-11.test | 133 + guile18/test-suite/tests/srfi-13.test | 1579 ++ guile18/test-suite/tests/srfi-14.test | 317 + guile18/test-suite/tests/srfi-17.test | 88 + guile18/test-suite/tests/srfi-19.test | 197 + guile18/test-suite/tests/srfi-26.test | 74 + guile18/test-suite/tests/srfi-31.test | 38 + guile18/test-suite/tests/srfi-34.test | 184 + guile18/test-suite/tests/srfi-35.test | 324 + guile18/test-suite/tests/srfi-37.test | 109 + guile18/test-suite/tests/srfi-39.test | 132 + guile18/test-suite/tests/srfi-4.test | 313 + guile18/test-suite/tests/srfi-6.test | 85 + guile18/test-suite/tests/srfi-60.test | 436 + guile18/test-suite/tests/srfi-69.test | 108 + guile18/test-suite/tests/srfi-88.test | 59 + guile18/test-suite/tests/srfi-9.test | 82 + guile18/test-suite/tests/streams.test | 79 + guile18/test-suite/tests/strings.test | 259 + guile18/test-suite/tests/structs.test | 161 + guile18/test-suite/tests/symbols.test | 90 + guile18/test-suite/tests/syncase.test | 39 + guile18/test-suite/tests/syntax.test | 1196 ++ guile18/test-suite/tests/threads.test | 168 + guile18/test-suite/tests/time.test | 290 + guile18/test-suite/tests/unif.test | 560 + guile18/test-suite/tests/version.test | 33 + guile18/test-suite/tests/weaks.test | 189 + input/regression/dead-notes.ly | 63 +- input/regression/display-lily-tests.ly | 11 +- input/regression/font-features.ly | 22 + input/regression/fret-diagrams-size.ly | 48 +- input/regression/grace-alternative.ly | 19 + .../hairpin-shorten-pair-circled-tip.ly | 22 + input/regression/hairpin-shorten-pair.ly | 26 + .../horizontal-bracket-broken-texted.ly | 26 + input/regression/horizontal-bracket-texted.ly | 36 + input/regression/lyric-extender-rest.ly | 12 +- .../measure-counter-spacing-pair.ly | 57 + .../measure-counter-staff-padding.ly | 30 + input/regression/merge-rests-engraver.ly | 79 + .../regression/musicxml/00-Introduction.itexi | 2 +- input/regression/nullvoice-change.ly | 29 + input/regression/page-layout-extra-offset.ly | 45 + input/regression/scheme-engraver.ly | 18 +- input/regression/scheme-text-spanner.ly | 4 +- input/regression/voices-command.ly | 19 + lily/accidental-engraver.cc | 7 +- lily/ambitus-engraver.cc | 3 +- lily/arpeggio-engraver.cc | 3 +- lily/auto-beam-engraver.cc | 6 +- lily/axis-group-engraver.cc | 3 +- lily/axis-group-interface.cc | 2 +- lily/balloon-engraver.cc | 3 +- lily/bar-engraver.cc | 3 +- lily/bar-number-engraver.cc | 3 +- lily/beam-collision-engraver.cc | 4 +- lily/beam-engraver.cc | 6 +- lily/beam-performer.cc | 3 +- lily/bend-engraver.cc | 3 +- lily/book-scheme.cc | 2 +- lily/bracket.cc | 151 + lily/break-align-engraver.cc | 3 +- lily/break-alignment-interface.cc | 5 +- lily/breathing-sign-engraver.cc | 3 +- lily/change-iterator.cc | 8 +- lily/chord-name-engraver.cc | 3 +- lily/chord-tremolo-engraver.cc | 3 +- lily/clef-engraver.cc | 12 +- lily/cluster-engraver.cc | 3 +- lily/collision-engraver.cc | 3 +- lily/completion-note-heads-engraver.cc | 3 +- lily/completion-rest-engraver.cc | 3 +- lily/concurrent-hairpin-engraver.cc | 3 +- lily/context-def.cc | 7 +- lily/context.cc | 73 +- lily/control-track-performer.cc | 3 +- lily/cue-clef-engraver.cc | 12 +- lily/custos-engraver.cc | 3 +- lily/default-bar-line-engraver.cc | 3 +- lily/dot-column-engraver.cc | 3 +- lily/dots-engraver.cc | 3 +- lily/double-percent-repeat-engraver.cc | 3 +- lily/drum-note-engraver.cc | 11 +- lily/drum-note-performer.cc | 3 +- lily/duration.cc | 4 +- lily/dynamic-align-engraver.cc | 3 +- lily/dynamic-engraver.cc | 3 +- lily/dynamic-performer.cc | 5 +- lily/enclosing-bracket.cc | 16 +- lily/engraver-group.cc | 3 +- lily/engraver.cc | 3 +- lily/episema-engraver.cc | 3 +- lily/extender-engraver.cc | 5 +- lily/figured-bass-engraver.cc | 3 +- lily/figured-bass-position-engraver.cc | 3 +- lily/fingering-column-engraver.cc | 3 +- lily/fingering-engraver.cc | 3 +- lily/font-interface.cc | 1 + lily/font-metric.cc | 4 +- lily/font-size-engraver.cc | 3 +- lily/footnote-engraver.cc | 3 +- lily/forbid-break-engraver.cc | 3 +- lily/fretboard-engraver.cc | 3 +- lily/function-documentation.cc | 7 +- lily/glissando-engraver.cc | 3 +- lily/global-context-scheme.cc | 2 +- lily/global-context.cc | 5 +- lily/grace-engraver.cc | 3 +- lily/grace-iterator.cc | 2 +- lily/grace-spacing-engraver.cc | 3 +- lily/gregorian-ligature-engraver.cc | 3 +- lily/grid-line-span-engraver.cc | 3 +- lily/grid-point-engraver.cc | 3 +- lily/grob-interface-scheme.cc | 11 +- lily/grob-pq-engraver.cc | 5 +- lily/hairpin.cc | 10 +- lily/horizontal-bracket-engraver.cc | 34 +- lily/horizontal-bracket.cc | 79 +- lily/hyphen-engraver.cc | 3 +- lily/include/bracket.hh | 40 + lily/include/coherent-ligature-engraver.hh | 3 + lily/include/context.hh | 18 +- lily/include/engraver-group.hh | 10 +- lily/include/engraver.hh | 2 +- lily/include/font-metric.hh | 4 +- lily/include/global-context.hh | 10 +- lily/include/gregorian-ligature-engraver.hh | 2 +- lily/include/horizontal-bracket.hh | 5 - lily/include/ligature-engraver.hh | 2 +- lily/include/lily-imports.hh | 1 + lily/include/lily-lexer.hh | 2 + lily/include/lily-proto.hh | 1 + lily/include/modified-font-metric.hh | 12 +- lily/include/music.hh | 11 +- lily/include/open-type-font.hh | 16 +- lily/include/pango-font.hh | 13 +- lily/include/performer.hh | 3 + lily/include/profile.hh | 10 +- lily/include/protected-scm.hh | 1 + lily/include/scheme-engraver.hh | 31 +- lily/include/smobs.hh | 50 +- lily/include/spanner.hh | 12 +- lily/include/stencil.hh | 1 + lily/include/translator.hh | 80 +- lily/include/translator.icc | 36 +- lily/include/tuplet-bracket.hh | 4 - lily/instrument-name-engraver.cc | 3 +- lily/instrument-switch-engraver.cc | 3 +- lily/keep-alive-together-engraver.cc | 3 +- lily/key-engraver.cc | 6 +- lily/key-performer.cc | 3 +- lily/kievan-ligature-engraver.cc | 3 +- lily/laissez-vibrer-engraver.cc | 3 +- lily/ledger-line-engraver.cc | 3 +- lily/lexer.ll | 94 +- lily/ligature-bracket-engraver.cc | 3 +- lily/ligature-engraver.cc | 3 +- lily/lily-imports.cc | 1 + lily/lily-modules.cc | 2 +- lily/line-interface.cc | 21 +- lily/lyric-engraver.cc | 3 +- lily/lyric-hyphen.cc | 16 +- lily/lyric-performer.cc | 3 +- lily/mark-engraver.cc | 11 +- lily/measure-grouping-engraver.cc | 3 +- lily/melody-engraver.cc | 3 +- lily/mensural-ligature-engraver.cc | 3 +- lily/metronome-engraver.cc | 3 +- lily/midi-cc-performer.cc | 3 +- lily/modified-font-metric.cc | 10 +- lily/module-scheme.cc | 4 +- lily/multi-measure-rest-engraver.cc | 9 +- lily/multi-measure-rest.cc | 16 +- lily/music.cc | 5 +- lily/new-fingering-engraver.cc | 3 +- lily/note-column.cc | 1 + lily/note-head-line-engraver.cc | 3 +- lily/note-heads-engraver.cc | 3 +- lily/note-name-engraver.cc | 3 +- lily/note-performer.cc | 3 +- lily/note-spacing-engraver.cc | 3 +- lily/one-page-breaking.cc | 2 +- lily/open-type-font.cc | 3 +- lily/ottava-bracket.cc | 11 +- lily/ottava-engraver.cc | 5 +- lily/output-property-engraver.cc | 3 +- lily/page-breaking.cc | 4 +- lily/page-layout-problem.cc | 2 +- lily/page-turn-engraver.cc | 3 +- lily/pango-font.cc | 23 +- lily/paper-book.cc | 2 +- lily/paper-column-engraver.cc | 3 +- lily/paper-column.cc | 19 +- lily/parenthesis-engraver.cc | 3 +- lily/parser.yy | 191 +- lily/part-combine-engraver.cc | 3 +- lily/pdf-scheme.cc | 16 +- lily/percent-repeat-engraver.cc | 3 +- lily/phrasing-slur-engraver.cc | 3 +- lily/piano-pedal-align-engraver.cc | 3 +- lily/piano-pedal-bracket.cc | 10 +- lily/piano-pedal-engraver.cc | 3 +- lily/piano-pedal-performer.cc | 3 +- lily/pitch-squash-engraver.cc | 3 +- lily/pitch.cc | 4 +- lily/pitched-trill-engraver.cc | 3 +- lily/prob-scheme.cc | 2 +- lily/profile.cc | 33 +- lily/program-option-scheme.cc | 7 +- lily/protected-scm.cc | 8 + lily/pure-from-neighbor-engraver.cc | 3 +- lily/repeat-acknowledge-engraver.cc | 3 +- lily/repeat-tie-engraver.cc | 3 +- lily/rest-collision-engraver.cc | 3 +- lily/rest-engraver.cc | 3 +- lily/rhythmic-column-engraver.cc | 3 +- lily/scheme-engraver.cc | 7 +- lily/script-column-engraver.cc | 3 +- lily/script-column.cc | 8 +- lily/script-engraver.cc | 3 +- lily/script-row-engraver.cc | 3 +- lily/semi-tie.cc | 1 + lily/separating-line-group-engraver.cc | 3 +- lily/simple-spacer.cc | 2 +- lily/slash-repeat-engraver.cc | 3 +- lily/slur-engraver.cc | 3 +- lily/slur-performer.cc | 3 +- lily/spacing-engraver.cc | 3 +- lily/span-arpeggio-engraver.cc | 3 +- lily/span-bar-engraver.cc | 3 +- lily/span-bar-stub-engraver.cc | 3 +- lily/spanner-break-forbid-engraver.cc | 3 +- lily/spanner.cc | 14 +- lily/spring-smob.cc | 3 +- lily/staff-collecting-engraver.cc | 3 +- lily/staff-performer.cc | 5 +- lily/staff-symbol-engraver.cc | 3 +- lily/stanza-number-align-engraver.cc | 3 +- lily/stanza-number-engraver.cc | 5 +- lily/stem-engraver.cc | 3 +- lily/stencil-expression.cc | 11 +- lily/stencil-integral.cc | 7 +- lily/stencil-interpret.cc | 4 + lily/stencil-scheme.cc | 11 + lily/stencil.cc | 10 + lily/system-start-delimiter-engraver.cc | 3 +- lily/tab-note-heads-engraver.cc | 3 +- lily/tab-staff-symbol-engraver.cc | 3 +- lily/tab-tie-follow-engraver.cc | 3 +- lily/tempo-performer.cc | 3 +- lily/text-engraver.cc | 3 +- lily/text-interface.cc | 38 +- lily/text-spanner-engraver.cc | 3 +- lily/tie-engraver.cc | 3 +- lily/tie-performer.cc | 3 +- lily/time-signature-engraver.cc | 6 +- lily/time-signature-performer.cc | 3 +- lily/timing-translator.cc | 3 +- lily/translator-ctors.cc | 69 +- lily/translator-group.cc | 56 +- lily/translator-scheme.cc | 20 - lily/translator.cc | 20 +- lily/trill-spanner-engraver.cc | 3 +- lily/tuplet-bracket.cc | 78 +- lily/tuplet-engraver.cc | 3 +- lily/tweak-engraver.cc | 3 +- lily/vaticana-ligature-engraver.cc | 3 +- lily/vertical-align-engraver.cc | 3 +- lily/volta-bracket.cc | 9 +- lily/volta-engraver.cc | 3 +- lily/volta-repeat-iterator.cc | 22 +- ly/Welcome-to-LilyPond-MacOS.ly | 2 +- ly/Welcome_to_LilyPond.ly | 2 +- ly/arabic.ly | 169 +- ly/articulate.ly | 20 +- ly/engraver-init.ly | 2 + ly/music-functions-init.ly | 77 +- ly/property-init.ly | 44 +- ly/scheme-sandbox.ly | 6 +- ly/toc-init.ly | 3 +- make/doc-i18n-root-rules.make | 6 +- make/doc-i18n-root-vars.make | 3 +- make/lilypond-book-rules.make | 4 +- make/website.make | 17 +- out/ChangeLog | 2 +- out/RELEASE-COMMIT | 42 +- po/ca.po | 1162 +- po/da.po | 959 +- po/de.po | 993 +- po/eo.po | 986 +- po/es.po | 964 +- po/fr.po | 974 +- po/it.po | 987 +- po/lilypond.pot | 449 +- po/nl.po | 990 +- python/GNUmakefile | 4 +- python/midi.c | 469 - python/midi.py | 199 + scm/backend-library.scm | 1 + scm/bar-line.scm | 2 +- scm/define-context-properties.scm | 4 +- scm/define-grob-interfaces.scm | 8 +- scm/define-grob-properties.scm | 27 +- scm/define-grobs.scm | 21 + scm/define-markup-commands.scm | 53 +- scm/define-music-display-methods.scm | 54 +- scm/define-music-properties.scm | 2 +- scm/define-stencil-commands.scm | 1 + scm/display-lily.scm | 33 +- scm/flag-styles.scm | 34 +- scm/framework-ps.scm | 33 +- scm/fret-diagrams.scm | 74 +- scm/graphviz.scm | 4 +- scm/harp-pedals.scm | 2 +- scm/lily-library.scm | 29 +- scm/lily.scm | 6 +- scm/music-functions.scm | 115 +- scm/output-lib.scm | 170 +- scm/page.scm | 12 +- scm/ps-to-png.scm | 1 + scm/scheme-engravers.scm | 107 + scm/stencil.scm | 19 +- scripts/abc2ly.py | 6 +- scripts/auxiliar/make-regtest-pngs.sh | 1 + scripts/build/output-distance.py | 1 + scripts/build/website_post.py | 2 +- scripts/midi2ly.py | 13 +- smart-autogen.sh | 3 +- smart-configure.sh | 3 +- stepmake/stepmake/tex-rules.make | 1 + stepmake/stepmake/texinfo-rules.make | 2 +- tex/texinfo-ja.tex | 84 + tex/texinfo.tex | 211 +- tex/txi-ja.tex | 488 + 1773 files changed, 336178 insertions(+), 18333 deletions(-) create mode 100644 Documentation/ca/notation/expressive.itely create mode 100644 Documentation/ca/notation/repeats.itely create mode 100644 Documentation/ca/notation/rhythms.itely create mode 100644 Documentation/ca/notation/simultaneous.itely create mode 100644 Documentation/ca/notation/staff.itely rename Documentation/contributor/{feta-font.itexi => emmentaler-font.itexi} (76%) create mode 100644 Documentation/es/included/acknowledge.itexi delete mode 100644 Documentation/es/texidocs/accordion-registers.texidoc delete mode 100644 Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc delete mode 100644 Documentation/es/texidocs/bar-chords-notation-for-guitar--with-text-spanner.texidoc delete mode 100644 Documentation/es/texidocs/beam-grouping-in-7-8-time.texidoc delete mode 100644 Documentation/es/texidocs/centering-markup-on-note-heads-automatically.texidoc delete mode 100644 Documentation/es/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc delete mode 100644 Documentation/es/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc delete mode 100644 Documentation/es/texidocs/transcription-of-ancient-music-with-incipit.texidoc delete mode 100644 Documentation/es/web/news-front.itexi delete mode 100644 Documentation/es/web/news.itexi create mode 100644 Documentation/fr/changes.tely create mode 100644 Documentation/fr/texidocs/analysis-brackets-with-labels.texidoc create mode 100644 Documentation/included/gsoc.itexi create mode 100644 Documentation/it/texidocs/analysis-brackets-above-the-staff.texidoc create mode 100644 Documentation/it/texidocs/analysis-brackets-with-labels.texidoc create mode 100644 Documentation/it/texidocs/moving-the-ends-of-hairpins.texidoc create mode 100644 Documentation/it/web/news-new.itexi create mode 100644 Documentation/ja/search-box.ihtml create mode 100644 Documentation/snippets/analysis-brackets-with-labels.ly create mode 100644 Documentation/snippets/moving-the-ends-of-hairpins.ly create mode 100644 Documentation/snippets/new/adding-drum-parts.ly create mode 100644 Documentation/snippets/new/aligning-and-centering-instrument-names.ly create mode 100644 Documentation/snippets/new/analysis-brackets-with-labels.ly create mode 100644 Documentation/snippets/new/clip-systems.ly create mode 100644 Documentation/snippets/new/combining-two-parts-on-the-same-staff.ly create mode 100644 Documentation/snippets/new/figured-bass-headword.ly create mode 100644 Documentation/snippets/new/heavily-customized-polymetric-time-signatures.ly create mode 100644 Documentation/snippets/new/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly create mode 100644 Documentation/snippets/new/jazz-combo-template.ly create mode 100644 Documentation/snippets/new/moving-the-ends-of-hairpins.ly create mode 100644 Documentation/snippets/new/orchestra,-choir-and-piano-template.ly create mode 100644 Documentation/snippets/new/piano-template-simple.ly create mode 100644 Documentation/snippets/new/quoting-another-voice-with-transposition.ly create mode 100644 Documentation/snippets/new/quoting-another-voice.ly create mode 100644 Documentation/snippets/new/string-quartet-template-simple.ly create mode 100644 Documentation/snippets/new/string-quartet-template-with-separate-parts.ly create mode 100644 Documentation/snippets/new/three-sided-box.ly create mode 100644 Documentation/snippets/new/transposing-pitches-with-minimum-accidentals-smart-transpose.ly create mode 100644 Documentation/snippets/using-marklines-in-a-frenched-score.ly rename Documentation/web/{news-front.itexi => news-new.itexi} (96%) rename Documentation/web/{news.itexi => news-old.itexi} (97%) create mode 100644 guile18/.gitignore create mode 100644 guile18/ABOUT-NLS create mode 100644 guile18/ANNOUNCE create mode 100644 guile18/AUTHORS create mode 100644 guile18/COPYING.LESSER create mode 100644 guile18/ChangeLog create mode 100644 guile18/ChangeLog-2008 create mode 100644 guile18/GUILE-VERSION create mode 100644 guile18/HACKING create mode 100644 guile18/LICENSE create mode 100644 guile18/Makefile.am create mode 100644 guile18/NEWS create mode 100644 guile18/README create mode 100644 guile18/THANKS create mode 100644 guile18/acinclude.m4 create mode 100644 guile18/am/ChangeLog-2008 create mode 100644 guile18/am/Makefile.am create mode 100644 guile18/am/README create mode 100644 guile18/am/maintainer-dirs create mode 100644 guile18/am/pre-inst-guile create mode 100755 guile18/autogen.sh create mode 100644 guile18/benchmark-guile.in create mode 100644 guile18/benchmark-suite/ChangeLog-2008 create mode 100644 guile18/benchmark-suite/Makefile.am create mode 100644 guile18/benchmark-suite/README create mode 100644 guile18/benchmark-suite/benchmarks/0-reference.bm create mode 100644 guile18/benchmark-suite/benchmarks/continuations.bm create mode 100644 guile18/benchmark-suite/benchmarks/if.bm create mode 100644 guile18/benchmark-suite/benchmarks/logand.bm create mode 100644 guile18/benchmark-suite/benchmarks/read.bm create mode 100644 guile18/benchmark-suite/benchmarks/subr.bm create mode 100644 guile18/benchmark-suite/benchmarks/uniform-vector-read.bm create mode 100755 guile18/benchmark-suite/guile-benchmark create mode 100644 guile18/benchmark-suite/lib.scm create mode 100755 guile18/build-aux/config.rpath create mode 100644 guile18/check-guile.in create mode 100755 guile18/config.rpath create mode 100644 guile18/configure.in create mode 100644 guile18/doc/.gitignore create mode 100644 guile18/doc/ChangeLog-2008 create mode 100644 guile18/doc/ChangeLog-guile-doc create mode 100644 guile18/doc/Makefile.am create mode 100644 guile18/doc/NEWS create mode 100644 guile18/doc/README create mode 100644 guile18/doc/THANKS create mode 100644 guile18/doc/example-smob/ChangeLog-2008 create mode 100644 guile18/doc/example-smob/README create mode 100644 guile18/doc/example-smob/image-type.c create mode 100644 guile18/doc/example-smob/image-type.h create mode 100644 guile18/doc/example-smob/myguile.c create mode 100644 guile18/doc/goops/ChangeLog-2008 create mode 100644 guile18/doc/goops/Makefile.am create mode 100644 guile18/doc/goops/goops-tutorial.texi create mode 100644 guile18/doc/goops/goops.texi create mode 100644 guile18/doc/goops/hierarchy.eps create mode 100644 guile18/doc/goops/hierarchy.pdf create mode 100644 guile18/doc/goops/hierarchy.png create mode 100644 guile18/doc/goops/hierarchy.txt create mode 100644 guile18/doc/goops/mop.text create mode 100644 guile18/doc/groupings.alist create mode 100644 guile18/doc/guile-api.alist create mode 100644 guile18/doc/guile.1 create mode 100644 guile18/doc/hacks.el create mode 100644 guile18/doc/maint/ChangeLog-2008 create mode 100644 guile18/doc/maint/README create mode 100644 guile18/doc/maint/docstring.el create mode 100644 guile18/doc/mbapi.texi create mode 100644 guile18/doc/mltext.texi create mode 100644 guile18/doc/oldfmt.c create mode 100644 guile18/doc/r5rs/ChangeLog-2008 create mode 100644 guile18/doc/r5rs/Makefile.am create mode 100644 guile18/doc/r5rs/r5rs.texi create mode 100644 guile18/doc/recipe-guidelines.txt create mode 100644 guile18/doc/ref/.gitignore create mode 100644 guile18/doc/ref/ChangeLog-2008 create mode 100644 guile18/doc/ref/ChangeLog-guile-doc-ref create mode 100644 guile18/doc/ref/Makefile.am create mode 100644 guile18/doc/ref/api-binding.texi create mode 100644 guile18/doc/ref/api-compound.texi create mode 100644 guile18/doc/ref/api-control.texi create mode 100755 guile18/doc/ref/api-data.texi create mode 100644 guile18/doc/ref/api-debug.texi create mode 100644 guile18/doc/ref/api-evaluation.texi create mode 100644 guile18/doc/ref/api-i18n.texi create mode 100644 guile18/doc/ref/api-init.texi create mode 100644 guile18/doc/ref/api-io.texi create mode 100644 guile18/doc/ref/api-memory.texi create mode 100644 guile18/doc/ref/api-options.texi create mode 100644 guile18/doc/ref/api-overview.texi create mode 100644 guile18/doc/ref/api-procedures.texi create mode 100644 guile18/doc/ref/api-scheduling.texi create mode 100644 guile18/doc/ref/api-scm.texi create mode 100644 guile18/doc/ref/api-smobs.texi create mode 100644 guile18/doc/ref/api-snarf.texi create mode 100644 guile18/doc/ref/api-translation.texi create mode 100644 guile18/doc/ref/api-undocumented.texi create mode 100644 guile18/doc/ref/api-utility.texi create mode 100644 guile18/doc/ref/api.txt create mode 100644 guile18/doc/ref/autoconf.texi create mode 100644 guile18/doc/ref/data-rep.texi create mode 100644 guile18/doc/ref/expect.texi create mode 100644 guile18/doc/ref/extend.texi create mode 100644 guile18/doc/ref/fdl.texi create mode 100644 guile18/doc/ref/gh.texi create mode 100644 guile18/doc/ref/indices.texi create mode 100644 guile18/doc/ref/libguile-concepts.texi create mode 100644 guile18/doc/ref/libguile-extensions.texi create mode 100644 guile18/doc/ref/libguile-linking.texi create mode 100644 guile18/doc/ref/libguile-program.texi create mode 100644 guile18/doc/ref/libguile-smobs.texi create mode 100644 guile18/doc/ref/libguile-snarf.texi create mode 100644 guile18/doc/ref/misc-modules.texi create mode 100644 guile18/doc/ref/mod-getopt-long.texi create mode 100644 guile18/doc/ref/new-docstrings.texi create mode 100644 guile18/doc/ref/preface.texi create mode 100644 guile18/doc/ref/repl-modules.texi create mode 100644 guile18/doc/ref/scheme-debugging.texi create mode 100644 guile18/doc/ref/scheme-ideas.texi create mode 100644 guile18/doc/ref/scheme-indices.texi create mode 100644 guile18/doc/ref/scheme-intro.texi create mode 100644 guile18/doc/ref/scheme-reading.texi create mode 100644 guile18/doc/ref/scheme-scripts.texi create mode 100644 guile18/doc/ref/script-getopt.texi create mode 100644 guile18/doc/ref/scsh.texi create mode 100644 guile18/doc/ref/slib.texi create mode 100644 guile18/doc/ref/srfi-modules.texi create mode 100644 guile18/doc/ref/tcltk.texi create mode 100644 guile18/doc/ref/tools.texi create mode 100644 guile18/doc/sources/ChangeLog-2008 create mode 100644 guile18/doc/sources/Makefile.am create mode 100644 guile18/doc/sources/contributors.texi create mode 100644 guile18/doc/sources/debug-c.texi create mode 100644 guile18/doc/sources/debug-scheme.texi create mode 100644 guile18/doc/sources/env.texi create mode 100644 guile18/doc/sources/format.texi create mode 100644 guile18/doc/sources/guile-slib.texi create mode 100644 guile18/doc/sources/jimb-org.texi create mode 100644 guile18/doc/sources/libguile-overview.texi create mode 100644 guile18/doc/sources/libguile-tools.texi create mode 100644 guile18/doc/sources/new-types.texi create mode 100644 guile18/doc/sources/old-intro.texi create mode 100644 guile18/doc/sources/sample-APIs.texi create mode 100644 guile18/doc/sources/scheme-concepts.texi create mode 100644 guile18/doc/sources/scm-ref.texi create mode 100644 guile18/doc/sources/strings.texi create mode 100644 guile18/doc/sources/tk.texi create mode 100644 guile18/doc/sources/unix-other.texi create mode 100644 guile18/doc/sources/unix.texi create mode 100644 guile18/doc/tutorial/ChangeLog-2008 create mode 100644 guile18/doc/tutorial/ChangeLog-guile-doc-tutorial create mode 100644 guile18/doc/tutorial/Makefile.am create mode 100644 guile18/doc/tutorial/guile-tut.texi create mode 100644 guile18/doc/use-cases.fig create mode 100644 guile18/doc/use-cases.txt create mode 100644 guile18/emacs/ChangeLog-2008 create mode 100644 guile18/emacs/Makefile.am create mode 100644 guile18/emacs/README create mode 100755 guile18/emacs/gds-scheme.el create mode 100644 guile18/emacs/gds-server.el create mode 100644 guile18/emacs/gds.el create mode 100644 guile18/emacs/gud-guile.el create mode 100644 guile18/emacs/guile-c.el create mode 100644 guile18/emacs/guile-emacs.scm create mode 100644 guile18/emacs/guile-scheme.el create mode 100644 guile18/emacs/guile.el create mode 100644 guile18/emacs/multistring.el create mode 100644 guile18/emacs/patch.el create mode 100644 guile18/emacs/ppexpand.el create mode 100644 guile18/emacs/update-changelog.el create mode 100644 guile18/examples/ChangeLog-2008 create mode 100644 guile18/examples/Makefile.am create mode 100644 guile18/examples/README create mode 100644 guile18/examples/box-dynamic-module/README create mode 100644 guile18/examples/box-dynamic-module/box-mixed.scm create mode 100644 guile18/examples/box-dynamic-module/box-module.scm create mode 100644 guile18/examples/box-dynamic-module/box.c create mode 100644 guile18/examples/box-dynamic/README create mode 100644 guile18/examples/box-dynamic/box.c create mode 100644 guile18/examples/box-module/README create mode 100644 guile18/examples/box-module/box.c create mode 100644 guile18/examples/box/README create mode 100644 guile18/examples/box/box.c create mode 100755 guile18/examples/check.test create mode 100644 guile18/examples/compat/acconfig.h create mode 100644 guile18/examples/compat/acinclude.m4 create mode 100644 guile18/examples/compat/compat.h create mode 100644 guile18/examples/compat/configure.in create mode 100644 guile18/examples/modules/README create mode 100644 guile18/examples/modules/main create mode 100644 guile18/examples/modules/module-0.scm create mode 100644 guile18/examples/modules/module-1.scm create mode 100644 guile18/examples/modules/module-2.scm create mode 100644 guile18/examples/safe/README create mode 100644 guile18/examples/safe/evil.scm create mode 100755 guile18/examples/safe/safe create mode 100644 guile18/examples/safe/untrusted.scm create mode 100644 guile18/examples/scripts/README create mode 100755 guile18/examples/scripts/fact create mode 100755 guile18/examples/scripts/hello create mode 100644 guile18/examples/scripts/simple-hello.scm create mode 100644 guile18/guile-1.8.pc.in create mode 100644 guile18/guile-config/ChangeLog-2008 create mode 100644 guile18/guile-config/Makefile.am create mode 100644 guile18/guile-config/guile-config.in create mode 100644 guile18/guile-config/guile.m4 create mode 100644 guile18/guile-readline/ChangeLog-2008 create mode 100644 guile18/guile-readline/LIBGUILEREADLINE-VERSION create mode 100644 guile18/guile-readline/Makefile.am create mode 100755 guile18/guile-readline/autogen.sh create mode 100644 guile18/guile-readline/configure.in create mode 100644 guile18/guile-readline/ice-9/Makefile.am create mode 100644 guile18/guile-readline/ice-9/readline.scm create mode 100644 guile18/guile-readline/readline-activator.scm create mode 100644 guile18/guile-readline/readline.c create mode 100644 guile18/guile-readline/readline.h create mode 100644 guile18/guile-tools.in create mode 100644 guile18/ice-9/ChangeLog-2008 create mode 100644 guile18/ice-9/Makefile.am create mode 100644 guile18/ice-9/README create mode 100644 guile18/ice-9/and-let-star.scm create mode 100644 guile18/ice-9/arrays.scm create mode 100644 guile18/ice-9/boot-9.scm create mode 100644 guile18/ice-9/buffered-input.scm create mode 100644 guile18/ice-9/calling.scm create mode 100644 guile18/ice-9/channel.scm create mode 100644 guile18/ice-9/common-list.scm create mode 100644 guile18/ice-9/compile-psyntax.scm create mode 100644 guile18/ice-9/debug.scm create mode 100644 guile18/ice-9/debugger.scm create mode 100644 guile18/ice-9/debugger/command-loop.scm create mode 100644 guile18/ice-9/debugger/commands.scm create mode 100644 guile18/ice-9/debugger/state.scm create mode 100644 guile18/ice-9/debugger/trc.scm create mode 100644 guile18/ice-9/debugger/utils.scm create mode 100644 guile18/ice-9/debugging/example-fns.scm create mode 100644 guile18/ice-9/debugging/ice-9-debugger-extensions.scm create mode 100644 guile18/ice-9/debugging/steps.scm create mode 100644 guile18/ice-9/debugging/trace.scm create mode 100755 guile18/ice-9/debugging/traps.scm create mode 100644 guile18/ice-9/debugging/trc.scm create mode 100644 guile18/ice-9/deprecated.scm create mode 100644 guile18/ice-9/documentation.scm create mode 100644 guile18/ice-9/emacs.scm create mode 100644 guile18/ice-9/expect.scm create mode 100644 guile18/ice-9/format.scm create mode 100644 guile18/ice-9/ftw.scm create mode 100644 guile18/ice-9/gap-buffer.scm create mode 100755 guile18/ice-9/gds-client.scm create mode 100644 guile18/ice-9/gds-server.scm create mode 100644 guile18/ice-9/getopt-long.scm create mode 100644 guile18/ice-9/hcons.scm create mode 100644 guile18/ice-9/history.scm create mode 100644 guile18/ice-9/lineio.scm create mode 100644 guile18/ice-9/list.scm create mode 100644 guile18/ice-9/ls.scm create mode 100644 guile18/ice-9/mapping.scm create mode 100644 guile18/ice-9/match.scm create mode 100644 guile18/ice-9/networking.scm create mode 100644 guile18/ice-9/null.scm create mode 100644 guile18/ice-9/occam-channel.scm create mode 100644 guile18/ice-9/optargs.scm create mode 100644 guile18/ice-9/poe.scm create mode 100644 guile18/ice-9/popen.scm create mode 100644 guile18/ice-9/posix.scm create mode 100644 guile18/ice-9/pretty-print.scm create mode 100644 guile18/ice-9/psyntax.pp create mode 100644 guile18/ice-9/psyntax.ss create mode 100644 guile18/ice-9/q.scm create mode 100644 guile18/ice-9/r4rs.scm create mode 100644 guile18/ice-9/r5rs.scm create mode 100644 guile18/ice-9/rdelim.scm create mode 100644 guile18/ice-9/receive.scm create mode 100644 guile18/ice-9/regex.scm create mode 100644 guile18/ice-9/runq.scm create mode 100644 guile18/ice-9/rw.scm create mode 100644 guile18/ice-9/safe-r5rs.scm create mode 100644 guile18/ice-9/safe.scm create mode 100644 guile18/ice-9/serialize.scm create mode 100644 guile18/ice-9/session.scm create mode 100644 guile18/ice-9/slib.scm create mode 100644 guile18/ice-9/stack-catch.scm create mode 100644 guile18/ice-9/streams.scm create mode 100644 guile18/ice-9/string-fun.scm create mode 100644 guile18/ice-9/syncase.scm create mode 100644 guile18/ice-9/test.scm create mode 100644 guile18/ice-9/threads.scm create mode 100644 guile18/ice-9/time.scm create mode 100644 guile18/ice-9/weak-vector.scm create mode 100644 guile18/lang/Makefile.am create mode 100644 guile18/lang/elisp/ChangeLog-2008 create mode 100644 guile18/lang/elisp/README create mode 100644 guile18/lang/elisp/STATUS create mode 100644 guile18/lang/elisp/base.scm create mode 100644 guile18/lang/elisp/example.el create mode 100644 guile18/lang/elisp/interface.scm create mode 100644 guile18/lang/elisp/internals/evaluation.scm create mode 100644 guile18/lang/elisp/internals/format.scm create mode 100644 guile18/lang/elisp/internals/fset.scm create mode 100644 guile18/lang/elisp/internals/lambda.scm create mode 100644 guile18/lang/elisp/internals/load.scm create mode 100644 guile18/lang/elisp/internals/null.scm create mode 100644 guile18/lang/elisp/internals/set.scm create mode 100644 guile18/lang/elisp/internals/signal.scm create mode 100644 guile18/lang/elisp/internals/time.scm create mode 100644 guile18/lang/elisp/internals/trace.scm create mode 100644 guile18/lang/elisp/primitives/buffers.scm create mode 100644 guile18/lang/elisp/primitives/char-table.scm create mode 100644 guile18/lang/elisp/primitives/features.scm create mode 100644 guile18/lang/elisp/primitives/fns.scm create mode 100644 guile18/lang/elisp/primitives/format.scm create mode 100644 guile18/lang/elisp/primitives/guile.scm create mode 100644 guile18/lang/elisp/primitives/keymaps.scm create mode 100644 guile18/lang/elisp/primitives/lists.scm create mode 100644 guile18/lang/elisp/primitives/load.scm create mode 100644 guile18/lang/elisp/primitives/match.scm create mode 100644 guile18/lang/elisp/primitives/numbers.scm create mode 100644 guile18/lang/elisp/primitives/pure.scm create mode 100644 guile18/lang/elisp/primitives/read.scm create mode 100644 guile18/lang/elisp/primitives/signal.scm create mode 100644 guile18/lang/elisp/primitives/strings.scm create mode 100644 guile18/lang/elisp/primitives/symprop.scm create mode 100644 guile18/lang/elisp/primitives/syntax.scm create mode 100644 guile18/lang/elisp/primitives/system.scm create mode 100644 guile18/lang/elisp/primitives/time.scm create mode 100644 guile18/lang/elisp/transform.scm create mode 100644 guile18/lang/elisp/variables.scm create mode 100644 guile18/libguile.h create mode 100644 guile18/libguile/.gitignore create mode 100644 guile18/libguile/ChangeLog-1996-1999 create mode 100644 guile18/libguile/ChangeLog-2000 create mode 100644 guile18/libguile/ChangeLog-2008 create mode 100644 guile18/libguile/ChangeLog-gh create mode 100644 guile18/libguile/ChangeLog-scm create mode 100644 guile18/libguile/ChangeLog-threads create mode 100644 guile18/libguile/Makefile.am create mode 100644 guile18/libguile/__scm.h create mode 100644 guile18/libguile/_scm.h create mode 100644 guile18/libguile/alist.c create mode 100644 guile18/libguile/alist.h create mode 100644 guile18/libguile/alloca.c create mode 100644 guile18/libguile/arbiters.c create mode 100644 guile18/libguile/arbiters.h create mode 100644 guile18/libguile/async.c create mode 100644 guile18/libguile/async.h create mode 100644 guile18/libguile/backtrace.c create mode 100644 guile18/libguile/backtrace.h create mode 100644 guile18/libguile/boolean.c create mode 100644 guile18/libguile/boolean.h create mode 100644 guile18/libguile/c-tokenize.lex create mode 100644 guile18/libguile/chars.c create mode 100644 guile18/libguile/chars.h create mode 100644 guile18/libguile/continuations.c create mode 100644 guile18/libguile/continuations.h create mode 100644 guile18/libguile/conv-integer.i.c create mode 100644 guile18/libguile/conv-uinteger.i.c create mode 100644 guile18/libguile/convert.c create mode 100644 guile18/libguile/convert.h create mode 100644 guile18/libguile/convert.i.c create mode 100644 guile18/libguile/coop-pthreads.c create mode 100644 guile18/libguile/coop-pthreads.h create mode 100644 guile18/libguile/coop.c create mode 100644 guile18/libguile/cpp_cnvt.awk create mode 100644 guile18/libguile/cpp_err_symbols.in create mode 100644 guile18/libguile/cpp_errno.c create mode 100644 guile18/libguile/cpp_sig_symbols.in create mode 100644 guile18/libguile/cpp_signal.c create mode 100644 guile18/libguile/debug-malloc.c create mode 100644 guile18/libguile/debug-malloc.h create mode 100644 guile18/libguile/debug.c create mode 100644 guile18/libguile/debug.h create mode 100644 guile18/libguile/deprecated.c create mode 100644 guile18/libguile/deprecated.h create mode 100644 guile18/libguile/deprecation.c create mode 100644 guile18/libguile/deprecation.h create mode 100644 guile18/libguile/discouraged.c create mode 100644 guile18/libguile/discouraged.h create mode 100644 guile18/libguile/dynl.c create mode 100644 guile18/libguile/dynl.h create mode 100644 guile18/libguile/dynwind.c create mode 100644 guile18/libguile/dynwind.h create mode 100644 guile18/libguile/environments.c create mode 100644 guile18/libguile/environments.h create mode 100644 guile18/libguile/eq.c create mode 100644 guile18/libguile/eq.h create mode 100644 guile18/libguile/error.c create mode 100644 guile18/libguile/error.h create mode 100644 guile18/libguile/eval.c create mode 100644 guile18/libguile/eval.h create mode 100644 guile18/libguile/evalext.c create mode 100644 guile18/libguile/evalext.h create mode 100644 guile18/libguile/extensions.c create mode 100644 guile18/libguile/extensions.h create mode 100644 guile18/libguile/feature.c create mode 100644 guile18/libguile/feature.h create mode 100644 guile18/libguile/filesys.c create mode 100644 guile18/libguile/filesys.h create mode 100644 guile18/libguile/fluids.c create mode 100644 guile18/libguile/fluids.h create mode 100644 guile18/libguile/fports.c create mode 100644 guile18/libguile/fports.h create mode 100644 guile18/libguile/futures.c create mode 100644 guile18/libguile/futures.h create mode 100644 guile18/libguile/gc-card.c create mode 100644 guile18/libguile/gc-freelist.c create mode 100644 guile18/libguile/gc-malloc.c create mode 100644 guile18/libguile/gc-mark.c create mode 100644 guile18/libguile/gc-segment.c create mode 100644 guile18/libguile/gc.c create mode 100644 guile18/libguile/gc.h create mode 100644 guile18/libguile/gc_os_dep.c create mode 100644 guile18/libguile/gdb_interface.h create mode 100644 guile18/libguile/gdbint.c create mode 100644 guile18/libguile/gdbint.h create mode 100644 guile18/libguile/gen-scmconfig.c create mode 100644 guile18/libguile/gen-scmconfig.h.in create mode 100644 guile18/libguile/gettext.h create mode 100644 guile18/libguile/gh.h create mode 100644 guile18/libguile/gh_data.c create mode 100644 guile18/libguile/gh_eval.c create mode 100644 guile18/libguile/gh_funcs.c create mode 100644 guile18/libguile/gh_init.c create mode 100644 guile18/libguile/gh_io.c create mode 100644 guile18/libguile/gh_list.c create mode 100644 guile18/libguile/gh_predicates.c create mode 100644 guile18/libguile/goops.c create mode 100644 guile18/libguile/goops.h create mode 100644 guile18/libguile/gsubr.c create mode 100644 guile18/libguile/gsubr.h create mode 100644 guile18/libguile/guardians.c create mode 100644 guile18/libguile/guardians.h create mode 100755 guile18/libguile/guile-doc-snarf.in create mode 100644 guile18/libguile/guile-func-name-check.in create mode 100755 guile18/libguile/guile-snarf-docs.in create mode 100644 guile18/libguile/guile-snarf.awk.in create mode 100644 guile18/libguile/guile-snarf.in create mode 100644 guile18/libguile/guile.c create mode 100644 guile18/libguile/hash.c create mode 100644 guile18/libguile/hash.h create mode 100644 guile18/libguile/hashtab.c create mode 100644 guile18/libguile/hashtab.h create mode 100644 guile18/libguile/hooks.c create mode 100644 guile18/libguile/hooks.h create mode 100644 guile18/libguile/i18n.c create mode 100644 guile18/libguile/i18n.h create mode 100644 guile18/libguile/inet_aton.c create mode 100644 guile18/libguile/init.c create mode 100644 guile18/libguile/init.h create mode 100644 guile18/libguile/inline.c create mode 100644 guile18/libguile/inline.h create mode 100644 guile18/libguile/ioext.c create mode 100644 guile18/libguile/ioext.h create mode 100644 guile18/libguile/iselect.h create mode 100644 guile18/libguile/keywords.c create mode 100644 guile18/libguile/keywords.h create mode 100644 guile18/libguile/lang.c create mode 100644 guile18/libguile/lang.h create mode 100644 guile18/libguile/list.c create mode 100644 guile18/libguile/list.h create mode 100644 guile18/libguile/load.c create mode 100644 guile18/libguile/load.h create mode 100644 guile18/libguile/macros.c create mode 100644 guile18/libguile/macros.h create mode 100644 guile18/libguile/mallocs.c create mode 100644 guile18/libguile/mallocs.h create mode 100644 guile18/libguile/measure-hwm.scm create mode 100644 guile18/libguile/memmove.c create mode 100644 guile18/libguile/mkstemp.c create mode 100644 guile18/libguile/modules.c create mode 100644 guile18/libguile/modules.h create mode 100644 guile18/libguile/net_db.c create mode 100644 guile18/libguile/net_db.h create mode 100644 guile18/libguile/null-threads.c create mode 100644 guile18/libguile/null-threads.h create mode 100644 guile18/libguile/numbers.c create mode 100644 guile18/libguile/numbers.h create mode 100644 guile18/libguile/objects.c create mode 100644 guile18/libguile/objects.h create mode 100644 guile18/libguile/objprop.c create mode 100644 guile18/libguile/objprop.h create mode 100644 guile18/libguile/options.c create mode 100644 guile18/libguile/options.h create mode 100644 guile18/libguile/pairs.c create mode 100644 guile18/libguile/pairs.h create mode 100644 guile18/libguile/ports.c create mode 100644 guile18/libguile/ports.h create mode 100644 guile18/libguile/posix.c create mode 100644 guile18/libguile/posix.h create mode 100644 guile18/libguile/print.c create mode 100644 guile18/libguile/print.h create mode 100644 guile18/libguile/private-gc.h create mode 100644 guile18/libguile/procprop.c create mode 100644 guile18/libguile/procprop.h create mode 100644 guile18/libguile/procs.c create mode 100644 guile18/libguile/procs.h create mode 100644 guile18/libguile/properties.c create mode 100644 guile18/libguile/properties.h create mode 100644 guile18/libguile/pthread-threads.h create mode 100644 guile18/libguile/putenv.c create mode 100644 guile18/libguile/quicksort.i.c create mode 100644 guile18/libguile/ramap.c create mode 100644 guile18/libguile/ramap.h create mode 100644 guile18/libguile/random.c create mode 100644 guile18/libguile/random.h create mode 100644 guile18/libguile/rdelim.c create mode 100644 guile18/libguile/rdelim.h create mode 100644 guile18/libguile/read.c create mode 100644 guile18/libguile/read.h create mode 100644 guile18/libguile/regex-posix.c create mode 100644 guile18/libguile/regex-posix.h create mode 100755 guile18/libguile/remaining-docs-needed create mode 100644 guile18/libguile/root.c create mode 100644 guile18/libguile/root.h create mode 100755 guile18/libguile/run-test create mode 100644 guile18/libguile/rw.c create mode 100644 guile18/libguile/rw.h create mode 100644 guile18/libguile/scmconfig.h.top create mode 100644 guile18/libguile/scmsigs.c create mode 100644 guile18/libguile/scmsigs.h create mode 100644 guile18/libguile/script.c create mode 100644 guile18/libguile/script.h create mode 100644 guile18/libguile/simpos.c create mode 100644 guile18/libguile/simpos.h create mode 100644 guile18/libguile/smob.c create mode 100644 guile18/libguile/smob.h create mode 100644 guile18/libguile/snarf.h create mode 100644 guile18/libguile/socket.c create mode 100644 guile18/libguile/socket.h create mode 100644 guile18/libguile/sort.c create mode 100644 guile18/libguile/sort.h create mode 100644 guile18/libguile/srcprop.c create mode 100644 guile18/libguile/srcprop.h create mode 100644 guile18/libguile/srfi-13.c create mode 100644 guile18/libguile/srfi-13.h create mode 100644 guile18/libguile/srfi-14.c create mode 100644 guile18/libguile/srfi-14.h create mode 100644 guile18/libguile/srfi-4.c create mode 100644 guile18/libguile/srfi-4.h create mode 100644 guile18/libguile/srfi-4.i.c create mode 100644 guile18/libguile/stackchk.c create mode 100644 guile18/libguile/stackchk.h create mode 100644 guile18/libguile/stacks.c create mode 100644 guile18/libguile/stacks.h create mode 100644 guile18/libguile/stime.c create mode 100644 guile18/libguile/stime.h create mode 100644 guile18/libguile/strerror.c create mode 100644 guile18/libguile/strings.c create mode 100644 guile18/libguile/strings.h create mode 100644 guile18/libguile/strorder.c create mode 100644 guile18/libguile/strorder.h create mode 100644 guile18/libguile/strports.c create mode 100644 guile18/libguile/strports.h create mode 100644 guile18/libguile/struct.c create mode 100644 guile18/libguile/struct.h create mode 100644 guile18/libguile/symbols.c create mode 100644 guile18/libguile/symbols.h create mode 100644 guile18/libguile/tags.h create mode 100644 guile18/libguile/threads.c create mode 100644 guile18/libguile/threads.h create mode 100644 guile18/libguile/throw.c create mode 100644 guile18/libguile/throw.h create mode 100644 guile18/libguile/unif.c create mode 100644 guile18/libguile/unif.h create mode 100644 guile18/libguile/validate.h create mode 100644 guile18/libguile/values.c create mode 100644 guile18/libguile/values.h create mode 100644 guile18/libguile/variable.c create mode 100644 guile18/libguile/variable.h create mode 100644 guile18/libguile/vectors.c create mode 100644 guile18/libguile/vectors.h create mode 100644 guile18/libguile/version.c create mode 100644 guile18/libguile/version.h.in create mode 100644 guile18/libguile/vports.c create mode 100644 guile18/libguile/vports.h create mode 100644 guile18/libguile/weaks.c create mode 100644 guile18/libguile/weaks.h create mode 100644 guile18/libguile/win32-dirent.c create mode 100644 guile18/libguile/win32-dirent.h create mode 100644 guile18/libguile/win32-socket.c create mode 100644 guile18/libguile/win32-socket.h create mode 100644 guile18/libguile/win32-uname.c create mode 100644 guile18/libguile/win32-uname.h create mode 100644 guile18/m4/.gitignore create mode 100644 guile18/m4/autobuild.m4 create mode 100644 guile18/oop/ChangeLog-2008 create mode 100644 guile18/oop/Makefile.am create mode 100644 guile18/oop/goops.scm create mode 100644 guile18/oop/goops/Makefile.am create mode 100644 guile18/oop/goops/accessors.scm create mode 100644 guile18/oop/goops/active-slot.scm create mode 100644 guile18/oop/goops/compile.scm create mode 100644 guile18/oop/goops/composite-slot.scm create mode 100644 guile18/oop/goops/describe.scm create mode 100644 guile18/oop/goops/dispatch.scm create mode 100644 guile18/oop/goops/internal.scm create mode 100644 guile18/oop/goops/old-define-method.scm create mode 100644 guile18/oop/goops/save.scm create mode 100644 guile18/oop/goops/simple.scm create mode 100644 guile18/oop/goops/stklos.scm create mode 100644 guile18/oop/goops/util.scm create mode 100644 guile18/pre-inst-guile-env.in create mode 100644 guile18/pre-inst-guile.in create mode 100644 guile18/qt/CHANGES create mode 100644 guile18/qt/ChangeLog-2008 create mode 100644 guile18/qt/Makefile.am create mode 100644 guile18/qt/Makefile.base create mode 100644 guile18/qt/README create mode 100644 guile18/qt/README.MISC create mode 100644 guile18/qt/README.PORT create mode 100644 guile18/qt/b.h create mode 100755 guile18/qt/config create mode 100644 guile18/qt/copyright.h create mode 100644 guile18/qt/libqthreads.def create mode 100644 guile18/qt/md/Makefile.am create mode 100644 guile18/qt/md/_sparc.s create mode 100644 guile18/qt/md/_sparc_b.s create mode 100644 guile18/qt/md/arm.h create mode 100644 guile18/qt/md/arm.s create mode 100644 guile18/qt/md/axp.1.Makefile create mode 100644 guile18/qt/md/axp.2.Makefile create mode 100644 guile18/qt/md/axp.Makefile create mode 100644 guile18/qt/md/axp.README create mode 100644 guile18/qt/md/axp.c create mode 100644 guile18/qt/md/axp.h create mode 100644 guile18/qt/md/axp.s create mode 100644 guile18/qt/md/axp_b.s create mode 100644 guile18/qt/md/default.Makefile create mode 100644 guile18/qt/md/hppa-cnx.Makefile create mode 100644 guile18/qt/md/hppa.Makefile create mode 100644 guile18/qt/md/hppa.h create mode 100644 guile18/qt/md/hppa.s create mode 100644 guile18/qt/md/hppa_b.s create mode 100644 guile18/qt/md/i386.README create mode 100644 guile18/qt/md/i386.asm create mode 100644 guile18/qt/md/i386.h create mode 100644 guile18/qt/md/i386.s create mode 100644 guile18/qt/md/i386_b.s create mode 100644 guile18/qt/md/ksr1.Makefile create mode 100644 guile18/qt/md/ksr1.h create mode 100644 guile18/qt/md/ksr1.s create mode 100644 guile18/qt/md/ksr1_b.s create mode 100644 guile18/qt/md/m88k.Makefile create mode 100644 guile18/qt/md/m88k.c create mode 100644 guile18/qt/md/m88k.h create mode 100644 guile18/qt/md/m88k.s create mode 100644 guile18/qt/md/m88k_b.s create mode 100644 guile18/qt/md/mips-irix5.s create mode 100644 guile18/qt/md/mips.h create mode 100644 guile18/qt/md/mips.s create mode 100644 guile18/qt/md/mips_b.s create mode 100644 guile18/qt/md/null.README create mode 100644 guile18/qt/md/null.c create mode 100644 guile18/qt/md/solaris.README create mode 100644 guile18/qt/md/sparc.h create mode 100644 guile18/qt/md/sparc.s create mode 100644 guile18/qt/md/sparc_b.s create mode 100644 guile18/qt/md/vax.h create mode 100644 guile18/qt/md/vax.s create mode 100644 guile18/qt/md/vax_b.s create mode 100644 guile18/qt/meas.c create mode 100644 guile18/qt/qt.c create mode 100644 guile18/qt/qt.h.in create mode 100644 guile18/qt/stp.c create mode 100644 guile18/qt/stp.h create mode 100644 guile18/qt/time/Makefile.am create mode 100644 guile18/qt/time/README.time create mode 100755 guile18/qt/time/assim create mode 100755 guile18/qt/time/cswap create mode 100755 guile18/qt/time/go create mode 100755 guile18/qt/time/init create mode 100755 guile18/qt/time/prim create mode 100755 guile18/qt/time/raw create mode 100644 guile18/scripts/ChangeLog-2008 create mode 100644 guile18/scripts/Makefile.am create mode 100755 guile18/scripts/PROGRAM create mode 100644 guile18/scripts/README create mode 100755 guile18/scripts/api-diff create mode 100755 guile18/scripts/autofrisk create mode 100755 guile18/scripts/display-commentary create mode 100755 guile18/scripts/doc-snarf create mode 100755 guile18/scripts/frisk create mode 100755 guile18/scripts/generate-autoload create mode 100755 guile18/scripts/lint create mode 100755 guile18/scripts/punify create mode 100755 guile18/scripts/read-rfc822 create mode 100755 guile18/scripts/read-scheme-source create mode 100755 guile18/scripts/read-text-outline create mode 100755 guile18/scripts/scan-api create mode 100755 guile18/scripts/snarf-check-and-output-texi create mode 100755 guile18/scripts/snarf-guile-m4-docs create mode 100755 guile18/scripts/summarize-guile-TODO create mode 100755 guile18/scripts/use2dot create mode 100644 guile18/srfi/ChangeLog-2008 create mode 100644 guile18/srfi/Makefile.am create mode 100644 guile18/srfi/README create mode 100644 guile18/srfi/srfi-1.c create mode 100644 guile18/srfi/srfi-1.h create mode 100644 guile18/srfi/srfi-1.scm create mode 100644 guile18/srfi/srfi-10.scm create mode 100644 guile18/srfi/srfi-11.scm create mode 100644 guile18/srfi/srfi-13.c create mode 100644 guile18/srfi/srfi-13.h create mode 100644 guile18/srfi/srfi-13.scm create mode 100644 guile18/srfi/srfi-14.c create mode 100644 guile18/srfi/srfi-14.h create mode 100644 guile18/srfi/srfi-14.scm create mode 100644 guile18/srfi/srfi-16.scm create mode 100644 guile18/srfi/srfi-17.scm create mode 100644 guile18/srfi/srfi-19.scm create mode 100644 guile18/srfi/srfi-2.scm create mode 100644 guile18/srfi/srfi-26.scm create mode 100644 guile18/srfi/srfi-31.scm create mode 100644 guile18/srfi/srfi-34.scm create mode 100644 guile18/srfi/srfi-35.scm create mode 100644 guile18/srfi/srfi-37.scm create mode 100644 guile18/srfi/srfi-39.scm create mode 100644 guile18/srfi/srfi-4.c create mode 100644 guile18/srfi/srfi-4.h create mode 100644 guile18/srfi/srfi-4.scm create mode 100644 guile18/srfi/srfi-6.scm create mode 100644 guile18/srfi/srfi-60.c create mode 100644 guile18/srfi/srfi-60.h create mode 100644 guile18/srfi/srfi-60.scm create mode 100644 guile18/srfi/srfi-69.scm create mode 100644 guile18/srfi/srfi-8.scm create mode 100644 guile18/srfi/srfi-88.scm create mode 100644 guile18/srfi/srfi-9.scm create mode 100644 guile18/test-suite/ChangeLog-2008 create mode 100644 guile18/test-suite/Makefile.am create mode 100644 guile18/test-suite/README create mode 100755 guile18/test-suite/guile-test create mode 100644 guile18/test-suite/lib.scm create mode 100644 guile18/test-suite/standalone/.gitignore create mode 100644 guile18/test-suite/standalone/Makefile.am create mode 100644 guile18/test-suite/standalone/README create mode 100755 guile18/test-suite/standalone/test-asmobs create mode 100644 guile18/test-suite/standalone/test-asmobs-lib.c create mode 100755 guile18/test-suite/standalone/test-bad-identifiers create mode 100644 guile18/test-suite/standalone/test-conversion.c create mode 100644 guile18/test-suite/standalone/test-fast-slot-ref.in create mode 100644 guile18/test-suite/standalone/test-gh.c create mode 100644 guile18/test-suite/standalone/test-list.c create mode 100644 guile18/test-suite/standalone/test-num2integral.c create mode 100755 guile18/test-suite/standalone/test-require-extension create mode 100644 guile18/test-suite/standalone/test-round.c create mode 100644 guile18/test-suite/standalone/test-scm-c-read.c create mode 100644 guile18/test-suite/standalone/test-scm-take-locale-symbol.c create mode 100644 guile18/test-suite/standalone/test-scm-with-guile.c create mode 100755 guile18/test-suite/standalone/test-system-cmds create mode 100644 guile18/test-suite/standalone/test-unwind.c create mode 100755 guile18/test-suite/standalone/test-use-srfi.in create mode 100644 guile18/test-suite/standalone/test-with-guile-module.c create mode 100644 guile18/test-suite/tests/alist.test create mode 100644 guile18/test-suite/tests/and-let-star.test create mode 100644 guile18/test-suite/tests/arbiters.test create mode 100644 guile18/test-suite/tests/bit-operations.test create mode 100644 guile18/test-suite/tests/c-api.test create mode 100644 guile18/test-suite/tests/c-api/Makefile create mode 100644 guile18/test-suite/tests/c-api/README create mode 100644 guile18/test-suite/tests/c-api/strings.c create mode 100644 guile18/test-suite/tests/c-api/testlib.c create mode 100644 guile18/test-suite/tests/c-api/testlib.h create mode 100644 guile18/test-suite/tests/chars.test create mode 100644 guile18/test-suite/tests/common-list.test create mode 100644 guile18/test-suite/tests/continuations.test create mode 100644 guile18/test-suite/tests/dynamic-scope.test create mode 100644 guile18/test-suite/tests/elisp.test create mode 100644 guile18/test-suite/tests/environments.test create mode 100644 guile18/test-suite/tests/eval.test create mode 100644 guile18/test-suite/tests/exceptions.test create mode 100644 guile18/test-suite/tests/filesys.test create mode 100644 guile18/test-suite/tests/format.test create mode 100644 guile18/test-suite/tests/fractions.test create mode 100644 guile18/test-suite/tests/ftw.test create mode 100644 guile18/test-suite/tests/gc.test create mode 100644 guile18/test-suite/tests/getopt-long.test create mode 100644 guile18/test-suite/tests/goops.test create mode 100644 guile18/test-suite/tests/guardians.test create mode 100644 guile18/test-suite/tests/hash.test create mode 100644 guile18/test-suite/tests/hooks.test create mode 100644 guile18/test-suite/tests/import.test create mode 100644 guile18/test-suite/tests/interp.test create mode 100644 guile18/test-suite/tests/list.test create mode 100644 guile18/test-suite/tests/load.test create mode 100644 guile18/test-suite/tests/modules.test create mode 100644 guile18/test-suite/tests/multilingual.nottest create mode 100644 guile18/test-suite/tests/numbers.test create mode 100644 guile18/test-suite/tests/optargs.test create mode 100644 guile18/test-suite/tests/options.test create mode 100644 guile18/test-suite/tests/pairs.test create mode 100644 guile18/test-suite/tests/poe.test create mode 100644 guile18/test-suite/tests/popen.test create mode 100644 guile18/test-suite/tests/ports.test create mode 100644 guile18/test-suite/tests/posix.test create mode 100644 guile18/test-suite/tests/procprop.test create mode 100644 guile18/test-suite/tests/q.test create mode 100644 guile18/test-suite/tests/r4rs.test create mode 100644 guile18/test-suite/tests/r5rs_pitfall.test create mode 100644 guile18/test-suite/tests/ramap.test create mode 100644 guile18/test-suite/tests/reader.test create mode 100644 guile18/test-suite/tests/receive.test create mode 100644 guile18/test-suite/tests/regexp.test create mode 100644 guile18/test-suite/tests/signals.test create mode 100644 guile18/test-suite/tests/socket.test create mode 100644 guile18/test-suite/tests/sort.test create mode 100644 guile18/test-suite/tests/srcprop.test create mode 100644 guile18/test-suite/tests/srfi-1.test create mode 100644 guile18/test-suite/tests/srfi-10.test create mode 100644 guile18/test-suite/tests/srfi-11.test create mode 100644 guile18/test-suite/tests/srfi-13.test create mode 100644 guile18/test-suite/tests/srfi-14.test create mode 100644 guile18/test-suite/tests/srfi-17.test create mode 100644 guile18/test-suite/tests/srfi-19.test create mode 100644 guile18/test-suite/tests/srfi-26.test create mode 100644 guile18/test-suite/tests/srfi-31.test create mode 100644 guile18/test-suite/tests/srfi-34.test create mode 100644 guile18/test-suite/tests/srfi-35.test create mode 100644 guile18/test-suite/tests/srfi-37.test create mode 100644 guile18/test-suite/tests/srfi-39.test create mode 100644 guile18/test-suite/tests/srfi-4.test create mode 100644 guile18/test-suite/tests/srfi-6.test create mode 100644 guile18/test-suite/tests/srfi-60.test create mode 100644 guile18/test-suite/tests/srfi-69.test create mode 100644 guile18/test-suite/tests/srfi-88.test create mode 100644 guile18/test-suite/tests/srfi-9.test create mode 100644 guile18/test-suite/tests/streams.test create mode 100644 guile18/test-suite/tests/strings.test create mode 100644 guile18/test-suite/tests/structs.test create mode 100644 guile18/test-suite/tests/symbols.test create mode 100644 guile18/test-suite/tests/syncase.test create mode 100644 guile18/test-suite/tests/syntax.test create mode 100644 guile18/test-suite/tests/threads.test create mode 100644 guile18/test-suite/tests/time.test create mode 100644 guile18/test-suite/tests/unif.test create mode 100644 guile18/test-suite/tests/version.test create mode 100644 guile18/test-suite/tests/weaks.test create mode 100644 input/regression/font-features.ly create mode 100644 input/regression/grace-alternative.ly create mode 100644 input/regression/hairpin-shorten-pair-circled-tip.ly create mode 100644 input/regression/hairpin-shorten-pair.ly create mode 100644 input/regression/horizontal-bracket-broken-texted.ly create mode 100644 input/regression/horizontal-bracket-texted.ly create mode 100644 input/regression/measure-counter-spacing-pair.ly create mode 100644 input/regression/measure-counter-staff-padding.ly create mode 100644 input/regression/merge-rests-engraver.ly create mode 100644 input/regression/nullvoice-change.ly create mode 100644 input/regression/page-layout-extra-offset.ly create mode 100644 input/regression/voices-command.ly create mode 100644 lily/bracket.cc create mode 100644 lily/include/bracket.hh delete mode 100644 python/midi.c create mode 100644 python/midi.py create mode 100644 tex/texinfo-ja.tex create mode 100644 tex/txi-ja.tex diff --git a/.gitfilelist b/.gitfilelist index a22eb21ebd..0bfe9f2c19 100644 --- a/.gitfilelist +++ b/.gitfilelist @@ -15,8 +15,13 @@ Documentation/ca/learning/tutorial.itely Documentation/ca/learning/tweaks.itely Documentation/ca/macros.itexi Documentation/ca/notation.tely +Documentation/ca/notation/expressive.itely Documentation/ca/notation/notation.itely Documentation/ca/notation/pitches.itely +Documentation/ca/notation/repeats.itely +Documentation/ca/notation/rhythms.itely +Documentation/ca/notation/simultaneous.itely +Documentation/ca/notation/staff.itely Documentation/ca/search-box.ihtml Documentation/ca/translations.itexi Documentation/ca/usage.tely @@ -37,7 +42,7 @@ Documentation/contributor/build-notes.itexi Documentation/contributor/compiling.itexi Documentation/contributor/doc-translation-list.itexi Documentation/contributor/doc-work.itexi -Documentation/contributor/feta-font.itexi +Documentation/contributor/emmentaler-font.itexi Documentation/contributor/introduction.itexi Documentation/contributor/issues.itexi Documentation/contributor/lsr-work.itexi @@ -300,6 +305,7 @@ Documentation/es/essay/literature.itely Documentation/es/extending.tely Documentation/es/extending/programming-interface.itely Documentation/es/extending/scheme-tutorial.itely +Documentation/es/included/acknowledge.itexi Documentation/es/included/generating-output.itexi Documentation/es/included/helpus.itexi Documentation/es/learning.tely @@ -338,7 +344,6 @@ Documentation/es/notation/wind.itely Documentation/es/notation/world.itely Documentation/es/search-box.ihtml Documentation/es/texidocs/accordion-discant-symbols.texidoc -Documentation/es/texidocs/accordion-registers.texidoc Documentation/es/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc Documentation/es/texidocs/adding-ambitus-per-voice.texidoc Documentation/es/texidocs/adding-an-extra-staff-at-a-line-break.texidoc @@ -374,7 +379,6 @@ Documentation/es/texidocs/ambitus.texidoc Documentation/es/texidocs/analysis-brackets-above-the-staff.texidoc Documentation/es/texidocs/ancient-fonts.texidoc Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc -Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc Documentation/es/texidocs/ancient-time-signatures.texidoc Documentation/es/texidocs/anglican-psalm-template.texidoc Documentation/es/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc @@ -384,9 +388,7 @@ Documentation/es/texidocs/automatic-beam-subdivisions.texidoc Documentation/es/texidocs/automatically-change-durations.texidoc Documentation/es/texidocs/automatically-changing-the-stem-direction-of-the-middle-note-based-on-the-melody.texidoc Documentation/es/texidocs/avoiding-collisions-with-chord-fingerings.texidoc -Documentation/es/texidocs/bar-chords-notation-for-guitar--with-text-spanner.texidoc Documentation/es/texidocs/beam-endings-in-score-context.texidoc -Documentation/es/texidocs/beam-grouping-in-7-8-time.texidoc Documentation/es/texidocs/beams-across-line-breaks.texidoc Documentation/es/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc Documentation/es/texidocs/book-parts.texidoc @@ -395,7 +397,6 @@ Documentation/es/texidocs/broken-crescendo-hairpin.texidoc Documentation/es/texidocs/caesura-railtracks-with-fermata.texidoc Documentation/es/texidocs/center-text-below-hairpin-dynamics.texidoc Documentation/es/texidocs/centered-measure-numbers.texidoc -Documentation/es/texidocs/centering-markup-on-note-heads-automatically.texidoc Documentation/es/texidocs/changing--flageolet-mark-size.texidoc Documentation/es/texidocs/changing-a-single-notes-size-in-a-chord.texidoc Documentation/es/texidocs/changing-beam-knee-gap.texidoc @@ -478,7 +479,6 @@ Documentation/es/texidocs/embedding-native-postscript-in-a--markup-block.texidoc Documentation/es/texidocs/engravers-one-by-one.texidoc Documentation/es/texidocs/engraving-ties-manually.texidoc Documentation/es/texidocs/engraving-tremolos-with-floating-beams.texidoc -Documentation/es/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc Documentation/es/texidocs/extending-glissandi-across-repeats.texidoc Documentation/es/texidocs/faking-a-hammer-in-tablatures.texidoc Documentation/es/texidocs/fine-tuning-pedal-brackets.texidoc @@ -575,7 +575,6 @@ Documentation/es/texidocs/positioning-text-markups-inside-slurs.texidoc Documentation/es/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc Documentation/es/texidocs/preventing-final-mark-from-removing-final-tuplet.texidoc Documentation/es/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc -Documentation/es/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc Documentation/es/texidocs/printing-bar-numbers-at-regular-intervals.texidoc Documentation/es/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc Documentation/es/texidocs/printing-hairpins-in-various-styles.texidoc @@ -635,7 +634,6 @@ Documentation/es/texidocs/tick-bar-lines.texidoc Documentation/es/texidocs/time-signature-in-parentheses---method-3.texidoc Documentation/es/texidocs/time-signature-in-parentheses.texidoc Documentation/es/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc -Documentation/es/texidocs/transcription-of-ancient-music-with-incipit.texidoc Documentation/es/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc Documentation/es/texidocs/tweaking-clef-properties.texidoc Documentation/es/texidocs/tweaking-grace-layout-within-music.texidoc @@ -680,8 +678,6 @@ Documentation/es/web/community.itexi Documentation/es/web/download.itexi Documentation/es/web/introduction.itexi Documentation/es/web/manuals.itexi -Documentation/es/web/news-front.itexi -Documentation/es/web/news.itexi Documentation/essay.tely Documentation/essay/colorado.bib Documentation/essay/computer-notation.bib @@ -693,6 +689,7 @@ Documentation/extending/programming-interface.itely Documentation/extending/scheme-tutorial.itely Documentation/fdl.itexi Documentation/fr/GNUmakefile +Documentation/fr/changes.tely Documentation/fr/essay.tely Documentation/fr/essay/engraving.itely Documentation/fr/essay/literature.itely @@ -770,6 +767,7 @@ Documentation/fr/texidocs/alternative-breve-notes.texidoc Documentation/fr/texidocs/ambitus-with-multiple-voices.texidoc Documentation/fr/texidocs/ambitus.texidoc Documentation/fr/texidocs/analysis-brackets-above-the-staff.texidoc +Documentation/fr/texidocs/analysis-brackets-with-labels.texidoc Documentation/fr/texidocs/ancient-fonts.texidoc Documentation/fr/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc Documentation/fr/texidocs/ancient-time-signatures.texidoc @@ -1118,6 +1116,7 @@ Documentation/included/engraver-example.ily Documentation/included/font-table.ly Documentation/included/generating-output.itexi Documentation/included/gonville.ly +Documentation/included/gsoc.itexi Documentation/included/helpus.itexi Documentation/included/note-head-style.ly Documentation/included/percussion-chart.ly @@ -1170,6 +1169,8 @@ Documentation/it/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.tex Documentation/it/texidocs/alternative-bar-numbering.texidoc Documentation/it/texidocs/alternative-breve-notes.texidoc Documentation/it/texidocs/ambitus-with-multiple-voices.texidoc +Documentation/it/texidocs/analysis-brackets-above-the-staff.texidoc +Documentation/it/texidocs/analysis-brackets-with-labels.texidoc Documentation/it/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc Documentation/it/texidocs/anglican-psalm-template.texidoc Documentation/it/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc @@ -1229,6 +1230,7 @@ Documentation/it/texidocs/making-some-staff-lines-thicker-than-the-others.texido Documentation/it/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc Documentation/it/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc Documentation/it/texidocs/modifying-the-ottava-spanner-slope.texidoc +Documentation/it/texidocs/moving-the-ends-of-hairpins.texidoc Documentation/it/texidocs/multi-measure-rest-markup.texidoc Documentation/it/texidocs/nesting-staves.texidoc Documentation/it/texidocs/non-default-tuplet-numbers.texidoc @@ -1308,6 +1310,7 @@ Documentation/it/web/download.itexi Documentation/it/web/introduction.itexi Documentation/it/web/manuals.itexi Documentation/it/web/news-headlines.itexi +Documentation/it/web/news-new.itexi Documentation/ja/GNUmakefile Documentation/ja/dedication.itely Documentation/ja/included/generating-output.itexi @@ -1343,6 +1346,7 @@ Documentation/ja/notation/unfretted-strings.itely Documentation/ja/notation/vocal.itely Documentation/ja/notation/wind.itely Documentation/ja/notation/world.itely +Documentation/ja/search-box.ihtml Documentation/ja/texidocs/piano-template-simple.texidoc Documentation/ja/texidocs/piano-template-with-centered-lyrics.texidoc Documentation/ja/texidocs/piano-template-with-melody-and-lyrics.texidoc @@ -1797,6 +1801,7 @@ Documentation/snippets/alternative-breve-notes.ly Documentation/snippets/ambitus-with-multiple-voices.ly Documentation/snippets/ambitus.ly Documentation/snippets/analysis-brackets-above-the-staff.ly +Documentation/snippets/analysis-brackets-with-labels.ly Documentation/snippets/ancient-fonts.ly Documentation/snippets/ancient-headword.ly Documentation/snippets/ancient-notation-intro.itely @@ -2009,27 +2014,46 @@ Documentation/snippets/modifying-the-ottava-spanner-slope.ly Documentation/snippets/modifying-tuplet-bracket-length.ly Documentation/snippets/moving-dotted-notes-in-polyphony.ly Documentation/snippets/moving-slur-positions-vertically.ly +Documentation/snippets/moving-the-ends-of-hairpins.ly Documentation/snippets/multi-measure-rest-markup.ly Documentation/snippets/nesting-staves.ly Documentation/snippets/new/README +Documentation/snippets/new/adding-drum-parts.ly +Documentation/snippets/new/aligning-and-centering-instrument-names.ly +Documentation/snippets/new/analysis-brackets-with-labels.ly Documentation/snippets/new/changing-form-of-multi-measure-rests.ly Documentation/snippets/new/changing-properties-for-individual-grobs.ly +Documentation/snippets/new/clip-systems.ly +Documentation/snippets/new/combining-two-parts-on-the-same-staff.ly Documentation/snippets/new/creating-a-sequence-of-notes-on-various-pitches.ly Documentation/snippets/new/defining-an-engraver-in-scheme--ambitus-engraver.ly +Documentation/snippets/new/figured-bass-headword.ly Documentation/snippets/new/flat-flags-and-beam-nibs.ly Documentation/snippets/new/flute-slap-notation.ly Documentation/snippets/new/forcing-measure-width-to-adapt-to-metronomemarks-width.ly +Documentation/snippets/new/heavily-customized-polymetric-time-signatures.ly +Documentation/snippets/new/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly Documentation/snippets/new/incipit.ly +Documentation/snippets/new/jazz-combo-template.ly Documentation/snippets/new/making-an-object-invisible-with-the-transparent-property.ly Documentation/snippets/new/modifying-tuplet-bracket-length.ly +Documentation/snippets/new/moving-the-ends-of-hairpins.ly Documentation/snippets/new/multi-measure-rest-markup.ly Documentation/snippets/new/non-traditional-key-signatures.ly +Documentation/snippets/new/orchestra,-choir-and-piano-template.ly +Documentation/snippets/new/piano-template-simple.ly Documentation/snippets/new/positioning-multi-measure-rests.ly +Documentation/snippets/new/quoting-another-voice-with-transposition.ly +Documentation/snippets/new/quoting-another-voice.ly Documentation/snippets/new/replacing-default-midi-instrument-equalization.ly Documentation/snippets/new/rest-styles.ly Documentation/snippets/new/single-staff-template-with-notes-and-chords.ly Documentation/snippets/new/staff-headword.ly +Documentation/snippets/new/string-quartet-template-simple.ly +Documentation/snippets/new/string-quartet-template-with-separate-parts.ly Documentation/snippets/new/subdividing-beams.ly +Documentation/snippets/new/three-sided-box.ly +Documentation/snippets/new/transposing-pitches-with-minimum-accidentals-smart-transpose.ly Documentation/snippets/new/unfretted-headword.ly Documentation/snippets/new/user-defined-time-signatures.ly Documentation/snippets/new/using-marklines-in-a-frenched-score.ly @@ -2186,6 +2210,7 @@ Documentation/snippets/using-autochange-with-more-than-one-voice.ly Documentation/snippets/using-double-slurs-for-legato-chords.ly Documentation/snippets/using-grace-note-slashes-with-normal-heads.ly Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly +Documentation/snippets/using-marklines-in-a-frenched-score.ly Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly Documentation/snippets/using-tags-to-produce-mensural-and-modern-music-from-the-same-source.ly Documentation/snippets/using-the--tweak-command-to-tweak-individual-grobs.ly @@ -2236,9 +2261,9 @@ Documentation/web/community.itexi 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/news-new.itexi +Documentation/web/news-old.itexi Documentation/web/others-did.bib Documentation/web/server/favicon.ico Documentation/web/server/lilypond.org.htaccess @@ -2710,6 +2735,7 @@ input/regression/follow-voice-break.ly input/regression/follow-voice-consecutive.ly input/regression/font-bogus-ligature.ly input/regression/font-family-override.ly +input/regression/font-features.ly input/regression/font-kern.ly input/regression/font-name-font-size.ly input/regression/font-name.ly @@ -2752,6 +2778,7 @@ input/regression/glissando-index.ly input/regression/glissando-no-break.ly input/regression/glissando-skip.ly input/regression/glissando.ly +input/regression/grace-alternative.ly input/regression/grace-auto-beam-engraver.ly input/regression/grace-auto-beam.ly input/regression/grace-bar-line.ly @@ -2790,6 +2817,8 @@ input/regression/hairpin-dashed.ly input/regression/hairpin-ending.ly input/regression/hairpin-key-signature.ly input/regression/hairpin-neighboring-span-dynamics.ly +input/regression/hairpin-shorten-pair-circled-tip.ly +input/regression/hairpin-shorten-pair.ly input/regression/hairpin-span-bar.ly input/regression/hairpin-to-barline-mark.ly input/regression/hairpin-to-barline.ly @@ -2814,6 +2843,8 @@ input/regression/header-score-multiple.ly input/regression/header-score-reordered.ly input/regression/header-toplevel-multiple.ly input/regression/horizontal-bracket-break.ly +input/regression/horizontal-bracket-broken-texted.ly +input/regression/horizontal-bracket-texted.ly input/regression/horizontal-bracket-tweak.ly input/regression/horizontal-bracket.ly input/regression/id.ly @@ -3033,10 +3064,13 @@ input/regression/markup-syntax.ly input/regression/markup-user.ly input/regression/markup-word-wrap.ly input/regression/measure-counter-broken.ly +input/regression/measure-counter-spacing-pair.ly +input/regression/measure-counter-staff-padding.ly input/regression/measure-counter.ly input/regression/measure-grouping.ly input/regression/mensural-ligatures.ly input/regression/mensural.ly +input/regression/merge-rests-engraver.ly input/regression/metronome-mark-broken-bound.ly input/regression/metronome-mark-formatter.ly input/regression/metronome-mark-loose-column.ly @@ -3314,6 +3348,7 @@ input/regression/note-line.ly input/regression/note-names-context.ly input/regression/note-names.ly input/regression/notehead-height.ly +input/regression/nullvoice-change.ly input/regression/number-staff-lines.ly input/regression/offsets.ly input/regression/one-line-auto-height-breaking.ly @@ -3358,6 +3393,7 @@ input/regression/page-breaks.ly input/regression/page-headers-and-footers.ly input/regression/page-label-loose-column.ly input/regression/page-label.ly +input/regression/page-layout-extra-offset.ly input/regression/page-layout-manual-position.ly input/regression/page-layout.ly input/regression/page-links-nolabel.ly @@ -3874,6 +3910,7 @@ input/regression/unset-once.ly input/regression/utf-8-mixed-text.ly input/regression/utf-8.ly input/regression/voice-follower.ly +input/regression/voices-command.ly input/regression/volta-bracket-add-volta-hook.ly input/regression/volta-bracket-vertical-skylines.ly input/regression/volta-broken-left-edge.ly @@ -3928,6 +3965,7 @@ lily/bezier.cc lily/book-scheme.cc lily/book.cc lily/box.cc +lily/bracket.cc lily/break-align-engraver.cc lily/break-alignment-interface.cc lily/break-substitution.cc @@ -4065,6 +4103,7 @@ lily/include/beaming-pattern.hh lily/include/bezier.hh lily/include/book.hh lily/include/box.hh +lily/include/bracket.hh lily/include/break-align-interface.hh lily/include/breathing-sign.hh lily/include/callback.hh @@ -4809,7 +4848,7 @@ python/convertrules.py python/fontextract.py python/langdefs.py python/lilylib.py -python/midi.c +python/midi.py python/musicexp.py python/musicxml.py python/musicxml2ly_conversion.py @@ -5076,6 +5115,7 @@ stepmake/stepmake/toplevel-targets.make stepmake/stepmake/toplevel-vars.make tex/GNUmakefile tex/lilypond-tex-metrics.tex +tex/texinfo-ja.tex tex/texinfo.tex tex/txi-ca.tex tex/txi-de.tex @@ -5084,6 +5124,7 @@ tex/txi-es.tex tex/txi-fr.tex tex/txi-hu.tex tex/txi-it.tex +tex/txi-ja.tex tex/txi-nl.tex vim/GNUmakefile vim/filetype.vim diff --git a/AUTHORS.txt b/AUTHORS.txt index fb8dbfd3e1..303d5d60c0 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -83,22 +83,23 @@ Current Contributors Programming ........... -Guido Aulisi, Federico Bruni, Nathan Chou, Dan Eble, John Gourlay, Marc -Hohl, Masamichi Hosoda, Mark Knoop, Tobias Kretschmar, James Lowe, -Thomas Morley, Paul Morris, David Nalesnik, Keith OHara, Benkő Pál, Knut -Petersen, Julien Rioux, Devon Schudy, Heikki Tauriainen +Guido Aulisi, Joe Austin, Federico Bruni, Nathan Chou, Dan Eble, John +Gourlay, Marc Hohl, Masamichi Hosoda, Mark Knoop, Tobias Kretschmar, +Vincent Le Ligeour, James Lowe, Thomas Morley, Paul Morris, David +Nalesnik, Keith OHara, Benkő Pál, Knut Petersen, Julien Rioux, Ben +Rudiak-Gould, Devon Schudy, Heikki Tauriainen Font .... -Masamichi Hosoda, Abraham Lee +Jay Anderson, Masamichi Hosoda, Abraham Lee Documentation ............. -Frédéric Bron, Federico Bruni, Colin Campbell, Urs Liska, James Lowe, -Thomas Morley, Jean-Charles Malahieude, Patrick Schmidt, Pierre -Perol-Schneider, Greg Swinford, Martin Tarenskeen +Simon Albrecht, Frédéric Bron, Federico Bruni, Colin Campbell, Urs +Liska, James Lowe, Thomas Morley, Jean-Charles Malahieude, Patrick +Schmidt, Pierre Perol-Schneider, Greg Swinford, Martin Tarenskeen Bug squad ......... @@ -119,7 +120,8 @@ Translation Federico Bruni, Luca Rossetto Casel, Felipe Castro, Pavel Fric, Walter Garcia-Fontes, Tommaso Gordini, Erika Griechisch, Denes Harmath, -Jean-Charles Malahieude, Till Paala, Yoshiki Sawada, Paco Tomillo +Masamichi Hosoda, Jean-Charles Malahieude, Till Paala, Yoshiki Sawada, +Tomohiro Tatejima, Paco Tomillo Past Contributors ----------------- diff --git a/Documentation/ca/learning.tely b/Documentation/ca/learning.tely index d787c4ce8f..5094f34663 100644 --- a/Documentation/ca/learning.tely +++ b/Documentation/ca/learning.tely @@ -7,6 +7,10 @@ Guide, node Updating translation committishes.. @end ignore +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + @setfilename lilypond-learning.info @settitle Manual d'aprenentatge del GNU LilyPond @documentencoding UTF-8 diff --git a/Documentation/ca/learning/common-notation.itely b/Documentation/ca/learning/common-notation.itely index 877efd1ba8..9b7fb69bbb 100644 --- a/Documentation/ca/learning/common-notation.itely +++ b/Documentation/ca/learning/common-notation.itely @@ -23,6 +23,8 @@ Tutorial guidelines: (different from policy.txt!) @end ignore +@c Translators: Walter Garcia-Fontes +@c Translation checkers: @node Notació corrent @chapter Notació corrent @@ -34,7 +36,7 @@ està al @ref{Tutorial}. @menu * Notació en un sol pentagrama:: -* Diverses notes a la vegada:: +* Diverses notes a l'hora:: * Cançons:: * Retocs finals:: @end menu @@ -76,7 +78,7 @@ música, per la qual cosa no s'han d'afegir de forma manual. Altres tipus de barres de compàs s'afegeixen usant @code{\bar}, per exemple @code{\bar "||"} per a una doble barra, o @code{\bar "|."} per a la doble barra final. Per veure una llista completa de les -línies divisòries, consulteu @rusernamed{Bar lines,Línies divisòries}. +línies divisòries, consulteu @ruser{Barres de compàs}. @lilypond[verbatim,quote] \relative { g'1 e1 \bar "||" c2. c'4 \bar "|." } @@ -102,7 +104,7 @@ g1 | e1 | c2. c'4 | g4 c g e | c4 r r2 | @seealso Referència de la notació: -@rusernamed{Bar and bar number checks, Comprovacions de compàs i de número de compàs}. +@ruser{Comprovació de compàs i de número de compàs}. @node Alteracions accidentals i armadures @subsection Alteracions accidentals i armadures @@ -369,9 +371,9 @@ altres. @seealso Referència de la notació: -@rusernamed{Ties,Lligadures d'unió}, -@rusernamed{Slurs,Lligadures d'expressió}, -@rusernamed{Phrasing slurs,Lligadures de fraseig}. +@ruser{Lligadures d'unió}, +@ruser{Lligadures d'expressió}, +@ruser{Lligadures de fraseig}. @node Articulacions i matisos dinàmics @subsection Articulacions i matisos dinàmics @@ -565,8 +567,8 @@ cop. @seealso Referència de la notació: -@rusernamed{Automatic beams,Barrat automàtic}, -@rusernamed{Manual beams,Barrat manual}. +@ruser{Barres automàtiques}, +@ruser{Barres manuals}. @node Instruccions rítmiques avançades @subsection Instruccions rítmiques avançades @@ -664,12 +666,12 @@ expressió musical amb la paraula clau @code{\appoggiatura} o @seealso Referència de la notació: -@rusernamed{Grace notes,Notes d'adorn}, -@rusernamed{Tuplets,Grups especials}, -@rusernamed{Upbeats,Anacrusis}. +@ruser{Notes d'adorn}, +@ruser{Grups especials}, +@ruser{Anacrusis}. -@node Diverses notes a la vegada -@section Diverses notes a la vegada +@node Diverses notes a l'hora +@section Diverses notes a l'hora @translationof Multiple notes at once Aquesta secció és una introducció a les notes simultànies: @@ -713,7 +715,7 @@ expressió musical: a'4 @end lilypond -En tancar un grup de notes dins de claudàtors creem una +En tancar un grup de notes dins de claus creem una @emph{expressió musical composta}. Aquí hem creat una expressió musical composta amb dues notes: @@ -722,7 +724,7 @@ musical composta amb dues notes: @end lilypond Si col·loquem un grup d'expressions musicals (per exemple: notes) -dins de claudàtors, això significa que es troben en seqüència (és +dins de claus, això significa que es troben en seqüència (és a dir, cada una segueix a l'anterior). El resultat és una altra expressió musical: @@ -917,7 +919,7 @@ Glossari musical: @rglos{system}. La música per a piano es composa tipogràficament en forma de dos -pentagrames units mitjançant un @notation{claudàtor}. L'aspecte +pentagrames units mitjançant una @notation{clau}. L'aspecte imprès d'aquest sistema de pentagrames se sembla a l'exemple polifònic que apareix a @ref{Diversos pentagrames}, però en aquest cas l'expressió completa es col·loca dins d'un @code{PianoStaff}: @@ -942,13 +944,13 @@ Altres grups de pentagrames es declaren mitjançant @code{\new GrandStaff}, que és apropiat per a partitures orquestrals, i @code{\new ChoirStaff}, que és apropiat per a partitures vocals. Cadascú d'aquests grups de pautes forma un tipus de -context diferent, que produeix el claudàtor a l'esquerra i que +context diferent, que produeix la clau a l'esquerra i que també controla l'abast de les línies divisòries. @seealso Referència de la notació: @rusernamed{Keyboard and other multi-staff instruments,Teclat i altres instruments de pentagrama múltiple}, -@rusernamed{Displaying staves,Visualització dels pentagrames}. +@ruser{Visualització dels pentagrames}. @node Combinar notes per formar acords @subsection Combinar notes per formar acords @@ -1250,7 +1252,7 @@ Alguns textos (especialment els que estan en italià o català) requereixen el contrari: col·locar més d'una síl·laba a una única nota. Això s'aconsegueix enllaçant les síl·labes entre sí mitjançant un guió baix simple @code{_} (sense cap espai), o bé -envoltant-les entre claudàtors. Aquí apareix un exemple procedent +envoltant-les entre claus. Aquí apareix un exemple procedent del @notation{Barber de Sevilla} de Rossini, on la síl·laba @notation{al} es canta sobre la mateixa nota que la síl·laba @notation{go} de la paraula @q{Largo} a l'ària de Fígaro diff --git a/Documentation/ca/learning/fundamental.itely b/Documentation/ca/learning/fundamental.itely index 738b362888..56733a63e6 100644 --- a/Documentation/ca/learning/fundamental.itely +++ b/Documentation/ca/learning/fundamental.itely @@ -10,6 +10,10 @@ @c \version "2.19.22" +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + @node Conceptes fonamentals @chapter Conceptes fonamentals @translationof Fundamental concepts @@ -45,7 +49,7 @@ veure una descripció més completa del format d'entrada, consulteu * Introducció a l'estructura dels fitxers del LilyPond:: * La partitura és una (única) expressió musical composta:: * Niuat d'expressions musicals:: -* Quant a la impossibilitat de niuar claudàtors i lligadures:: +* Quant a la impossibilitat de niuar claus i lligadures:: @end menu @node Introducció a l'estructura dels fitxers del LilyPond @@ -191,7 +195,7 @@ i @code{\midi @{ @}}. Si apareixen tal i com es mostren aquí, fan que el LilyPond produeixi una sortida impresa i una sortida MIDI, respectivament. Es descriuen amb tot detall al manual de Referència de la notació, a @rusernamed{Score layout,Disposició de la partitura} -i a @ruser{Creating MIDI output,Creació de sortida MIDI}. +i a @rusernamed{Creating MIDI output,Creació de sortida MIDI}. @cindex partitures, diverses @cindex book, bloc implícit @@ -262,7 +266,7 @@ limitacions exactes que afecten els noms de variable es detallen a @seealso Per veure una definició completa del format del codi d'entrada, -consulteu @ruser{File structure} +consulteu @rusernamed{File structure,Estructura dels fitxers} @node La partitura és una (única) expressió musical composta @subsection La partitura és una (única) expressió musical composta @@ -300,7 +304,7 @@ petites peces (començàvem amb notes, després acords, etc.). Ara partirem d'una gran expressió musical i recorrerem el camí invers cap avall. Per simplicitat, farem sols un cantant i un piano. No necessitem un @code{StaffGroup} (que simplement agrupa un cert -nombre de pautes amb un claudàtor a l'esquerra) per a aquest +nombre de pautes amb una clau a l'esquerra) per a aquest conjunt, i aleshores el retirem. Tot i així, @emph{sí} necessitem pentagrames per a un cantant i un piano. @@ -361,7 +365,7 @@ superior (mà dreta) i un pentagrama inferior (mà esquerra), tot i que el pentagrama inferior encara no té la clau de Fa. En aquest moment podríem començar a ficar les notes. Dins dels -claudàtors que segueixen a @code{\new Voice = "vocal"}, podríem +claus que segueixen a @code{\new Voice = "vocal"}, podríem començar escrivint @example @@ -380,7 +384,7 @@ s'interpreta com a lletra, el precedim amb @code{\lyricmode}. Igual que @code{\addlyrics}, això activa el mode d'entrada de lletra. Sense això, el LilyPond intentaria interpretar el contingut com a notes, cosa que generaria errors (Hi ha d'altres -modes, vegeu @ruser{Input modes}). +modes, vegeu @rusernamed{Input modes,Modes d'entrada}). Així doncs, tot escrivint algunes notes, i una clau de Fa per a la mà esquerra, ara tenim un fragment musical de debò: @@ -489,21 +493,21 @@ pentagrama nou s'ha de col·locar per sobre del pentagrama anomenat Els fragments d'ossia s'escriuen sovint sense clau i sense indicació de compàs, i generalment amb una lletra més petita. Per fer això caldrien més ordres que encara no s'han vist. Vegeu -@ref{Mida dels objectes} i @rusernamed{Ossia staves,Pentagrames d'Ossia}. +@ref{Mida dels objectes} i @ruser{Pentagrames d'Ossia}. -@node Quant a la impossibilitat de niuar claudàtors i lligadures -@subsection Quant a la impossibilitat de niuar claudàtors i lligadures +@node Quant a la impossibilitat de niuar claus i lligadures +@subsection Quant a la impossibilitat de niuar claus i lligadures @translationof On the un-nestedness of brackets and ties -@cindex claudàtors i parèntesis, niuat de -@cindex claudàtors i parèntesis, tipus de -@cindex claudàtors i parèntesis, tancar en front a marcar +@cindex claus i parèntesis, niuat de +@cindex claus i parèntesis, tipus de +@cindex claus i parèntesis, tancar en front a marcar A l'escriptura del fitxer d'entrada del LilyPond hem pogut veure -alguns tipus de parèntesis, claudàtors i angles de diversos +alguns tipus de parèntesis, claus i claudàtors de diversos tipus. Obeeixen a diverses regles que el principi poden semblar confuses. Abans d'explicar aquestes regles, fem un repàs a les -diverses classes de claudàtors, claus i parèntesis. +diverses classes de parèntesis, claus i claudàtors. @c attempt to force this onto a new page @need 50 @@ -519,19 +523,19 @@ diverses classes de claudàtors, claus i parèntesis. @item @code{( @dots{} )} @tab Marca el començament i el final d'una lligadura d'expressió @item @code{\( @dots{} \)} - @tab Marca el començament d'una lligadura de frasseig + @tab Marca el començament d'una lligadura de fraseig @item @code{[ @dots{} ]} @tab Marca el començament i el final d'un barrat manual @end multitable A les anteriors hem d'afegir d'altres construccions que generen -línies entre o a través de ls notes: les lligadures d'unió +línies entre o a través de les notes: les lligadures d'unió (marcades amb un accent corb, @code{~}), els grups especials que s'escriuen amb @code{\tuplet x/y @{ @dots{} @}}, i les notes d'adorn, que s'escriuen amb @code{\grace @{ @dots{} @}}. Fora del LilyPond, l'ús convencional dels parèntesis i d'altres -claudàtors requereix que els diversos tipus es trobin niuats +claus requereix que els diversos tipus es trobin niuats correctament, com a: @code{<< [ @{ ( @dots{} ) @} ] >>}, de manera que els parèntesis que es tanquen han de trobar-se a l'ordre exactament oposat als dels parèntesis que s'obren. Això @@ -554,7 +558,7 @@ possible): \relative { g'8\( a b[ c b\) a] g4 } @end lilypond -En general, els diversos tipus de claudàtors, i els que es fan +En general, els diversos tipus de parèntesis, i els que es fan servir per grups especials, lligadures d'unió i notes d'adorn, es poden barrejar amb total llibertat. Aquest exemple mostra una barra que s'estén cap a l'interior d'un grup de valoració especial @@ -701,8 +705,8 @@ dividir-lo en dues veus separades de la següent manera: @end lilypond @cindex veus, nomenament de -@cindex veus que creuen claudàtors -@cindex lligadures que creuen claudàtors +@cindex veus que creuen claus +@cindex lligadures que creuen claus Aquest exemple té sols dues veus, però la mateixa construcció es pot usar per codificar tres o més veus mitjançant l'addició de més @@ -970,7 +974,7 @@ propietat @code{force-hshift} a @seealso Referència de la notació: -@ruser{Multiple voices,Veus mútiples}. +@ruser{Veus múltiples}. @node Veus explícites @@ -1216,7 +1220,7 @@ Manual d'aprenentatge: @ref{Moviment d'objectes}. Referència de la notació: -@rusernamed{Multiple voices,Veus múltiples}. +@ruser{Veus múltiples}. @node Veus i música vocal @@ -1567,10 +1571,10 @@ pràctica, heus aquí un exemple anotat de música real: } % fi de l'expressió única de música composta @end lilypond -(Observeu com totes les instruccions que obren un bloc amb un -claudàtor corb, @code{@{}, o amb angles dobles, @code{<<}, estan +(Observeu com totes les instruccions que obren un bloc amb una +clau, @code{@{}, o amb angles dobles, @code{<<}, estan sagnades (tenen un marge addicional) amb dos espais addicionals, -i el claudàtor de tancament corresponent té un marge exactament +i la clau de tancament corresponent té un marge exactament igual. Tot i no ser necessari, observar aquesta pràctica reduirà considerablement el nombre d'errors de @q{parèntesis descompensats}, i es recomana especialment. Permet apreciar d'una @@ -1578,7 +1582,7 @@ sola ullada l'estructura de la música, i qualsevol parèntesis descompensat apareixerà molt clarament. Observeu també com el pentagrama de la mà esquerra es crea usant dobles angles perquè requereix dues veus, mentre que el pentagrama de la mà dreta es -crea amb una expressió musical única tancada entre claudàtors +crea amb una expressió musical única tancada entre claus perquè sols requereix una veu.) @cindex contextos, nomenament @@ -2871,12 +2875,12 @@ No és necessari utilitzar la construcció simultània @code{<< òrgan de pedal, atès que contenen una única expressió, però no fa mal, i és un bon costum utilitzar sempre dobles angles després de @code{\new Staff} quan hi diverses veus. El contrari és cert per -a les veus: normalment han d'anar seguides de claudàtors @code{@{ +a les veus: normalment han d'anar seguides de claus @code{@{ @dots{} @}} en cas que tinguem música codificada com a variables diferents que s'han de situar consecutivament. Afegim aquesta estructura al bloc de partitura, i ajustem el -sagnat dels marges. També escrivim els claudàtors +sagnat dels marges. També escrivim les claus corresponents, ens assegurem que les pliques i lligadures d'unió i expressió en cada una de les veus del pentagrama superior apunten en la direcció adequada amb @code{\voiceOne} i diff --git a/Documentation/ca/learning/templates.itely b/Documentation/ca/learning/templates.itely index e6c0e56542..c4a1796376 100644 --- a/Documentation/ca/learning/templates.itely +++ b/Documentation/ca/learning/templates.itely @@ -10,6 +10,10 @@ @c \version "2.16.0" +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + @node Plantilles @appendix Plantilles @translationof Templates diff --git a/Documentation/ca/learning/tutorial.itely b/Documentation/ca/learning/tutorial.itely index bfa1adeef0..a6ca813977 100644 --- a/Documentation/ca/learning/tutorial.itely +++ b/Documentation/ca/learning/tutorial.itely @@ -12,11 +12,15 @@ @c \version "2.19.21" +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + @node Tutorial @chapter Tutorial @translationof Tutorial -Aquest capítol ofereix una introducció bàsica al treball amb el LilyPond. +Aquest capítol ofereix una introducció bàsica al treball amb el Lilypond. @menu * Compilació d'un fitxer:: @@ -78,16 +82,16 @@ El resultat té aquest aspecte: @end lilypond @warning{la música i la lletra escrita al codi d'entrada del -LilyPond ha d'anar sempre entre @w{@strong{@{ claudàtors @}}}. -Els claudàtors haurien també d'estar rodejats per espais a no ser +Lilypond ha d'anar sempre entre @w{@strong{@{ claus @}}}. +Les claus haurien també d'estar rodejades d'espais a no ser que es trobin al principi o al final d'una línia, per evitar -ambigüitats. És possible que s'ometen en alguns exemples del +ambigüitats. És possible que s'ometin en alguns exemples del manual actual, però eviteu d'ometre-les a la vostra pròpia música! Per veure més informació sobre la presentació dels exemples del manual, consulteu @ref{Com llegir els manuals}.} -A més, l'entrada del LilyPond és @strong{sensible a les majúscules}. +A més, l'entrada del Lilypond és @strong{sensible a les majúscules}. @w{@samp{ @{ c d e @}}} és una entrada vàlida; @w{@samp{@{ C D E @}}} produeix un missatge d'error. @@ -510,17 +514,17 @@ a l'hora: @seealso Referència de la notació: -@ruser{Escriptura de les notes}, -@rusernamed{Writing rhythms,Escriptura dels ritmes}, -@rusernamed{Writing rests,Escriptura de silencis}, -@rusernamed{Time signature,Indicació de compàs}, +@ruser{Escriptura de notes}, +@ruser{Escriptura de les duracions (valors rítmics)}, +@ruser{Escriptura dels silencis}, +@ruser{Indicació de compàs}, @ruser{Clau}. @node Treball sobre els fitxers d'entrada @subsection Treball sobre els fitxers d'entrada @translationof Working on input files -@cindex claudàtors +@cindex claus @cindex comentaris @cindex línia, comentari de @cindex comentari de línia @@ -541,7 +545,7 @@ Referència de la notació: Els fitxers d'entrada del LilyPond són com els fitxers font de molts llenguatges de programació corrents. Contenen un enunciat de versió, són sensibles a les majúscules i generalment els espais -s'ignoren. Les expressions es formen amb claudàtors +s'ignoren. Les expressions es formen amb claus @w{@code{@{ @}}} i els comentaris es denoten per un signe de percentatge (@code{%}) o per @w{@code{%@{ @dots{} %@}}}@tie{}. @@ -606,19 +610,19 @@ elements sintàctics els uns dels altres. En altres paraules, els espais es poden sempre @emph{afegir}, però no sempre @emph{eliminar}. Degut a què la manca d'espais pot donar lloc a errors estranys, recomanem inserir espais sempre abans i després de qualsevol -element sintàctic, per exemple, abans i després dels claudàtors. +element sintàctic, per exemple, abans i després de les claus. @item @strong{Expressions:} Tot fragment de codi d'entrada per al -LilyPond ha de portar @strong{@{@tie{}claudàtors@tie{}@}} abans i -després de l'entrada. Aquests claudàtors li diuen al LilyPond que +LilyPond ha de portar @strong{@{@tie{}claus@tie{}@}} abans i +després de l'entrada. Aquestes claus li diuen al LilyPond que l'entrada és una expressió musical unitària, igual que els -parèntesis @samp{()} de les matemàtiques. Els claudàtors han -d'anar rodejats d'un espai a no ser que es trobin al començament o +parèntesis @samp{()} de les matemàtiques. Les claus han +d'anar rodejades d'un espai a no ser que es trobin al començament o al final d'una línia, per evitar qualsevol ambigüitat. Una instrucció del LilyPond seguida d'una expressió simple entre -claudàtors (com per exemple +claus (com per exemple @q{@w{@code{@bs{}relative c' @{@dots{} @}}}}) també és una expressió musical unitària. @@ -732,11 +736,11 @@ versió en línia. @cindex fitxers, consells per construir Com ja hem vist a @ref{Treball sobre els fitxers d'entrada} -codi d'entrada del LilyPond ha d'estar rodejat de claudàtors +codi d'entrada del LilyPond ha d'estar rodejat de claus @code{@{ @}} o de @q{@w{@code{@bs{}relative c'' @{ @dots{} @}}}}. Durant la resta -del manual actual, la major part dels exemple ometran els -claudàtors. Per a reproduir els exemples, haureu de copiar i +del manual actual, la major part dels exemple ometran les +claus. Per a reproduir els exemples, haureu de copiar i enganxar l'entrada que es mostra, però @strong{haureu} d'escriure el @q{@w{@code{@bs{}relative c'' @{ @dots{} @}}}}, de la forma següent: @@ -746,7 +750,7 @@ el @q{@w{@code{@bs{}relative c'' @{ @dots{} @}}}}, de la forma següent: @} @end example -Perquè ometre els claudàtors? Gairebé tots els exemples del manual +Perquè ometre les claus? Gairebé tots els exemples del manual actual es poden inserir al mig d'un fragment més gran de música. Per a aquests exemple no té cap sentit afegir @q{@w{@code{@bs{}relative c'' @{ @dots{} @}}}} diff --git a/Documentation/ca/learning/tweaks.itely b/Documentation/ca/learning/tweaks.itely index 450f030b70..c3f89b8b1d 100644 --- a/Documentation/ca/learning/tweaks.itely +++ b/Documentation/ca/learning/tweaks.itely @@ -10,6 +10,10 @@ @c \version "2.19.22" +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + @node Ajustament de la sortida @chapter Ajustament de la sortida @translationof Tweaking output @@ -272,7 +276,7 @@ poden tenir a vegades una representació vàlida al mode de música del LilyPond, aquest manual utilitza sempre @samp{#} per a l'escriptura, per coherència. Per obtenir més informació sobre el mode de l'Scheme, consulteu -@rextendnamed{LilyPond Scheme-Syntax,Sintaxi de l'Scheme del LilyPond}. +@rextendnamed{LilyPond Scheme syntax,Sintaxi de l'Scheme del LilyPond}. @code{\override} és l'ordre d'ús més comú dins de l'ajustament, i durant la major part de la resta d'aquest capítol presentarem @@ -508,23 +512,23 @@ Aquesta forma extensa de l'ordre @code{\tweak} es pot descriure com @cindex grups especials niuats @cindex tresets niuats -@cindex claudàtor de grup especial -@cindex claudàtor de treset -@cindex grup especial, claudàtor de -@cindex treset, claudàtor de +@cindex clau de grup especial +@cindex clau de treset +@cindex grup especial, claur de +@cindex treset, claur de @funindex TupletBracket L'ordre @code{\tweak} també s'ha d'usar per canviar l'aparença d'un sol d'un conjunt de grups especials niuats que comencin al -mateix instant musical. A l'exemple següent, el claudàtor de -treset llarg i el primer dels tres claudàtors curts comencen al +mateix instant musical. A l'exemple següent, la clau de +treset llarg i el primer de les tres claus curtes comencen al mateix moment musical, i per això qualsevol ordre @code{\override} s'aplicaria als dos. A l'exemple s'usa @code{\tweak} per distingir entre ells. La primera ordre @code{\tweak} especifica -que el claudàtor del treset llarg s'ha de col·locar per sobre de +que la clau del treset llarg s'ha de col·locar per sobre de les notes i el segon especifica que el nombre del treset s'ha -d'imprimir en vermell sobre el claudàtor del primer treset curt. +d'imprimir en vermell sobre la clau del primer treset curt. @cindex @code{\tweak}, exemple @cindex direction, propietat, exemple @@ -1057,7 +1061,7 @@ d'aquesta forma: i tota la lletra s'escriu en cursiva. @warning{Dins de la lletra, deixeu sempre espais entre la síl·laba -final i el claudàtor de tancament.} +final i la clau de tancament.} @seealso Manual de Extensió: @@ -1073,7 +1077,7 @@ Manual de Extensió: Fins aquí hem vis dos tipus de propietats: @code{número} i @code{símbol}. Perquè sigui vàlid, el valor que es dóna a una propietat ha de ser del tipus correcte i obeir les regles d'aquest -tipus. El tipus de la propietat es mostra sempre entre parèntesis +tipus. El tipus de la propietat es mostra sempre entre claus després del nom de la propietat al RFI. Vet aquí una llista dels tipus que us podrà caldre, junt amb les regles d'aquest tipus, i alguns exemples. Heu d'escriure sempre un símbol d'encoixinat, @@ -1103,8 +1107,8 @@ a constants; si voleu calcular un valor usant l'Scheme, consulteu @tab @code{3}, @code{-1} @item Llista @tab Una seqüència de constants o símbols separats per espais, - envoltat per parèntesis - i precedit per un apòstrof o cometa simple + envoltada per claus + i precedida per un apòstrof o cometa simple @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()}, @code{'(1.0 0.25 0.5)} @item Marcatge @@ -1300,7 +1304,7 @@ les barres de compàs es suprimeixin, per la qual cosa el valor que ens cal és @code{#(#f #f #f)} (disponible també sota el nom @code{all-invisible}, totes invisibles). Anem a provar-lo, recordant incloure el context de @code{Staff}. Observeu també en -escriure aquest valor tenim @code{##} abans del parèntesis +escriure aquest valor tenim @code{##} abans de la clau d'obertura. Cal un @code{#} com a part de la sintaxi de les constants vectorials, i el primer símbol d'encoixinat@tie{}@code{#} cal, com sempre, per precedir el valor @@ -1756,7 +1760,7 @@ Ho provarem al nostre exemple de l'ossia: alignAboveContext = #"main" \omit Clef \omit TimeSignature - % Reduce all font sizes by ~24% + % Redueix totes les mides de tipus de lletra per ~24% fontSize = #-2 } { f8 f c } @@ -1766,7 +1770,7 @@ Ho provarem al nostre exemple de l'ossia: } @end lilypond -Encara no està massa bé. Els caps i els claudàtors de les notes +Encara no està massa bé. Els caps i les pliques de les notes són més petits, però les pliques són massa llargues en proporció, i les línies del pentagrama estan massa separades entre sí. S'ha de reduir la seva escala en proporció a la reducció del tipus de @@ -1975,7 +1979,7 @@ instruccions llestes per usar que us evitaran haver de codificar sobreescriptures explícites per a les modificacions més comunes. Alguns objectes de presentació com les lligadures es corben cap -amunt o cap avall; d'altres com les pliques els claudàtors també +amunt o cap avall; d'altres com les barres i les pliques també es mouen a la dreta o a l'esquerra quan apunten cap amunt o cap avall. Això es controla automàticament quan està establerta la propietat @code{direction}. @@ -2329,7 +2333,7 @@ reguladors o matisos dinàmics encadenats. @tab Text sobre silencis de compàs complet @item @code{OttavaBracket} @tab @code{400} - @tab Claudàtors d'octava alta i baixa + @tab Indicadors d'octava alta i baixa @item @code{TextSpanner} @tab @code{350} @tab Objectes d'extensió de text @@ -2348,7 +2352,7 @@ Vet aquí un exemple que mostra la situació predeterminada d'alguns d'ells. @cindex text, extensions de -@cindex octava alta y baixa, claudàtor de +@cindex octava alta y baixa, clau de @funindex \startTextSpan @funindex \stopTextSpan @@ -2362,7 +2366,7 @@ d'ells. = \markup { \small \bold Slower } % Col·loca la indicació dinàmica a sobre del pentagrama \dynamicUp -% Inicia el claudàtor d'octava +% Inicia l'indicador d'octava \ottava #1 c''4 \startTextSpan % Afegeix el text de la indicació dinàmica i el símbol @@ -2373,7 +2377,7 @@ c''4^Text | c''4 c'' % Afegeix el text de la dinàmica i finalitza el símbol c''4\ff c'' \stopTextSpan | -% Stop Ottava Bracket +% Atura l'indicador d'octava \ottava #0 c'4 c' c' c' | @end lilypond @@ -2385,7 +2389,7 @@ fins l'ordre @code{\stopTextSpan}, i el format del text es defineix per mitjà de l'ordre @code{\override TextSpanner}. Per veure més detalls, consulteu@rusernamed{Text spanners,Extensions de text}. -També mostra la manera de crear claudàtors d'octava alta i baixa. +També mostra la manera de crear indicadors d'octava alta i baixa. @cindex ajustar la ubicació dels números de compàs @cindex números de compàs, ajustar posició @@ -2397,7 +2401,7 @@ També mostra la manera de crear claudàtors d'octava alta i baixa. Si els valors predeterminats de @code{outside-staff-priority} no us ofereixen les col·locacions desitjades es pot sobreescriure la prioritat de qualssevol dels objectes. Suposeu que volguéssim que -el claudàtor d'octava estigués situat per sota de l'element +l'indicador d'octava estigués situat per sota de l'element extensor de text a l'exemple de dalt. Tot el que hem de fer és localitzar la prioritat de @code{OttavaBracket} al RFI o en les taules anteriors, i reduir-lo a un valor inferior al de @@ -2413,9 +2417,9 @@ dins del context @code{Staff}: = \markup { \small \bold Slower } % Ubica els indicadors de dinàmica a sobre del pentagrama \dynamicUp -% Posa els següent claudàtor d'octava a sota dels Text Spanners +% Posa els següent indicador d'octava a sota dels Text Spanners \once \override Staff.OttavaBracket.outside-staff-priority = #340 -% Start Ottava Bracket +% Inicia l'indicador d'octava \ottava #1 c''4 \startTextSpan % Afegeix el text de la dinàmica @@ -2427,7 +2431,7 @@ c''4^Text | c''4 c'' % Afegeix el text de la dinàmica c''4\ff c'' \stopTextSpan | -% Atura el claudàtor d'octava +% Atura l'indicador d'octava \ottava #0 c'4 c' c' c' | @end lilypond @@ -3131,7 +3135,7 @@ tornat a posicionar a qualsevol lloc sense afectar cap altra cosa. Aquesta propietat és de la major utilitat per ajustar manualment la inclinació i l'alçada de les barres de corxera, lligadures -d'expressió i claudàtors de grups de valoració especial. Agafa +d'expressió i claus de grups de valoració especial. Agafa una parella de números que donen la posició dels extrems esquerre i dret de la barra, lligadura, etc. amb relació a la tercera línia del pentagrama. Les unitats són espais de pentagrama. Observeu, @@ -3872,7 +3876,7 @@ de Referència de la notació. En cuscar la paraula @qq{merge} (fusiona) a l'índex de la Referència de la notació arribem ràpidament a les ordres per barrejar notes amb diferent cap i amb o sense puntet, a -@rusernamed{Collision resolution, Resolució de les col·lisions}. +@ruser{Resolució de les col·lisions}. Al nostre exemple hem de fusionar ambdós tipus de notes al transcurs de la secció polifònica del compàs 3; per tant, gràcies a la informació que apareix a la Referència de la Notació, escrivim @@ -4148,7 +4152,7 @@ d'elles: @end lilypond @noindent -i esborrant la primera plica (amb el seu claudàtor) cap amunt a +i esborrant la primera barra (amb la seva plica) cap amunt a aquesta veu, dóna la impressió que la lligadura es creua entres les veus: diff --git a/Documentation/ca/macros.itexi b/Documentation/ca/macros.itexi index 2fe43ab603..150c7bd0b8 100644 --- a/Documentation/ca/macros.itexi +++ b/Documentation/ca/macros.itexi @@ -7,6 +7,10 @@ Guide, node Updating translation committishes.. @end ignore +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + @documentencoding UTF-8 @include version.itexi @@ -105,7 +109,7 @@ relaciona amb la resta de la documentació, o per llegir aquest manual en altres formats, consulteu @rweb{Manuals}. Si us falta algun manual, trobareu tota la documentació a -@w{@uref{http://@/www@/.lilypond@/.org/}}. +@w{@uref{http://@/lilypond@/.org/}}. @end cartouche @end macro diff --git a/Documentation/ca/notation.tely b/Documentation/ca/notation.tely index 90f9207a45..6ba1c0f3c9 100644 --- a/Documentation/ca/notation.tely +++ b/Documentation/ca/notation.tely @@ -7,6 +7,10 @@ Guide, node Updating translation committishes.. @end ignore +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + @setfilename lilypond.info @settitle Referència de la notació del GNU LilyPond @documentencoding UTF-8 diff --git a/Documentation/ca/notation/expressive.itely b/Documentation/ca/notation/expressive.itely new file mode 100644 index 0000000000..7e7558bdec --- /dev/null +++ b/Documentation/ca/notation/expressive.itely @@ -0,0 +1,1466 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ca -*- +@ignore + Translation of GIT committish: 21be03e4b893ec2bbea745a713360310931337b9 + + 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 \version "2.19.21" + +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + +@node Expressions +@section Expressions +@translationof Expressive marks + +@lilypondfile[quote]{expressive-headword.ly} + +Aquesta secció relaciona diverses marques d'expressió que es poden +crear a una partitura. + +@menu +* Expressions annexades a les notes:: +* Marques expressives en forma corba:: +* Marques expressives en forma de línies:: +@end menu + + +@node Expressions annexades a les notes +@subsection Expressions annexades a les notes +@translationof Expressive marks attached to notes + +Aquesta secció explica com crear marques expressives que estan +aplicades a notes: articulacions, ornaments i matisos. També es +tracten els mètodes per crear les marques dinàmiques. + +@menu +* Articulacions i ornaments:: +* Matisos dinàmics:: +* Indicacions dinàmiques contemporànies:: +@end menu + + +@node Articulacions i ornaments +@unnumberedsubsubsec Articulacions i ornaments +@translationof Articulations and ornamentations + +@cindex articulacions +@cindex ornamentació +@cindex guions +@cindex ornaments +@cindex espressiu +@cindex calderó +@cindex arc a dalt +@cindex arc a sota +@cindex indicacions de pedal +@cindex indicacions de pedaler d'orgue +@cindex pedal d'orgue +@cindex grupet +@cindex mordent circular +@cindex nota oberta +@cindex nota tapada +@cindex flageolet +@cindex mordent circular, invers +@cindex refilet +@cindex semirefilet +@cindex mordent +@cindex prallprall +@cindex prallmordent +@cindex semirefilet ascendent +@cindex semirefilet descendent +@cindex mordent ascendent +@cindex mordente descendent +@cindex indicació de polze +@cindex segno +@cindex coda +@cindex varcoda + +@funindex \accent +@funindex \marcato +@funindex \staccatissimo +@funindex \espressivo +@funindex \staccato +@funindex \tenuto +@funindex \portato +@funindex \upbow +@funindex \downbow +@funindex \flageolet +@funindex \thumb +@funindex \lheel +@funindex \rheel +@funindex \ltoe +@funindex \rtoe +@funindex \open +@funindex \halfopen +@funindex \stopped +@funindex \snappizzicato +@funindex \turn +@funindex \reverseturn +@funindex \trill +@funindex \prall +@funindex \mordent +@funindex \prallprall +@funindex \prallmordent +@funindex \upprall +@funindex \downprall +@funindex \upmordent +@funindex \downmordent +@funindex \pralldown +@funindex \prallup +@funindex \lineprall +@funindex \signumcongruentiae +@funindex \shortfermata +@funindex \fermata +@funindex \longfermata +@funindex \verylongfermata +@funindex \fermataMarkup +@funindex \segno +@funindex \coda +@funindex \varcoda + + +@funindex - + +Es poden annexar a les notes un ample ventall de símbols per +denotar articulacions, adorns i altres indicacions d'execució, +utilitzant la sintaxi següent: + +@example +@var{nota}\@var{nom} +@end example + +La llista de possibles valors de @code{@var{nom}} està a +@rusernamed{List of articulations,Llista d'articulacions}. Per exemple + +@lilypond[verbatim,quote] +\relative { + c''4\staccato c\mordent b2\turn + c1\fermata +} +@end lilypond + +@cindex marcato +@cindex tenuto +@cindex staccatissimo +@cindex acent +@cindex picat +@cindex staccato +@cindex portato + +Algunes d'aquestes articulacions tenen abreviatures que faciliten +la seva escriptura. Les abreviatures s'escriuen a darrere del nom +de la nota, i la seva sintaxi consisteix en un guió @code{-} +seguit d'un símbol que especifica l'articulació. Existeixen +abreviatures prededefinides per al @notation{marcato}, +@notation{stopped} (nota apagada), @notation{tenuto}, @notation{staccatissimo}, +@notation{accent} (acent), @notation{staccato} (picat), i +@notation{portato}. La sortida corresponent a aquestes +articulacions apareix de la manera següent: + +@lilypond[verbatim,quote] +\relative { + c''4-^ c-+ c-- c-! + c4-> c-. c2-_ +} +@end lilypond + +Les regles per a la col·locació predeterminada de les +articulacions es troben definides al fitxer @file{scm/script.scm}. +Les articulacions i ornaments es poden col·locar manualment per +sobre o per sota del pentagrama; vegeu +@rusernamed{Direction and placement,Direcció i posició}. + +Les articulacions són objectes @code{Script}. Les seves +propietats es descriuen de forma més completa a @rinternals{Script}. + +Les articulacions es poden adjuntar als silencis així com a les +notes, pero no es poden ajuntar a silencis multicompàs. Hi ha +disponible una ordre predefinida especial, @code{\fermataMarkup}, +per annexar un calderó a un silenci multicompàs (i sols a un +silenci multicompàs). L'ordre crea un objecte @code{MultiMeasureRestText}. + +@lilypond[verbatim,quote,fragment] +\override Script.color = #red +\override MultiMeasureRestText.color = #blue +a'2\fermata r\fermata +R1\fermataMarkup +@end lilypond + +A més d'articulacions, es poden adjuntar textos i elements de +marcatge de les notes. Vegeu @rusernamed{Text scripts,Scripts de text}. + +Per veure més informació quant a l'ordenació dels elements Script +i TextScript que s'annexen a les notes, consulteu +@rlearning{Col·locació dels objectes}. + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{modifying-default-values-for-articulation-shorthand-notation.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{controlling-the-vertical-ordering-of-scripts.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{creating-a-delayed-turn.ly} + +@seealso +Glossari musical: +@rglos{tenuto}, +@rglos{accent}, +@rglos{staccato}, +@rglos{portato}. + +Manual d'aprenentatge: +@rlearning{Col·locació dels objectes}. + +Referència de la notació: +@rusernamed{Text scripts,Scripts de text}, +@rusernamed{Direction and placement,Direcció i posició}, +@rusernamed{List of articulations,Llista d'articulacions}, +@ref{Refilets}. + +Fitxers instal·lats: +@file{scm/script.scm}. + +Fragments de codi: +@rlsr{Expressive marks}. + +Referència de funcionament intern: +@rinternals{Script}, +@rinternals{TextScript}. + + +@node Matisos dinàmics +@unnumberedsubsubsec Matisos dinàmics +@translationof Dynamics + +@cindex dinàmica +@cindex matisos absoluts +@cindex matisos +@cindex absoluts, matisos +@funindex \pppp +@funindex \ppp +@funindex \pp +@funindex \p +@funindex \mp +@funindex \mf +@funindex \f +@funindex \ff +@funindex \fff +@funindex \ffff +@funindex \fffff +@funindex \fp +@funindex \sf +@funindex \sff +@funindex \sp +@funindex \spp +@funindex \sfz +@funindex \rfz + +Les marques dinàmiques de matís absolut s'especifiquen usant una +ordre després d'una nota: @code{c4\ff}. Les marques dinàmiques +disponibles són @code{\ppppp}, @code{\pppp}, +@code{\ppp}, @code{\pp}, @code{\p}, @code{\mp}, @code{\mf}, +@code{\f}, @code{\ff}, @code{\fff}, @code{\ffff}, @code{\fffff}, +@code{\fp}, @code{\sf}, @code{\sff}, @code{\sp}, @code{\spp}, +@code{\sfz} i @code{\rfz}. Les indicaciones dinàmiques es poden +col·locar manulament per sobre o per sota del pentagrama; per veure +més detalls, consulteu +@rusernamed{Direction and placement,Direcció i posició}. + +@lilypond[verbatim,quote] +\relative c'' { + c2\ppp c\mp + c2\rfz c^\mf + c2_\spp c^\ff +} +@end lilypond + +@cindex regulador +@cindex crescendo +@cindex decrescendo +@cindex diminuendo + +@funindex \< +@funindex \> +@funindex \! +@funindex \cr +@funindex \decr + +Una indicació de @notation{crescendo} s'inicia amb @code{\<} i +s'acaba amb @code{\!}, amb un matís absolut o amb una altra +indicació de crescendo o de descrescendo. Una indicació de +@notation{decrescendo} comença amb @code{\>} i acaba també amb +@code{\!}, amb un matís dinàmic absolut o amb una altra indicació +de crescendo o de decrescendo. Es poden usar @code{\cr} i +@code{\decr} en lloc de @code{\<} i @code{\>}. De forma +predeterminada, es graven reguladors en angle quan es fa servir +aquesta notació. + +@lilypond[verbatim,quote] +\relative c'' { + c2\< c\! + d2\< d\f + e2\< e\> + f2\> f\! + e2\> e\mp + d2\> d\> + c1\! +} +@end lilypond + +Un regulador acabat mitjançant @code{\!} finalitza a la vora dreta +de la nota que porta el @code{\!} annexat. En el cas en el qual +estigui acabat amb el començament d'una altra indicació +@notation{crescendo} o @notation{decrescendo}, acabarà al centre +de la nota que té annexada la següent indicació +@code{\<} o @code{\>}. El regulador següent començarà aleshores a +la vora dreta de la mateixa nota en comptes de la vora esquerra, +com seria normal si hagués acabaat amb @code{\!} prèviament. + +@lilypond[verbatim,quote] +\relative { + c''1\< | c4 a c\< a | c4 a c\! a\< | c4 a c a\! +} +@end lilypond + +Els reguladors que acaben amb indicacions dinàmiques absolutes en +lloc d'amb @code{\!} també es graven de manera semblant. +Tanmateix, la longitud de la pròpia indicació dinàmica pot alterar +el punt en el qual finalitza el regulador anterior. + +@lilypond[verbatim,quote] +\relative { + c''1\< | c4 a c\mf a | c1\< | c4 a c\ffff a +} +@end lilypond + +@cindex diversos matisos sobre una nota +@cindex matisos, diversos sobre una nota +@cindex dinàmica, diverses indicacions sobre una nota + +Es requereixen silencis espaiadors per tipografiar diverses +indicacions dinàmiques sobre una sola nota. Això és útil +especialment per afegir un @notation{crescendo} i un +@notation{decrescendo} a la mateixa nota: + +@lilypond[verbatim,quote] +\relative { + c''4\< c\! d\> e\! + << f1 { s4 s4\< s4\> s4\! } >> +} +@end lilypond + +@cindex espressivo, articulació + +@funindex \espressivo + +Es pot fer servir l'ordre @code{\espressivo} per indicar un +crescendo o un decrescendo sobra la mateixa nota. Tanmateix, +noteu que aquesta indicació està implementada com una articulació, +no com una expressió dinàmica. + +@lilypond[verbatim,quote] +\relative { + c''2 b4 a + g1\espressivo +} +@end lilypond + +@funindex \cresc +@funindex \decresc +@funindex \dim + +Les indicacions de crescendo textuals s'inicien amb +@code{\cresc}. Els decrescendos textuals s'inicien amb +@code{\decresc} o amb @code{\dim}. Es tracen líniies extensores +quan cal. + +@lilypond[verbatim,quote] +\relative { + g'8\cresc a b c b c d e\mf | + f8\decresc e d c e\> d c b | + a1\dim ~ | + a2. r4\! | +} +@end lilypond + +@funindex \crescTextCresc +@funindex \dimTextDecresc +@funindex \dimTextDecr +@funindex \dimTextDim +@funindex \crescHairpin +@funindex \dimHairpin + +També poden substituir-se els reguladors gràfics per canvis de +dinàmica textuals: +@lilypond[verbatim,quote] +\relative c'' { + \crescTextCresc + c4\< d e f\! | + \dimTextDecresc + g4\> e d c\! | + \dimTextDecr + e4\> d c b\! | + \dimTextDim + d4\> c b a\! | + \crescHairpin + \dimHairpin + c4\< d\! e\> d\! | +} +@end lilypond + + +Per crear noves indicacions de matís absolut o de text que s'han +d'alinear amb els matisos; vegeu +@ref{Indicacions dinàmiques contemporànies}. + +@cindex matisos, posició vertical +@cindex dinàmica, posició vertical +@cindex vertical, posició, de les indicacions dinàmiques +@funindex DynamicLineSpanner + +La col·locació vertical de les indicacions de dinàmica es gestiona +per part de @rinternals{DynamicLineSpanner}. + +@funindex \dynamicUp +@funindex \dynamicDown +@funindex \dynamicNeutral + +Hi ha disponible un context @code{Dynamics} per gravar les +indicacions de matís dinàmic en la seva pròpia línia +horitzontal. Useu silencis de separació per indicar els temps +(les notes que estan dins d'un context @code{Dynamics} també +ocupen temps musical, però no s'imprimeixen). El context +@code{Dynamics} pot contenir altres elements com inscripcions +textuals, objectes extensors de text i indicacions de pedal de +piano. + +@lilypond[verbatim,quote] +<< + \new Staff \relative { + c'2 d4 e | + c4 e e,2 | + g'4 a g a | + c1 | + } + \new Dynamics { + s1\< | + s1\f | + s2\dim s2-"rit." | + s1\p | + } +>> +@end lilypond + +@predefined +@code{\dynamicUp}, +@code{\dynamicDown}, +@code{\dynamicNeutral}, +@code{\crescTextCresc}, +@code{\dimTextDim}, +@code{\dimTextDecr}, +@code{\dimTextDecresc}, +@code{\crescHairpin}, +@code{\dimHairpin}. +@endpredefined + + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{setting-hairpin-behavior-at-bar-lines.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{setting-the-minimum-length-of-hairpins.ly} + +@cindex al niente +@cindex niente, al + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{printing-hairpins-using-al-niente-notation.ly} + +@cindex Ferneyhough, reguladors de +@cindex reguladors de Ferneyhough +@cindex reguladors acampanats +@cindex acampanats, reguladors +@cindex reguladors de tipus constant +@cindex constant, reguladors de tipus + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{printing-hairpins-in-various-styles.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{vertically-aligned-dynamics-and-textscripts.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{hiding-the-extender-line-for-text-dynamics.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing-text-and-spanner-styles-for-text-dynamics.ly} + +@seealso +Glossari musical: +@rglos{al niente}, +@rglos{crescendo}, +@rglos{decrescendo}, +@rglos{hairpin}. + +Manual d'aprenentatge: +@rlearning{Articulacions i matisos dinàmics}. + +Referència de la notació: +@rusernamed{Direction and placement,Direcció i posició}, +@ref{Indicacions dinàmiques contemporànies}, +@rusernamed{Enhancing MIDI output,Enriquiment de la sortida MIDI}, +@rusernamed{Controlling MIDI dynamics,Control de las dinàmiques del MIDI}. + +Fragments de codi: +@rlsr{Expressive marks}. + +Referència de funcionament intern: +@rinternals{DynamicText}, +@rinternals{Hairpin}, +@rinternals{DynamicLineSpanner}, +@rinternals{Dynamics}. + + +@node Indicacions dinàmiques contemporànies +@unnumberedsubsubsec Indicacions dinàmiques contemporànies +@translationof New dynamic marks + +@cindex indicacions dinàmiques noves +@cindex dinàmiques, indicacions, noves + +La menara més fàcil de crear indicacions dinàmiques és usar +objectes de marcatge (@code{\markup}). + +@lilypond[verbatim,quote] +moltoF = \markup { molto \dynamic f } + +\relative { + 16_\moltoF + 2.. +} +@end lilypond + +@cindex dinàmiques indicacions editorials +@cindex dinàmiques, indicacions entre parèntesis +@cindex editorials, indicacions dinàmiques +@funindex \bracket +@funindex \dynamic + +En el mode de marcatge es poden crear indicacions dinàmiques +editorials (entre parèntesis o claus). La sintaxi del mode +de marcatge es descriu a +@rusernamed{Formatting text,Format del text}. + +@lilypond[verbatim,quote] +roundF = \markup { + \center-align \concat { \bold { \italic ( } + \dynamic f \bold { \italic ) } } } +boxF = \markup { \bracket { \dynamic f } } +\relative { + c'1_\roundF + c1_\boxF +} +@end lilypond + +@cindex make-dynamic-script +@funindex make-dynamic-script + +Les indicacions dinàmiques senzilles i centrades es creen +fàcilment amb la funció @code{make-dynamic-script}. + +@lilypond[verbatim,quote] +sfzp = #(make-dynamic-script "sfzp") +\relative { + c'4 c c\sfzp c +} +@end lilypond + +En general @code{make-dynamic-script} agafa qualsevol objecte de +marcatge com a argument. El tipus de lletra de matisos sols conté +els caràcters @code{f, m, p, r, s} y @code{z}, per la qual cosa si +desitgeu obtenir una indicació dinàmica que inclogui text normal o +signes de puntuació, cal fer servir ordres de marcatge que +retornin els ajustaments de la família de tipus de lletra i la +seva codificació a las del text normal, per exemple +@code{\normal-text}. L'interès de la utilització de +@code{make-dynamic-script} en lloc d'un element de marcatge +corrent radica en assegurar l'alineació vertical dels objectes de +marcatge i reguladors que s'apliquen al mateix cap de nota. + +@lilypond[verbatim,quote] +roundF = \markup { \center-align \concat { + \normal-text { \bold { \italic ( } } + \dynamic f + \normal-text { \bold { \italic ) } } } } +boxF = \markup { \bracket { \dynamic f } } +mfEspress = \markup { \center-align \line { + \hspace #3.7 mf \normal-text \italic espress. } } +roundFdynamic = #(make-dynamic-script roundF) +boxFdynamic = #(make-dynamic-script boxF) +mfEspressDynamic = #(make-dynamic-script mfEspress) +\relative { + c'4_\roundFdynamic\< d e f + g,1~_\boxFdynamic\> + g1 + g'1~\mfEspressDynamic + g1 +} +@end lilypond + +Es pot utilitzar en el seu lloc la forma Scheme del mode de +marcatge. La seva sintaxi s'explica a + +Se puede utilizar en su lugar la forma Scheme del modo de marcado. +Su sintaxis se explica en +@rextendnamed{Markup construction in Scheme,Construcció de marcatge en Scheme}. + +@lilypond[verbatim,quote] +moltoF = #(make-dynamic-script + (markup #:normal-text "molto" + #:dynamic "f")) +\relative { + 16 + 2..\moltoF +} +@end lilypond + +Per alinear el text del matís dinàmic a l'esquerra en lloc de +centrar-lo sobre una nota, utilitzeu un @code{\tweak}: + +@lilypond[verbatim,quote] +moltoF = \tweak DynamicText.self-alignment-X #LEFT + #(make-dynamic-script + (markup #:normal-text "molto" + #:dynamic "f")) +\relative { + 16 + 2..\moltoF 1 +} +@end lilypond + +Els ajustos per als tipus de lletra en mode de marcatge es +descriuen a +@rusernamed{Selecting font and font size,Selecció del tipus de lletra i la seva mida}. + +@seealso +Referència de la notació: +@rusernamed{Formatting text,Format del text}, +@rusernamed{Selecting font and font size,Selecció del tipus de lletra i la seva mida}, +@rusernamed{Enhancing MIDI output,Enriquiment de la sortida MIDI}, +@rusernamed{Controlling MIDI dynamics,Control de las dinàmiques del MIDI}. + +Extensió del LilyPond: +@rextendnamed{Markup construction in Scheme,Construcció de marcatge en Scheme}. + +Fragments de codi: +@rlsr{Expressive marks}. + + +@node Marques expressives en forma corba +@subsection Marques expressives en forma corba +@translationof Expressive marks as curves + +Aquesta secció explica com crear diverses marques expressives amb +forma corba: lligagures d'expressió i de fraseig, respiracions, +caigudes i elevacions de to. + +@menu +* Lligadures d'expressió:: +* Lligadures de fraseig:: +* Marques de respiració:: +* Caigudes i elevacions:: +@end menu + + +@node Lligadures d'expressió +@unnumberedsubsubsec Lligadures d'expressió +@translationof Slurs + +@cindex lligadures d'expressió + +Les @notation{lligadures d'expressió} s'introdueixen utilitzant +parèntesis: + +@warning{A la música polifònica, les lligadures d'expressió han +d'acabar a la mateixa veu en la qual comencen.} + +@lilypond[verbatim,quote] +\relative { + f''4( g a) a8 b( + a4 g2 f4) + 2( 2) +} +@end lilypond + +@cindex lligadures d'expressió, posicionament manual +@cindex lligadures d'expressió, a sota de les notes +@cindex lligadures d'expressió, a sobre de les notes +@funindex \slurDown +@funindex \slurNeutral + +Les lligadures d'expressió es poden col·locar manualment per sobre +o per sota de les notes; vegeu +@rusernamed{Direction and placement,Direcció i posició}. + +@cindex fraseig, lligadura de +@cindex diverses lligadures d'expressió +@cindex simultànies, lligadures d'expressió +@cindex lligadura de fraseig +@cindex lligadures d'expressió, diverses +@cindex lligadures d'expressió, simultànies + +S'ha de tenir cura amb les lligadures d'expressió simultànies o +superposades. En gairebé tots els casos, les lligadures +d'expressió externes indiquen, certament, fraseig, i les +lligadures de fraseig poden superposar-se amb les lligadures +d'expressió normals, vegeu @ref{Lligadures de fraseig}. Quan +calen diverses lligadures d'expressió normals dins d'una sola +veu, els començament i els finals corresponents de les lligadures +s'han d'etiquetar precedint-los per @code{\=} seguit d'un número o +cadena de caràcters que la identifiqui. + +@lilypond[verbatim,quote] +\fixed c' { + 2 +} +@end lilypond + +@cindex lligadura d'expressió, estil +@cindex lligadura contínua +@cindex lligadura de punts +@cindex lligadura discontínua +@cindex continua, lligadura +@cindex discontínua, lligadura +@cindex punts, lligadura de +@cindex estil de la lligadura + +@funindex \slurDashed +@funindex \slurDotted +@funindex \slurSolid + +Les lligadures d'expressió poden ser contínues, discontínues o de +punts. L'estil predeterminat de les lligadures d'expressió és el +continu: + +@lilypond[verbatim,quote] +\relative { + c'4( e g2) + \slurDashed + g4( e c2) + \slurDotted + c4( e g2) + \slurSolid + g4( e c2) +} +@end lilypond + +@cindex lligadura d'expressió, meitat contínua i meitat discontínua + +@funindex \slurHalfDashed +@funindex \slurHalfSolid + +També es pot fer que les lligadures d'expressió siguin +semi-discontínues (la primera meitat discontínua i la segona +meitat contínua) o semi-contínues (la primera meitat contínua i la +segona discontínua): + +@lilypond[verbatim,quote] +\relative { + c'4( e g2) + \slurHalfDashed + g4( e c2) + \slurHalfSolid + c4( e g2) + \slurSolid + g4( e c2) +} +@end lilypond + +@cindex lligadura d'expressió, definició de patrons de discontinuïtat + +@funindex \slurDashPattern + +Es poden definir patrons de discontinuïtat per a les lligadures d'expressió: + +@lilypond[verbatim,quote] +\relative { + c'4( e g2) + \slurDashPattern #0.7 #0.75 + g4( e c2) + \slurDashPattern #0.5 #2.0 + c4( e g2) + \slurSolid + g4( e c2) +} +@end lilypond + + +@funindex \slurUp + + +@predefined +@code{\slurUp}, +@code{\slurDown}, +@code{\slurNeutral}, +@code{\slurDashed}, +@code{\slurDotted}, +@code{\slurHalfDashed}, +@code{\slurHalfSolid}, +@code{\slurDashPattern}, +@code{\slurSolid}. +@endpredefined + + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{using-double-slurs-for-legato-chords.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{positioning-text-markups-inside-slurs.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{making-slurs-with-complex-dash-structure.ly} + +@seealso +Glossari musical: +@rglos{slur}. + +Manual d'aprenentatge: +@rlearning{Quant a la impossibilitat de niuar claus i lligadures} + +Referència de la notació: +@rusernamed{Direction and placement,Direcció i posició}, +@ref{Lligadures de fraseig}. + +Fragments de codi: +@rlsr{Expressive marks}. + +Referència de funcionament interno: +@rinternals{Slur}. + + +@node Lligadures de fraseig +@unnumberedsubsubsec Lligadures de fraseig +@translationof Phrasing slurs + +@cindex lligadures de fraseig +@cindex marques de fraseig +@cindex fraseig, lligadures de +@cindex fraseig, marques de +@funindex \( +@funindex \) + +Les @notation{lligadures de fraseig} (o marques de fraseig) que +indiquen una frase musical s'escriuen usant les ordres +@code{\(} i @code{\)} respectivament: + +@lilypond[verbatim,quote] +\relative { + c''4\( d( e) f( + e2) d\) +} +@end lilypond + +@funindex \phrasingSlurUp +@funindex \phrasingSlurDown +@funindex \phrasingSlurNeutral + +Tipogràficament, la lligadura de fraseig es comporta gairebé +exactament igual que una lligadura d'expressió normal. Tanmateix, +es tracten com a objectes diferents. Una @code{\slurUp} no tindrà +cap efecte sobre una lligadura de fraseig. El fraseig es pot +col·locar manualment per sobre o per sota de les notes; vegeu +@rusernamed{Direction and placement,Direcció i posició}. + +@cindex simultànies, lligadures de fraseig +@cindex diverses lligadures de fraseig +@cindex lligadures de fraseig simultànies +@cindex lligadures de fraseig, diverses +@cindex fraseig, lligadures de, simultànies +@cindex fraseig, lligadures de, diverses + +Les lligadures de fraseig simultànies o superposades +s'introdueixen usant @code{\=} igual que es fa amb les lligadures +d'expressió normals, vegeu @ref{Lligadures d'expressió}. + +@cindex fraseig, lligadures de, discontínues +@cindex discontínues, lligadures de fraseig +@cindex fraseig, lligadures de, puntejades +@cindex puntejades, lligadures de fraseig +@cindex lligadures de fraseig discontínues +@cindex lligadures de fraseig puntejades + +@funindex \phrasingSlurDashed +@funindex \phrasingSlurDotted +@funindex \phrasingSlurSolid + +Les lligadures de fraseig poden ser contínues, de punts o de +ratlles. L'estil predeterminat per a les lligadures de fraseig és +el continu: + +@lilypond[verbatim,quote] +\relative { + c'4\( e g2\) + \phrasingSlurDashed + g4\( e c2\) + \phrasingSlurDotted + c4\( e g2\) + \phrasingSlurSolid + g4\( e c2\) +} +@end lilypond + +@cindex fraseig, lligadura de, meitat contínua i meitat discontínua +@cindex lligadura de fraseig meitat contínua i meitat discontínua + +@funindex \phrasingSlurHalfDashed +@funindex \phrasingSlurHalfSolid + +Es pot fer també que les lligadures de fraseig siguin +semi-dicontínues (la primera meitat discontínua i la segona meitat +contínua) o semi-continues (la primera meitat contínua i la segona +meitat discontínua): + +@lilypond[verbatim,quote] +\relative { + c'4\( e g2\) + \phrasingSlurHalfDashed + g4\( e c2\) + \phrasingSlurHalfSolid + c4\( e g2\) + \phrasingSlurSolid + g4\( e c2\) +} +@end lilypond + +@cindex fraseig, lligadura de, definir patrons de discontinuïtat +@cindex lligadura de fraseig, definir patrons de discontinuïtat + +@funindex \phrasingSlurDashPattern + +Es poden definir patrons de discontinuïtat per a les lligadures de +fraseig: + +@lilypond[verbatim,quote] +\relative { + c'4\( e g2\) + \phrasingSlurDashPattern #0.7 #0.75 + g4\( e c2\) + \phrasingSlurDashPattern #0.5 #2.0 + c4\( e g2\) + \phrasingSlurSolid + g4\( e c2\) +} +@end lilypond + +Les definicions de patrons de discontinuïtat tenen la mateixa +estructura que les definicions de patrons de discontinuïtat de les +lligadures d'expressió. Per veure més informació sobre els +patrons de discontinuïtat complexos, consulteu els fragments de +codi sota @ref{Lligadures d'expressió}. + +@predefined +@code{\phrasingSlurUp}, +@code{\phrasingSlurDown}, +@code{\phrasingSlurNeutral}, +@code{\phrasingSlurDashed}, +@code{\phrasingSlurDotted}, +@code{\phrasingSlurHalfDashed}, +@code{\phrasingSlurHalfSolid}, +@code{\phrasingSlurDashPattern}, +@code{\phrasingSlurSolid}. +@endpredefined + +@seealso +Manual de aprenentatge: +@rlearning{Quant a la impossibilitat de niuar claus i lligadures} + +Referència de la notació: +@rusernamed{Direction and placement,Direcció i posició}, +@ref{Lligadures d'expressió}. + +Fragments de codi: +@rlsr{Expressive marks}. + +Referència de funcionament intern: +@rinternals{PhrasingSlur}. + + +@node Marques de respiració +@unnumberedsubsubsec Marques de respiració +@translationof Breath marks + +@cindex respiracions +@cindex pausa, marques de +@funindex \breathe + +Les respiracions s'introdueixen utilitzant @code{\breathe}: + +@lilypond[verbatim,quote] +{ c''2. \breathe d''4 } +@end lilypond + +A diferència d'altres marques d'expressió, els símbols de +respiració no estan associats amb la nota anterior, sinó que són +esdeveniments independents. Per això, totes les marques +d'expressió que estan annexades a la nota anterior, qualsevol +claudàtor que indiqui barrat manual i qualsevol parèntesi +que indiqui lligadures d'expressió i de fraseig, s'han d'escriure +abans de @code{\breathe}. + +Les marques de respiració donen per acabades les barres +automàtiques; per anul·lar aquest comportament, consulteu +@ref{Barres manuals}. + +@lilypond[verbatim,quote] +\relative { c''8 \breathe d e f g2 } +@end lilypond + +A la notació antiga, es contemplen els indicadors musicals per a +les marques de respiració, o divisiones. Per veure més detalls, +consulteu @rusernamed{Divisiones,Divisiones}. + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing-the-breath-mark-symbol.ly} + +@cindex marca de pols + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{using-a-tick-as-the-breath-mark-symbol.ly} + +@cindex caesura +@cindex cesura + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{inserting-a-caesura.ly} + +@seealso +Glossari musical: +@rglos{caesura}. + +Referència de la notació: +@rusernamed{Divisiones,Divisiones}. + +Fragments de codi: +@rlsr{Expressive marks}. + +Referència de funcionament intern: +@rinternals{BreathingEvent}, +@rinternals{BreathingSign}, +@rinternals{Breathing_sign_engraver}. + + +@node Caigudes i elevacions +@unnumberedsubsubsec Caigudes i elevacions +@translationof Falls and doits + +@cindex falls (caigudess de to) +@cindex doits (elevacions de to) +@cindex caigudes de to (falls) +@cindex elevacions de to (doits) +@funindex \bendAfter + +Es poden expressar @notation{caigudes} y @notation{elevacions} de +to (falls i doits) afegides a les notes mitjançant l'ordre +@code{\bendAfter}. La direcció de la caiguda i elevació s'indica +amb un signe de més o menys (a dalt o a sota). El número indica +l'interval d'alçades sobre el qual s'estén la caiguda o elevació +@emph{partint de} la nota principal. + +@lilypond[verbatim,quote] +\relative c'' { + c2\bendAfter #+4 + c2\bendAfter #-4 + c2\bendAfter #+6.5 + c2\bendAfter #-6.5 + c2\bendAfter #+8 + c2\bendAfter #-8 +} +@end lilypond + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{adjusting-the-shape-of-falls-and-doits.ly} + +@seealso +Glossari musical: +@rglos{fall}, +@rglos{doit}. + +Fragments de codi +@rlsr{Expressive marks}. + + +@node Marques expressives en forma de línies +@subsection Marques expressives en forma de línies +@translationof Expressive marks as lines + +Aquesta secció explica com crear diverses marques d'expressió que +segueixen un camí lineal: glissandi, arpegis i refilets. + +@menu +* Glissando:: +* Arpegi:: +* Refilets:: +@end menu + + +@node Glissando +@unnumberedsubsubsec Glissando +@translationof Glissando + +@cindex glissando +@funindex \glissando + +Es crea un @notation{glissando} afegint @code{\glissando} +després de la nota: + +@lilypond[verbatim,quote] +\relative { + g'2\glissando g' + c2\glissando c, + \afterGrace f,1\glissando f'16 +} +@end lilypond + +Un glissando pot connectar notes d'un pentagrama a un altre: + +@lilypond[verbatim,quote] +\new PianoStaff << + \new Staff = "right" { + e'''2\glissando + \change Staff = "left" + a,,4\glissando + \change Staff = "right" + b''8 r | + } + \new Staff = "left" { + \clef bass + s1 + } +>> +@end lilypond + +Un glissando pot connectar les notes dins d'un acord. Si cal fer +quelcom que no sigui una connexió d'una nota amb una altra entre +els dos acords, les connexions entre les notes venen definides per +mitjà de @code{\glissandoMap}, on les notes d'un acord se suposen +numerades, començant de zero, en l'ordre en el qual apareixen en +el codi d'entrada del fitxer @file{.ly}. + +@lilypond[verbatim,quote] +\relative { + 1\glissando g' | + 1\glissando | + | + \break + \set glissandoMap = #'((0 . 1) (1 . 0)) + 1\glissando | + | + \set glissandoMap = #'((0 . 0) (0 . 1) (0 . 2)) + c1\glissando | + | + \set glissandoMap = #'((2 . 0) (1 . 0) (0 . 1)) + 1\glissando | + | +} +@end lilypond + +Es poden crear diversos tipus de glissando. Per veure més +detalls, consulteu @rusernamed{Line styles,Estils de línia}. + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{contemporary-glissando.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{adding-timing-marks-to-long-glissandi.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{making-glissandi-breakable.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{extending-glissandi-across-repeats.ly} + +@seealso +Glossari musical: +@rglos{glissando}. + +Referència de la notació: +@rusernamed{Line styles,Estils de línia}. + +Fragments de codi: +@rlsr{Expressive marks}. + +Referència de funcionament interno: +@rinternals{Glissando}. + +@knownissues +La impressió de text sobre la línia (com a @notation{gliss.}), no +està contemplada. + +@node Arpegi +@unnumberedsubsubsec Arpegi +@translationof Arpeggio + +@cindex arpegi +@cindex acord trencat +@cindex acord arpegiat +@cindex trencat, acord +@funindex \arpeggio +@funindex \arpeggioArrowUp +@funindex \arpeggioArrowDown +@funindex \arpeggioNormal + +Un signe de @notation{acord arpegiat} (conegut també com acord +trencat) sobre un acord, es denota annexant @code{\arpeggio} a +l'acord: + +@lilypond[verbatim,quote] +\relative { 1\arpeggio } +@end lilypond + +Es poden escriure diversos tipus d'acords arpegiats. +@code{\arpeggioNormal} produeix la volta a l'arpegi normal: + +@lilypond[verbatim,quote] +\relative { + 2\arpeggio + + \arpeggioArrowUp + 2\arpeggio + + \arpeggioArrowDown + 2\arpeggio + + \arpeggioNormal + 2\arpeggio +} +@end lilypond + +@cindex arpegiat, acord, símbols especials +@cindex especial, símbols d'arpegi + +@funindex \arpeggioBracket +@funindex \arpeggioParenthesis +@funindex \arpeggioParenthesisDashed + +Es poden crear símbols especials d'arpegi @emph{amb parèntesis}: + +@lilypond[verbatim,quote] +\relative { + 2 + + \arpeggioBracket + 2\arpeggio + + \arpeggioParenthesis + 2\arpeggio + + \arpeggioParenthesisDashed + 2\arpeggio + + \arpeggioNormal + 2\arpeggio +} +@end lilypond + +Les propietats de discontinuïtat del parèntesi de l'arpegi es +controlen mitjançant la propietat @code{'dash-definition}, que es +descriu a @ref{Lligadures d'expressió}. + +Els acords arpegiats es poden desenvolupar explícitament +utilitzant @notation{lligadures d'unió}. Vegeu +@ref{Lligadures d'unió}. + +@predefined +@code{\arpeggio}, +@code{\arpeggioArrowUp}, +@code{\arpeggioArrowDown}, +@code{\arpeggioNormal}, +@code{\arpeggioBracket}, +@code{\arpeggioParenthesis} +@code{\arpeggioParenthesisDashed}. +@endpredefined + + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{creating-cross-staff-arpeggios-in-a-piano-staff.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{creating-cross-staff-arpeggios-in-other-contexts.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{creating-arpeggios-across-notes-in-different-voices.ly} + +@seealso +Glossari musical: +@rglos{arpeggio}. + +Referència de la notació: +@ref{Lligadures d'expressió}, +@ref{Lligadures d'unió}. + +Fragments de codi: +@rlsr{Expressive marks}. + +Referència de funcionament intern: +@rinternals{Arpeggio}, +@rinternals{Slur}, +@rinternals{PianoStaff}. + +@knownissues +@cindex pentagrama creuat, arpegis amb parèntesis +@cindex arpegi de pentagrama creuat amb parèntesis +@cindex arpegi con parèntesis de pentagrama creuat + +No és possible barrejat arpegis connectats i no connectat a un +@code{PianoStaff} al mateix moment de temps. + +La forma senzilla d'especificar el parèntesis als arpegis de +parèntesis no funciona per als arpegis de pentagrama creuat; +vegeu @rusernamed{Cross-staff stems,Pliques de pentagrama creuat}. + + +@node Refilets +@unnumberedsubsubsec Refilets +@translationof Trills + +@cindex refilets +@funindex \trill +@funindex \startTrillSpan +@funindex \stopTrillSpan + +Els refilets curts sense línia extensora es graven amb +@code{\trill}; vegeu @ref{Articulacions i ornaments}. + +Els @notation{refilets} llargs mantinguts, amb línia d'extensió, +es fan amb @code{\startTrillSpan} i @code{\stopTrillSpan}: + +@lilypond[verbatim,quote] +\relative { + d''1\startTrillSpan + d1 + c2\stopTrillSpan + r2 +} +@end lilypond + +Un refilet estès que travessa un salt de línia recomença +exactament a sobre de la primera nota de la línia nova. + +@lilypond[ragged-right,verbatim,quote] +\relative { + d''1\startTrillSpan + \break + d1 + c2\stopTrillSpan + r2 +} +@end lilypond + +Els refilets estesos consecutius funcionen sense necessitat +d'ordres @code{\stopTrillSpan} explícites, perquè cada refilet es +convertirà automàticament a la vora dreta del refilet anterior. + +@lilypond[verbatim,quote] +\relative { + d''1\startTrillSpan + d1 + b1\startTrillSpan + d2\stopTrillSpan + r2 +} +@end lilypond + +També es poden combinar els refilets amb notes d'adorn. La sintaxi +d'aquesta construcció i el mètode per col·locar les notes d'adorn +amb precisió es descriuien a +@ref{Notes d'adorn}. + +@lilypond[verbatim,quote] +\relative { + d''1~\afterGrace + d1\startTrillSpan { c32[ d]\stopTrillSpan } + c2 r2 +} +@end lilypond + +@cindex refilets de nota explícita +@cindex explícita, refilets de nota +@funindex \pitchedTrill + +Els refilets que s'han d'executar sobre notes auxiliars explícites +es poden gravar amb l'ordre @code{pitchedTrill}. El primer +argument és la nota principal, i el segon és la nota +@emph{refilada}, que es grava com un cap de nota, sense plica i +entre parèntesis. + +@lilypond[verbatim,quote] +\relative { + \pitchedTrill + d''2\startTrillSpan fis + d2 + c2\stopTrillSpan + r2 +} +@end lilypond + +@cindex refilet amb nota i alteració +@cindex alteració, refilet amb + +Cal afegir manualment les alteracions subsegüents de la mateixa +nota dins del mateix compàs. Sols s'imprimeix l'alteració del +primer refilet amb nota, dins d'un compàs. + +@lilypond[verbatim,quote] +\relative { + \pitchedTrill + eis''4\startTrillSpan fis + eis4\stopTrillSpan + \pitchedTrill + eis4\startTrillSpan cis + eis4\stopTrillSpan + \pitchedTrill + eis4\startTrillSpan fis + eis4\stopTrillSpan + \pitchedTrill + eis4\startTrillSpan fis! + eis4\stopTrillSpan +} +@end lilypond + + +@predefined +@code{\startTrillSpan}, +@code{\stopTrillSpan}. +@endpredefined + +@seealso +Glossari musical: +@rglos{trill}. + +Referècia de la notació: +@ref{Articulacions i ornaments}, +@ref{Notes d'adorn}. + +Fragments de codi: +@rlsr{Expressive marks}. + +Referència de funcionament intern: +@rinternals{TrillSpanner}. diff --git a/Documentation/ca/notation/notation.itely b/Documentation/ca/notation/notation.itely index 43693424d4..23ba0c966a 100644 --- a/Documentation/ca/notation/notation.itely +++ b/Documentation/ca/notation/notation.itely @@ -9,6 +9,10 @@ @c \version "2.16.0" +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + @node Notació musical @chapter Notació musical @translationof Musical notation @@ -17,11 +21,11 @@ Aquest capítol explica com crear notació musical. @menu * Altures:: Escriptura i presentació de les duracions de les notes. -* Rhythms:: Escriptura i presentació de les duracions de les notes. -* Expressive marks:: Addició d'expressió a les notes. -* Repeats:: Repeticions de música. -* Simultaneous notes:: Més d'una nota a l'hora. -* Staff notation:: Imprimir pentagrames. +* Duracions:: Escriptura i presentació de les duracions de les notes. +* Expressions:: Addició d'expressió a les notes. +* Repeticions:: Repeticions de música. +* Notes simultànies:: Més d'una nota a l'hora. +* Notació dels pentagrames:: Impressió dels pentagrames. * Editorial annotations:: Notació especial per augmentar la llegibilitat. * Text:: Addicció de text a les partitures. @end menu @@ -34,4 +38,3 @@ Aquest capítol explica com crear notació musical. @include notation/staff.itely @include notation/editorial.itely @include notation/text.itely - diff --git a/Documentation/ca/notation/pitches.itely b/Documentation/ca/notation/pitches.itely index ab0d8ade0a..4c18ff3806 100644 --- a/Documentation/ca/notation/pitches.itely +++ b/Documentation/ca/notation/pitches.itely @@ -9,6 +9,10 @@ @c \version "2.19.22" +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + @node Altures @section Altures @@ -124,7 +128,7 @@ Glossari musical: @rglos{Pitch names}. Fragments de codi: -@rlsrnamed{Pitches,Altures}. +@rlsr{Pitches}. @node Escriptura d'octava relativa @@ -927,7 +931,7 @@ music = \relative { c'8. ees16( fis8. a16 b8.) gis16 f8. d16 } Les lligadures d'unió manuals dins de @code{\retrograde} es trencaran i generaran advertiments. Es poden generar algunes lligadures automàticament activant -@rusernamed{Autommatic note splitting,Divisió automàtica de les notes}. +@ruser{Divisió automàtica de les notes}. @seealso Referència de la notació: @@ -1094,7 +1098,7 @@ les notes. @menu * Clau:: * Armadura de la tonalitat:: -* Claudàtors d'octava:: +* Indicadors d'octava:: * Transposició dels instruments:: * Alteracions accidentals automàtiques:: * Tessitura:: @@ -1165,14 +1169,14 @@ Les claus especials, com les utilitzades a la música @rusernamed{Gregorian clefs,Claus del cant gregorià}. La música que requereix claus de tabulatura s'estudia a @rusernamed{Default tablatures,Tabulatures predeterminades} i a -@rusernamed{Costum tablatures,Tabulatures personalizadas}. +@rusernamed{Custom tablatures,Tabulatures personalizadas}. @cindex Claus de guia @cindex Claus amb notes guia Per fer servir claus a les notes guia, vegeu les ordres @code{\cueClef} i @code{\cueDuringWithClef} a -@rusernamed{Formatting cue notes,Formatació de les notes guia} +@ref{Format de les notes guia}. @cindex transpositores, claus @cindex clau transpositora @@ -1205,7 +1209,7 @@ c'2 c' @end lilypond Es pot obtenir una indicació d'octava opcional envoltant -l'argument numèric entre parèntesi o claudàtors rectes: +l'argument numèric entre parèntesis o claudàtors: @lilypond[verbatim,quote,fragment] \clef "treble_(8)" @@ -1218,7 +1222,7 @@ Les altures s'imprimeixen com si l'argument numèric no tingués els parèntesis o claudàtors. De forma predeterminada, un canvi de clau que es produeix en un -salt de línia provoca que el símbo de clau nou s'imprimeixi al +salt de línia provoca que el símbol de clau nou s'imprimeixi al final de la línia anterior, com una clau @emph{de cortesia}, així com al principi del següent. Aquesta clau @emph{de cortesia} es pot suprimir. @@ -1281,8 +1285,8 @@ Referencia de la notación: @rusernamed{Mensural clefs,Claus de la música mensural}, @rusernamed{Gregorian clefs,Claus del cant gregorià}, @rusernamed{Default tablatures,Tabulatures predeterminades} -@rusernamed{Costum tablatures,Tabulatures personalizadas}. -@rusernamed{Formatting cue notes,Formatació de les notes guia}. +@rusernamed{Custom tablatures,Tabulatures personalizadas}. +@ref{Format de les notes guia}. Fitxers instal·lats: @file{scm/parser-clef.scm}. @@ -1328,7 +1332,7 @@ les notes són el codi d'entrada en brut; l'armadura i la clau determinen de quina forma es presenta aquest codi en brut. Una nota sense alteració com@tie{}@code{c} significa @q{Do natural}, sense que l'afectin l'armadura o la clau. Per veure més -informació, consulteu @rlearning{Altures y armadures}.} +informació, consulteu @rlearning{Alteracions accidentals i armadures}.} L'armadura indica la tonalitat en la qual es toca una peça. Està denotada per un conjunt d'alteracions (bemolls o sostinguts) al @@ -1427,7 +1431,7 @@ Glossari musical: @rglos{scordatura}. Manual de aprenentatge: -@rlearning{Altures i armadures}. +@rlearning{Alteracions accidentals i armadures}. Fragments de codi: @rlsr{Pitches}. @@ -1441,8 +1445,8 @@ Referència de funcionament interno: @rinternals{key-signature-interface}. -@node Claudàtors d'octava -@unnumberedsubsubsec Claudàtors d'octava +@node Indicadors d'octava +@unnumberedsubsubsec Indicadors d'octava @translationof Ottava brackets @cindex ottava @@ -1453,7 +1457,7 @@ Referència de funcionament interno: @funindex set-octavation @funindex \ottava -Els @notation{claudàtors d'Ottava} introdueixen un transport +Els @notation{indicadors d'octava} introdueixen un transport addicional d'una octava per al pentagrama. @lilypond[verbatim,quote] @@ -1514,7 +1518,7 @@ certes partes es poden gravar en un to diferent del tonalitat del @notation{instrumento transpositor}; si no es fa així, la sortida MIDI i les notes guia a altres parts produiran altures incorrectes. Per veure més informació sobre parts citades -com a guia, consulteu @rusernamed{Quoting other voices,Cites d'altres veus}. +com a guia, consulteu @ref{Cites a altres veus}. @example \transposition @var{pitch} @@ -1597,7 +1601,7 @@ Glossari musical: @rglos{transposing instrument}. Referència de la notació: -@rusernamed{Quoting other voices,Cites d'altres veus}, +@ref{Cites a altres veus}, @ref{Transposició}. Fragments de codi: diff --git a/Documentation/ca/notation/repeats.itely b/Documentation/ca/notation/repeats.itely new file mode 100644 index 0000000000..1096296890 --- /dev/null +++ b/Documentation/ca/notation/repeats.itely @@ -0,0 +1,910 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ca -*- +@ignore + Translation of GIT committish: c4a960d0461ee5ecd87cd46692ec11682b8969b0 + + 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 \version "2.19.21" + +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + +@node Repeticions +@section Repeticions +@translationof Repeats + +@lilypondfile[quote]{repeats-headword.ly} + +La repetició és un concepte fonamental a la música, i hi ha +diversos tipus de notació per a les repeticions. El LilyPond dóna +suport als següents tipus de repetició: + +@table @code +@item volta (primera i segona vegada) +La repetició de la músic no s'imprimeix de forma desenvolupada, +sinó que s'indica envoltant-la entre barres de repetició. Si el +salt de la repetició es troba al començament de la peça, la barra +de repetició sols s'imprimeix al final del fragment. +S'imprimeixen una sèrie de finals alternatius (volta) d'esquerra a +dreta indicats mitjançant claus. Aquesta és la notació +estàndard per a les repeticions amb finals alternatius. + +@item unfold (desplegada) +La música repetida s'escriu i s'interpreta completament tantes +vegades com especifiqueu el valor +@code{@var{nombre_de_repeticions}}. És útil quan s'està escrivint +música repetitiva. + +@item percent (percentatge) +Fer repeticions de compassos o part d'ells. Tenen un aspecte +semblant a un signe de percentatge. Les repeticions de +percentatge s'han de declarar dins d'un context @code{Voice}. + +@item tremolo (trèmol) +Fer barres de trèmol. + +@end table + + +@menu +* Repeticions llargues:: +* Repeticions curtes:: +@end menu + +@node Repeticions llargues +@subsection Repeticions llargues +@translationof Long repeats + +Aquesta secció tracta sobre la forma d'introduir repeticions +llargues, normalment de diversos compassos. Les repeticions +adopten dues formes: repeticions envoltades entre signes de +repetició, o repeticions explícites, que s'usen per escriure +música repetitiva. També es poden controlar manualment els signes +de repetició. + +@menu +* Repeticions normals:: +* Marques de repetició manual:: +* Repeticions explícites:: +@end menu + +@cindex repeticions normals +@cindex repetició amb finals alternatius +@cindex finals alternatius +@cindex volta +@cindex prima volta +@cindex primera i segona vegada +@cindex seconda volta +@cindex volta, prima +@cindex volta, seconda +@funindex \repeat +@funindex \alternative +@funindex \partial + +@node Repeticions normals +@unnumberedsubsubsec Repeticions normals +@translationof Normal repeats + +La sintaxi d'una repetició normal és + +@example +\repeat volta @var{nombre_de_repeticions} @var{expressió_musical} +@end example + +@noindent +on @code{@var{expressió_musical}} és una expressió musical. + +Una repetició simple sense finals alternatius: + +@lilypond[verbatim,quote] +\relative { + \repeat volta 2 { c''4 d e f } + c2 d + \repeat volta 2 { d4 e f g } +} +@end lilypond + +De forma predeterminada no s'imprimeixen les dobles barres +d'obertura de repetició al primer compàs complet. Malgrat això és +possible imprimir-les usant @code{\bar ".|:"} abans de la primera nota. + +@lilypond[verbatim,fragment,quote] +\relative { + \repeat volta 2 { \bar ".|:" c''4 d e f } + c2 d + \repeat volta 2 { d4 e f g } +} +@end lilypond + +Els finals alternatius (celes de primera i segona vegada) es +poden generar utilitzant @code{\alternative}. Cada grup +d'alternatives ha d'estar envoltat pel seu compte entre claus. + +@example +\repeat volta @var{nombre_de_repeticions} @var{expressió_musical} +\alternative @{ + @{ @var{expressió_musical} @} +@} +@end example + +@noindent +on @code{@var{expressió_musical}} és una expressió musical. + +Si hi ha més repeticions que finals alternatius, s'assigna el +primer final alternatiu a les repeticions més antigues. + +Repetició única amb primera i segona vegada: + +@lilypond[verbatim,quote] +\relative { + \repeat volta 2 { c''4 d e f | } + \alternative { + { c2 e | } + { f2 g | } + } + c1 +} +@end lilypond + +Diverses repeticions amb primera i segona vegada: + +@lilypond[verbatim,quote] +\relative { + \repeat volta 4 { c''4 d e f | } + \alternative { + { c2 e | } + { f2 g | } + } + c1 +} +@end lilypond + +Més d'una repetició amb més d'un final alternatiu: + +@lilypond[verbatim,quote] +\relative { + \repeat volta 3 { c''4 d e f | } + \alternative { + { c2 e | } + { f2 g | } + { a2 g | } + } + c1 +} +@end lilypond + +@warning{Si hi ha dos o més alternatives, no ha d'aparèixer res +entre la clau de tancament d'una i la d'obertura de l'altra +dins d'un bloc @code{@bs{}alternative}, atès que en cas contrari +no obtindrem el nombre de finals esperat.} + +@warning{Si incloem @code{@bs{}relative} dins d'un +@code{@bs{}repeat} sense instancia el context @code{Voice} +explícitament, apareixeran pentagrames addicionals no desitjats. +Vegeu @rprogram{Apareix un pentagrama de més}.} + +@cindex repetició con anacrusa +@cindex anacrusa en repeticions +@funindex \partial +@cindex comprovació de compàs amb repeticions +@cindex repetició amb comprovacions de compàs + +Si una repetició sense celes de primera i segona vegada comença +en mig d'un compàs, normalment acaba en el lloc corresponent a +meitat d'un altre compàs posterior (de tal forma que els dos sumen +un compàs complet). En aquest cas, els símbols de repetició no +són @q{veritables} línies divisòries, per la qual cosa no s'han +d'escriure en aquest lloc comprovacions de compàs ni ordres +@code{\partial}: + +@lilypond[verbatim,quote,relative=1] +c'4 e g +\repeat volta 4 { + e4 | + c2 e | + g4 g g +} + g4 | + a2 a | + g1 | +@end lilypond + +Si una repetició que no té celes de primera i segona vegada +comença amb un compàs parcial, aleshores s'aplica el mateix +principi, excepte que es requereix una ordre @code{\partial} +al començament del compàs: + +@lilypond[verbatim,quote,relative=1] +\partial 4 +\repeat volta 4 { + e'4 | + c2 e | + g4 g g +} + g4 | + a2 a | + g1 | +@end lilypond + +@cindex repeticions, amb lligadures +@cindex primera i segona vegada, amb lligadures +@cindex lligadures, a repeticions +@cindex lligadures, a primera i segona vegada +@funindex \repeatTie + +Es poden afegir lligadures d'unió al segon final: + +@lilypond[verbatim,quote] +\relative { + c''1 + \repeat volta 2 { c4 d e f~ } + \alternative { + { f2 d } + { f2\repeatTie f, } + } +} +@end lilypond + +@funindex \inStaffSegno +@cindex repeticions, amb segno +@cindex segno, amb repeticions + +L'ordre @code{\inStaffSegno} es pot utilitzar per generar una +barra de compàs combinada que incorpora el símbol del segno junt +amb la barra de repetició, quan s'usa amb la instrucció +@code{\repeat volta}. Se selecciona automàticament el tipus +correcte de línia divisòria de repetició, ja sigui de començament +o fi de repetició, o de doble repetició. Observeu que la +indicació @qq{D.S.} corresponent s'ha d'afegir manualment. + +Sortida d'una repetició: + +@lilypond[verbatim,quote] +\relative { + e'1 + \inStaffSegno + f2 g a b + c1_"D.S." \bar "|." +} +@end lilypond + +Al començament d'una repetició: + +@lilypond[verbatim,quote] +\relative { + e'1 + \repeat volta 2 { + \inStaffSegno % inicia repetició + f2 g a b + } + c1_"D.S." \bar "|." +} +@end lilypond + +Al final de una repetición: + +@lilypond[verbatim,quote] +\relative { + e'1 + \repeat volta 2 { + f2 g a b + \inStaffSegno % finalitza repetició + } + f2 g a b + c1_"D.S." \bar "|." +} +@end lilypond + +Entre dues repeticions: + +@lilypond[verbatim,quote] +\relative { + e'1 + \repeat volta 2 { + f2 g a b + } + \inStaffSegno % doble repetició + \repeat volta 2 { + f2 g a b + } + c1_"D.S." \bar "|." +} +@end lilypond + +Es poden obtenir símbols de línia divisòria alternatius mitjançant +l'establiment (en el context Score) de les propietats +@code{segnoType}, @code{startRepeatSegnoType}, +@code{endRepeatSegnoType} o @code{doubleRepeatSegnoType} al tipus +de línia requerit. Els tipus de línia divisòria alternatius s'han +de seleccionar a partir dels tipus predefinits o de tipus definits +anteriorment amb la instrucció @code{\defineBarLine} +(vegeu @ref{Barres de compàs}). + +@lilypond[verbatim,quote] +\defineBarLine ":|.S[" #'(":|." "S[" "") +\defineBarLine "]" #'("]" "" "") +\relative { + e'1 + \repeat volta 2 { + f2 g a b + \once \set Score.endRepeatSegnoType = ":|.S[" + \inStaffSegno + } + f2 g \bar "]" a b + c1_"D.S." \bar "|." +} +@end lilypond + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{shortening-volta-brackets.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{adding-volta-brackets-to-additional-staves.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{setting-the-double-repeat-default-for-volte.ly} + +@cindex repeticions, lletres i números de compàs +@cindex repeticions, números de compàs de primer i segona vegada + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{alternative-bar-numbering.ly} + +@seealso +Glossari musical: +@rglos{repeat}, +@rglos{volta}. + +Referència de la notació: +@ref{Barres de compàs}, +@rusernamed{Modifying context plug-ins,Modificació dels complements (plug-ins) de context}, +@rusernamed{Modifying ties and slurs,Modificació de lligadures d'unió i d'expressió}, +@ref{Gestió del temps}. + +Fitxers instal·lats: +@file{ly/engraver-init.ly}. + +Fragments de codi: +@rlsr{Repeats}. + +Referència de funcionament intern: +@rinternals{VoltaBracket}, +@rinternals{RepeatedMusic}, +@rinternals{VoltaRepeatedMusic}, +@rinternals{UnfoldedRepeatedMusic}. + +@knownissues +@cindex repetició ambigua +@cindex niuada, repetició +@cindex repetició niuada +@cindex repetició, comptador de temps de la +@cindex repetició i números de compàs +@cindex números de compàs i repeticions +@cindex temps, repeticions i comptador de +@cindex compàs, repeticions i números de +@cindex repeticions i lligadura d'expressió +@cindex lligadures d'expressió i repeticions +@cindex glissandi i repeticions +@cindex repeticions i glissandi + +Les lligadures d'expressió que abasten des d'un bloc +@code{\repeat} fins un bloc @code{\alternative} sols funcionen +per a la cela de primera vegada. L'aparença visual d'una +lligadura d'expressió que es continua introduint a d'altres +celes de repetició pot simular-se amb @code{\repeatTie} si la +lligadura s'estén fins una sola nota dins de la cela de +repetició, tot i que aquest mètode no funciona a @code{TabStaff}. +D'altres mètodes que poden servir per indicar lligadures que es +continuen per sobre de diverses notes a les celes de repetició, +i que també funcionen en contextos de tabulatura @code{TabStaff}, +s'expliquen a +@rusernamed{Modifying ties and slurs,Modificació de lligadures d'unió i d'expressió}. + +Així mateix, no és possible fer que les lligadures d'expressió es +repleguin des del final d'una alternativa fins el començament de +la repetició. + +Els glissandos que s'estenen des d'un bloc @code{\repeat} fins un bloc +@code{\alternative} sols funcionen per a la cela de primera +vegada. Es pot indicar l'aparença visual d'un glissando que es +continua fin l'interior d'altres celes de repetició mitjançant +la codificació d'un glissando que comença a una nota d'adorn +oculta. Per veure un exemple, consulteu +@qq{Extensió dels glissandos sobre les repeticions} sota l'epígraf +Fragments de codi seleccionats, a @ref{Glissando}. + +Si una repetició que comença amb un compàs incomplet té un bloc +@code{\alternative} que conté modificacions a la propietat +@code{measureLength}, la utilització de @code{\unfoldRepeats} +donarà lloc a línies divisòries erròniament col·locades i +advertiments de comprovació de compàs. + +Una repetició niuada com + +@example +\repeat @dots{} +\repeat @dots{} +\alternative +@end example + +@noindent +és ambigua perquè no està clar a quin @code{\repeat} pertany la +@code{\alternative}. Aquesta ambigüitat es resol fent que la +@code{\alternative} pertanyi sempre a la @code{\repeat} més +interna. Per més claredat, es recomana usar claus en aquestes +situacions. + +@node Marques de repetició manual +@unnumberedsubsubsec Marques de repetició manual +@translationof Manual repeat marks + + +@cindex manual, marca de repetició +@cindex repetició manual +@cindex començament de repetició +@cindex repetició, començament de +@cindex final de repetició +@cindex repetició, final de +@cindex repetició, canviar número de +@cindex repetició, canviar finals alternatius +@cindex clau de primera i segona vegada +@funindex repeatCommands +@funindex start-repeat + +@warning{Aquests mètodes sols s'utilitzen per realitzar +construccions de repetició poc usuals. A gairebé totes les +situacions s'han de crear les repeticions utilitzant l'ordre +estàndard @code{@bs{}repeat} o imprimint les barres de compàs +corresponents. Per veure més informació, consulteu +@ref{Barres de compàs}.} + +Es pot usar la propietat @code{repeatCommands} per controlar la +disposició de les repeticions. El seu valor és una llista de +l'Scheme d'ordres de repetició. + +@table @code +@item start-repeat +Impressió d'una barra de compàs @code{.|:} + +@lilypond[verbatim,quote] +\relative { + c''1 + \set Score.repeatCommands = #'(start-repeat) + d4 e f g + c1 +} +@end lilypond + +A la pràctica habitual del gravat no s'imprimeixen signes de +repetició al principi de la peça. + +@item @code{end-repeat} +Impressió d'una barra de compàs @code{:|.} + +@lilypond[verbatim,quote] +\relative { + c''1 + d4 e f g + \set Score.repeatCommands = #'(end-repeat) + c1 +} +@end lilypond + +@item (volta @var{number}) @dots{} (volta #f) +Creació d'una nova cela de repetició amb el número que +s'especifica. El parèntesi de vegada s'ha de finalitzar de forma +explícita, en cas contrari no s'imprimeix. + +@lilypond[verbatim,quote] +\relative { + f''4 g a b + \set Score.repeatCommands = #'((volta "2")) + g4 a g a + \set Score.repeatCommands = #'((volta #f)) + c1 +} +@end lilypond + +@end table + +Es poden produir diverses ordres de repetició amb el mateix punt: + +@lilypond[verbatim,quote] +\relative { + f''4 g a b + \set Score.repeatCommands = #'((volta "2, 5") end-repeat) + g4 a g a + c1 + \set Score.repeatCommands = #'((volta #f) (volta "95") end-repeat) + b1 + \set Score.repeatCommands = #'((volta #f)) +} +@end lilypond + +@cindex parèntesi de cela de repetició de text +@cindex text a cela de repetició + +Es pot incloure text dins de la cela de primera i segona vegada. +El text pot ser un número o números, o un element de marcatge, +vegeu @rusernamed{Formatting text,Format del text}. La forma +més fàcil d'usar text de marcatge és definir el marcatge +prèviament, i després incloure'l dins d'una llista de l'Scheme. + +@lilypond[verbatim,quote] +voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } +\relative { + c''1 + \set Score.repeatCommands = + #(list(list 'volta voltaAdLib) 'start-repeat) + c4 b d e + \set Score.repeatCommands = #'((volta #f) (volta "4.") end-repeat) + f1 + \set Score.repeatCommands = #'((volta #f)) +} +@end lilypond + + +@seealso +Referència de la notació: +@ref{Barres de compàs}, +@rusernamed{Formatting text,Format del text}. + +Fragments de codi: +@rlsr{Repeats}. + +Referència de funcionament intern: +@rinternals{VoltaBracket}, +@rinternals{RepeatedMusic}, +@rinternals{VoltaRepeatedMusic}. + + +@node Repeticions explícites +@unnumberedsubsubsec Repeticions explícites +@translationof Written-out repeats + +@cindex explícites, repeticions +@cindex repeticions explícites +@cindex repeticions desplegades +@cindex repeticions alternatives +@cindex primera i segona vegada, repeticions +@cindex repeticions amb primera i segona vegada +@cindex desplegar repetició +@cindex repeticions desplegades amb finals alternatius +@cindex música desplegada amb finals alternatius +@cindex alternatius, finals, a repeticions explícites +@funindex unfold + +Mitjançant la utilització de l'ordre @code{unfold} es poden usar +les repeticions per simplificar l'escriptura desplegada de música +repetitiva. La sintaxi és: + +@example +\repeat unfold @var{número_de_repeticions} @var{expressió_musical} +@end example + +@noindent +donde @code{@var{expressió_musical}} és una musical i +@code{@var{nombre_de_repeticions}} és el nombre de vegades que +@code{@var{expressió_musical}} es repeteix. + +@lilypond[verbatim,quote] +\relative { + \repeat unfold 2 { c''4 d e f } + c1 +} +@end lilypond + +En certs casos, especialment dins d'un context +@code{\relative}, la funció @code{\repeat unfold} no és +exactament igual que escriure l'expressió musical diverses +vegades. Per exemple: + +@example +\repeat unfold 2 @{ a'4 b c @} +@end example + +no equival a + +@example +a'4 b c | a'4 b c +@end example + +Es poden fer repeticions desplegades amb finals alternatius. + +@lilypond[verbatim,quote] +\relative { + \repeat unfold 2 { c''4 d e f } + \alternative { + { c2 g' } + { c,2 b } + } + c1 +} +@end lilypond + +Si hi ha repeticions amb finals alternatius, el primer final +alternatiu s'aplica les vegades que calguin fins que les +alternatives restants completen el nombre total de repeticions. + +@lilypond[verbatim,quote] +\relative { + \repeat unfold 4 { c''4 d e f } + \alternative { + { c2 g' } + { c,2 b } + { e2 d } + } + c1 +} +@end lilypond + +Si hi ha més finals alternatius que repeticions, s'apliquen sols +els primers finals alternatius. Les alternatives restants +s'ignoren i no s'imprimeixen. + +@lilypond[verbatim,quote] +\relative { + \repeat unfold 2 { c''4 d e f } + \alternative { + { c2 g' } + { c,2 b } + { e2 d } + } + c1 +} +@end lilypond + +És possible també niuar diverses funcions @code{unfold} (amb +finals alternatius o sense ells). + +@lilypond[verbatim,quote] +\relative { + \repeat unfold 2 { + \repeat unfold 2 { c''4 d e f } + \alternative { + { c2 g' } + { c,2 b } + } + } + c1 +} +@end lilypond + +Les construccions d'acord es poden repetir mitjançant el símbol de +repetició d'acords @code{q}. Vegeu +@ref{Repetició d'acords}. + +@warning{Si poseu @code{@bs{}relative} dins d'un bloc +@code{@bs{}repeat} sense instanciar explícitament el context +@code{Voice}, apareixeran pentagrames no desitjats. Vegeu +@rprogram{Apareix un pentagrama de més}.} + +@seealso +Referència de la notació: +@ref{Repetició d'acords}. + +Fragments de codi: +@rlsr{Repeats}. + +Referència de funcionament intern: +@rinternals{RepeatedMusic}, +@rinternals{UnfoldedRepeatedMusic}. + + +@node Repeticions curtes +@subsection Repeticions curtes +@translationof Short repeats + +Aquesta secció tracta de com introduir repeticions curtes. Les +repeticions curtes poden adoptar dues formes: barres inclinades o +signes de percentatge si estem representant repeticions d'una sola +nota, un compàs o dos compassos, i trèmols en cas contrari. + +@menu +* Repeticions de compàs o part d'ells:: +* Repeticions de trèmol:: +@end menu + +@node Repeticions de compàs o part d'ells +@unnumberedsubsubsec Repeticions de compàs o part d'ells +@translationof Percent repeats + +@cindex percentatge, repetició de +@cindex compàs, repetició de +@cindex repetició de percentatge +@cindex repetició de compàs +@cindex repetició curta +@funindex \repeat percent +@funindex percent + +Els patrons curts que es repeteixen s'imprimeixen d'un sol cop, i +el patró repetit se substitueix per un símbol especial. + +La sintaxi és: + +@example +\repeat percent @var{número} @var{expressió_musical} +@end example + +@noindent +on @code{@var{expressió_musical}} és una expressió musical. + +Els patrons més curts que un compàs se substitueixen per barres +inclinades. + +@lilypond[verbatim,quote] +\relative c'' { + \repeat percent 4 { c128 d e f } + \repeat percent 4 { c64 d e f } + \repeat percent 5 { c32 d e f } + \repeat percent 4 { c16 d e f } + \repeat percent 4 { c8 d } + \repeat percent 4 { c4 } + \repeat percent 2 { c2 } +} +@end lilypond + +Els patrons de repetició d'un o dos compassos se substitueixen per +signes semblants al símbol de percentatge. + +@lilypond[verbatim,quote] +\relative c'' { + \repeat percent 2 { c4 d e f } + \repeat percent 2 { c2 d } + \repeat percent 2 { c1 } +} +@end lilypond + +@lilypond[verbatim,quote] +\relative { + \repeat percent 3 { c''4 d e f | c2 g' } +} +@end lilypond + +Els patrons més curts que un compàs però que contenen duracions +barrejades utilitzen un símbol de percentatge doble. + +@lilypond[verbatim,quote] +\relative { + \repeat percent 4 { c''8. 16 } + \repeat percent 2 { \tuplet 3/2 { r8 c d } e4 } +} +@end lilypond + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{percent-repeat-counter.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{percent-repeat-count-visibility.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{isolated-percent-repeats.ly} + +@seealso +Glossari musical: +@rglos{percent repeat}, +@rglos{simile}. + +Fragments de codi: +@rlsr{Repeats}. + +Referència de funcionament intern: +@rinternals{RepeatSlash}, +@rinternals{RepeatSlashEvent}, +@rinternals{DoubleRepeatSlash}, +@rinternals{PercentRepeat}, +@rinternals{PercentRepeatCounter}, +@rinternals{PercentRepeatedMusic}, +@rinternals{Percent_repeat_engraver}, +@rinternals{DoublePercentEvent}, +@rinternals{DoublePercentRepeat}, +@rinternals{DoublePercentRepeatCounter}, +@rinternals{Double_percent_repeat_engraver}, +@rinternals{Slash_repeat_engraver}. + +@knownissues +Les repeticions de percentatge no contenen res més a part del +propi signe de percentatge; especialment, els canvis d'indicació +de compàs no es repeteixen. + +@lilypond[quote,verbatim,relative=2] +\repeat percent 3 { \time 5/4 c2. 2 \time 4/4 2 2 } +@end lilypond + +@noindent +Qualsevol canvi de compàs o ordre @code{\partial} s'ha de produir +en passatges paral·lels @emph{fora} de la repetició de +percentatge, per exemple en una pista especial per a la gestió del +compàs. + +@lilypond[quote,verbatim,relative=2] +<< + \repeat percent 3 { c2. 2 2 2 } + \repeat unfold 3 { \time 5/4 s4*5 \time 4/4 s1 } +>> +@end lilypond + + +@node Repeticions de trèmol +@unnumberedsubsubsec Repeticions de trèmol +@translationof Tremolo repeats + +@cindex trèmol +@cindex barres de trèmol +@cindex repetició de trèmol +@funindex \repeat tremolo +@funindex tremolo + +Els trèmols poden adoptar dues formes: alternança entre dos +acords o dues notes, i repetició ràpida d'una sola nota o acord. +Els trèmols que consisteixen en una alternança s'indiquen per +mitjà de l'addició de barres entres les notes o acords que +s'alternen, mentre que els trèmols que consisteixen en la +repetició ràpida d'una sola nota s'indiquen mitjançant l'addició +de barres creuades a una nota única. + +Per col·locar marques de trèmol entre les notes, useu +@code{\repeat} amb l'estil @code{tremolo} (trèmol): + +@lilypond[quote,verbatim] +\relative c'' { + \repeat tremolo 8 { c16 d } + \repeat tremolo 6 { c16 d } + \repeat tremolo 2 { c16 d } +} +@end lilypond + +La sintaxi de @code{\repeat tremolo} espera que s'escriguin +exactament dues notes dins de les claus, i el nombre de +repeticions s'ha de correspondre amb un valor que es pugui +expressar amb figures normals o amb puntet. Així, @code{\repeat +tremolo 7} és vàlida i produeix una nota amb doble puntet, però +@code{\repeat tremolo 9} no és vàlid. + +La duració del trèmol és igual a la duració de l'expressió entre +claus, multiplicada pel número de repeticions: +@code{\repeat tremolo 8 @{ c16 d16 @}} dóna com a resultat un +trèmol de rodona, escrit com dues rodones unides per barres de trèmol. + +Hi ha dues maneres de col·locar marques de trèmol sobre una única +nota. Fins i tot aquí es pot utilitzar la sintaxi @code{\repeat +tremolo}, i en aquest cas la nota no ha d'anar envoltada entre claus: + +@lilypond[quote,verbatim,ragged-right] +\repeat tremolo 4 c'16 +@end lilypond + +@cindex trèmol, indicacions de +@funindex : + +El mateix resultat es pot obtenir escrivint @code{:@var{N}} +després d'una nota, on @code{@var{N}} indica la duració de la +subdivisió (ha de ser 8 com a mínim). Si @code{@var{N}} és 8, +s'afegeix una barra de corxera a la plica de la nota. Si +@code{@var{N}} s'omet, s'utilitza l'últim valor: + +@lilypond[quote,verbatim] +\relative { + c''2:8 c:32 + c: c: +} +@end lilypond + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{cross-staff-tremolos.ly} + +@seealso +Fragments de codi: +@rlsr{Repeats}. + +@cindex trèmols de pentagrama creuat +@cindex pentagrama creuat, trèmol de diff --git a/Documentation/ca/notation/rhythms.itely b/Documentation/ca/notation/rhythms.itely new file mode 100644 index 0000000000..ef2f00b9c2 --- /dev/null +++ b/Documentation/ca/notation/rhythms.itely @@ -0,0 +1,3871 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ca -*- +@ignore + Translation of GIT committish: 3ecc98aa5db8a47adcf9defc4ec9fc018c5cc47d + + 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 \version "2.19.40" + +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + +@node Duracions +@section Duracions +@translationof Rhythms + +@lilypondfile[quote]{rhythms-headword.ly} + +Aquesta secció tracta dels ritmes, els silencis, les duracions, les barres +i els compassos. + +@menu +* Escriptura de les duracions (valors rítmics):: +* Escriptura dels silencis:: +* Impressió de les duracions:: +* Barres:: +* Compassos:: +* Temes especials de ritme:: +@end menu + + +@node Escriptura de les duracions (valors rítmics) +@subsection Escriptura de les duracions (valors rítmics) +@translationof Writing rhythms + +@menu +* Duració de les notes:: +* Grups especials:: +* Escalat de les duracions:: +* Lligadures d'unió:: +@end menu + +@node Duració de les notes +@unnumberedsubsubsec Duració de les notes +@translationof Durations + +@cindex duració de les notes +@cindex notes, duració de +@cindex longitud de las notes +@cindex notes, longitud de + +@funindex \longa +@funindex \breve +@funindex \maxima + +Les duracions es designen mitjançant nombres i punts. Les +duracions s'introdueixen en relació als seus valores recíproc +respecte de la rodona. Per exemple, una negra s'escriu usant un +@code{4} (atès que és 1/4 de rodona), mentre que una blanca +s'escriu amb un @code{2} (per ser 1/2 de rodona). Per a notes +majors de la rodona s'han d'usar les instruccions @code{\longa} +(que és una breu doble) i @code{\breve}. Es poden especificar +duracions tan curtes com la garrapatea (amb el número 128). Es +poden fer valors més curts, però sols com a notes unides per una +barra. +@c Two 64th notes are needed to obtain beams +@lilypond[quote,verbatim] +\relative { + \time 8/1 + c''\longa c\breve c1 c2 + c4 c8 c16 c32 c64 c128 c128 +} +@end lilypond + +Aquí es poden veure les mateixes duracions amb el barrat automàtic +desactivat. + +@c not strictly "writing rhythms"; more of a "displaying" thing, +@c but it's ok here. -gp +@lilypond[quote,verbatim] +\relative { + \time 8/1 + \autoBeamOff + c''\longa c\breve c1 c2 + c4 c8 c16 c32 c64 c128 c128 +} +@end lilypond + +Es pot escriure una nota amb la duració d'una quàdruple breu +mitjançant @code{\maxima}, però això es permet sols dins de la +notació musical antiga. Per veure més detalls, consulteu +@rusernamed{Ancient notation, Notació antiga}. + +@cindex duració predeterminada +@cindex predeterminada, duració de la nota +@cindex nota, duració predeterminada + +Si la duració s'omet, el seu valor serà el de la duració de la +nota anterior. Per omissió, el valor de la primera nota és el +d'una negra. + +@lilypond[quote,verbatim] +\relative { a' a a2 a a4 a a1 a } +@end lilypond + +Les duracions aïllades a una seqüència musical agafen l'altura de +la nota o acord anterior. + +@lilypond[quote,verbatim] +\relative { + \time 8/1 + c'' \longa \breve 1 2 + 4 8 16 32 64 128 128 +} +@end lilypond + +@cindex notes, amb puntet +@cindex puntet, notes amb +@cindex notes, amb doble puntet +@cindex doble puntet, notes amb + +@funindex . + +Per obtenir duracions de notes amb puntet, escriviu un punt +(@code{.}) després del numero. Les notes amb doble puntet +s'especifiquen escrivint dos punts, i així successivament. + +@lilypond[quote,verbatim] +\relative { a'4 b c4. b8 a4. b4.. c8. } +@end lilypond + +Certes duracions no es poden representar sols amb duracions +binaries i puntets; l'única forma de representar-les és lligat dos +o més notes. Per veure més detalls, consulteu @ref{Lligadures +d'unió}. + +Per veure de quina manera es poden especificar les duracions de +les síl·labes de la lletra i com alinear la lletra a les notes, +consulteu @rusernamed{Vocal music,Música vocal}. + +De forma opcional es poden espaiar les notes de forma estrictament +proporcional a les seves duracions. Per veure més detalls sobre +aquest ajust i altres ajustos que controlen la notació +proporciona, consulteu @rusernamed{Proportional notation,Notació +proporcional}. + +@funindex \dotsUp +@funindex \dotsDown +@funindex \dotsNeutral + +Normalment els puntets es desplacen cap amunt per evitar les +línies del pentagrama, excepte en situacions de polifonia. Es +poden situar els puntets manualment a sobre o a sota de les línies +de la pauta; vegeu @rusernamed{Direction and placement,Direcció i +col·locació}. + +@predefined +@code{\autoBeamOn}, +@code{\autoBeamOff}, +@code{\dotsUp}, +@code{\dotsDown}, +@code{\dotsNeutral}. +@endpredefined + + +@snippets + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{alternative-breve-notes.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{changing-the-number-of-augmentation-dots-per-note.ly} + +@seealso +Glossari musical: +@rglos{breve}, +@rglos{longa}, +@rglos{maxima}, +@rglos{note value}, +@rglos{Duration names notes and rests}. + +Referència de la notació: +@ref{Barres automàtiques}, +@ref{Lligadures d'unió}, +@rusernamed{Stems,Pliques}, +@ref{Escriptura de les duracions (valors rítmics)}, +@ref{Escriptura dels silencis}, +@rusernamed{Vocal music,Música vocal}, +@rusernamed{Ancient notation,Notació antiga}, +@rusernamed{Proportional notation,Notació proporcional}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{Dots}, +@rinternals{DotColumn}. + +@knownissues +@c Deliberately duplicated in Durations and Rests. -gp +No hi ha un límit fonamental per a les duracions dels silencis +(tant per al més llarg com per al més curt), però el nombre dels +glifs és limitat; sols es poden imprimir des del silenci de +garrapatea (128) fins el de màxima (8 rodones). + +@node Grups especials +@unnumberedsubsubsec Grups especials +@translationof Tuplets + +@cindex grups especials +@cindex tresets + +@funindex \tuplet + +Els grups especials s'obtenen a partir d'una expressió musical amb +la instrucció @code{\tuplet}, multiplicant la rapidesa de +l'expressió musical per una fracció: + +@example +\tuplet @var{fracció} @{ @var{música} @} +@end example + +@noindent +El numerador de la fracció s'imprimeix a sobre o a sota de les +notes, opcionalment amb una clau. El grup especial més comú +és el treset, en el qual 3@tie{}notes tenen el valor que +normalment tenen@tie{}2: + +@lilypond[quote,verbatim] +\relative { + a'2 \tuplet 3/2 { b4 4 4 } + c4 c \tuplet 3/2 { b4 a g } +} +@end lilypond + +@cindex agrupació de grups especials +@noindent +Si s'estan escrivint passatges amb molts grups de valoració +especial, resulta fastigós haver d'escriure una ordre +@code{\tuplet} diferent per a cada grup. És possible especificar +la duració d'un conjunt de grups directament abans de la música +perquè així s'agrupin automàticament: + +@lilypond[quote,verbatim] +\relative { + g'2 r8 \tuplet 3/2 8 { cis16 d e e f g g f e } +} +@end lilypond + +@cindex grups de valoració especial, col·locació de la clau + +@funindex \tupletUp +@funindex \tupletDown +@funindex \tupletNeutral + +Es poden col·locar manualment les claus de treset a sobre o a +sota de la pauta: + +@lilypond[quote,verbatim] +\relative { + \tupletUp \tuplet 3/2 { c''8 d e } + \tupletNeutral \tuplet 3/2 { c8 d e } + \tupletDown \tuplet 3/2 { f,8 g a } + \tupletNeutral \tuplet 3/2 { f8 g a } +} +@end lilypond + +Els grups poden niuar-se uns a dins dels altres: + +@lilypond[quote,verbatim] +\relative { + \autoBeamOff + c''4 \tuplet 5/4 { f8 e f \tuplet 3/2 { e[ f g] } } f4 +} +@end lilypond + +La modificació dels grups especials niuats que comencen al mateix +instant musical s'han de fer amb @code{\tweak}. + +Per modificar la duració de les notes sense imprimir una +de grup especial, vegeu + +@predefined +@code{\tupletUp}, +@code{\tupletDown}, +@code{\tupletNeutral}. +@endpredefined + +@snippets +@cindex grups especials, format de +@cindex tresets, format de + +@funindex tupletNumberFormatFunction +@funindex tupletSpannerDuration + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{entering-several-tuplets-using-only-one--tuplet-command.ly} + +@cindex grups de valoració especial, modificació del nombre + +@funindex TupletNumber + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{changing-the-tuplet-number.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{non-default-tuplet-numbers.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{controlling-tuplet-bracket-visibility.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{permitting-line-breaks-within-beamed-tuplets.ly} + +@seealso +Glossari musical: +@rglos{triplet}, +@rglos{tuplet}, +@rglos{polymetric}. + +Manual de aprenentatge: +@rlearning{Mètodes d'ajustament}. + +Referència de la notació: +@rusernamed{Direction and placement,Direcció i posició}, +@ref{Gestió del temps}, +@ref{Escalat de les duracions}, +@rusernamed{The tweak command,L'ordre tweak}, +@ref{Notació polimètrica}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{TupletBracket}, +@rinternals{TupletNumber}, +@rinternals{TimeScaledMusic}. + + +@node Escalat de les duracions +@unnumberedsubsubsec Escalat de les duracions +@translationof Scaling durations + +@cindex escalat de les duracions +@cindex duracions, escalat de + +La duració de les figures, silencis o acords es pot multiplicar +per un factor @code{N/M} afegint @code{*N/M} (o @code{*N} si +@code{M} és 1) a la duració. Aixo no afectarà a l'aparença de les +notes o silencis que es produeixen, però la duració alterada +s'usarà per calcular la posició dins del compàs i per establir la +duració en la sortida MIDI. Els factors de multiplicació es poden +combinar en la forma @code{*L*M/N}. Els factors són part de la +duració: si no especifiquem una duració per a les notes següents, +la duració per omissió que s'agafa de la nota anterior inclourà +qualsevol factor d'escala que s'hagi aplicat. + +Al següent exemple les tres primeres notes duren exactament dues +parts, però no s'imprimeix cap clau de treset. + +@lilypond[quote,verbatim] +\relative { + \time 2/4 + % Altera les duracions a tresets + a'4*2/3 gis a + % Duracions normals + a4 a + % Duplica la duració de l'acord + 4*2 + % Duració de negra, sembla de corxera + b16*4 c4 +} +@end lilypond + +La duració dels silencis espaiadors també es pot modificar +mitjançant un multiplicador. Això és útil per saltar molts +compassos, com per exemple @code{s1*23}. + +@cindex compressió de música +@cindex expansió de música + +@funindex \scaleDurations + +De la mateixa forma, es poden comprimir per una fracció trossos de +música més llargs, com si cada nota, acord o silenci tingués la +fracció com a multiplicador.. Això deixarà intacte l'aparença de +la @emph{música}, però la duració interna de les notes es +multiplicarà per la fracció +@emph{numerador}/@emph{denominador}. Vet aquí un exemple que +mostra com es pot comprimir i expandir la música: + +@lilypond[quote,verbatim] +\relative { + \time 2/4 + % Duracions normals + 4 c8 a + % Escala la música per *2/3 + \scaleDurations 2/3 { + 4. c8 a f + } + % Escala la música per *2 + \scaleDurations 2/1 { + 4 c8 b + } +} +@end lilypond + +Una aplicació d'aquesta ordre es troba a la notació polimètrica, +vegeu @ref{Notació polimètrica}. + +@seealso +Referència de la notació: +@ref{Grups especials}, +@ref{Silencis invisibles}, +@ref{Notació polimètrica}. + +Fragments de codi: +@rlsr{Rhythms}. + +@knownissues +El càlcul de la posició dins d'un compàs ha de tenir en compte +tots els factors d'escalat que s'han aplicat a les notes dins +d'aquest compàs, i qualsevol arrossegament fraccionat des dels +compassos anteriors. Aquest càlcul s'efectua utilitzant nombres +racionals. Si un numerador o denominador intermedi en aquest +procés de càlcul sobrepassa la quantitat de 2^30, la execució i el +gravat es detindran a aquest punt sense indicar cap error. + +@node Lligadures d'unió +@unnumberedsubsubsec Lligadures d'unió +@translationof Ties + +@cindex lligadura d'unió + +@funindex ~ + +Un lligadura d'unió connecta dues notes adjacents de la mateixa +altura. La lligadura de fet estén la longitud d'una nota. + +@warning{No s'han de confondre's les lligadures d'unió amb les +@emph{lligadures d'expressió}, que indiquen articulació, ni amb +les @emph{lligadures de fraseig}, que indiquen el fraseig musical. +Una lligadura d'unió és tan sols na manera d'estendre la duració +d'una nota, quelcom semblant al que fa el puntet.} + +S'introdueix una lligadura d'unió escrivint el símbol de la titlla +corba (@code{~}) després de la primera de cada parella de notes +que es volen unir. Això indica que la nota s'uneix a la següent, +que ha de tenir la mateixa altura. + +@lilypond[quote,verbatim] +{ a'2~ 4~ 16 r r8 } +@end lilypond + +Les lligadures d'unió poden fer ús de la interpretació +@q{última altura explícita} per a les duracions aïllades: + +@lilypond[quote,verbatim] +{ a'2~ 4~ 16 r r8 } +@end lilypond + +Es fan servir lligadures d'unió o bé quan la nota travessa la +barra de compàs o bé quan no es poden usar puntets per denotar el +ritme. També s'han d'usar lligadures quan les notes travessen +subdivisions del compàs de major duració: + +@c KEEP LY +@lilypond[verbatim,quote] +\relative { + r8^"sí" c'~ 2 r4 | + r8^"no" c2~ 8 r4 +} +@end lilypond + +Si ens calen lligar moltes notes a través de les línies +divisòries, ens podria resultar més fàcil utilitzar la divisió +automàtica de les notes, vegeu +@ref{Divisió automàtica de les notes}. +Aquest mecanisme divideix automàticament les notes +llargues i les lliga a través de les barres de compàs. + +@cindex lligadures i acords +@cindex acords i lligadures + +Quan s'aplica una lligadura d'unió a un acord, es connecten tots +els caps de les notes les altures de les quals coincideixen. Si +no coincideix cap parell de caps, no es crea cap lligadura. Els +acords es poden lligar parcialment col·locant les lligadures dins +de l'acord. + +@lilypond[quote,verbatim] +\relative c' { + 2~ 2 | + 4~ + | +} +@end lilypond + +@cindex repetició, lligadures d'unió en +@cindex lligadures d'unió, repeticions i +@cindex primera i segona vegada, claus i lligadures en +@cindex lligadures d'unió i claus de primera i segona vegada + +@funindex \repeatTie + +Quan la segona vegada d'una repetició comença amb una nota +lligada, cal especificar la lligadura repetida com segueix: + +@lilypond[quote,verbatim] +\relative { + \repeat volta 2 { c'' g 2~ } + \alternative { + % Primera alternativa: la nota següent es lliga normalment + { 2. r4 } + % Segona alternativa: la nota següent té una lligadura repetida + { 2\repeatTie d4 c } + } +} +@end lilypond + +@cindex laissez vibrer +@cindex lligadures laissez vibrer + +@funindex \laissezVibrer + +Les lligadures @notation{L.v.} (@notation{laissez vibrer}, deixar +vibrar) indiquen que les notes no es poden apagar al final. +S'usen en la notació per a piano, arpa i altres instruments de +corda i percussió. Es poden introduir de la manera següent: + +@lilypond[quote,verbatim,fragment] +1\laissezVibrer +@end lilypond + +@cindex lligadures, col·locació + +@funindex \tieUp +@funindex \tieDown +@funindex \tieNeutral + +És possible fer manualment que les lligadures d'unió es corbin cap +amunt o cap avall; vegeu @rusernamed{Direction and +placement,Direcció i posició}. + +@cindex lligadures, aparença +@cindex lligadures de punts +@cindex lligadures discontínues +@cindex discontínues, lligadures +@cindex punts, lligadures de + +@funindex \tieDotted +@funindex \tieDashed +@funindex \tieSolid + +Es pot fer que les lligadures d'expressió siguin discontínues, +puntejades o un combinació de contínues i discontínues. + +@lilypond[quote, verbatim] +\relative c' { + \tieDotted + c2~ 2 + \tieDashed + c2~ 2 + \tieHalfDashed + c2~ 2 + \tieHalfSolid + c2~ 2 + \tieSolid + c2~ 2 +} +@end lilypond + +Es poden especific patrons de discontinuïtat personalitzats: + +@lilypond[quote, verbatim] +\relative c' { + \tieDashPattern #0.3 #0.75 + c2~ 2 + \tieDashPattern #0.7 #1.5 + c2~ 2 + \tieSolid + c2~ 2 +} +@end lilypond + +Les definicions de patrons de discontinuïtat per a les lligadures +d'unió tenen la mateixa estructura que les definicions de patrons +de discontinuïtat per a les lligadures d'expressió. Per veure més +informació sobre els patrons de discontinuïtat complexos, +consulteu els fragments de codi sota @ref{Lligadures d'expressió}. + +Sobreescriviu les propietats de disposició @var{whiteout} i +@var{layer} dels objectes que poden causar una discontinuïtat en +les lligadures d'unió. + +@lilypond[verbatim,quote,ragged-right] +\relative { + \override Tie.layer = #-2 + \override Staff.TimeSignature.layer = #-1 + \override Staff.KeySignature.layer = #-1 + \override Staff.TimeSignature.whiteout = ##t + \override Staff.KeySignature.whiteout = ##t + b'2 b~ + \time 3/4 + \key a \major + b r4 +} +@end lilypond + +@predefined +@code{\tieUp}, +@code{\tieDown}, +@code{\tieNeutral}, +@code{\tieDotted}, +@code{\tieDashed}, +@code{\tieDashPattern}, +@code{\tieHalfDashed}, +@code{\tieHalfSolid}, +@code{\tieSolid}. +@endpredefined + +@snippets + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{using-ties-with-arpeggios.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{engraving-ties-manually.ly} + +@seealso +Glossari musical: +@rglos{tie}, +@rglos{laissez vibrer}. + +Referència de la notació: +@ref{Lligadures d'expressió}, +@ref{Divisió automàtica de les notes}. + +Fragments de codi: +@rlsr{slurs}, +@rlsr{Rhythms}. + +Referència de funcionament interno: +@rinternals{LaissezVibrerTie}, +@rinternals{LaissezVibrerTieColumn}, +@rinternals{TieColumn}, +@rinternals{Tie}. + +@knownissues +Un canvi de pentagrama quan hi ha una lligadura activa no produirà +una lligadura inclinada. + +Els canvis de clau o d'octava durant una lligadura d'unió no estan +ben definits realment. En aquests casos pot ser preferible una +lligadura d'expressió. + +@node Escriptura dels silencis +@subsection Escriptura dels silencis +@translationof Writing rests + +Els silencis s'escriuen com a part de la música dins de les +expressions musicals. + +@menu +* Silencis:: +* Silencis invisibles:: +* Silencis de compàs complet:: +@end menu + +@node Silencis +@unnumberedsubsubsec Silencis +@translationof Rests + +@cindex silenci +@cindex silencis, indicació de les duracions +@cindex maxima, silenci de +@cindex longa, silenci de +@cindex breve, silenci de + +@funindex \rest +@funindex r +@funindex \maxima +@funindex \longa +@funindex \breve + +Els silencis s'introdueixen com a notes amb el nom @code{r}. Les +duracions majors que la rodona utilitzen les instruccions +predefinides que es mostren aquí: + +@c \time 16/1 is used to avoid spurious bar lines +@c and long tracts of empty measures +@lilypond[quote,verbatim] +\new Staff { + % Aquestes dues línies sols son per embellir aquest exemple + \time 16/1 + \omit Staff.TimeSignature + % Imprimeix un silenci de maxima, igual a quatre breves + r\maxima + % Imprimeix un silenci de longa, igual a dos breves + r\longa + % Imprimeix un silenci de breve + r\breve + r1 r2 r4 r8 r16 r32 r64 r128 +} +@end lilypond + +@cindex silencis multicompàs +@cindex silencis de compàs completo + +Els silencis d'un compàs, centrats en mig del compàs, s'han de fer +amb silencis multicompàs. Es poden usar per un sol compàs així +com per a molts compassos, i s'estudien a +@ref{Silencis de compàs complet}. + +@cindex silenci, especificació de la posició vertical + +Per especificar explícitament la posició vertical d'un silenci, +escriviu una nota seguida de @code{\rest}. Es col·locarà un +silenci en la posició en la qual hauria d'aparèixer la nota. Això +possibilita l'aplicació manual precisa de format a la música +polifònica, ja que el gravador automàtic de col·lisions de +silencis no mou aquests silencis. + +@lilypond[quote,verbatim] +\relative { a'4\rest d4\rest } +@end lilypond + +@snippets + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{rest-styles.ly} + +@seealso +Glossari musical: +@rglos{breve}, +@rglos{longa}, +@rglos{maxima}. + +Referència de la notació: +@ref{Silencis de compàs complet}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referencia de funcionament interno: +@rinternals{Rest}. + +@knownissues +@c Deliberately duplicated in Durations and Rests. -gp +No hi ha un límit fonamental respecte de les duracions dels +silencis (tant per al més curt com per al més llarg), però el +nombre de glifs és limitat: hi ha silencis des de la garrapatea +(128) fins la màxima (8 rodones). + +@node Silencis invisibles +@unnumberedsubsubsec Silencis invisibles +@translationof Invisible rests + +@cindex desplaçament +@cindex silenci invisible +@cindex invisible, silenci +@cindex nota d'espaiat +@cindex silenci de separació + +@funindex s +@funindex \skip + +Un silenci invisible (també conegut com @q{skip} o desplaçament) +es pot introduir com una nota amb el nom@tie{}@code{s}: + +@lilypond[verbatim,quote] +\relative c'' { + c4 c s c | + s2 c | +} +@end lilypond + +@cindex lletra, desplaçament de + +Els silencis de separació sols estan disponible en el mode de +notes i en el mode d'acords. En altres situacions, per exemple, +quan s'introdueix la lletra, s'usa l'ordre @code{\skip} per +produir un desplaçament d'una certa magnitud temporal. +@code{\skip} requereix una duració explícita, però s'ignora si les +síl·labes de la lletra agafen les seves duracions de les notes +d'una melodia associada, a través de @code{\addlyrics} o de +@code{\lyricsto}. + +@lilypond[quote,verbatim] +<< + { + a'2 \skip2 a'2 a'2 + } + \new Lyrics { + \lyricmode { + foo2 \skip 1 bla2 + } + } +>> +@end lilypond + +Atès que @code{\skip} es una ordre, no afecta a les duracions per +omissió de les notes següents, a diferència de@tie{}@code{s}. + +@lilypond[quote,verbatim] +<< + { + \repeat unfold 8 { a'4 } + } + { + a'4 \skip 2 a' | + s2 a' + } +>> +@end lilypond + +Un silenci de separació produeix implícitament contextos +@code{Staff} i @code{Voice} si no hi ha cap, igual que les notes i +els silencis normals: + +@lilypond[quote,verbatim] +{ s1 s s } +@end lilypond + +@code{\skip} tan sols desplaça un temps musical; no produeix cap +sortida, de cap classe. + +@lilypond[quote,verbatim] +% Això és entrada valida, però no fa res +{ \skip 1 \skip1 \skip 1 } +@end lilypond + +@seealso +Manual de aprenentatge: +@rlearning{Visibilitat i color dels objectes}. + +Referència de la notació: +@rusernamed{Hidden notes,Notes ocultes}, +@rusernamed{Visibility of objects,Visibilitat dels objectes}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{SkipMusic}. + + +@node Silencis de compàs complet +@unnumberedsubsubsec Silencis de compas complet +@translationof Full measure rests + +@cindex multicompàs, silencis +@cindex compàs complet, silencis de +@cindex silencis multicompàs +@cindex silencis de compàs completo +@cindex rodona, silencis de, per a un compàs complet +@cindex silencis de rodona per a un compàs complet + +@funindex \compressMMRests +@funindex R + +Els silencis d'un o més compassos complets s'introdueixen com a +notes amb el nom @code{R} en majúscula: + +@lilypond[quote,verbatim] +% Compassos de silencis contrets a un compàs únic +\compressMMRests { + R1*4 + R1*24 + R1*4 + b'2^"Tutti" b'4 a'4 +} +@end lilypond + +La duració dels silencis de compàs complet és idèntica a la +notació de la duració que s'usa per a les notes. La duració d'un +silenci multicompàs ha de ser sempre un nombre enter de +compassos, per la qual cosa freqüentment s'han d'utilitzar puntets +o fraccions: + +@lilypond[quote,verbatim] +\compressMMRests { + \time 2/4 + R1 | R2 | + \time 3/4 + R2. | R2.*2 | + \time 13/8 + R1*13/8 | R1*13/8*12 | + \time 10/8 + R4*5*4 | +} +@end lilypond + +Un silenci d'un compàs complet s'imprimeix com un silenci de +rodona o de breve, centrat en el compàs, segons el tipus de compàs +vigent. + +@lilypond[quote,verbatim,fragment] +\time 4/4 +R1 | +\time 6/4 +R1*3/2 | +\time 8/4 +R1*2 | +@end lilypond + +@cindex multicompàs, silencis, expansió de +@cindex multicompàs, silencis, contracció de + +De forma predeterminada un silenci multicompàs s'expandeix en la +partitura impresa per mostrar explícitament tots els compassos de +silenci. De forma alternativa, un silenci multicompàs es pot +presentar com un sols compàs que conté un símbol de silenci +multicompàs, amb el nombre de compassos imprès sobre el compàs: + +@lilypond[quote,verbatim,fragment] +% Default behavior +\time 3/4 r2. | R2.*2 | +\time 2/4 R2 | +\time 4/4 +% Rest measures contracted to single measure +\compressMMRests { + r1 | R1*17 | R1*4 | +} +% Rest measures expanded again +\time 3/4 +R2.*2 | +@end lilypond + +@cindex text sobre un silenci multicompàs +@cindex multicompàs, silenci, adjuntar text +@cindex inscripció sobre un silenci multicompàs +@cindex multicompàs, silencis, inscripció en +@cindex calderó sobre un silenci multicompàs +@cindex multicompàs, silenci, aplicar un calderó a +@cindex marcatge sobre silencis multicompàs +@cindex multicompàs, silenci, amb marcatges + +@funindex \fermataMarkup +@funindex MultiMeasureRestText + +Es poden afegir elements de marcatge als silencis multicompàs. Es +proporciona l'ordre predefinida @code{\fermataMarkup} per afegir +calderons. + +@lilypond[quote,verbatim] +\compressMMRests { + \time 3/4 + R2.*10^\markup { \italic "ad lib." } + R2.^\fermataMarkup +} +@end lilypond + +@warning{Els elements de marcatge que s'afegeixen a un silenci +multicompàs són objectes del tipus @code{MultiMeasureRestText}, no +@code{TextScript}. Les sobreescriptures de propietats han d'anar +dirigides cap a l'objecte correcte, o s'ignoraran. Vegeu +l'exemple següent:} + +@lilypond[quote,verbatim,fragment] +% Això no funciona, atès que s'especifica el nom incorrecte d'objecte +\override TextScript.padding = #5 +R1^"wrong" +% Aquest és el nom d'objecte correcte que s'ha d'especificar +\override MultiMeasureRestText.padding = #5 +R1^"right" +@end lilypond + +Quan un silenci multicompàs segueix immediatament a l'establiment +d'un compàs parcial amb @code{\partial}, és possible que no es +mostrin els advertiments corresponents de comprovació de compàs. + +@funindex \textLengthOn +@funindex \textLengthOff +@funindex \fermataMarkup +@funindex \compressMMRests + +@predefined +@code{\textLengthOn}, +@code{\textLengthOff}, +@code{\fermataMarkup}, +@code{\compressMMRests}. +@endpredefined + + +@snippets +@cindex eclesiàstics, silencis +@cindex silencis eclesiàstics +@cindex kirchenpausen + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{changing-form-of-multi-measure-rests.ly} + +@cindex multicompàs, posicionament dels silencis +@cindex col·locació dels silencis multicompàs + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{positioning-multi-measure-rests.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{multi-measure-rest-markup.ly} + +@seealso +Glossari musical: +@rglos{multi-measure rest}. + +Referència de la notació: +@ref{Duracions}, +@rusernamed{Text,Text}, +@rusernamed{Formatting text,Donar format al text}, +@rusernamed{Text scripts,Scripts de text}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{MultiMeasureRest}, +@rinternals{MultiMeasureRestNumber}, +@rinternals{MultiMeasureRestText}. + +@cindex digitacions i silencis multicompàs +@cindex multicompàs, silencis, digitacions i + +@knownissues +En les digitacions a sobre silencis multicompàs +(per exemple, @code{R1*10-4}), la xifra de la digitació pot xocar +amb el número del compàs. + +@cindex condensat de silencis +@cindex silenci normal, condensar + +No hi ha cap manera de condensar automàticament molts silencis en +un sols silenci multicompàs. + +@cindex silenci, col·lisions de + +Els silencis multicompàs no estan involucrats en les col·lisiones +de silencis. + +@node Impressió de les duracions +@subsection Impressió de les duracions +@translationof Displaying rhythms + +@menu +* Indicació de compàs:: +* Indicacions metronòmiques:: +* Anacrusis:: +* Música sense compassos:: +* Notació polimètrica:: +* Divisió automàtica de les notes:: +* Mostrar els ritmes de la melodia:: +@end menu + +@node Indicació de compàs +@unnumberedsubsubsec Indicació de compàs +@translationof Time signature + +@cindex Indicació de compàs +@cindex compàs + +@funindex \time + +La indicació de compàs s'estableix como segueix: + +@lilypond[quote,verbatim,fragment] +\time 2/4 c''2 +\time 3/4 c''2. +@end lilypond + +Se estudien els canvis d'indicació de compàs al mig d'un compàs a +@ref{Anacrusis}. + +@cindex compàs, visibilitat de la indicació de + +La indicació de compàs s'imprimeix al començament d'una peça i +sempre que hi hagi un canvi de compàs. Si es produeix un canvi al +final d'una línia, s'imprimeix una indicació d'advertiment a +aquest lloc. Es pot modificar aquest comportament predeterminat, vegeu +@rusernamed{Visibility of objects,Visibilitat dels objectes} + +@lilypond[quote,verbatim] +\relative c'' { + \time 2/4 + c2 c + \break + c c + \break + \time 4/4 + c c c c +} +@end lilypond + +@cindex compàs, estil de la indicació de +@cindex metre, estil de + +@funindex \numericTimeSignature +@funindex \defaultTimeSignature + +El símbol de compàs que s'usa 2/2 i 4/4 es pot canviar a un estil +numèric: + +@lilypond[quote,verbatim] +\relative c'' { + % Estil predeterminat + \time 4/4 c1 + \time 2/2 c1 + % Canvia a estil numèric + \numericTimeSignature + \time 4/4 c1 + \time 2/2 c1 + % Torna al estil predeterminat + \defaultTimeSignature + \time 4/4 c1 + \time 2/2 c1 +} +@end lilypond + +Les indicacions de compàs de la música mensural s'estudien a +@ref{Mensural time signatures,Indicacions de compàs de la música mensural}. + +@cindex compàs, indicació de, ajustos predeterminats +@cindex autobarrat, propietats per a indicacions de compàs +@cindex barrat, propietats predefinides per al compàs +@funindex \overrideTimeSignatureSettings + +A més d'ajustar la indicació de compàs que s'imprimeix, l'ordre +@code{\time} estableix els valors de les propietats basades en el +tipus de compàs @code{baseMoment}, @code{beatStructure} i +@code{beamExceptions}. Els valors predefinits d'aquestes +propietats estan a +@file{scm/time-signature-settings.scm}. + +El valor predeterminat de @code{beatStructure} pot sobreescriure's +dins de la pròpia ordre @code{\time} escrivint-lo com a primer +argument opcional: + +@lilypond[quote,verbatim] +\score { + \new Staff { + \relative { + \time 2,2,3 7/8 + \repeat unfold 7 { c'8 } | + \time 3,2,2 7/8 + \repeat unfold 7 { c8 } | + } + } +} +@end lilypond + +De forma alternativa, els valors predeterminats de totes aquestes +variables basades en la indicació de compàs, incloses +@code{baseMoment} i @code{beamExceptions}, es poden establir totes +a l'hora. Els valors es poden fixar independentment per a +diversos tipus de compàs diferents. Els nous valors tenen efecte +quan s'executa una ordre @code{\time} posterior amb el mateix +valor del tipus de compàs: + +@lilypond[quote,verbatim] +\score { + \new Staff { + \relative c' { + \overrideTimeSignatureSettings + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction + 3,1 % beatStructure + #'() % beamExceptions + \time 4/4 + \repeat unfold 8 { c8 } | + } + } +} +@end lilypond + +@code{\overrideTimeSignatureSettings} pren quatre arguments: + +@enumerate + +@item +@code{@var{timeSignatureFraction}}, una fracció que descriu el +tipus de compàs al que s'apliquen aquests valors. + +@item +@code{@var{baseMomentFraction}}, una fracció que conté el +numerador i denominador de la unitat de mesura bàsica d'aquest +tipus de compàs. + +@item +@code{@var{beatStructure}}, una llista d'Scheme que indica +l'estructura de les pulsacions del compàs, en unitats del moment +base. + +@item +@code{@var{beamExceptions}}, una llista-A que conté qualssevol +regles de barrat per al tipus de compàs que vagin més enllà +d'acabar de cada pulsació, com es descriu a @ref{Establir el +comportament de les barres automàtiques}. +@end enumerate + +@cindex compàs, propietats, restaurar els valors predeterminats +@cindex restaurar les propietats predeterminades del tipus de compàs +@funindex \revertTimeSignatureSettings + +Els valors modificats de les propietats predeterminades del tipus +de compàs es poden restaurar als valors originals: + +@lilypond[quote,verbatim] +\score{ + \relative { + \repeat unfold 8 { c'8 } | + \overrideTimeSignatureSettings + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction + 3,1 % beatStructure + #'() % beamExceptions + \time 4/4 + \repeat unfold 8 { c8 } | + \revertTimeSignatureSettings 4/4 + \time 4/4 + \repeat unfold 8 { c8 } | + } +} +@end lilypond + +Es poden establir diferents valors de les propietats +predeterminades del tipus de compàs per als diferents pentagrames +movent el @code{Timing_translator} i el +@code{Default_bar_line_engraver} del context @code{Score} al +context @code{Staff}. + +@lilypond[quote, verbatim] +\score { + \new StaffGroup << + \new Staff { + \overrideTimeSignatureSettings + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction + 3,1 % beatStructure + #'() % beamExceptions + \time 4/4 + \repeat unfold 8 {c''8} + } + \new Staff { + \overrideTimeSignatureSettings + 4/4 % timeSignatureFraction + 1/4 % baseMomentFraction + 1,3 % beatStructure + #'() % beamExceptions + \time 4/4 + \repeat unfold 8 {c''8} + } + >> + \layout { + \context { + \Score + \remove "Timing_translator" + \remove "Default_bar_line_engraver" + } + \context { + \Staff + \consists "Timing_translator" + \consists "Default_bar_line_engraver" + } + } +} +@end lilypond + +Un altre mètode per a canviar aquestes variables relacionades amb +el tipus de compàs, que impedeix la reimpressió de la indicació de +compàs en el moment del canvi, es mostra a +@ref{Establir el comportament de les barres automàtiques}. + +@predefined +@code{\numericTimeSignature}, +@code{\defaultTimeSignature}. +@endpredefined + + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly} + +@seealso +Glossari musical: +@rglos{time signature} + +Referència de la notació: +@rusernamed{Mensural time signatures,Indicacions de compàs de la música mensural}, +@ref{Establir el comportament de les barres automàtiques}, +@ref{Gestió del temps}. + +Fitxers instal·lats +@file{scm/time-signature-settings.scm}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{TimeSignature}, +@rinternals{Timing_translator}. + + +@node Indicacions metronòmiques +@unnumberedsubsubsec Indicacions metronòmiques +@translationof Metronome marks + +@cindex tempo +@cindex pulsacions por minut +@cindex metrònom, indicació de +@cindex metrònom, indicació de, amb text + +@funindex \tempo + +És molt senzill escriure una indicació metronòmica bàsica: + +@lilypond[verbatim,quote] +\relative { + \tempo 4 = 120 + c'2 d + e4. d8 c2 +} +@end lilypond + +També es poden imprimir indicacions metronòmiques com un interval +entre dos números: + +@lilypond[verbatim,quote] +\relative { + \tempo 4 = 40 - 46 + c'4. e8 a4 g + b,2 d4 r +} +@end lilypond + +Es poden usar indicacions de tempo amb text: + +@lilypond[verbatim,quote] +\relative { + \tempo "Allegretto" + c''4 e d c + b4. a16 b c4 r4 +} +@end lilypond + +La combinació d'una indicació metronòmica i un text fa que la +marca de metrònom es tanqui entre parèntesis automàticament: + +@lilypond[verbatim,quote] +\relative { + \tempo "Allegro" 4 = 160 + g'4 c d e + d4 b g2 +} +@end lilypond + +En general, el text pot ser qualsevol objecte de marcatge: + +@lilypond[verbatim,quote] +\relative { + \tempo \markup { \italic Faster } 4 = 132 + a'8-. r8 b-. r gis-. r a-. r +} +@end lilypond + +Es pot escriure una indicació metronòmica entre parèntesis sens +cap indicació textual, escrivint una cadena buida a l'entrada: + +@lilypond[verbatim,quote] +\relative { + \tempo "" 8 = 96 + d''4 g e c +} +@end lilypond + +@funindex \markLengthOn +@funindex \markLengthOff + +A una particel·la d'un instrument amb períodes de silenci llargs, +en ocasions es succeeixen molt a prop diferents indicacions de +tempo. L'ordre @code{\markLengthOn} aporta un espai horitzontal +addicional per evitar que les indicacions de temps se superposin, +i @code{\markLengthOff} restableix el comportament predeterminat +d'ignorar les indicacions de tempo per a l'espaiat horitzontal. + +@lilypond[verbatim,quote] +\compressMMRests { + \markLengthOn + \tempo "Molto vivace" + R1*12 + \tempo "Meno mosso" + R1*16 + \markLengthOff + \tempo "Tranquillo" + R1*20 +} +@end lilypond + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{printing-metronome-and-rehearsal-marks-below-the-staff.ly} + +@c perhaps also an example of how to move it horizontally? + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing-the-tempo-without-a-metronome-mark.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{creating-metronome-marks-in-markup-mode.ly} + +Para veure més detalls, consulteu @rusernamed{Formatting text,Donar format al text}. + +@seealso +Glossari musical: +@rglos{metronome}, +@rglos{metronomic indication}, +@rglos{tempo indication}, +@rglos{metronome mark}. + +Referència de la notació: +@rusernamed{Formatting text,Donar format al text}, +@rusernamed{Creating MIDI output,Creació de sortida MIDI}. + +Fragments de codi: +@rlsr{Staff notation}. + +Referència de funcionament intern:: +@rinternals{MetronomeMark}. + + +@node Anacrusis +@unnumberedsubsubsec Anacrusis +@translationof Upbeats + +@cindex anacrusis +@cindex part en començar +@cindex compàs parcial +@cindex parcial, compàs +@cindex compàs de anacrusis +@cindex compàs, indicació de, en mig de un compàs + +@funindex measurePosition +@funindex \partial + +Els compassos parcials com les @emph{anacrusis} o parts @emph{en +començar} s'escriuen usant l'ordre @code{\partial}: + +@example +\partial @var{duración} +@end example + +Quan s'usa @code{\partial} al principi de la partitura, +@code{@var{duració}} és el temps d'anacrusis, la longitud de la +música que precedeix al primer compàs. + +@lilypond[quote,verbatim] +\relative { + \time 3/4 + \partial 4. + r4 e'8 | a4 c8 b c4 | +} +@end lilypond + +Quan s'usa @code{\partial} després del començament de la +partitura, @code{@var{duració}} és la longitud @emph{restant} +del compàs actual. No crea un nou compàs amb numeració. + +@lilypond[quote,verbatim] +\relative { + \set Score.barNumberVisibility = #all-bar-numbers-visible + \override Score.BarNumber.break-visibility = + #end-of-line-invisible + \time 9/8 + d''4.~ 4 d8 d( c) b | c4.~ 4. \bar "||" + \time 12/8 + \partial 4. + c8( d) e | f2.~ 4 f8 a,( c) f | +} +@end lilypond + +L'ordre @code{\partial} és @emph{necessària} quan canvia la +indicació de compàs en mig d'un compàs, però també pot usar-se +sol. + +@lilypond[quote,verbatim] +\relative { + \set Score.barNumberVisibility = #all-bar-numbers-visible + \override Score.BarNumber.break-visibility = + #end-of-line-invisible + \time 6/8 + \partial 8 + e'8 | a4 c8 b[ c b] | + \partial 4 + r8 e,8 | a4 \bar "||" + \partial 4 + r8 e8 | a4 + c8 b[ c b] | +} +@end lilypond + +L'ordre @code{\partial} fixa la propietat +@code{Timing.measurePosition}, que és un nombre racional que +indica quant temps ha transcorregut dins del compàs actual. + +@seealso +Glossari musical: +@rglos{anacrusis}. + +Referència de la notació: +@ref{Notes d'adorn}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{Timing_translator}. + + +@node Música sense compassos +@unnumberedsubsubsec Música sense compassos +@translationof Unmetered music + +@cindex cadència +@cindex cadència, barres +@cindex cadència, alteracions +@cindex cadència, barres de compàs +@cindex cadència, números de compàs +@cindex música sense metre +@cindex música sense metre, barres +@cindex música sense metre, alteracions +@cindex música sense metre, barres de compàs +@cindex música sense metre, números de compàs +@cindex alteracions, cadències +@cindex alteracions, música sense metre +@cindex barres de compàs, música sense metre +@cindex números de compàs, cadències +@cindex números de compàs, música sense metre +@cindex barres, cadències +@cindex barres, música sense metre + +@funindex \cadenzaOn +@funindex \cadenzaOff + +En la música mesurada s'insereixen línies divisòries i es calculen +els números de compàs automàticament. A la música sense metre (és +a dir, cadències) això no és desitjable i es pot @q{desactivar} +usant l'ordre @code{\cadenzaOn}, per després @q{reactivar-lo} en +el lloc adequat usant @code{\cadenzaOff}. + +@lilypond[verbatim,quote] +\relative c'' { + c4 d e d + \cadenzaOn + c4 c d8[ d d] f4 g4. + \cadenzaOff + \bar "|" + d4 e d c +} +@end lilypond + +La numeració de compassos es continua al final de la cadència. + +@lilypond[verbatim,quote] +\relative c'' { + % Mostra tots els números de barra + \override Score.BarNumber.break-visibility = #all-visible + c4 d e d + \cadenzaOn + c4 c d8[ d d] f4 g4. + \cadenzaOff + \bar "|" + d4 e d c +} +@end lilypond + +En inserir una ordre @code{\bar} dins d'una cadència no s'inicia +un compàs nou, fins i tot que s'imprimeixi una línia divisòria. +Així doncs, les alteracions accidentals (l'efecte de les quals se +suposa que roman fins al final del compàs) seran vàlides encara +després de la línia divisòria que s'imprimeix per part de +@code{\bar}. Si es volen imprimir alteracions accidentals +posteriors tindran que inserir-se manualment alteracions forçades +o de cortesia, vegeu @ref{Alteracions accidentals}. + +@lilypond[verbatim,quote] +\relative c'' { + c4 d e d + \cadenzaOn + cis4 d cis d + \bar "|" + % El primer cis s'imprimeix sense alteració fins i tot si està després de un \bar + cis4 d cis! d + \cadenzaOff + \bar "|" +} +@end lilypond + +El barat automàtic es desactiva mitjançant @code{\cadenzaOn}. +Per tant, tot el barrat en les cadències s'ha d'introduir +manualment. Vegeu @ref{Barres manuals}. + +@lilypond[verbatim,quote] +\relative { + \repeat unfold 8 { c''8 } + \cadenzaOn + cis8 c c c c + \bar"|" + c8 c c + \cadenzaOff + \repeat unfold 8 { c8 } +} +@end lilypond + +Aquestes ordres predefinides afecten a totes les pautes de la +partitura, tot i que apareguin en un sol context @code{Voice}. +Per canviar això, traslladeu el @code{Timing_translator} del +context @code{Score} al context @code{Staff}, Vegeu +@ref{Notació polimètrica}. + +@predefined +@code{\cadenzaOn}, +@code{\cadenzaOff}. +@endpredefined + +@seealso +Glossari musical: +@rglos{cadenza}. + +Referència de la notació: +@rusernamed{Visibility of objects,Visibilitat dels objectes}, +@ref{Notació polimètrica}, +@ref{Barres manuals}, +@ref{Alteracions accidentals}. + +Fragments de codi: +@rlsr{Rhythms}. + +@cindex cadències, salts de línia en +@cindex cadències, salts de pàgina en +@cindex sense mesura, música, salts de línia en +@cindex sense mesura, música, salts de pàgina en +@cindex salts, en música sense mesura +@cindex salts de línia, cadències +@cindex salts de pàgina, cadències +@cindex salts de línia, música sense mesura +@cindex salts de pàgina, música sense mesura + +@knownissues +Sols s'insereixen salts de línia i de pàgina automàticament en les +línies divisòries, per la qual cosa cal inserir manualment línies +divisòries @q{invisibles} en fragments llargs de música sense +mesurar per permetre els salts: + +@example +\bar "" +@end example + + +@node Notació polimètrica +@unnumberedsubsubsec Notació polimètrica +@translationof Polymetric notation + +@c This section necessarily uses \set +@c This is acceptable -td + +@cindex compàs, doble +@cindex compassos polimètrics +@cindex polimètrics, compassos +@cindex metre polimètric +@cindex doble compàs + +@funindex timeSignatureFraction +@funindex \scaleDurations +@funindex \tuplet + +Està contemplada la notació polimètrica, ja sigui explícitament o +mitjançant la modificació manual de la indicació visible del +compàs i/o l'escalat de la duració de les notes. + +@subsubsubheading Pentagrames amb diferents indicacions de compàs i compassos d'igual longitud + +Establiu una indicació de copàs comuna per a cada pentagrama, i +fixeu @code{timeSignatureFraction} a la fracció desitjada. +Després useu la funció @code{\scaleDurations} per escalar les +duracions de les notes a cada pauta a la indicació de compàs comú. + +@cindex barres en música polimètrica +@cindex polimètric, metre, barres en + +Al següent exemple, s'usa en paral·lel música amb compassos de +3/4, 9/8 i 10/8. Al segon pentagrama, les duracions mostrades es +multipliquen per 2/3 (atès que 2/3 * 9/8 = 3/4), i en el tercer +pentagrama, les duracions que es mostren estan multiplicades per +3/5 (atès que 3/5 * 10/8 = 3/4). Amb freqüència haurà que inserir +les barres de forma manual, atès que l'escalat de les duracions +afecta a les regles de barrat automàtic. + +@lilypond[quote,verbatim] +\relative << + \new Staff { + \time 3/4 + c'4 c c | + c4 c c | + } + \new Staff { + \time 3/4 + \set Staff.timeSignatureFraction = 9/8 + \scaleDurations 2/3 + \repeat unfold 6 { c8[ c c] } + } + \new Staff { + \time 3/4 + \set Staff.timeSignatureFraction = 10/8 + \scaleDurations 3/5 { + \repeat unfold 2 { c8[ c c] } + \repeat unfold 2 { c8[ c] } | + c4. c \tuplet 3/2 { c8[ c c] } c4 + } + } +>> +@end lilypond + +@subsubsubheading Pentagrames amb diferents indicacions de compàs i longituds de compàs diferents + +Es pot donar a cada pentagrama la seva pròpia indicació de compàs +independent traslladant els gravadors @code{Timing_translator} +i @code{Default_bar_line_engraver} al context de @code{Staff}. + +@lilypond[quote,verbatim] +\layout { + \context { + \Score + \remove "Timing_translator" + \remove "Default_bar_line_engraver" + } + \context { + \Staff + \consists "Timing_translator" + \consists "Default_bar_line_engraver" + } +} + +% Ara cada pentagrama té la seva pròpia indicació de temps + +\relative << + \new Staff { + \time 3/4 + c'4 c c | + c4 c c | + } + \new Staff { + \time 2/4 + c4 c | + c4 c | + c4 c | + } + \new Staff { + \time 3/8 + c4. | + c8 c c | + c4. | + c8 c c | + } +>> +@end lilypond + +@funindex \compoundMeter +@cindex compost, indicacions de compàs +@cindex compàs compost, indicació de + +@subsubsubheading Indicacions de compàs compost + +Es creen usant la funció @code{\compoundMeter}. La sintaxi és: + +@example +\compoundMeter #'(llista de llistes) +@end example + +La construcció més simple és una llista única, en la qual +l'@emph{últim} número indica el denominador de la indicació de +compàs i les anteriors són els numeradors. + +@lilypond[quote,verbatim] +\relative { + \compoundMeter #'((2 2 2 8)) + \repeat unfold 6 c'8 \repeat unfold 12 c16 +} +@end lilypond + +Es poden construir compassos més complexos utilitzant llistes +addicionals. Així mateix, els ajustos de barrat s'ajustaran +depenent dels valors. + +@lilypond[quote,verbatim] +\relative { + \compoundMeter #'((1 4) (3 8)) + \repeat unfold 5 c'8 \repeat unfold 10 c16 +} + +\relative { + \compoundMeter #'((1 2 3 8) (3 4)) + \repeat unfold 12 c'8 +} +@end lilypond + +@seealso +Glossari musical: +@rglos{polymetric}, +@rglos{polymetric time signature}, +@rglos{meter}. + +Referència de la notació: +@ref{Barres automàtiques}, +@ref{Barres manuals}, +@ref{Indicació de compàs}, +@ref{Escalat de les duracions}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{TimeSignature}, +@rinternals{Timing_translator}, +@rinternals{Default_bar_line_engraver}, +@rinternals{Staff}. + +@knownissues +En usar diferents compassos en paral·lel, les notes que estiguin +en el mateix instant de temps es col·loquen en la mateixa posició +horitzontal. Tanmateix, les barres de compàs als diferents +pentagrames faran que l'espaiat de notes sigui menys regular en +cada pentagrama individual del que seria normal sense les +diferents indicacions de compàs. + + +@node Divisió automàtica de les notes +@unnumberedsubsubsec Divisió automàtica de les notes +@translationof Automatic note splitting + +@cindex notes, divisió de +@cindex divisió de notes +@cindex silencis, divisió de +@cindex divisió de silencis + +@funindex Note_heads_engraver +@funindex Completion_heads_engraver +@funindex Completion_rest_engraver + +Les notes llargues es poden convertir automàticament en notes +lligades. Es fa mitjançant la substitució de +@code{Note_heads_engraver} per +@code{Completion_heads_engraver}. De forma semblant, els silencis +llargs que sobrepassen línies de compàs es divideixen +automàticament substituint el gravador @code{Rest_engraver} amb el +gravador @code{Completion_rest_engraver}. A l'exemple següent, +les notes i els silencis que travessen la barra de compàs es +divideixen, i a més les notes s'uneixen mitjançant una lligadura. + +@lilypond[quote,verbatim] +\new Voice \with { + \remove "Note_heads_engraver" + \consists "Completion_heads_engraver" + \remove "Rest_engraver" + \consists "Completion_rest_engraver" +} +\relative { + c'2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 r1*2 +} +@end lilypond + +Aquests gravadors divideixen totes les notes i silencis llargs en +la barra de compàs, e insereix lligadures en les notes. Un dels +seus usos és depurar partitures complexes: si els compassos no +estan complets, les lligadures mostraran exactament quant li falta +a cada compàs. + +La propietat @code{completionUnit} fixa una duració preferida per +a les notes dividides. + +@lilypond[quote,verbatim] +\new Voice \with { + \remove "Note_heads_engraver" + \consists "Completion_heads_engraver" +} \relative { + \time 9/8 g\breve. d''4. \bar "||" + \set completionUnit = #(ly:make-moment 3 8) + g\breve. d4. +} +@end lilypond + +Aquests gravadors divideixen les notes que tenen la duració +escalada, com la dels tresets, en notes que tenen el mateix factor +d'escala que la nota original de l'entrada. + +@lilypond[quote,verbatim] +\new Voice \with { + \remove "Note_heads_engraver" + \consists "Completion_heads_engraver" +} \relative { + \time 2/4 r4 + \tuplet 3/2 {g'4 a b} + \scaleDurations 2/3 {g a b} + g4*2/3 a b + \tuplet 3/2 {g4 a b} + r4 +} +@end lilypond + +@seealso +Glossari musical: +@rglos{tie} + +Manual d'aprenentatge: +@rlearning{Explicació dels gravadors}, +@rlearning{Afegir i eliminar gravadors} + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{Note_heads_engraver}, +@rinternals{Completion_heads_engraver}, +@rinternals{Rest_engraver}, +@rinternals{Completion_rest_engraver}, +@rinternals{Forbid_line_break_engraver}. + +@knownissues +Per consistència amb el comportament anterior, les notes i +silencis que tenen un duració major d'un compàs, com +@code{c1*2}, es divideixen en notes sense cap factor d'escala, +@code{@{ c1 c1 @}}. La propietat @code{completionFactor} controla +aquest comportament, i en donar-li el valor @code{#f} podem fer +que les notes i silencis dividits tinguin el mateix factor +d'escala que les duracions de les notes originals de l'entrada. + +@node Mostrar els ritmes de la melodia +@unnumberedsubsubsec Mostrar els ritmes de la melodia +@translationof Showing melody rhythms + +@cindex melodia, mostrar las duracions +@cindex duracions de la melodia, mostrar + +En algunes ocasiones volem mostrar solament el ritme d'una +melodia. Això es pot fer amb un pentagrama de ritme. Totes les +altures de les notes es converteixen en barres inclinades, i el +pentagrama te una sola línia: + +@lilypond[quote,verbatim] +<< + \new RhythmicStaff { + \new Voice = "myRhythm" \relative { + \time 4/4 + c'4 e8 f g2 + r4 g g f + g1 + } + } + \new Lyrics { + \lyricsto "myRhythm" { + This is my song + I like to sing + } + } +>> +@end lilypond + +@cindex guitarra, taules d'acords +@cindex acompanyament, mostrar ritmes +@cindex guitarra, mostrar ritmes d'acompanyament + +@funindex Pitch_squash_engraver +@funindex \improvisationOn +@funindex \improvisationOff + +Les taules d'acords de guitarra ofereixen sovint els ritmes +d'acompanyament. Això es pot fer amb el gravador +@code{Pitch_squash_engraver} i @code{\improvisationOn}. + +@lilypond[quote,verbatim] +<< + \new ChordNames { + \chordmode { + c1 f g c + } + } + \new Voice \with { + \consists "Pitch_squash_engraver" + } \relative c'' { + \improvisationOn + c4 c8 c c4 c8 c + f4 f8 f f4 f8 f + g4 g8 g g4 g8 g + c4 c8 c c4 c8 c + } +>> +@end lilypond + + +@predefined +@code{\improvisationOn}, +@code{\improvisationOff}. +@endpredefined + + +@snippets + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{guitar-strum-rhythms.ly} + +@seealso +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{RhythmicStaff}, +@rinternals{Pitch_squash_engraver}. + + +@node Barres +@subsection Barres +@translationof Beams + +@menu +* Barres automàtiques:: +* Establir el comportament de les barres automàtiques:: +* Barres manuals:: +* Barres progressives:: +@end menu + +@node Barres automàtiques +@unnumberedsubsubsec Barres automàtiques +@translationof Automatic beams + +De manera predeterminada, las barres de corxera s'insereixen automàticament: + +@cindex barres manuals +@cindex manuals, barres +@cindex barres, regles personalitzades + +@funindex \autoBeamOn +@funindex \autoBeamOff + +@lilypond[quote,verbatim] +\relative c'' { + \time 2/4 c8 c c c + \time 6/8 c8 c c c8. c16 c8 +} +@end lilypond + +Quan aquestes decisions automàtiques no són prou bones, es poden +escriure els barrats de forma explícita; vegeu +@ref{Barres manuals}. Les barres @emph{s'han} d'introduir +manualment si es volen estendre per sobre els silencis. + +Si no cal el barrat automàtic, es pot desactivar amb +@code{\autoBeamOff} i activar-se amb @code{\autoBeamOn}: + +@lilypond[quote,verbatim] +\relative c' { + c4 c8 c8. c16 c8. c16 c8 + \autoBeamOff + c4 c8 c8. c16 c8. + \autoBeamOn + c16 c8 +} +@end lilypond + +@cindex melismes, barres en +@cindex barres i melismes + +@warning{Si s'usen barres per indicar els melismes de les cançons, +aleshores s'ha de desactivar el barrat automàtic amb +@code{@bs{}autoBeamOff} i indicar les barres manualment. La +utilització de @code{@bs{}partcombine} amb @code{@bs{}autoBeamOff} +pot produir resultats no desitjats. Vegeu els fragments de codi +per a més informació.} + +Es poden crear patrons de barrat que difereixin dels valors +automàtics predeterminats; vegeu +@ref{Establir el comportament de les barres automàtiques}. + +@predefined +@code{\autoBeamOff}, +@code{\autoBeamOn}. +@endpredefined + +@cindex barres en salts de línia +@cindex línia, barres en salts de +@cindex barres en angle +@cindex doblades, barres +@funindex breakable + +@snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{beams-across-line-breaks.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{changing-beam-knee-gap.ly} + +@cindex barras, \partcombine con \autoBeamOff +@cindex voces, \partcombine con \autoBeamOff + +@lilypondfile [verbatim, quote, ragged-right, texidoc, doctitle] +{partcombine-and-autobeamoff.ly} + +@seealso +Referència de la notació: +@ref{Barres manuals}, +@ref{Establir el comportament de les barres automàtiques}. + +Fitxers instal·lats: +@file{scm/auto-beam.scm}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament interno: +@rinternals{Auto_beam_engraver}, +@rinternals{Beam_engraver}, +@rinternals{Beam}, +@rinternals{BeamEvent}, +@rinternals{BeamForbidEvent}, +@rinternals{beam-interface}, +@rinternals{unbreakable-spanner-interface}. + +@knownissues +Les propietats d'una barra venen determinades al +@emph{començament} de la seva construcció i qualsevol canvi +addicional en les propietats de la barra que es produeixi abans +que la barra s'hagi completat no tindrà efecte fins que inicieu la +@emph{següent} barra nova. + + +@node Establir el comportament de les barres automàtiques +@unnumberedsubsubsec Establir el comportament de les barres automàtiques +@translationof Setting automatic beam behavior + +@cindex barres i lletra +@cindex lletra i barres + +@funindex autoBeaming +@funindex baseMoment +@funindex \beamExceptions +@funindex beatStructure +@funindex measureLength +@funindex \time +@funindex \set + +Quan està habilitat el barrat automàtic, la col·locació de les +barres automàtiques ve determinada per tres propietats de context: +@code{baseMoment}, @code{beatStructure} i @code{beamExceptions}. +Els valores predeterminats d'aquestes variables es poden +sobreescriure com es descriu més a baix, o de forma alternativa +els propis valors predeterminats es poden canviar com s'explica a +@ref{Indicació de compàs}. + +Si hi ha definida una regla de @code{beamExceptions} per al compàs +en curs, s'usa aquesta regla per determinar la col·locació de les +barres; s'ignoren els valores de @code{baseMoment} i +@code{beatStructure}. + +Si no hi ha definida cap regla de @code{beamExceptions} per al +tipus de compàs en curs, la col·locació de les barres està +determinada pels valors de @code{baseMoment} i +@code{beatStructure}. + +@subsubsubheading Barrat basat en @code{baseMoment} i @code{beatStructure} + +De forma predeterminada, les regles de @code{beamExceptions} estan +definides per als compassos més comuns, i les regles de +@code{beamExceptions} s'han de desactivar si pretenem que el +barrat automàtic estigui basat en @code{baseMoment} i +@code{beatStructure}. Les regles de @code{beamExceptions} es +desactiven mitjançant + +@example +\set Timing.beamExceptions = #'() +@end example + +Quan el valor de @code{beamExceptions} s'ha establert a +@code{#'()}, ja sigui degut a un ajust explícit o a causa que no +hi ha cap regla de @code{beamExceptions} definida internament per +al compàs actual, els punts finals de les barres estan en les +pulsacions segons vingui determinat per les propietats de context +@code{baseMoment} i @code{beatStructure}. +@code{beatStructure} és una llista d'Scheme que defineix la +longitud de cada pulsació dins del compàs en unitats de +@code{baseMoment}. De forma predeterminada, cada unitat de +longitud @code{baseMoment} és una única pulsació. + +Observeu que hi ha valors de @code{beatStructure} i de +@code{baseMoment} diferents per a cada indicació de compàs. Els +canvis que es fan a aquestes variables s'apliquen sols al tipus de +compàs vigent, per la qual cosa aquests canvis s'han d'escriure +després de l'ordre @code{\time} que dóna començament a una secció +nova amb un tipus de compàs diferent, no abans. Els valors nous +que es donen a una indicació de compàs concreta es retenen i es +tornen a aplicar quan aquest tipus de compàs torna a establir-se. + +@lilypond[quote,verbatim] +\relative c'' { + \time 5/16 + c16^"default" c c c c | + % beamExceptions no és probable que es defineixi per a un tempo 5/16 + % però els desactivarem igual per assegurar-nos + \set Timing.beamExceptions = #'() + \set Timing.beatStructure = 2,3 + c16^"(2+3)" c c c c | + \set Timing.beatStructure = 3,2 + c16^"(3+2)" c c c c | +} +@end lilypond + +@lilypond[quote,verbatim] +\relative { + \time 4/4 + a'8^"default" a a a a a a a + % Desactiva beamExceptions perquè sí que està + % definit per a un tempo 4/4 + \set Timing.beamExceptions = #'() + \set Timing.baseMoment = #(ly:make-moment 1/4) + \set Timing.beatStructure = 1,1,1,1 + a8^"changed" a a a a a a a +} +@end lilypond + +Els canvis als ajustament de barrat es poden limitar a contextos +específics. Si no s'inclou cap ajustament a un context de nivell +més baix, s'apliquen els ajustament del context que l'envolta. + +@lilypond[quote, verbatim] +\new Staff { + \time 7/8 + % No cal beamExceptions + % atès que no està definit per al tempo 7/8 + \set Staff.beatStructure = 2,3,2 + << + \new Voice = one { + \relative { + a'8 a a a a a a + } + } + \new Voice = two { + \relative { + \voiceTwo + \set Voice.beatStructure = 1,3,3 + f'8 f f f f f f + } + } + >> +} +@end lilypond + +En cas d'usar diverses veus, s'ha d'especificar el context +@code{Staff} si volem aplicar el barrat a totes les veus del +pentagrama: + +@lilypond[quote,verbatim,fragment] +\time 7/8 +% ritme 3-1-1-2 +% Canvi aplicat a Voice per defecte -- no funciona correctament +% A causa de veus autogenerades, totes les pulsacions estaran a +% baseMoment (1 . 8) +\set beatStructure = 3,1,1,2 +<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >> + +% Funciona correctament amb el context Staff especificat +\set Staff.beatStructure = 3,1,1,2 +<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >> +@end lilypond + +El valor de @code{baseMoment} es pot ajustar per canviar el +comportament de les barres, si es desitja. Quan es fa, el +valor de @code{beatStructure} s'ha de fixar de manera que sigui +compatible amb el nou valor de @code{baseMoment}. + +@lilypond[quote,verbatim,fragment] +\time 5/8 +% No cal desactivar beamExceptions +% atès que no està definit per al tempo 5/8 +\set Timing.baseMoment = #(ly:make-moment 1/16) +\set Timing.beatStructure = 7,3 +\repeat unfold 10 { a'16 } +@end lilypond + +@code{baseMoment} és un @i{moment}, una unitat de duració +musical. Es crea una quantitat del tipus @i{moment} per mitjà de +la funció d'Scheme @code{ly:make-moment}. Per veure més +informació sobre aquest funció, consulteu +@ref{Gestió del temps}. + +De forma predeterminada @code{baseMoment} està fixat a una unitat +més que el denominador del compàs. Totes les excepcions a aquest +valor predeterminat estan a +@file{scm/time-signature-settings.scm}. + +@subsubsubheading Barrat basat en @code{beamExceptions} + +Les regles d'autobarrat especials (diferents a acabar una barra +sobre una pulsació) estan definides a la propietat +@code{beamExceptions}. + +El valor de @code{beamExceptions}, que és una estructura de dades +força complexa, es genera fàcilment amb la funció +@code{\beamExceptions}. Aquesta funció rep un o més patrons +rítmics barrats manualment i amb un compàs de duració (els +compassos s'han de separar amb una barra de comprovació de +compàs@tie{}@code{|} perquè la funció no té cap altra manera +d'esbrinar la longitud del compàs). Vet aquí un exemple senzill: + +@lilypond[quote,verbatim] +\relative c'' { + \time 3/16 + \set Timing.beatStructure = 2,1 + \set Timing.beamExceptions = + \beamExceptions { 32[ 32] 32[ 32] 32[ 32] } + c16 c c | + \repeat unfold 6 { c32 } | +} +@end lilypond + +@warning{Un valor de @code{beamExceptions} ha de ser una llista +d'excepcions @emph{completa}. És a dir, tota excepció que s'hagi +d'aplicar ha d'estar inclosa a aquest ajustament. No és possible +afegir, eliminar o canviar sols una de les excepcions. Tot i que +això pot semblar fastigós, vol dir que no és necessari conèixer +els ajustaments de barrat actuals per poder especificar un patró +de barrat nou.} + +Quan canvia el compàs es fixen els valors predeterminats de +@code{Timing.baseMoment}, @code{Timing.beatStructure} i +@code{Timing.beamExceptions}. Un ajustament en el tipus de compàs +dóna com a resultat un reinici dels ajustaments de barrat +automàtic per al context @code{Timing} al comportament predeterminat. + +@lilypond[quote,verbatim] +\relative a' { + \time 6/8 + \repeat unfold 6 { a8 } + % grup (4 + 2) + \set Timing.beatStructure = 4,2 + \repeat unfold 6 { a8 } + % torna al comportament predeterminat + \time 6/8 + \repeat unfold 6 { a8 } +} +@end lilypond + +Els ajustament de barrat automàtic predeterminat per a un tipus de +compàs estan determinats en el fitxer +@file{scm/time-signature-settings.scm}. La forma de canviar els +ajustament predeterminats de barrat automàtic per a un tipus de +compas es descriu a @ref{Indicació de compàs}. + +Molts ajustaments de barrat automàtics per a un tipus de compàs +contenen una entrada per a @code{beamExceptions}. Per exemple, el +compàs de 4/4 intenta unir el compàs en dues parts si sols hi ha +corxeres. La regla @code{beamExceptions} pot sobreescriure +l'ajustament @code{beatStructure} si no es reinicia +@code{beamExceptions}. + +@lilypond[quote,verbatim,fragment] +\time 4/4 +\set Timing.baseMoment = #(ly:make-moment 1/8) +\set Timing.beatStructure = 3,3,2 +% Això no barrarà (3 3 2) degut a beamExceptions +\repeat unfold 8 {c''8} | +% Això barrarà (3 3 2) perquè eliminem beamExceptions +\set Timing.beamExceptions = #'() +\repeat unfold 8 {c''8} +@end lilypond + +De forma semblant, les corxeres en compàs de 3/4 s'uneixen +mitjançant una sola barra per a tot el compàs, de forma +predeterminada. Per unir les corxeres en 3/4 mitjançant una barra +a cada part, reinicieu @code{beamExceptions}. + +@lilypond[quote,verbatim,fragment] +\time 3/4 +% per defecte barrem a (6) degut a beamExceptions +\repeat unfold 6 {a'8} | +% Això barrarà (1 1 1) degut a baseMoment i beatStructure predeterminats +\set Timing.beamExceptions = #'() +\repeat unfold 6 {a'8} +@end lilypond + +A la música gravada dels períodes clàssic i romàntic, amb +freqüència les barres comencen a meitat d'un compàs de 3/4, però +la pràctic moderna és evitar la falsa impressió de 6/8 (vegeu +Gould, pàg. 153). Es produeixen situacions semblants al compàs de +3/8. Aquest comportament es controla mitjançant la propietat de +context @code{beamHalfMeasure}, que té efecte sobre indicacions de +compàs que tenen la xifra 3 al numerador: + +@lilypond[quote,verbatim] +\relative a' { + \time 3/4 + r4. a8 a a | + \set Timing.beamHalfMeasure = ##f + r4. a8 a a | +} +@end lilypond + +@subsubsubheading Com funciona el barrat automàtic + +Quan s'habilita el barrat automàtic, la col·locació de les barres +de corxera automàtiques es determinen per les propietats de +context @code{baseMoment}, @code{beatStructure} i +@code{beamExceptions}. + +Són d'aplicació les següents regles, en ordre de prioritat, quan +es determina l'aspecte de les barres: + +@itemize +@item +Si està especificada una barra manual amb @code{[@dots{}]}, s'ha +de fixar la barra tal com s'ha especificat; en cas contrari, + +@item +Si està definida a @code{beamExceptions} una regla de barrat per a +aquest tipus de barra més llarg, s'ha d'utilitzar-la per +determinar els llocs vàlids en els quals poden acabar les barres; +en cas contrari, + +@item +Si està definida a @code{beamExceptions} una regla de final de +barra per a un tipus de barra més llarg, s'ha d'utilitzar-la per +determinar els llocs vàlids en els quals poden acabar les barres; +en cas contrari, + +@item +usar els valors de @code{baseMoment} i de @code{beatStructure} +per determinar els finals de les pulsacions del compàs, i terminar +les barres al final de les pulsacions. + +@end itemize + +En les regles anteriors, el tipus de barra @emph{beam-type} és la +duració de la nota més breu dins del grup unit per una barra. + +Les regles de barrat predefinides estan al fitxer +@file{scm/time-signature-settings.scm}. + +@snippets +@cindex barres, subdivisió + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{subdividing-beams.ly} + +@cindex barres, orientació de, secundàries + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{strict-beat-beaming.ly} + +@cindex compàs, agrupació +@cindex pulsacions, agrupació +@cindex agrupar pulsacions +@cindex compassos, subagrupar + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{conducting-signs,-measure-grouping-signs.ly} + +@cindex barra, finals en la partitura +@cindex barra, finals amb diverses veus + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{beam-endings-in-score-context.ly} + +@seealso +Referència de la notació: +@ref{Indicació de compàs}. + +Fitxer d'inici: +@file{scm/time-signature-settings.scm}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{Auto_beam_engraver}, +@rinternals{Beam}, +@rinternals{BeamForbidEvent}, +@rinternals{beam-interface}. + +@knownissues +Si una partitura acaba mentre una barra de corxera automàtica no +ha acabat i encara accepta notes, aquesta última barra no +s'imprimeix en absolut. El mateix serveix per a les veus +polifòniques introduïdes amb @code{<< @dots{} \\ @dots{} >>}. Si +una veu polifònica acaba mentre una barra de corxera automàtica +encara admet notes, no s'imprimeix. La solució per a aquests +problemes és aplicar el barrat manual a l'última barra de la veu o +partitura. + +De forma predeterminada, el traductor @code{Timing} rep el nom de +context @code{Score} como àlies. Això significa que l'establiment +del compàs a una pauta afectarà el barrat de les altres pautes +també. Així, un ajust en el compàs a un pentagrama tardà +reiniciarà el barrat personalitzat que s'havia ajustat a un +pentagrama més primerenc. Una forma d'evitar aquest problema és +ajustar la indicació de compàs a un pentagrama solament. + +@lilypond[quote,verbatim] +<< + \new Staff { + \time 3/4 + \set Timing.baseMoment = #(ly:make-moment 1/8) + \set Timing.beatStructure = 1,5 + \set Timing.beamExceptions = #'() + \repeat unfold 6 { a'8 } + } + \new Staff { + \repeat unfold 6 { a'8 } + } +>> +@end lilypond + +Els ajustos de barrat predeterminat per a aquest compàs també es +poden canviar, de forma que sempre s'utilitzi el barrat desitjat. +La menara d'efectuar canvis als ajustos de barrat automàtic per a +una indicació de compàs es descriu a +@ref{Indicació de compàs}. + +@lilypond[quote,verbatim] +<< + \new Staff { + \overrideTimeSignatureSettings + 3/4 % timeSignatureFraction + 1/8 % baseMomentFraction + 1,5 % beatStructure + #'() % beamExceptions + \time 3/4 + \repeat unfold 6 { a'8 } + } + \new Staff { + \time 3/4 + \repeat unfold 6 { a'8 } + } +>> +@end lilypond + + +@node Barres manuals +@unnumberedsubsubsec Barres manuals +@translationof Manual beams + +@cindex barres manuals +@cindex manuals, barres + +@funindex ] +@funindex [ + +En certs casos pot ser precís sobreescriure l'algoritme de barrat +automàtic. Per exemple, el mecanisme de barrat automàtic no +escriu barres per sobre els silencis o les línies divisòries, i a +les partitures corals el barrat s'ajusta amb freqüència perquè +segueixi la mesura de la lletra en comptes de la de les notes. +Aquestes barres s'especifiquen manualment marcant els punts de +començament i final amb @code{[} y @code{]}. + +@lilypond[quote,verbatim] +\relative { r4 r8[ g' a r] r g[ | a] r } +@end lilypond + +@cindex barres manuals, abreviatura de direcció +@cindex barres manuals, notes d'adorn + +La direcció de les barres es pot establir manualment utilitzant +indicadors de direcció: + +@lilypond[quote,verbatim] +\relative { c''8^[ d e] c,_[ d e f g] } +@end lilypond + +@funindex \noBeam + +Es poden marcar notes individuals amb @code{\noBeam} per evitar +que resultin unides per una barra: + +@lilypond[quote,verbatim] +\relative { + \time 2/4 + c''8 c\noBeam c c +} +@end lilypond + +Es poden produir al mateix temps barres de notes d'adorn i barres +normals. Les notes d'adorn sense barra no es col·loquen dins de +les barres de notes normals. + +@lilypond[quote,verbatim] +\relative { + c''4 d8[ + \grace { e32 d c d } + e8] e[ e + \grace { f16 } + e8 e] +} +@end lilypond + +@funindex stemLeftBeamCount +@funindex stemRightBeamCount + +Es pot aconseguir un control fins i tot més estricte sobres les +barres establint les propietats @code{stemLeftBeamCount} i +@code{stemRightBeamCount}. Especifiquen el nombre de barres que +es dibuixaran als costats esquerre i dret, respectivament, de la +nota següent. Si qualsevol d'aquestes dues propietats s'ajusta a +un valor, aquest valor s'usarà una sola vegada, i després +s'esborrarà. En aquest exemple, l'últim Fa s'imprimeix amb sols +una barra al costat esquerre, és a dir, la barra de corxera del +grup com un tot. + +@lilypond[quote,verbatim] +\relative a' { + a8[ r16 f g a] + a8[ r16 + \set stemLeftBeamCount = #2 + \set stemRightBeamCount = #1 + f16 + \set stemLeftBeamCount = #1 + g16 a] +} +@end lilypond + +@predefined +@code{\noBeam}. +@endpredefined + +@snippets + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{flat-flags-and-beam-nibs.ly} + +@seealso +Referència de la notació: +@rusernamed{Direction and placement,Direcció i posició}, +@ref{Notes d'adorn}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{Beam}, +@rinternals{BeamEvent}, +@rinternals{Beam_engraver}, +@rinternals{beam-interface}, +@rinternals{Stem_engraver}. + + +@node Barres progressives +@unnumberedsubsubsec Barres progressives +@translationof Feathered beams + +@cindex barres progressives +@cindex progressives, barres + +@funindex \featherDurations +@funindex grow-direction + +Les barres progressives s'usen per indicar que un petit grup de +notes s'ha de tocar a una velocitat creixent (o decreixent), sense +canviar el temps general de la peça. L'àmbit de la barra +progressiva s'ha d'indicar manualment usant @code{[} i @code{]}, +l`efecte d'angle de la barra s'inicia especificant una direcció de +la propietat @code{grow-direction} de l'objecte @code{Beam}. + +Si volem que la col·locació de les notes i el so de la sortida +MIDI reflecteixi el @emph{ritardando} o @emph{accelerando} indicat +per la barra progressiva, les notes s'han d'agrupar com una +expressió musical delimitada per claus i precedida d'una ordre +@code{featheredDurations} que especifica la raó +entre les duracions de la primera i l'última notes dins del grup. + +Els claudàtors rectes mostren l'àmbit de la barra i les claus +mostren quines notes han de modificar les seves duracions. +Normalment delimitarien el mateix grup de notes, però no és un +requisit: les dues ordres són independents. + +A l'exemple següent les vuit semicorxeres ocupen exactament el +mateix temps que una blanca, però la primera nota té la meitat de +duració que l'última, amb les notes intermèdies allargant-se +gradualment. Les quatre primeres fuses s'acceleren gradualment, +mentre que les últimes quatre fuses estan a un temps constant. + +@lilypond[verbatim,quote] +\relative c' { + \override Beam.grow-direction = #LEFT + \featherDurations #(ly:make-moment 2/1) + { c16[ c c c c c c c] } + \override Beam.grow-direction = #RIGHT + \featherDurations #(ly:make-moment 2/3) + { c32[ d e f] } + % retorna a barres sense ploma + \override Beam.grow-direction = #'() + { g32[ a b c] } +} +@end lilypond + +@noindent +L'espaiat a la sortida impresa representa les duracions de les +notes d'una forma sols aproximada, però la sortida MIDI és exacta. + +@predefined +@code{\featherDurations}. +@endpredefined + +@seealso +Fragments de codi: +@rlsr{Rhythms}. + +@knownissues +L'ordre @code{\featherDurations} sols funciona amb fragments +musicals molt breus, i quan els nombres de la fracció són petits. + +@node Compassos +@subsection Compassos +@translationof Bars + +@menu +* Barres de compàs:: +* Numeració de compassos:: +* Comprovació de compàs i de número de compàs:: +* Marques d'assaig:: +@end menu + + +@node Barres de compàs +@unnumberedsubsubsec Barres de compàs +@translationof Bar lines + +@cindex barres de compàs +@cindex línies divisòries +@cindex final, barra +@cindex barra final +@cindex doble barra +@cindex barra doble +@cindex repetició, barres de + +@funindex \bar + +Les línies divisòries delimiten als compassos però també es poden +usar per indicar les repeticions. Normalment, les línies +divisòries normals s'insereixen de manera automàtica a la sortida +impresa a llocs que estan basats en el compàs actual. + +Les barres de compàs senzilles inserides automàticament es poden +canviar per altres tipus d'ordre @code{\bar}. Per exemple, se sol +posar una doble barra de tancament al final de la peça: + +@lilypond[quote,verbatim] +\relative { e'4 d c2 \bar "|." } +@end lilypond + +No deixa de ser vàlida l'última nota d'un compàs si no acaba sobre +la línia divisòria automàtica: se suposa que la nota es perllonga +sobre el compàs següent. Però una seqüència llarga de aquests +compassos perllongats pot fer que la música aparegui comprimida o +fins i tot que se surti de la pàgina. Això és a causa de què els +salts de línia automàtics solament es produeixen al final de +compassos complets, és a dir, quan totes les notes han finalitzat +abans que el compàs acabi. + +@warning{Una duració incorrecta pot fer que s'intenti evitar la +producció de salts de línia, donant com a resultat una línia de +música amb una compressió exagerada o música que se surt de la +pàgina.} + +@cindex línia, salts +@cindex línies divisòries invisibles +@cindex compàs, barres invisibles de + +També es permeten salts de línia en les barres inserides +manualment fins i tot dins de compassos incomplets. Per permetre +un salt de línia on no hi ha cap línia divisòria visible. +Utilitzeu el següent: + +@example +\bar "" +@end example + +@noindent +D'aquesta manera s'inserira una barra invisible de compàs i es +farà possible el salt de línia a aquest punt, sense forçar-lo. No +s'incrementa el comptador dels números de compàs. Per forçar un +salt de línia, consulteu @rusernamed{Line breaking,Salts de línia}. + +@cindex manuals, línies divisòries +@cindex manuals, barres de compàs +@cindex barres de compàs manuals +@cindex línies divisòries manuals + +Aquesta i altres línies divisòries especials es poden inserir +manualment en qualsevol punt. Quan coincideixen amb el final d'un +compàs, substitueixen a la línia divisòria simple que s'hauria +inserit automàticament en aquest lloc. Quan no coincideixen amb +el final d'un compàs, s'insereix la línia especificada en aquest +punt de la sortida impresa. + +Observeu que les línies divisòries manuals són purament visuals. +No afecten a cap de les propietats que una barra normal afectaria, +com als números de compàs, alteracions, salts de línia, etc. No +afecten tampoc el càlcul i col·locació de les línies divisòries +subsegüents. Quan una divisòria es col·loca manualment on ja hi +ha una divisòria normal, els efectes de la línia original no +s'alteren. + +Estan disponibles per a la seva inserció manual dos tipus de +línies divisòries simples i cinc tipus de doble barra: + +@lilypond[quote,verbatim] +\relative { + f'1 \bar "|" + f1 \bar "." + g1 \bar "||" + a1 \bar ".|" + b1 \bar ".." + c1 \bar "|.|" + d1 \bar "|." + e1 +} +@end lilypond + +@noindent +així com la barra de punts i la discontínua: + +@lilypond[quote,verbatim] +\relative { + f'1 \bar ";" + g1 \bar "!" + a1 +} +@end lilypond + +@noindent +i nou tipus de barres de repetició: + +@lilypond[quote,verbatim] +\relative { + f'1 \bar ".|:" + g1 \bar ":..:" + a1 \bar ":|.|:" + b1 \bar ":|.:" + c1 \bar ":.|.:" + d1 \bar "[|:" + e1 \bar ":|][|:" + f1 \bar ":|]" + g1 \bar ":|." + a1 +} +@end lilypond + +A més es pot imprimir una línia divisòria com una marca curta: + +@lilypond[quote,fragment,verbatim] +f'1 \bar "'" g'1 +@end lilypond + +Malgrat això, donat que les mencionades marques s'utilitzen +usualment al cant gregorià, és preferible en aquest cas utilitzar +@code{\divisioMinima}, que es descriu en la secció +@rusernamed{Divisiones,Divisiones} dins de cant gregorià: + +El LilyPond contempla la notació del cant kievà i ofereix una +línia divisòria especial kievana: + +@lilypond[quote,fragment,verbatim] +f'1 \bar "k" +@end lilypond + +Poden veure's detalls d'aquest notació explicats a +@rusernamed{Typesetting Kievan square notation,Gravat del cant kievà en notació quadrada}. + +@cindex segno + +Per als símbols de segno en línia, hi ha tres tipus de barres de +compàs que es diferencien en el seu comportament respecte als +salts de línia: + +@lilypond[quote,verbatim] +\relative c'' { + c4 c c c + \bar "S" + c4 c c c \break + \bar "S" + c4 c c c + \bar "S-|" + c4 c c c \break + \bar "S-|" + c4 c c c + \bar "S-S" + c4 c c c \break + \bar "S-S" + c1 +} +@end lilypond + +@cindex repeticions + +Tot i que es poden inserir manualment barres de compàs amb +significat de repeticions, no es reconeixen com repeticions per +part del LilyPond. Les seccions repetides s'introdueixen millor +utilitzant les diverses ordres de repetició (vegeu +@ref{Repeticions}), que imprimeixen automàticament +les barres corresponents. + +A més es pot especificar @code{".|:-||"}, que equival a +@code{".|:"} excepte al salts de línia, en el qual es produeix una +doble barra al final de la línia i una repetició esquerra (de +començament) al principio de la línia següent. + +@lilypond[quote,verbatim] +\relative c'' { + c4 c c c + \bar ".|:-||" + c4 c c c \break + \bar ".|:-||" + c4 c c c +} +@end lilypond + +Per a combinacions de repeticions amb el símbol de segno, hi ha +sis variants diferents: + +@lilypond[quote,verbatim] +\relative c'' { + c4 c c c + \bar ":|.S" + c4 c c c \break + \bar ":|.S" + c4 c c c + \bar ":|.S-S" + c4 c c c \break + \bar ":|.S-S" + c4 c c c + \bar "S.|:-S" + c4 c c c \break + \bar "S.|:-S" + c4 c c c + \bar "S.|:" + c4 c c c \break + \bar "S.|:" + c4 c c c + \bar ":|.S.|:" + c4 c c c \break + \bar ":|.S.|:" + c4 c c c + \bar ":|.S.|:-S" + c4 c c c \break + \bar ":|.S.|:-S" + c1 +} +@end lilypond + +A més, hi ha una ordre @code{\inStaffSegno} que crea una barra de +compàs amb símbol de segno, situada en conjunció amb una línia de +repetició adequada si s'utilitza amb una ordre @code{\repeat +volta}, vegeu @ref{Repeticions normals}. + +@funindex \defineBarLine +@cindex compàs, definir línies de +@cindex definir línies de compàs + +Es poden definir tipus nous de línies divisòries amb +@code{\defineBarLine}: + +@example +\defineBarLine @var{tipus_de_barra} #'(@var{final} @var{començament} @var{extensió}) +@end example + +Les variables de @code{\defineBarline} poden incloure la cadena de +caràcters @q{buida} @code{""}, que equival a imprimir una línia +divisòria invisible. També es pot establir al valor fals@code{#f} +que no imprimeix cap línia divisòria. + +Després de la definició, la nova línia divisòria es pot utilitzar +mitjançant @code{\bar} @var{tipus_de_barra}. + +Actualment hi ha disponibles deu elements de barra de compàs: + +@lilypond[quote,verbatim] +\defineBarLine ":" #'("" ":" "") +\defineBarLine "=" #'("=" "" "") +\defineBarLine "[" #'("" "[" "") +\defineBarLine "]" #'("]" "" "") + +\new Staff { + s1 \bar "|" + s1 \bar "." + s1 \bar "!" + s1 \bar ";" + s1 \bar ":" + s1 \bar "k" + s1 \bar "S" + s1 \bar "=" + s1 \bar "[" + s1 \bar "]" + s1 \bar "" +} +@end lilypond + +La línia divisòria @code{"="} proporciona la barra de doble +extensió, usada en combinació amb el símbol de segno. No l'heu +d'usar com una doble línia divisòria fina aïllada; per això es +preferible @code{\bar} @var{"||"}. + +El signe @code{"-"} inicia anotacions a les barres de compàs, que +són útils per distingir entre aquelles que tenen idèntica aparença +però diferent comportament als salts de línia i/o diferents barres +d'extensió. La part que segueix al signe @code{"-"} no s'usa per +construir la barra de compàs. + +@lilypond[quote,verbatim] +\defineBarLine "||-dashedSpan" #'("||" "" "!!") + +\new StaffGroup << + \new Staff \relative c'' { + c1 \bar "||" + c1 \bar "||-dashedSpan" + c1 + } + \new Staff \relative c'' { + c1 + c1 + c1 + } +>> +@end lilypond + +A més, el caràcter de l'espai en blanc @code{" "} serveix com a +contenidor per definir barres d'extensió correctament alineats a +les barres principals: + +@lilypond[quote,verbatim] +\defineBarLine ":|.-wrong" #'(":|." "" "|.") +\defineBarLine ":|.-right" #'(":|." "" " |.") + +\new StaffGroup << + \new Staff \relative c'' { + c1 \bar ":|.-wrong" + c1 \bar ":|.-right" + c1 + } + \new Staff \relative c'' { + c1 + c1 + c1 + } +>> +@end lilypond + +Si calen elements addicionals, el LilyPond proveeix una forma +senzilla de definir-los. Per veure més informació sobre com +modificar o afegir barres de compàs, consulteu el fitxer +@file{scm/bar-line.scm}. + +En les partitures amb molts pentagrames, una ordre@code{\bar} a un +d'ells s'aplica automàticament a tots els altres. Les línies +resultants es connecten entre els diferents pentagrames d'un +@code{StaffGroup}, @code{PianoStaff} o @code{GrandStaff}. + +@lilypond[quote,verbatim] +<< + \new StaffGroup << + \new Staff \relative { + e'4 d + \bar "||" + f4 e + } + \new Staff \relative { \clef bass c'4 g e g } + >> + \new Staff \relative { \clef bass c'2 c2 } +>> +@end lilypond + +@cindex predeterminada, línia divisòria, canviar +@cindex línia divisòria predeterminada, canviar + +@funindex whichBar +@funindex defaultBarType +@funindex \bar +@funindex bartype + +L'ordre @samp{\bar @var{tipus de barra}} és forma curta de fer +@samp{\set Timing.whichBar = @var{tipo de barra}}. Quan +s'estableix @code{whichBar} amb el valor d'una cadena de +caràcters, es crea una línia divisòria d'aquest tipus. + +El tipus de barra predeterminat que s'usa per a les línies +divisòries inserides automàticament és @code{"|"}. Es pot canviar +en qualsevol moment amb @samp{\set Timing.defaultBarType += @var{tipus de barra}}. + +@seealso +Referència de la notació: +@rusernamed{Line breaking,Salts de línia}, +@ref{Repeticions}, +@ref{Agrupament de pentagrames}. + +Fitxers instal·lats: +@file{scm/bar-line.scm}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament interno: +@rinternals{BarLine} (creada al nivell de @code{Staff} (pentagrama)), +@rinternals{SpanBar} (a través dels pentagrames), +@rinternals{Timing_translator} (per a les propietats del comptador de temps Timing). + + +@node Numeració de compassos +@unnumberedsubsubsec Numeració de compassos +@translationof Bar numbers + +@cindex compàs, números de +@cindex números de compàs + +@funindex currentBarNumber + +Per defecte, els números de compàs s'imprimeixen al principi de la +línia, excepte la primera. El número pròpiament dit s'emmagatzema +a la propietat @code{currentBarNumber}, que normalment +s'actualitza automàticament per a cada compàs. També es pot +establir manualment: + +@lilypond[verbatim,quote] +\relative c' { + c1 c c c + \break + \set Score.currentBarNumber = #50 + c1 c c c +} +@end lilypond + +@cindex números de compàs, espaiat regular + +@funindex barNumberVisibility +@funindex BarNumber + +Els números de compàs es poden gravar a intervals regulars en +comptes de al principi de cada línia. Per fer-lo, s'ha de +sobreescriure el comportament predeterminat de forma que es puguin +imprimir en altres llocs. Això ve controlat per la propietat +@code{break-visibility} de @code{BarNumber}. Agafa tres valors +que es poden establir al valor @code{#t} o @code{#f} per +especificar si el número de compàs corresponent és visible o no. +L'ordre dels tres valors és @code{visible al final de la línia}, +@code{visible a la meitat de la línia}, o @code{visible al +principi de la línia}. A l'exemple següent s'imprimeixen els +números de compàs en tots els llocs possibles: + +@lilypond[verbatim,quote] +\relative c' { + \override Score.BarNumber.break-visibility = ##(#t #t #t) + \set Score.currentBarNumber = #11 + % Permet que s'imprimeixi el número del primer compàs + \bar "" + c1 | c | c | c | + \break + c1 | c | c | c | +} +@end lilypond + +@snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{printing-the-bar-number-for-the-first-measure.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{printing-bar-numbers-at-regular-intervals.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{printing-bar-numbers-with-changing-regular-intervals.ly} + +@cindex compas, número de, format +@cindex número de compassos, format de + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{printing-bar-numbers-inside-boxes-or-circles.ly} + +@cindex compàs, número, amb lletres +@cindex compàs, número, amb repeticions + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{alternative-bar-numbering.ly} + +@cindex compàs, número, alineació + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{aligning-bar-numbers.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{removing-bar-numbers-from-a-score.ly} + +@seealso +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{BarNumber}, +@rinternals{Bar_number_engraver}. + +@cindex número de compàs, col·lisió +@cindex col·lisió del número de compàs + +@knownissues +Els números de compàs poden col·lisionar amb la clau +@code{StaffGroup}, si hi ha un a la part de dalt. Per +solucionar-lo es pot usar la propietat de farciment @code{padding} +de @code{BarNumber} per col·locar el número correctament. +Consulteu @rinternals{StaffGroup} i @rinternals{BarNumber} para +veure més informació. + + +@node Comprovació de compàs i de número de compàs +@unnumberedsubsubsec Comprovació de compàs i de número de compàs +@translationof Bar and bar number checks + +@cindex compàs, comprovació de +@cindex número de compàs, comprovació de +@cindex compàs, comprovació +@cindex compàs, número, comprovació + +@funindex barCheckSynchronize +@funindex | + +Les comprovacions de compàs ajuden a detectar errors a les +duracions. Una comprovació de compàs s'escriu usant el símbol de +la barra vertical, @code{|}, a qualsevol lloc on s'espera que +caigui una línia divisòria. Si es troben línies de comprovació de +compàs a altres llocs, s'imprimeix una llista d'advertiments al +fitxer log de registre, mostrant els números de línia i columna en +el qual han fallat les comprovacions de compàs. Al següent +exemple, la segona comprovació de compàs avisarà d'un error. + +@example +\time 3/4 c2 e4 | g2 | +@end example + +Una duració incorrecte produeix una partitura completament +desbaratada, especialment si la partitura es polifònica, de +manera que la millor manera de començar a corregir l'entrada és +buscar sistemàticament l'existència de comprovacions de compàs +fallides i duracions incorrectes. + +Si es produeixen diverses comprovacions de compàs seguides per +valor de la mateixa duració musical, sols apareix el primer +missatge d'advertiment. Així s'aconsegueix que el missatge +estigui concentrat a la font d'error de la pulsació. + +Les comprovacions de compàs també es poden inserir dins de la +lletra de les cançons: + +@example +\lyricmode @{ + \time 2/4 + Twin -- kle | Twin -- kle | +@} +@end example + +Observeu que les comprovacions de compàs dins de la lletra de les +cançons s'avaluen al moment musical de la síl·laba +@emph{següent} a la comprovació de compàs que es processa. Si la +lletra està associada amb les notes d'una veu que té un silenci al +principi del compàs, no es pot posar cap síl·laba al comen +ament d'aquest compàs i s'imprimeix un missatge d'advertiment si +s'escriu una comprovació de compàs dins de la lletra, en aquesta posició. + +@funindex | +@funindex "|" + +També és possible redefinir l'acció que es fa quan es troba una +barra vertical o símbol de comprovació de compàs, @code{|}, al +codi d'entrada, de forma que faci quelcom diferent a una +comprovació de compàs. Es fa assignant una expressió musical a +@code{"|"}, el símbol de barra vertical. A l'exemple següent +s'estableix @code{|} de forma que insereixi una doble línia +divisòria quan apareix al codi d'entrada, en comptes de comprovar +el final d'un compàs. + +@lilypond[quote,verbatim] +"|" = \bar "||" +{ + c'2 c' | + c'2 c' + c'2 | c' + c'2 c' +} +@end lilypond + +@funindex \barNumberCheck + +En copiar peces musicals grans pot servir d'ajuda comprovar que el +número de compàs del LilyPond correspongui a l'original des del +qual s'està copiant. Això es pot comprovar amb +@code{\barNumberCheck}, por exemple: + +@verbatim +\barNumberCheck #123 +@end verbatim + +@noindent +imprimeix un advertiment si el @code{currentBarNumber} (número del +compàs actual) no és el 123 en el moment de la compilació. + +@seealso +Fragments de codi: +@rlsr{Rhythms}. + +@node Marques d'assaig +@unnumberedsubsubsec Marques d'assaig +@translationof Rehearsal marks + +@cindex assaig, lletres de +@cindex lletres d'assaig + +@funindex \mark + +Per imprimir una lletra d'assaig, utilitzeu l'ordre @code{\mark}. + +@lilypond[quote,verbatim] +\relative c'' { + c1 \mark \default + c1 \mark \default + c1 \mark \default + c1 \mark \default +} +@end lilypond + +@noindent +La lletra d'assaig s'incrementa automàticament si useu +@code{\mark \default}, però també podeu utilitzar un número enter +com argument per establir la indicació manualment. El valor que +s'utilitzarà s'emmagatzema dins de la propietat +@code{rehearsalMark}. + +@lilypond[quote,verbatim] +\relative c'' { + c1 \mark \default + c1 \mark \default + c1 \mark #8 + c1 \mark \default + c1 \mark \default +} +@end lilypond + +@noindent +La lletra@tie{}@q{I} se salta d'acord amb les tradicions de +gravat. Si voleu incloure la la lletra @q{I}, useu una de les +ordres següents, segons l'estil de marques d'assaig que desitgeu +(sols lletres, lletres dins d'un rectangle o lletres dins d'un +cercle). + +@example +\set Score.markFormatter = #format-mark-alphabet +\set Score.markFormatter = #format-mark-box-alphabet +\set Score.markFormatter = #format-mark-circle-alphabet +@end example + +@lilypond[quote,verbatim] +\relative c'' { + \set Score.markFormatter = #format-mark-box-alphabet + c1 \mark \default + c1 \mark \default + c1 \mark #8 + c1 \mark \default + c1 \mark \default +} +@end lilypond + +@cindex assaig, lletra de, format +@cindex assaig, lletra de, estil +@cindex estil de la lletra de assaig +@cindex format de la lletra d'assaig +@cindex lletra d'assaig, estil +@cindex lletra d'assaig, format +@cindex marca d'assaig, estil +@cindex marca d'assaig, format +@cindex assaig, lletra de, manual +@cindex marca de assaig manual +@cindex personalitzada, marca d'assaig +@cindex manual, marca d'assaig + +L'estil es defineix per mitjà de la propietat +@code{markFormatter}. És una funció que agafa com arguments la +marca en curs (un nombre enter) i el context actual. Ha de tornar +un objecte de marcatge. A l'exemple següent, s'estableix +@code{markFormatter} amb el valor d'un procediment predefinit. +Després d'alguns compassos s'estableix amb un valor d'una funció +que produeix un número tancat a una capsa. + +@lilypond[quote,verbatim] +\relative c'' { + \set Score.markFormatter = #format-mark-numbers + c1 \mark \default + c1 \mark \default + \set Score.markFormatter = #format-mark-box-numbers + c1 \mark \default + \set Score.markFormatter = #format-mark-circle-numbers + c1 \mark \default + \set Score.markFormatter = #format-mark-circle-letters + c1 +} +@end lilypond + +El fitxer @file{scm/translation-functions.scm} conté les +definicions de @code{format-mark-numbers} (el format per omissió), +@code{format-mark-box-numbers}, @code{format-mark-letters} i +@code{format-mark-box-letters}. Es poden usar aquestes +definicions com a inspiració per a d'altres funcions de format. + +Podem fer servir @code{format-mark-barnumbers}, +@code{format-mark-box-barnumbers} i +@code{format-mark-circle-barnumbers} per obtenir números de compas +en lloc de números de lletres seqüencials. + +Es poden especificar altres estils de lletra d'assaig de forma manual: + +@example +\mark "A1" +@end example + +@noindent +Observeu que @code{Score.markFormatter} no afecta a las marque que +s'especifiquen de aquest forma. Malgrat això, és possible aplicar +un element @code{\markup} a la cadena. + +@example +\mark \markup@{ \box A1 @} +@end example + +@cindex segno +@cindex coda +@cindex D.S. al Fine +@cindex calderó +@cindex musicals, glifs +@cindex glifs musicals + +@funindex \musicglyph + +Els glifs musicals (como ara el segno) es poden imprimir dins d'un +element @code{\mark} + +@lilypond[quote,verbatim] +\relative c' { + c1 \mark \markup { \musicglyph #"scripts.segno" } + c1 \mark \markup { \musicglyph #"scripts.coda" } + c1 \mark \markup { \musicglyph #"scripts.ufermata" } + c1 +} +@end lilypond + +@noindent +Consulteu @rusernamed{The Emmentaler font,El tipus de lletra Emmentaler} +per veure una llista dels símbols que es poden imprimir amb +@code{\musicglyph}. + +Per veure formes comuns d'ajustar la col·locació de les lletres +d'assaig, consulteu @rusernamed{Formatting text,Donar format al +text}. Per a un control més precís, consulteu +@code{break-alignable-interface} a la secció +@rusernamed{Aligning objects,Alineació d'objectes}. + +El fitxer @file{scm/translation-functions.scm} conté les +definicions de @code{format-mark-numbers} i de +@code{format-mark-letters}. Es poden utilitzar com a inspiració +per escriure altres funcions per donar format. + +@seealso +Referència de la notació: +@rusernamed{The Emmentaler font,El tipus de lletra Emmentaler}, +@rusernamed{Formatting text,Donar format al text}, +@rusernamed{Aligning objects,Alineació d'objectes}. + +Fitxers d'inici: +@file{scm/translation-functions.scm}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{MarkEvent}, +@rinternals{Mark_engraver}, +@rinternals{RehearsalMark}. + + +@node Temes especials de ritme +@subsection Temes especials de ritme +@translationof Special rhythmic concerns + +@menu +* Notes d'adorn:: +* Alinear amb una cadenza:: +* Gestió del temps:: +@end menu + +@node Notes d'adorn +@unnumberedsubsubsec Notes d'adorn +@translationof Grace notes + +@cindex ornaments +@cindex mordents +@cindex appoggiatura +@cindex acciaccatura + +@funindex \grace +@funindex \slashedGrace +@funindex \acciaccatura +@funindex \appoggiatura + +Els mordents i les notes d'adorn són ornaments musicals, impresos +a un tipus de lletra més petita i no ocupen cap temps lògic +addicional al compàs. + +@lilypond[quote,verbatim] +\relative { + c''4 \grace b16 a4( + \grace { b16 c16 } a2) +} +@end lilypond + +Hi ha tres tipus possibles de notes d'adorn; la +@emph{acciaccatura} o mordent d'una nota (una nota d'adorn sense +mesura que s'indica mitjançant una nota lligada i amb la clau +ratllada) i la @emph{appoggiatura}, que agafa una fracció fixa de +la nota principal a la que s'adjunta, i que s'imprimeix sense +ratllar. És possible escriure una nota d'adorn amb la plica +ratllada, com la @emph{acciaccatura} però sense la lligadura, com +per col·locar-la entre notes que estan lligades entre sí, +utilitzant la funció @code{\slashedGrace}. + +@lilypond[quote,verbatim] +\relative { + \acciaccatura d''8 c4 + \appoggiatura e8 d4 + \acciaccatura { g16 f } e2 + \slashedGrace a,8 g4 + \slashedGrace b16 a4( + \slashedGrace b8 a2) +} +@end lilypond + +La col·locació de notes d'adorn se sincronitza entres els +diferents pentagrames. A l'exemple següent, hi ha dues +semicorxeres d'adorn per a cada corxera d'adorn: + +@lilypond[quote,verbatim] +<< + \new Staff \relative { e''2 \grace { c16 d e f } e2 } + \new Staff \relative { c''2 \grace { g8 b } c2 } +>> +@end lilypond + +@cindex adorn, seguiment de notes de + +@funindex \afterGrace + +Si volem acabar una nota amb un adorn, usem l'ordre +@code{\afterGrace}. Agafa dos argument: la nota principal, i les +notes d'adorn que segueixen a la nota principal. + +@lilypond[quote,verbatim] +\relative { c''1 \afterGrace d1 { c16[ d] } c1 } +@end lilypond + +Això posa les notes d'adorn després d'un espai que dura 3/4 de la +longitud de la nota principal. La fracció predeterminada de 3/4 +es pot canviar establint @code{afterGraceFraction}. L'exemple +següent mostra el resultat d'establir l'espai en el seu valor +predeterminat, en 15/16, i per últim en 1/2 de la nota principal. + +@lilypond[quote,verbatim] +<< + \new Staff \relative { + c''1 \afterGrace d1 { c16[ d] } c1 + } + \new Staff \relative { + #(define afterGraceFraction (cons 15 16)) + c''1 \afterGrace d1 { c16[ d] } c1 + } + \new Staff \relative { + #(define afterGraceFraction (cons 1 2)) + c''1 \afterGrace d1 { c16[ d] } c1 + } +>> +@end lilypond + +L'espai entre la nota principal i la d'adorn també es pot +especificar usant espaiadors. L'exemple següent situa la nota +d'adorn després d'un espai que dura 7/8 de la nota principal. + +@lilypond[quote,verbatim] +\new Voice \relative { + << + { d''1^\trill_( } + { s2 s4. \grace { c16 d } } + >> + c1) +} +@end lilypond + +@cindex ajustament de les notes d'adorn +@cindex notes de adorno, ajustament +@cindex notes d'adorn, canviar els ajustos de disposició + +Una expressió musical @code{\grace} introdueix ajustos de tipus de +lletra especials, per exemple per produir un tipus de lletra més +petit i per fixes les direccions. Per això, quan s'introdueixen +ajustaments per a la presentació, han d'anar dins de l'expressió +d'adorn. Les sobreescriptures s'han de revertir també dins de +l'expressió d'adorn. Aquí, la direcció predeterminada de la plica +de la nota d'adorn se sobreescriu i després es reverteix. + +@lilypond[quote,verbatim] +\new Voice \relative { + \acciaccatura { + \stemDown + f''16-> + \stemNeutral + } + g4 e c2 +} +@end lilypond + +@cindex plica creuada + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{using-grace-note-slashes-with-normal-heads.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{tweaking-grace-layout-within-music.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{redefining-grace-note-global-defaults.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{positioning-grace-notes-with-floating-space.ly} + +@seealso +Glossari musical: +@rglos{grace notes}, +@rglos{acciaccatura}, +@rglos{appoggiatura}. + +Referència de la notació: +@ref{Escalat de les duracions}, +@ref{Barres manuals}. + +Fitxers d'inici: +@file{ly/grace-init.ly}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament intern: +@rinternals{GraceMusic}, +@rinternals{Grace_beam_engraver}, +@rinternals{Grace_auto_beam_engraver}, +@rinternals{Grace_engraver}, +@rinternals{Grace_spacing_engraver}. + + +@knownissues +@cindex acciaccatura de diverses notes +@cindex adorn, sincronització de notes de + +Una @i{acciaccatura} de diverses notes amb una barra s'imprimeix +sense ratllar, i té exactament la mateixa aparença que una +@i{appoggiatura} de diverses notes amb barra. + +@c TODO Add link to LSR snippet to add slash when available + +La sincronització de les notes d'adorn també pot portar +sorpreses. La notació de pentagrames, com ara armadures, línies +divisòries, etc., també se sincronitzen. Aneu amb cura quan +barregeu pentagrames amb adorns i sense adorns, per exemple + +@lilypond[quote,verbatim] +<< + \new Staff \relative { e''4 \bar ".|:" \grace c16 d2. } + \new Staff \relative { c''4 \bar ".|:" d2. } +>> +@end lilypond + +@noindent +Això es pot remeiar inserint desplaçaments d'adorn de les +duracions corresponents als altres pentagrames. Per a l'exemple +anterior + +@lilypond[quote,verbatim] +<< + \new Staff \relative { e''4 \bar ".|:" \grace c16 d2. } + \new Staff \relative { c''4 \bar ".|:" \grace s16 d2. } +>> +@end lilypond + +És obligatori usar l'ordre @code{\grace} per a la part dels +desplaçaments, fins i tot si la part visual usa +@code{\acciaccatura} o @code{\appoggiatura} perquè en cas contrari +s'imprimeix una lligadura lletja que connecta a la nota d'adorn +invisible amb la nota següent. + +Les seccions d'adorn sols s'han d'usar dins d'expressions de +música seqüencials. No estan contemplats ni el niuat ni la +juxtaposició de seccions d'adorn, i podria produir fallades i +altres errors. + +Cada nota d'adorn a la sortida MIDI té una longitud que és 1/4 de +la seva duració real. Si la duració combinada de les notes +d'adorn és més gran que la longitud de la nota precedent, es +genera un error @qq{@code{Retrocedint al temps MIDI}}. Teniu dues +opcions: en primer lloc, podeu fer més curta la duració de les +notes d'adorn, per exemple: + +@example +c'8 \acciaccatura @{ c'8[ d' e' f' g'] @} +@end example + +es converteix a: + +@example +c'8 \acciaccatura @{ c'16[ d' e' f' g'] @} +@end example + +Una altra opció és canviar explícitament la duració musical: + +@example +c'8 \acciaccatura @{ \scaleDurations 1/2 @{ c'8[ d' e' f' g'] @} @} +@end example + +Vegeu @ref{Escalat de les duracions}. + +@node Alinear amb una cadenza +@unnumberedsubsubsec Alinear amb una cadenza +@translationof Aligning to cadenzas + +@cindex cadenza (cadència) +@cindex cadenza (cadència), alinear a +@cindex alineació a una cadenza (cadència) + +A un context orquestral, les cadenzas presenten un problema +espacial: en construir una partitura que te una cadenza, tots els +altres instruments han de saltar tantes notes com la longitud de +la cadenza, ja que en cas contrari començaran massa aviat o massa +tard. + +Una solució a aquest problema són les funcions +@code{mmrest-of-length} i @code{skip-of-length}. Aquestes +funcions de l'Scheme agafen un fragment de música com a argument i +generen un @code{\skip} o silenci multicompàs de la longitud +exacta del fragment. + +@lilypond[verbatim,quote] +MyCadenza = \relative { + c'4 d8 e f g g4 + f2 g4 g +} + +\new GrandStaff << + \new Staff { + \MyCadenza c'1 + \MyCadenza c'1 + } + \new Staff { + #(mmrest-of-length MyCadenza) + c'1 + #(skip-of-length MyCadenza) + c'1 + } +>> +@end lilypond + +@seealso +Glossari musical: +@rglos{cadenza}. + +Fragments de codi: +@rlsr{Rhythms}. + + +@node Gestió del temps +@unnumberedsubsubsec Gestió del temps +@translationof Time administration + +@cindex temps, administració +@cindex temps, control del (dins de la partitura) +@cindex música sense mesura +@cindex mesura, música sense + +@funindex currentBarNumber +@funindex measurePosition +@funindex measureLength + +El temps esta administrat per @code{Timing_translator}, que de +forma predeterminada es troba al context de @code{Score}. +S'afegeix un àlies, @code{Timing}, al context que en el qual es +col·loca el @code{Timing_translator}. Per assegurar que està +disponible l'àlies @code{Timing}, potser heu de crear +explícitament una instància del context contenidor (com @code{Voice} o +@code{Staff}). + +S'usen les següents propietats de @code{Timing} per seguir la +pista del temps dins de la partitura. + +@cindex compàs, número de +@cindex número de compàs + +@table @code +@item currentBarNumber +El número de compàs en curs. Per veure un exemple que mostra l'sú +d'aquesta propietat, consulteu @ref{Numeració de compassos}. + +@item measureLength +La longitud dels compassos dins de la indicació actual de compàs. +Per a un 4/4 això és@tie{}1, i per al 6/8 és 3/4. El seu valor +determina quan s'insereixen les línies divisòries i com es generen +les barres automàtiques. + +@item measurePosition +El punt en el qual ens trobem dins del compàs. Aquesta quantitat +es reinicia restant @code{measureLength} cada cop que s'assoleix o +s'excedeix @code{measureLength}. Quan això passa, s'incrementa +@code{currentBarNumber}. + +@item timing +Si té un valor vertader, les variables anteriors s'actualitzen a +cada pas del temps, quan té un valor fals, el gravador es queda al +compàs actual indefinidament. + +@end table + +El compte del temps es pot canviar establint el valor de qualsevol +d'aquestes variables explícitament. A l'exemple següent, +s'imprimeix la indicació de compàs predeterminada 4/4, +però @code{measureLength} s'ajusta a 5/4. Als 4/8 fins el tercer +compàs, la posició @code{measurePosition} s'avança en 1/8 fins a +5/8, escurçant aquest compàs en 1/8. Aleshores, la següent línia +divisòria cau en 9/8 en comptes de fer-ho en 5/4. + +@lilypond[quote,verbatim] +\new Voice \relative { + \set Timing.measureLength = #(ly:make-moment 5/4) + c'1 c4 | + c1 c4 | + c4 c + \set Timing.measurePosition = #(ly:make-moment 5/8) + b4 b b8 | + c4 c1 | +} +@end lilypond + +@noindent +Com s'il·lustra a l'exemple, @code{ly:make-moment n m} construeix +una duració de la fracció d'una rodona. Per exemple, +@code{ly:make-moment 1 8} és una duració d'una corxera i +@code{ly:make-moment 7 16} és la duració de set semicorxeres. + +@seealso +Referència de la notació: +@ref{Numeració de compassos}, +@ref{Música sense compassos}. + +Fragments de codi: +@rlsr{Rhythms}. + +Referència de funcionament interno: +@rinternals{Timing_translator}, +@rinternals{Score}. diff --git a/Documentation/ca/notation/simultaneous.itely b/Documentation/ca/notation/simultaneous.itely new file mode 100644 index 0000000000..50e86c4ba8 --- /dev/null +++ b/Documentation/ca/notation/simultaneous.itely @@ -0,0 +1,1304 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ca -*- +@ignore + Translation of GIT committish: 16661f7f6a78f04d056228d11bdc9e17a7cdf760 + + 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 \version "2.19.29" + +@c Translators: Walter Garcia-Fontes +@c Translation checkers: +@c Translation status: post-GDP + +@node Notes simultànies +@section Notes simultànies +@translationof Simultaneous notes + +@lilypondfile[quote,ragged-right,line-width=16\cm]{simultaneous-headword.ly} + +La paraula @q{polifonia} en música fa referència a tenir més d'una +veu en una peça qualsevol de música. Al LilyPond la polifonia fa +referència a tenir més d'una veu al mateix pentagrama. + +@menu +* Una veu única:: +* Veus múltiples:: +@end menu + + +@node Una veu única +@subsection Una veu única +@translationof Single voice + +Aquesta secció tracta de les notes simultànies dins de la mateixa veu. + +@menu +* Notes a un acord:: +* Repetició d'acords:: +* Expressions simultànies:: +* Clústers:: +@end menu + + +@node Notes a un acord +@unnumberedsubsubsec Notes a un acord +@translationof Chorded notes + +@cindex acords +@cindex parèntesis en angle + +@funindex < +@funindex > +@funindex <...> + +Un acord es forma envoltant un conjunt de notes entre @code{<} i +@code{>}. Un acord pot anar seguit d'una duració, com si fos una +nota simple. + +@lilypond[verbatim,quote] +\relative { + 1 2 4 8. 16 +} +@end lilypond + +Els acords també poden anar seguit d'articulacions, com si fos una +nota simple. + +@lilypond[verbatim,quote] +\relative { + 1\fermata 2-> 4\prall 8.^! 16-. +} +@end lilypond + +Les notes dins del propi acord amb poden anar seguides +d'articulacions i ornaments. + +@lilypond[verbatim,quote] +\relative { + 1 c-^ e>2 4 + 8. 16 +} +@end lilypond + +Tanmateix alguns elements de notació com ara les expressions de +matisos dinàmics i els reguladors han d'annexar-se a l'acord i no +a les notes que l'integren, atès que en cas contrari no +s'imprimiran. Altres elements de notació com les digitacions i +les lligadures d'expressió es posicionen de forma molt diferent +quan s'adjunten a les notes d'un acord en lloc de fer-lo a rodones +i notes aïllades. + +@lilypond[verbatim,quote] +\relative { + 1 \f ( ) + \< \! +} +@end lilypond + +@cindex acords buits +@cindex esdeveniments contenidors + +Un acord funciona com un simple contenidor per a les notes que ho +composen, a més de les seves articulacions i altres elements +adjunts. Com a conseqüència, un acord sense cap nota al seu +interior no té realment cap duració. Qualsevol articulació annexa +es produirà en el mateix moment musical que la nota o acord +següent i es pot combinar amb ells (per veure possibilitats més +complexes de combinacions d'aquests elements, consulteu +@ref{Expressions simultànies}): + +@lilypond[verbatim,quote] +\relative { + \grace { g'8( a b } + <> ) \p \< -. -\markup \italic "sempre staccato" + \repeat unfold 4 { c4 e } c1\f +} +@end lilypond + +@cindex relatiu, acords en alçada +@cindex acords i alçada relativa + +Es pot usar el mode relatiu per a l'alçada de les notes dels +acords. La primera nota de l'acord sempre és relativa a la +primera nota de l'acord anterior, o en cas que l'element precedent +no sigui un acord, l'alçada de l'última nota que va vindre abans +de l'acord. La resta de les notes de l'acord són relatives a la +nota anterior @emph{dins del mateix acord}. + +@lilypond[verbatim,quote] +\relative { + 1 +} +@end lilypond + +Per veure més informació sobre els acords, consulteu +@rusernamed{Chord notation,Notació d'acords}. + +@seealso +Glossari musical: +@rglos{chord}. + +Manual d'aprenentatge: +@rlearning{Combinar notes per formar acords}. + +Referència de la notació: +@rusernamed{Chord notation,Notació d'acords}, +@ref{Articulacions i ornaments}, +@ref{Escriptura d'octava relativa}, +@ref{Veus múltiples}. + +Fragments de codi: +@rlsr{Simultaneous notes}. + +@knownissues +Els acords que contenen més de dues alçades al mateix espai de +pentagrama, com ara @samp{}, creen notes els caps de +les quals se superposen. Depenent de la situació, un +representació millor pot requerir: + +@itemize + +@item +l'ús temporal de diverses veus, vegeu @ref{Veus múltiples}, +@samp{<< f! \\ >>}, + +@item +la transcripció enharmònica d'una o més notes, +@samp{}, o + +@item +Clústers; vegeu @ref{Clústers}. + +@end itemize + + +@node Repetició d'acords +@unnumberedsubsubsec Repetició d'acords +@translationof Chord repetition + +@cindex acords, repetició de +@cindex repetició, amb @code{q} +@cindex @code{q}, repetició d'acords + +Per reduir l'entrada d'acords, es pot usar una abreviatura de +repetició de l'acord anterior. El símbol de repetició d'acords és +@code{q}: + +@lilypond[verbatim,quote] +\relative { + 1 q 2 q +} +@end lilypond + +Com als acords normals, el símbol de repetició d'acords pot +usar-se amb duracions, articulacions, elements de marcatge, +lligadures d'expressió, barres, etc., atès que sols es dupliquen +les notes de l'acord precedent. + +@lilypond[verbatim,quote] +\relative { + 1\p^"text" q2\<( q8)[-! q8.]\! q16-1-2-3 q8\prall +} +@end lilypond + +El símbol de repetició d'acords sempre recorda l'última aparició +d'un acord, per la qual cosa és possible repetir l'acord més +recent fins i tot si s'han escrit en mig d'altres notes que no +estiguin a l'acord, o silencis. + +@lilypond[verbatim,quote] +\relative { + 1 c'4 q2 r8 q8 | + q2 c, | +} +@end lilypond + +Tanmateix, el símbol de repetició d'acords no reté els matisos +dinàmics, les articulacions ni els ornaments que conté o que +estan annexats a l'acord anterior. + +@lilypond[verbatim,quote] +\relative { + 1\sfz c'4 q2 r8 q8 | + q2 c, | +} +@end lilypond + +Per poder retenir alguns d'ells, es poden cridar explícitament a +la funció @code{\chordRepeats} amb un argument addicional que +especifiqui una llista de @var{tipus d'esdeveniment} a conservar, +a no ser que els esdeveniments d'aquest tipus ja estiguin presents +al propi acord @code{q}. + +@lilypond[verbatim,quote] +\relative { + \chordRepeats #'(articulation-event) + { 1\sfz c'4 q2 r8 q8-. } | + q2 c, | +} +@end lilypond + +Aquí, l'ús de @code{\chordRepeats} dins d'una construcció +@code{\relative} produeix un resultat inesperat: un cop s'han +expandit els esdeveniments d'acord, no poden distingir-se dels que +es van introduir com acords normals, fent que @code{\relative} +assigni una octava basada en el context original. + +Atès que les instàncies niuades de @code{\relative} no s'afecten +mútuament, es pot usar una altra ordre @code{\relative} dins de +@code{\chordRepeats} per establir les relacions d'octava abans +d'expandir els acords repetits. En aquest cas, tot el contingut +de l'ordre @code{\relative} interior no afecta a l'exterior; +d'aquí l'escriptura diferent d'octava a l'última nota d'aquest +exemple. + +@lilypond[verbatim,quote] +\relative { + \chordRepeats #'(articulation-event) + \relative + { 1\sfz c'4 q2 r8 q8-. } | + q2 c'' | +} +@end lilypond + +Les interaccions amb @code{\relative} es produeixen sols amb les +crides explícites de @code{\chordRepeats}: l'expansió implícita al +començament del procés de gravat es fa en un moment en el +qual totes les instàncies de @code{\relative} ja s'han processat. + +@seealso +Referència de la notació: +@rusernamed{Chord notation,Notació d'acords}, +@ref{Articulacions i ornaments}. + +Fitxers d'inici: +@file{ly/chord-repetition-init.ly}. + + +@node Expressions simultànies +@unnumberedsubsubsec Expressions simultànies +@translationof Simultaneous expressions + +Una o més expressions musicals envoltades entre angles dobles +s'entenen com a simultànies. Si la primera expressió comença amb +una sola nota o si tota l'expressió simultània apareix +explícitament dins d'una sola veu, l'expressió completa se situa +sobre un sol pentagrama; en cas contrari els elements de +l'expressió simultània se situen en pentagrames diferents. + +Els exemples següents mostren expressions simultànies sobre un sol +pentagrama: + +@lilypond[quote,verbatim] +\new Voice { % veu única explícita + << \relative { a'4 b g2 } + \relative { d'4 g c,2 } >> +} +@end lilypond + +@lilypond[quote,verbatim] +\relative { + % single first note + a' << \relative { a'4 b g } + \relative { d'4 g c, } >> +} +@end lilypond + +Això pot ser d'utilitat si les seccions simultànies tenen +duracions idèntiques, però es produiran errors si s'intenten posar +notes de diferent duració sobre la mateixa plica. Les notes, +articulacions i canvis de propietats que esta dins de +@emph{un sol} context @samp{Voice} es recol·lecten i representen a +l'ordre musical: + +@lilypond[quote,verbatim] +\relative { + 4-. <>-. << c a >> << { c-. } { a s-. } >> +} +@end lilypond + +Intentar posar més d'una pica o barra de corxera, o diferents +duracions o propietats al mateix moment musical, requereix l'ús de +més d'una veu. + +L'exemple següent mostra com les expressions simultànies poden +generar diversos pentagrames de forma implícita: + +@lilypond[quote,verbatim] +% no single first note +<< \relative { a'4 b g2 } + \relative { d'4 g2 c,4 } >> +@end lilypond + +Aquí no hi ha problema en tenir tenir diferents duracions perquè +s'interpreten en veus diferents. + +@cindex col·lisions, ignorar + +@knownissues +Si hi ha notes que procedeixen de dues o més veus, sense +especificar cap desplaçament horitzontal, i tenen les pliques en +la mateixa direcció, apareix el missatge + +@example +Advertiment: aquesta veu requereix un ajust de \voiceXx o \shiftXx +@end example + +durant la compilació. Aquest missatge es pot suprimir mitjançant + +@example +\override NoteColumn.ignore-collision = ##t +@end example + +Tanmateix, això no sols suprimeix l'advertiment sinó que pot +evitar qualsevol resolució de col·lisions i pot tenir altres +efectes no desitjats (consulteu també +@emph{Problemes coneguts} a @ref{Resolució de les col·lisions}). + + +@node Clústers +@unnumberedsubsubsec Clústers +@translationof Clusters + +@cindex clúster +@cindex raïm (clúster) + +@funindex \makeClusters + +Un «clúster» indica que s'han de tocar simultàniament un conjunt +de notes consecutives. S'escriuen aplicant la funció +@code{\makeClusters} a una seqüència d'acords, per exemple: + +@lilypond[quote,verbatim] +\relative \makeClusters { 2 } +@end lilypond + +Es poden barrejar al mateix pentagrama notes normals i +clústers, fins i tot al mateix temps. En aquest cas, no es fa cap +intent d'evitar automàticament les col·lisions entre clústers i +notes normals. + +@seealso +Glossari musical: +@rglos{cluster}. + +Fragments de codi: +@rlsr{Simultaneous notes}. + +Referència de funcionament intern: +@rinternals{ClusterSpanner}, +@rinternals{ClusterSpannerBeacon}, +@rinternals{Cluster_spanner_engraver}. + +@knownissues +Els clústers sols tenen un bon aspecte quan abasten un mínim de +dos acords. En cas contrari apareixeran excessivament prims. + +Els clústers no porten plica i per si mateixos no poden indicar +les duracions, però la longitud del clúster que s'imprimeix ve +determinada per la duració dels acords que el defineixen. Als +clústers separats els calen silencis de separació entre ells. + +Els clústers no produeixen cap sortida MIDI. + +@node Veus múltiples +@subsection Veus múltiples +@translationof Multiple voices + +Aquesta secció tracta de les notes simultànies en diverses veus o +diversos pentagrames. + +@menu +* Polifonia en un sol pentagrama:: +* Estils de veu:: +* Resolució de les col·lisions:: +* Combinació automàtica de les parts:: +* Escriptura de música en paral·lel:: +@end menu + + +@node Polifonia en un sol pentagrama +@unnumberedsubsubsec Polifonia en un sol pentagrama +@translationof Single-staff polyphony + +@cindex pentagrama únic, polifonia de +@cindex polifonia en un sol pentagrama +@cindex veu +@cindex lletra assignada a una veu + +@funindex \voiceOne +@funindex \voiceOne ... \voiceFour +@funindex Voice +@funindex \oneVoice + +@subsubsubheading Instanciar les veus explícitament + +L'estructura bàsica necessària per obtenir diverses veus +independents a un mateix pentagrama s'il·lustra a l'exemple següent: + +@lilypond[quote,verbatim] +\new Staff << + \new Voice = "primera" + \relative { \voiceOne r8 r16 g'' e8. f16 g8[ c,] f e16 d } + \new Voice= "segona" + \relative { \voiceTwo d''16 c d8~ 16 b c8~ 16 b c8~ 16 b8. } +>> +@end lilypond + +@noindent +Aquí es creen explícitament instàncies de veus, cadascuna de les +quals rep un nom. Les instruccions @code{\voiceOne} +@dots{} @code{\voiceFour} (veu una fins a veu quatre) preparen les +veus de manera que la primera i la segona veus porten les pliques +cap amunt, les veus segona i quarta porten les pliques cap avall, +els caps de les notes en les veus tercera i quarta es desplacen +horitzontalment, i els silencis de les veus respectives es +desplacen també automàticament per evitar les col·lisions. +L'ordre @code{\oneVoice} (una veu) retorna tots els ajustaments de +les veus a l'estat neutre predeterminat. + +@subsubsubheading Passatges polifònics temporals + +Es pot crear un passatge polifònic temporal amb la construcció següent: + +@example +<< @{ \voiceOne @dots{} @} + \new Voice @{ \voiceTwo @dots{} @} +>> \oneVoice +@end example + +@noindent +Aquí, la primera expressió dins d'un passatge polifònic temporal +es col·loca al context @code{Voice} que estava en ús immediatament +abans del passatge polifònic, i aquest mateix context +@code{Voice} continua després de la secció temporal. Altres +expressions dins dels angles s'assignen a diferents veus +temporals. Això permet assignar la lletra de forma contínua a una +veu abans, durant i després de la secció polifònica: + +@lilypond[quote,verbatim] +\relative << + \new Voice = "melodia" { + a'4 + << + { + \voiceOne + g f + } + \new Voice { + \voiceTwo + d2 + } + >> + \oneVoice + e4 + } + \new Lyrics \lyricsto "melodia" { + This is my song. + } +>> +@end lilypond + +@noindent +Aquí, les instruccions @code{\voiceOne} i @code{\voiceTwo} calen +per definir els ajustaments de cada veu. + +@subsubsubheading La construcció de la doble barra invertida + +La construcció @code{<< @{@dots{}@} \\ @{@dots{}@} >>}, en la qual +dues expressions (o més) estan separades per doble barra +invertida, es comporta de manera diferent a la construcció +semblant sense les doble barres invertides: @emph{totes} les +expressions dins d'aquesta construcció s'assignen a contextos +@code{Voice} nous. Aquests contextos @code{Voice} nous es creen +implícitament i reben els noms fixos @code{"1"}, @code{"2"}, etc. + +El primer exemple podria haver-se escrit de la manera següent: + +@lilypond[quote,verbatim] +<< + \relative { r8 r16 g'' e8. f16 g8[ c,] f e16 d } + \\ + \relative { d''16 c d8~ 16 b c8~ 16 b c8~ 16 b8. } +>> +@end lilypond + +Aquesta sintaxi es pot usar sempre que no ens importi que es creïn +noves veus temporals que després seran descartades. Aquestes veus +creades implícitament reben ajustos equivalents a l'efecte de les +ordres @code{\voiceOne}@dots{}@code{\voiceFour}, a l'ordre que +apareixen al codi. + +Al següent exemple, la veu intermèdia porta les pliques cap amunt, +de manera que la introduïm en tercer lloc perquè passi a ser la +veu tres, que té les pliques cap amunt tal i com volem. S'usen +silencis de separació per evitar l'aparició de silencis duplicats. + +@lilypond[quote,verbatim] +<< + \relative { r8 g'' g g g f16 ees f8 d } + \\ + \relative { ees'8 r ees r d r d r } + \\ + \relative { d''8 s c s bes s a s } +>> +@end lilypond + +A totes les partitures excepte les més simples, es recomana crear +contextos @code{Voice} explícits com apareix explicat a +@rlearning{Contextos i gravadors} i a @rlearning{Veus explícites}. + +@subsubsubheading Ordre de les veus + +En escriure diverses veus al fitxer d'entrada, useu l'ordre següent: + +@example +Veu 1: la més aguda +Veu 2: la més greu +Veu 3: la segona més aguda +Veu 4: la segona més greu +Veu 5: la tercera més aguda +Veu 6: la tercera més greu +etc. +@end example + +Malgrat que això pot semblar contrari a la intuïció, simplifica el +procés de disposició automàtica de les figures. Observeu que les +veus de numeració imparell reben pliques cap amunt, i les de +numeració parell reben pliques cap avall: + +@lilypond[quote,verbatim] +\new Staff << + \time 2/4 + { f''2 } % 1: més alta + \\ + { c'2 } % 2: més baixa + \\ + { d''2 } % 3: segona més alta + \\ + { e'2 } % 4: segona més baixa + \\ + { b'2 } % 5: tercera més alta + \\ + { g'2 } % 6: tercera més baixa +>> +@end lilypond + +@warning{No es poden crear lletres ni elements d'extensió (com +lligadures, reguladors, etc.) que es creuen d'una veu a una altra.} + +@subsubsubheading Duracions idèntiques + +Al cas especial en el qual volem gravar fragments de música que +s'executa en paral·lel i amb les mateixes duracions, es poden +combinar en un sol context de veu, formant d'aquesta manera +acords. Per aconseguir-lo, les incorporem dins d'una construcció +de música simultània, dins d'una veu creada explícitament. + +@lilypond[quote,verbatim] +\new Voice << + \relative { e''4 f8 d e16 f g8 d4 } + \relative { c''4 d8 b c16 d e8 b4 } +>> +@end lilypond + +Aquest mètode condueix a barrats estranys i advertiments si els +fragments de música no tenen les mateixes duracions exactes. + +@predefined +@code{\voiceOne}, +@code{\voiceTwo}, +@code{\voiceThree}, +@code{\voiceFour}, +@code{\oneVoice}. +@endpredefined + +@seealso +Manual d'aprenentatge: +@rlearning{Les veus contenen música}, +@rlearning{Veus explícites}. + +Referència de la notació: +@rusernamed{Percussion staves,Pautes de percussió}, +@ref{Silencis invisibles}, +@rusernamed{Stems,Pliques}. + +Fragments de codi: +@rlsr{Simultaneous notes}. + + +@node Estils de veu +@unnumberedsubsubsec Estils de veu +@translationof Voice styles + +@cindex estils de veu +@cindex estils, veu +@cindex color de veus +@funindex \voiceOneStyle +@funindex \voiceTwoStyle +@funindex \voiceThreeStyle +@funindex \voiceFourStyle +@funindex \voiceNeutralStyle + +Es poden aplicar colors i formes diferents a les veus per +permetre identificar-les fàcilment: + +@lilypond[quote,verbatim] +<< + \relative { \voiceOneStyle d''4 c2 b4 } + \\ + \relative { \voiceTwoStyle e'2 e } + \\ + \relative { \voiceThreeStyle b2. c4 } + \\ + \relative { \voiceFourStyle g'2 g } +>> +@end lilypond + +Per recuperar la presentació normal s'utilitza l'ordre +@code{\voiceNeutralStyle}. + +@predefined +@code{\voiceOneStyle}, +@code{\voiceTwoStyle}, +@code{\voiceThreeStyle}, +@code{\voiceFourStyle}, +@code{\voiceNeutralStyle}. +@endpredefined + +@seealso +Manual d'aprenentatge +@rlearning{Sento veus}, +@rlearning{Altres fonts d'informació} + +Fragments de codi: +@rlsr{Simultaneous notes}. + + +@node Resolució de les col·lisions +@unnumberedsubsubsec Resolució de les col·lisions +@translationof Collision resolution + +@cindex barrejar notes +@cindex notes, col·lisions de +@cindex col·lisions +@cindex desplaçament de notes +@cindex diverses veus +@cindex veus, diverses +@cindex polifònica, música +@cindex desplaçament de veus +@cindex desplaçament, silenci automàtic de +@cindex desplaçament de silencis, automàtic +@funindex \shiftOn +@funindex \shiftOnn +@funindex \shiftOnnn +@funindex \shiftOff +@funindex \mergeDifferentlyDottedOn +@funindex \mergeDifferentlyDottedOff +@funindex \mergeDifferentlyHeadedOn +@funindex \mergeDifferentlyHeadedOff + +Els caps de notes que estan a diferents veus i tenen la mateixa +alçada, la mateixa forma de cap, i direcció oposada a la plica, es +combinen automàticament, però els que tenen caps diferents o la +mateixa direcció de plica no es combinen. Els silencis que es +troben al costat oposat d'una plica a una altra veu es desplacen +verticalment. L'exemple següent mostra tres circumstàncies +diferents, sobre la pulsació 1 i 3 al primer compàs i sobre la +pulsació 1 del segon compàs, on la combinació automàtica falla. + +@lilypond[quote,verbatim] +<< + \relative { + c''8 d e d c d c4 + g'2 fis + } \\ + \relative { + c''2 c8. b16 c4 + e,2 r + } \\ + \relative { + \oneVoice + s1 + e'8 a b c d2 + } +>> +@end lilypond + +Els caps de notes diferents es poden com binar com es mostra més +a sota. A aquest exemple els caps de la pulsació 1 del primer +compàs sí que es combinen: + +@lilypond[quote,verbatim] +<< + \relative { + \mergeDifferentlyHeadedOn + c''8 d e d c d c4 + g'2 fis + } \\ + \relative { + c''2 c8. b16 c4 + e,2 r + } \\ + \relative { + \oneVoice + s1 + e'8 a b c d2 + } +>> +@end lilypond + +Les figures negres i blanques no es combinen d'aquesta manera, +atès que fora difícil distingir-les. + +També es poden combinar caps amb puntets diferents, com es mostra +a la tercera pulsació del primer compàs: + +@lilypond[quote,verbatim] +<< + \relative { + \mergeDifferentlyHeadedOn + \mergeDifferentlyDottedOn + c''8 d e d c d c4 + g'2 fis + } \\ + \relative { + c''2 c8. b16 c4 + e,2 r + } \\ + \relative { + \oneVoice + s1 + e'8 a b c d2 + } +>> +@end lilypond + +La blanca i la corxera al començament del segon compàs no estan +correctament combinades perquè la combinació automàtica no és +capaç de completar-se satisfactòriament quan es troben tres o més +notes alineades a la mateixa columna de notes, i en aquest cas el +cap combinat és incorrecte. Per aconseguir que la combinació +seleccioni el cap correcte, s'ha d'aplicar un @code{\shift} o +desplaçament a la nota que no es pot combinar. Aquí s'aplica +@code{\shiftOn} per moure el sol agut fora de la columna, i +aleshores @code{\mergeDifferentlyHeadedOn} fa el seu treball +correctament. + +@lilypond[quote,verbatim] +<< + \relative { + \mergeDifferentlyHeadedOn + \mergeDifferentlyDottedOn + c''8 d e d c d c4 + \shiftOn + g'2 fis + } \\ + \relative { + c''2 c8. b16 c4 + e,2 r + } \\ + \relative { + \oneVoice + s1 + e'8 a b c d2 + } +>> +@end lilypond + +L'ordre @code{\shiftOn} permet (tot i que obliga a) que les notes +d'una veu es puguin desplaçar. Quan @code{\shiftOn} s'aplica a +una veu, una nota o acord d'aquesta veu es desplaça solament si la +seva plica xoqués en cas contrari amb una plica d'una altra veu, i +sols si les pliques que xoquen apunten cap a la mateixa +direcció. L'ordre @code{\shiftOff} evita la possibilitat d'aquest +tipus de desplaçament. + +De forma predeterminada, les veus externes (normalment les veus u +i dos) tenen @code{\shiftOff} especificat (desplaçament +desactivat), mentre que les veus interiors (tres i següents) tenen +especificat @code{\shiftOn} (desplaçament activat). Quan s'aplica +un desplaçament, les veus amb pliques cap amunt (veus de numeració +imparell) es desplacen cap a la dreta, i les veus amb les pliques +cap avall (veus amb numeració parell) es desplacen cap a l'esquerra. + +Aquí es pot veure un exemple que us ajudarà a visualitzar la forma +en la qual s'expandirà internament una expressió polifònica. + +@warning{Observeu que amb tres o més veus, l'ordre vertical de les +veus dins del seu fitxer d'entrada no seria el mateix que l'ordre +vertical de les veus al pentagrama.} + +@lilypond[quote,verbatim] +\new Staff \relative { + %% abbreviated entry + << + { f''2 } % 1: highest + \\ + { g,2 } % 2: lowest + \\ + { d'2 } % 3: upper middle + \\ + { b2 } % 4: lower middle + >> + %% internal expansion of the above + << + \new Voice = "1" { \voiceOne \shiftOff f'2 } + \new Voice = "2" { \voiceTwo \shiftOff g,2 } + \new Voice = "3" { \voiceThree \shiftOn d'2 } % shifts right + \new Voice = "4" { \voiceFour \shiftOn b2 } % shifts left + >> +} +@end lilypond + +Dues ordres addicionals, @code{\shiftOnn} i +@code{\shiftOnnn}, ofereixen nivells de desplaçament majors que es +poden especificar temporalment per resoldre col·lisions en +situacions complexes; vegeu @rlearning{Exemple real de música}. + +Sols es combinen les notes si tenen les pliques en direccions +oposades (com la tenen, per exemple, a les veus u i dos de forma +predeterminada o quan les pliques s'estableixen explícitament en +direccions oposades). + +@predefined +@code{\mergeDifferentlyDottedOn}, +@code{\mergeDifferentlyDottedOff}, +@code{\mergeDifferentlyHeadedOn}, +@code{\mergeDifferentlyHeadedOff}. + +@code{\shiftOn}, +@code{\shiftOnn}, +@code{\shiftOnnn}, +@code{\shiftOff}. +@endpredefined + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{additional-voices-to-avoid-collisions.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{forcing-horizontal-shift-of-notes.ly} + +@seealso +Glossari musical: +@rglos{polyphony}. + +Manual d'aprenentatge: +@rlearning{Diverses notes a l'hora}, +@rlearning{Les veus contenen música}. +@rlearning{Exemple real de música}. + +Fragments de codi: +@rlsr{Simultaneous notes}. + +Referència de funcionament intern: +@rinternals{NoteColumn}, +@rinternals{NoteCollision}, +@rinternals{RestCollision}. + +@cindex col·lisions, ignorar + +@knownissues +L'ús de @code{\override NoteColumn.ignore-collision = ##t} fa +que les notes de cap diferent a veus diferents es barregin incorrectament. + +@lilypond[quote,verbatim,fragment] +\mergeDifferentlyHeadedOn +<< \relative { c'16 a' b a } \\ \relative { c'2 } >> +\override NoteColumn.ignore-collision = ##t +<< \relative { c'16 a' b a } \\ \relative { c'2 } >> +@end lilypond + +@ignore +@knownissues +@c TODO investigate! Sometimes it works, sometimes not. --FV +No estan clars els requisits per combinar amb èxit caps de nota +diferents que tenen també diferent puntet. +@end ignore + + +@node Combinació automàtica de les parts +@unnumberedsubsubsec Combinació automàtica de les parts +@translationof Automatic part combining + +@cindex automàtica, combinació de parts +@cindex parts, combinació automàtica +@cindex parts, combinador de +@cindex a due, parts +@cindex solo, parts +@funindex \partcombine + +La combinació automàtica de particel·les s'usa per barrejar dues +parts musicals diferents sobre un pentagrama. Això pot ser de +gran ajuda especialment en gravar partitures orquestrals. +S'imprimeix una sola veu quan la música de les dues veus és la +mateixa, però en aquells llocs on difereixen, s'imprimeix una +segona veu. Les direccions de les pliques s'estableixen cap amunt +o cap avall segons procedeixi, a l'hora que s'identifiquen i +queden marcades les parts de solista i de duo. + +La sintaxi per a la combinació automàtica de les parts és: + +@example +\partcombine @var{expressió_musical_1} @var{expressió_musical_2} +@end example + +L'exemple següent exemplifica la funcionalitat bàsica, posant les +parts en un sol pentagrama en forma polifònica, i establint les +direccions de les pliques de forma adequada. S'utilitzen les +mateixes variables per a les parts independents i el pentagrama +combinat. + +@lilypond[quote,verbatim] +instrumentOne = \relative { + c'4 d e f | + R1 | + d'4 c b a | + b4 g2 f4 | + e1 | +} + +instrumentTwo = \relative { + R1 | + g'4 a b c | + d4 c b a | + g4 f( e) d | + e1 | +} + +<< + \new Staff \instrumentOne + \new Staff \instrumentTwo + \new Staff \partcombine \instrumentOne \instrumentTwo +>> +@end lilypond + +Les dues parts tenen notes idèntiques al tercer compàs, per la +qual cosa apareixen sols un cop. Les direccions de les pliques i +lligadures s'estableixen de forma automàtica, segons es tracti +d'un sol o d'un uníson. Quan cal en situacions de polifonia, la +primera part (que rep el nom de context @code{one}) rep les +pliques cap amunt, mentre que la segona part (anomenada +@code{two}) sempre rep les pliques cap avall. Als fragments de +solo, les parts es marquen amb @qq{Solo} i @qq{Solo II}, +respectivament. Les parts en uníson (@notation{a due}) es marquen +amb el text @qq{a2}. + +De forma predeterminada, el combinador de parts barreja dues notes +de la mateixa alçada com una nota @notation{a due}, combina les +notes que tinguin la mateixa duració i estiguin a menys d'una +novena distància com acords, i disposa en veus separades les notes +que estiguin a més d'una novena de distància (o quan hi ha +creuament de veus). Aquest comportament es pot sobreescriure amb +un argument opcional que consisteix en una parella de números +després de l'ordre @code{\partcombine}: el primer especifica +l'interval on les notes comencen a estar combinades (el valor +predeterminat és zero) i el segon on les notes es divideixen en +veus distintes. L'ajust del segon argument al valor zero +significa que el combinador de parts separa les notes que estiguin +dins d'un interval de segona o més, establir-lo al valor u separa +les notes d'una tercera o més, i així successivament. + +@lilypond[quote,verbatim] +instrumentOne = \relative { + a4 b c d | + e f g a | + b c d e | +} + +instrumentTwo = \relative { + c'4 c c c | + c c c c | + c c c c | +} + +<< + \new Staff \partcombine \instrumentOne \instrumentTwo + \new Staff \partcombine #'(2 . 3) \instrumentOne \instrumentTwo +>> +@end lilypond + +Els dos arguments de @code{\partcombine} s'interpreten com +contextos de @rinternals{Voice} separats, per la qual cosa si la +música està escrita en mode relatiu, aleshores @emph{las dues} +parts han d'incloure la funció @code{\relative}, és a dir: + +@example +\partcombine + \relative @dots{} @var{expresión_musical_1} + \relative @dots{} @var{expresión_musical_2} +@end example + +@noindent +Una secció @code{\relative} que es troba fora de +@code{\partcombine} no té cap efecte sobre les notes de +@code{@var{expresión_musical_1}} i +@code{@var{expresión_musical_2}}. + +@funindex \partcombineChords +@funindex \partcombineApart +@funindex \partcombineUnisono +@funindex \partcombineSoloI +@funindex \partcombineSoloII +@funindex \partcombineAutomatic + +A les partitures professionals, sovint les veus es mantenen +separades entre sí durant passatges llargs fins i tot si algunes +notes coincideixen entre ambdues, i podrien escriure's fàcilment +com un uníson. Per això, la combinació de les notes en un acord, +o la visualització d'una veu com un solo, no són solucions ideals +perquè la funció @code{\partcombine} considera cada nota de forma +individual. En aquest cas, el resultat de la funció +@code{\partcombine} es pot alterar o corregir amb una de les +ordres següents. Totes les ordres es poden antecedir per +@code{\once} perquè s'apliquin sols a la nota següent dins de +l'expressió musical. + +@itemize +@item +@code{\partcombineApart} manté les notes com dues veus separades +fins i tot si es poden combinar en un acord o uníson. + +@item +@code{\partcombineChords} combina les notes d'un acord. + +@item +@code{\partcombineUnisono} combina les dues veus com uníson i +marca el resultat com @qq{unison}. + +@item +@code{\partcombineSoloI} mostra sols la veu u i la marca com +@qq{Solo}. + +@item +@code{\partcombineSoloII} imprimeix sols la veu dos i la marca com +@qq{Solo}. + +@item +@code{\partcombineAutomatic} finalitza l'efecte de les ordres +anteriors i retorna a la funcionalitat estàndard de +@code{\partcombine}. + +@end itemize + +@lilypond[quote,verbatim] +instrumentOne = \relative c' { + \partcombineApart c2^"apart" e | + \partcombineAutomatic e2^"auto" e | + \partcombineChords e'2^"chord" e | + \partcombineAutomatic c2^"auto" c | + \partcombineApart c2^"apart" \once \partcombineChords e^"chord once" | + c2 c | +} +instrumentTwo = \relative { + c'2 c | + e2 e | + a,2 c | + c2 c' | + c2 c | + c2 c | +} + +<< + \new Staff { \instrumentOne } + \new Staff { \instrumentTwo } + \new Staff { \partcombine \instrumentOne \instrumentTwo } +>> +@end lilypond + + +@subsubsubheading Ús de \partcombine amb lletra + +@cindex \partcombine i lletra + +L'ordre @code{\partcombine} no està dissenyada per funcionar amb +la lletra de les cançons; si una de les veus rep un nom explícit +per poder adjuntar una lletra, el combinador de parts no +funciona. Tanmateix, es pot aconseguir aquest efecte usant un +context @code{NullVoice}. Vegeu +@rusernamed{Polyphony with shared lyrics,Polifonia amb lletres compartides}. + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{combining-two-parts-on-the-same-staff.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing-partcombine-texts.ly} + +@seealso +Glossari musical: +@rglos{a due}, +@rglos{part}. + +Referència de la notació: +@ref{Escriptura de les particel·les}. + +Fragments de codi: +@rlsr{Simultaneous notes}. + +Referència de funcionament intern: +@rinternals{PartCombineMusic}, +@rinternals{Voice}. + +@knownissues +Totes les funcions @code{\partcombine@dots{}} admeten +exclusivament dues veus. + +Les funcions @code{\partcombine@dots{}} no es poden escriure dins +dels blocs @code{\tuplet} ni @code{\relative}. + +Si @code{printPartCombineTexts} està establert i les dues veus +executen i acaben les mateixes notes al mateix compàs, el +combinador de parts pot gravar @code{a2} més d'un cop en aquest +compàs. + +@code{\partcombine} sols té en compte el moment d'inici de les +notes dins d'una veu @code{Voice}; per exemple, no pot recordar si +una nota dins d'una veu ja ha començat quan les notes que es +combinen s'han iniciat just ara a l'altra veu. Això pot conduir a +cert nombre de problemes inesperats entre els que s'inclou la +impressió incorrecta de marques de @qq{Solo} o de @qq{Unison}. + +@code{\partcombine} conserva tots els elements extensos +(lligadures, reguladors, etc.) dins del mateix context +@code{Voice} de forma que si qualsevol d'aquests elements extensos +inicia o acaba a un context @code{Voice} diferent, pot no +imprimir-se o fer-lo incorrectament. + +Si la funció @code{\partcombine} no pot combinar les dues +expressions musicals (és a dir, quan les dues veus tenen duracions +diferents), atorgarà internament els seus propis noms a les veus: +@code{one} i @code{two} respectivament. Això significa que si es +produeix un canvi a un context @code{Voice} que tingui un nom +diferent, s'ignoraran els esdeveniments dins del context +@code{Voice} que té el nom diferent. + +Consulteu també l'apartat +@emph{Advertiments i problemes coneguts} a la sessió +@rusernamed{Default tablatures,Tabulatures predeterminades} +en utilitzar@code{\partcombine} amb tabulatures, i la @emph{Nota} +de @ref{Barres automàtiques} en utilitzar el barrat automàtic. + +@node Escriptura de música en paral·lel +@unnumberedsubsubsec Escriptura de música en paral·lel +@translationof Writing music in parallel + +@cindex escriptura de música en paral·lel +@cindex música intercalada +@cindex paral·lel, música en +@funindex \parallelMusic + +La música per diverses parts es pot intercalar dins del codi +d'entrada. La funció @code{\parallelMusic} admet una llista que +conté els noms de les variables que es crearan, i una expressió +musical. El contingut dels compassos alternatius estrets de +l'expressió es converteixen en el valor de les variables +respectives, de manera que podem utilitzar-les més tard per +imprimir la música. + +@warning{És obligatori utilitzar comprovacions de compàs +@code{|}, y els compassos han de tenir la mateixa longitud.} + +@lilypond[quote,verbatim] +\parallelMusic #'(voiceA voiceB voiceC) { + % Bar 1 + r8 g'16 c'' e'' g' c'' e'' r8 g'16 c'' e'' g' c'' e'' | + r16 e'8.~ 4 r16 e'8.~ 4 | + c'2 c'2 | + + % Bar 2 + r8 a'16 d'' f'' a' d'' f'' r8 a'16 d'' f'' a' d'' f'' | + r16 d'8.~ 4 r16 d'8.~ 4 | + c'2 c'2 | + +} +\new StaffGroup << + \new Staff << \voiceA \\ \voiceB >> + \new Staff { \clef bass \voiceC } +>> +@end lilypond + +Es pot fer servir el mode relatiu. Observeu que l'ordre +@code{\relative} no s'utilitza dins del propi bloc +@code{\parallelMusic}. Les notes mantenen la relació amb la nota +anterior de la mateixa veu, no amb la nota anterior dins del codi +d'entrada (dit d'una altra manera, les notes relatives de +@code{voiceA} ignoren les notes que hi ha a @code{voiceB}. + +@lilypond[quote,verbatim] +\parallelMusic #'(voiceA voiceB voiceC) { + % Bar 1 + r8 g16 c e g, c e r8 g,16 c e g, c e | + r16 e8.~ 4 r16 e8.~ 4 | + c2 c | + + % Bar 2 + r8 a,16 d f a, d f r8 a,16 d f a, d f | + r16 d8.~ 4 r16 d8.~ 4 | + c2 c | + + } +\new StaffGroup << + \new Staff << \relative c'' \voiceA \\ \relative c' \voiceB >> + \new Staff \relative c' { \clef bass \voiceC } +>> +@end lilypond + +Això funciona acceptablement bé per a música de piano. L'exemple +següent assigna cada quatre compassos consecutius a quatre variables: + +@lilypond[quote,verbatim] +global = { + \key g \major + \time 2/4 +} + +\parallelMusic #'(voiceA voiceB voiceC voiceD) { + % Compàs 1 + a8 b c d | + d4 e | + c16 d e fis d e fis g | + a4 a | + + % Compàs 2 + e8 fis g a | + fis4 g | + e16 fis g a fis g a b | + a4 a | + + % Compàs 3 ... +} + +\score { + \new PianoStaff << + \new Staff { + \global + << + \relative c'' \voiceA + \\ + \relative c' \voiceB + >> + } + \new Staff { + \global \clef bass + << + \relative c \voiceC + \\ + \relative c \voiceD + >> + } + >> +} +@end lilypond + +@seealso +Manual d'aprenentatge: +@rlearning{Organitzar les peces mitjançant variables} + +Fragments de codi: +@rlsr{Simultaneous notes}. diff --git a/Documentation/ca/notation/staff.itely b/Documentation/ca/notation/staff.itely new file mode 100644 index 0000000000..b955856bbf --- /dev/null +++ b/Documentation/ca/notation/staff.itely @@ -0,0 +1,1577 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ca -*- +@ignore + Translation of GIT committish: 19d0e8e1a9cee3444ec4915b1d2d116e67f5b3f7 + + 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 \version "2.19.21" + +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + +@node Notació dels pentagrames +@section Notació dels pentagrames +@translationof Staff notation + +@c The line width is a bit of a hack to allow space for the +@c instrument names. +@lilypondfile[quote,ragged-right,line-width=14.5\cm,staffsize=16]{staff-headword.ly} + +Aquesta secció explica com infliur sobre l'aparença dels +pentagrames, com imprimir partitures amb més d'un pentagrama i com +afegir indicacions de temps i notes guia als pentagrames. + +@menu +* Visualització dels pentagrames:: +* Modificació de pentagrames separats:: +* Escriptura de les particel·les:: +@end menu + + +@node Visualització dels pentagrames +@subsection Visualització dels pentagrames +@translationof Displaying staves + +Aquesta secció descriu els diferents mètodes de creació de +pentagrames i grups de pentagrames. + +@menu +* Creació d'instàncies de pentagrames nous:: +* Agrupament de pentagrames:: +* Grups de pentagrames niuats:: +* Separació de sistemes:: +@end menu + + +@node Creació d'instàncies de pentagrames nous +@unnumberedsubsubsec Creació d'instàncies de pentagrames nous +@translationof Instantiating new staves + +@cindex nou pentagrama +@cindex pauta +@cindex pentagrama, iniciar +@cindex pentagrama, instanciar +@cindex pentagrama, nou +@cindex pentagrama de percussió +@cindex pentagrama únic +@cindex percussió, pauta de +@cindex gregorià, cant, pauta de transcripció de +@cindex rítmica, pauta +@cindex tabulatura, pauta de + +@funindex \drummode +@funindex DrumStaff +@funindex RhythmicStaff +@funindex TabStaff +@funindex MensuralStaff +@funindex VaticanaStaff +@funindex GregorianTranscriptionStaff + +Les @notation{pautes} i els @notation{pentagrames} o pautes de +cinc línies es creen amb les ordres @code{\new} o +@code{\context}. Per veure més detalls, consulteu +@rusernamed{Creating and referencing contexts,Creació i referència de contextos}. + +El context bàsic de pentagrama és @code{Staff}: + +@lilypond[verbatim,quote] +\new Staff \relative { c''4 d e f } +@end lilypond + +El context @code{DrumStaff} crea una pauta de cinc línies +preparada per a un conjunt de bateria típic. Cada instrument es +presenta amb un símbol diferent. Els instruments s'escriuen en el +mode de percussió que segueix a una ordre @code{\drummode}, amb +cada instrument identificat per un nom. Per veure més detalls, +consulteu @rusernamed{Percussion staves,Pautes de percussió}. + +@lilypond[verbatim,quote] +\new DrumStaff { + \drummode { cymc hh ss tomh } +} +@end lilypond + +@code{RhythmicStaff} crea una pauta d'una sola línia que sols +mostra les duracions de l'entrada. Es preserven les duracions +reals. Per veure més detalls, consulteu +@ref{Mostrar els ritmes de la melodia}. + +@lilypond[verbatim,quote] +\new RhythmicStaff { c4 d e f } +@end lilypond + +@code{TabStaff} crea una tabulatura amb sis cordes en l'afinació +estàndard de la guitarra. Per veure més detalls, consulteu +@rusernamed{Default tablatures,Tabulatures predeterminades}. + +@lilypond[verbatim,quote] +\new TabStaff \relative { c''4 d e f } +@end lilypond + +Hi ha dos contextos de pauta específics per a la notació de música +antiga: @code{MensuralStaff} i @code{VaticanaStaff}. es descriuen +a @rusernamed{Pre-defined contexts,Contextos predefinits}. + +@code{GregorianTranscriptionStaff} crea una pauta per a la notació +moderna de cant gregorià. No mostra línies divisòries. +@lilypond[verbatim,quote] +\new GregorianTranscriptionStaff \relative { c''4 d e f e d } +@end lilypond + +Es poden definir contextos nous de pentagrama únic. Per veure més +detalls, consulteu @rusernamed{Defining new contexts,Definició de nous contextos}. + +@seealso +Glossari musical: +@rglos{staff}, +@rglos{staves}. + +Referència de la notació: +@rusernamed{Creating and referencing contexts,Creació i referència de contextos}, +@rusernamed{Percussion staves,Pautes de percussió}, +@ref{Mostrar els ritmes de la melodia}, +@rusernamed{Default tablatures,Tabulatures predeterminades}, +@rusernamed{Pre-defined contexts,Contextos predefinits}, +@ref{El símbol del pentagrama}, +@rusernamed{Gregorian chant contexts,Contextos del cant gregorià}, +@rusernamed{Mensural contexts,Contextos de la música mensural}, +@rusernamed{Defining new contexts,Definició de nous contextos}. + +Fragments de codi: +@rlsr{Staff notation}. + +Referència de funcionament intern: +@rinternals{Staff}, +@rinternals{DrumStaff}, +@rinternals{GregorianTranscriptionStaff}, +@rinternals{RhythmicStaff}, +@rinternals{TabStaff}, +@rinternals{MensuralStaff}, +@rinternals{VaticanaStaff}, +@rinternals{StaffSymbol}. + + +@node Agrupament de pentagrames +@unnumberedsubsubsec Agrupament de pentagrames +@translationof Grouping staves + +@cindex començament del sistema +@cindex pentagrames, diversos +@cindex claudàtor vertical +@cindex clau vertical +@cindex pentagrames de piano +@cindex pentagrames, grup de +@cindex pauta de cor +@cindex sistema, delimitador de començament +@cindex cor, sistema de +@cindex piano, sistema de +@cindex piano, pentagrames de +@cindex sistema de piano +@cindex sistema de cor +@cindex sistema + +Hi ha diversos contextos per agrupar pentagrames individuals +formant sistemes. Cada context d'agrupament estableix l'estil del +delimitador de començament del sistema i el comportament de les +barres de compàs. + +Si no s'especifica cap context, s'usen les propietats +predeterminades: el grup comença amb una línia vertical i les +barres de compàs no estan connectades. + +@lilypond[verbatim,quote] +<< + \new Staff \relative { c''1 c } + \new Staff \relative { c''1 c } +>> +@end lilypond + +Al context @code{StaffGroup}, el grup s'inicia amb una clau i les +barres de compàs es dibuixen travessant tots els pentagrames. + +@lilypond[verbatim,quote] +\new StaffGroup << + \new Staff \relative { c''1 c } + \new Staff \relative { c''1 c } +>> +@end lilypond + +A un @code{ChoirStaff} (sistema de cor), el grup s'inicia amb una +clau, però les barres de compàs no estan connectades. + +@lilypond[verbatim,quote] +\new ChoirStaff << + \new Staff \relative { c''1 c } + \new Staff \relative { c''1 c } +>> +@end lilypond + +A un @code{GrandStaff} (sistema de piano), el grup s'inicia amb +una clau i les barres de compàs es connecten entre els pentagrames. + +@lilypond[verbatim,quote] +\new GrandStaff << + \new Staff \relative { c''1 c } + \new Staff \relative { c''1 c } +>> +@end lilypond + +El @code{PianoStaff} (sistema de piano) es idèntic a +@code{GrandStaff}, excepte que contempla directament la impressió +del nom de l'instrument. Per veure més detalls, consulteu +@ref{Noms d'instruments}. + +@lilypond[verbatim,quote] +\new PianoStaff << + \set PianoStaff.instrumentName = #"Piano" + \new Staff \relative { c''1 c } + \new Staff \relative { \clef bass c1 c } +>> +@end lilypond + +Cada context de grup de pentagrames fixa la propietat del +delimitador d'inici @code{systemStartDelimiter} a un dels valors +següents: @code{SystemStartBar} (línia), +@code{SystemStartBrace} (clau) o @code{SystemStartBracket} +(claudàtor). També està disponible un quart delimitador, +@code{SystemStartSquare} (clau amb angles rectes), però s'ha +d'especificar explícitament. + +Es poden definir contextos nous de grup de pentagrames. Per veure +més detalls, consulteu +@rusernamed{Defining new contexts,Definició de nous contextos}. + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{use-square-bracket-at-the-start-of-a-staff-group.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{display-bracket-with-only-one-staff-in-a-system.ly} + +@cindex disseny «mensurstriche» +@cindex mensurstriche, disseny +@cindex renaixement, música del +@cindex transcripció de música mensural +@cindex mensural, música, transcripció de + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{mensurstriche-layout-bar-lines-between-the-staves.ly} + +@seealso +Glossari musical: +@rglos{brace}, +@rglos{bracket}, +@rglos{grand staff}. + +Referència de la notació: +@ref{Noms d'instruments}, +@rusernamed{Defining new contexts,Definició de nous contextos}. + +Fragments de codi: +@rlsr{Staff notation}. + +Referència de funcionament intern: +@rinternals{Staff}, +@rinternals{StaffGroup}, +@rinternals{ChoirStaff}, +@rinternals{GrandStaff}, +@rinternals{PianoStaff}, +@rinternals{SystemStartBar}, +@rinternals{SystemStartBrace}, +@rinternals{SystemStartBracket}, +@rinternals{SystemStartSquare}. + + +@node Grups de pentagrames niuats +@unnumberedsubsubsec Grups de pentagrames niuats +@translationof Nested staff groups + +@cindex pentagrames niuats +@cindex niuat de pentagrames +@cindex sistema, delimitadors d'inici niuats +@cindex niuats, claus de pentagrama +@cindex claus niuades +@cindex claus, niuat de + +Els contextos de grups de pentagrames es poden niuar fins a una +profunditat arbitrària. En aquest cas, cada contest descendent +crea una clau nova adjacent a la clau del seu grup pare. + +@lilypond[verbatim,quote] +\new StaffGroup << + \new Staff \relative { c''2 c | c2 c } + \new StaffGroup << + \new Staff \relative { g'2 g | g2 g } + \new StaffGroup \with { + systemStartDelimiter = #'SystemStartSquare + } + << + \new Staff \relative { e'2 e | e2 e } + \new Staff \relative { c'2 c | c2 c } + >> + >> +>> +@end lilypond + +Es poden definir nous contextos de grups de pentagrames niuats. +Per veure més detalls, consulteu +@rusernamed{Defining new contexts,Definició de nous contextos}. + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{nesting-staves.ly} + +@seealso +Referència de la notació: +@ref{Agrupament de pentagrames}, +@ref{Noms d'instruments}, +@rusernamed{Defining new contexts,Definició de nous contextos}. + +Fragmentos de código: +@rlsr{Staff notation}. + +Referència de funcionament intern: +@rinternals{StaffGroup}, +@rinternals{ChoirStaff}, +@rinternals{SystemStartBar}, +@rinternals{SystemStartBrace}, +@rinternals{SystemStartBracket}, +@rinternals{SystemStartSquare}. + + +@node Separació de sistemes +@unnumberedsubsubsec Separació de sistemes +@translationof Separating systems + +@cindex separació de sistemes, marca de + +Si el nombre de sistemes per pàgina varia d'una pàgina a una +altra, s'acostuma a separar els sistemes col·locant una marca +separadora entre ells. De forma predeterminada, el separador de +sistemes està inhabilitat, però es pot activar amb una opció de +@code{\paper}. + +@c \book is required here to display the system separator +@c ragged-right is required as there are two systems +@lilypond[verbatim,quote,ragged-right] +\book { + \score { + \new StaffGroup << + \new Staff { + \relative { + c''4 c c c + \break + c4 c c c + } + } + \new Staff { + \relative { + c''4 c c c + \break + c4 c c c + } + } + >> + } + \paper { + system-separator-markup = \slashSeparator + % les ordres següents sols calen per al format d'aquesta documentació + paper-width = 100\mm + paper-height = 100\mm + tagline = ##f + } +} +@end lilypond + +@seealso +Referència de la notació: +@rusernamed{Page layout,Disposició de la pàgina}. + +Fragments de codi: +@rlsr{Staff notation}. + +@node Modificació de pentagrames separats +@subsection Modificació de pentagrames separats +@translationof Modifying single staves + +Aquesta secció explica com canviar els atributs específics d'un +pentagrama: per exemple, canviar el nombre de línies o la mida de +la pauta. També es descriuen els mètodes per començar i acabar +els pentagrames, i establir seccions d'ossia. + +@menu +* El símbol del pentagrama:: +* Pentagrames d'Ossia:: +* Ocultament de pentagrames:: +@end menu + + +@node El símbol del pentagrama +@unnumberedsubsubsec El símbol del pentagrama +@translationof Staff symbol + +@cindex pentagrama, símbol del +@cindex pentagrama, aturar i iniciar línies del +@cindex pentagrama, modificar les línies del +@cindex addicionals, línies +@cindex addicionals internes, línies +@cindex addicionals, modificar línies +@cindex línies del pentagrama +@cindex línies addicionals + +@funindex \startStaff +@funindex \stopStaff + +Es poden usar les ordres @code{\stopStaff} i +@code{\startStaff} per aturar i (re)iniciar, respectivament, la +impressió de les línies de la pauta a qualsevol punt de la partitura. + +@lilypond[verbatim,quote] +\relative { + \stopStaff f''4 d \startStaff g, e + f'4 d \stopStaff g, e + f'4 d \startStaff g, e +} +@end lilypond + +@predefined +@code{\startStaff}, +@code{\stopStaff}. +@endpredefined + +Les línies de la pauta pertanyen al grob @code{StaffSymbol} +(incloses les línies addicionals) i es poden modificar usant es +propietats de @code{StaffSymbol}, però aquestes modificacions +s'han de fer abans que el pentagrama es (re)iniciï. + +Es pot canviar el nombre línies de la pauta: + +@lilypond[verbatim,quote] +\relative { + f''4 d \stopStaff + \override Staff.StaffSymbol.line-count = #2 + \startStaff g, e | + + f'4 d \stopStaff + \revert Staff.StaffSymbol.line-count + \startStaff g, e | +} +@end lilypond + +La posició de cada una de les línies de la pauta també poden +canviar-se. Una llista de números fixa la posició de cada línia. +@code{0}@tie{}correspon a la línia central normal, i les posicions +normals de les línies són +@code{(-4@tie{}-2@tie{}0@tie{}2@tie{}4)}. S'imprimeix una sola +línia de pauta per cada valor que s'introdueix, de manera que el +nombre de línies així com la seva posició a la pauta poden +canviar-se amb una sola operació de sobreescriptura. + +@lilypond[verbatim,quote] +\relative { + f''4 d \stopStaff + \override Staff.StaffSymbol.line-positions = #'(1 3 5 -1 -3) + \startStaff g, e | + f'4 d \stopStaff + \override Staff.StaffSymbol.line-positions = #'(8 6.5 -6 -8 -0.5) + \startStaff g, e | +} +@end lilypond + +Per preservar les direccions típiques de les pliques (cap amunt +per a la meitat inferior del pentagrama i cap avall per a la +meitat superior), ham d'alinear la línia (o espai) central de la +pauta personalitzada amb la posició de la línia central normal +(0). Pot caldre un ajust de la posició de la clau i del +Do@tie{}central perquè es corresponguin a les línies noves. +Vegeu @ref{Clau}. + +Pot canviar-se el gruix de les línies de la pauta. També resulten +afectades, de forma predeterminada, les línies addicionals i no la +plica de les figures. + +@lilypond[verbatim,quote] +\new Staff \with { + \override StaffSymbol.thickness = #3 +} \relative { + f''4 d g, e +} +@end lilypond + +També és possible fixar el gruix de les línies addicionals de +forma independent del de les línies de la pauta. + +@lilypond[verbatim,quote] +\new Staff \with { + \override StaffSymbol.thickness = #2 + \override StaffSymbol.ledger-line-thickness = #'(0.5 . 0.4) +} \relative { + f'''4 a, a,, f +} +@end lilypond + +@noindent +El primer valor es multiplica pel gruix de les línies del +pentagrama, el segon per l'amplada d'un espai del pentagrama, i +després els dos valors se sumen per obtenir el gruix de les línies +addicionals. + +Es poden alterar les posicions de les línies addicionals: + +@lilypond[verbatim,quote] +\new Staff \with { + \override StaffSymbol.ledger-positions = #'(-3 -2 -1 2 5 6) +} \relative { + f'''4 a, a,, f +} +@end lilypond + +Pot aconseguir-se que les línies addicionals afegides apareguin +per sobre o per sota del cap de les figures, depenent de la +posició actual relativa a d'altres caps de figura que tenen també +les seves pròpies línies addicionals. + +@lilypond[verbatim,quote] +\new Staff \with { + \override StaffSymbol.ledger-extra = #4 +} \relative { + f'''4 a, d, f, +} +@end lilypond + +També es pot fer que les línies addicionals apareguin dins del +pentagrama al lloc on es requereixin línies de pauta +personalitzades. L'exemple mostra la posició predeterminada de +les línies addicionals quan el valor de posició explícit +@code{ledger-position} se ha fixat o no. L'ordre +@code{\stopStaff} cal a l'exemple per revertir l'ordre de +sobreescriptura @code{\override} per a tot el +@code{StaffSymbol} (el símbol de pauta). + +@lilypond[verbatim,quote] +\relative d' { + \override Staff.StaffSymbol.line-positions = #'(-8 0 2 4) + d4 e f g + \stopStaff + \startStaff + \override Staff.StaffSymbol.ledger-positions = #'(-8 -6 (-4 -2) 0) + d4 e f g +} +@end lilypond + +Pot alterar-se la distància entre línies de pauta. Això afecta +també l'espaiat de les línies addicionals. + +@lilypond[verbatim,quote] +\new Staff \with { + \override StaffSymbol.staff-space = #1.5 +} \relative { + f'''4 d, g, e, +} +@end lilypond + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{making-some-staff-lines-thicker-than-the-others.ly} + +@seealso +Glossari musical: +@rglos{line}, +@rglos{ledger line}, +@rglos{staff}. + +Referència de la notació: +@ref{Clau}. + +Fragments de codi: +@rlsr{Staff notation}. + +Referència de funcionament intern: +@rinternals{StaffSymbol}, +@rinternals{staff-symbol-interface}. + + +@node Pentagrames d'Ossia +@unnumberedsubsubsec Pentagrames d'Ossia +@translationof Ossia staves + +@cindex pentagrama a la francesa +@cindex ossia +@cindex francesa, pentagrames a la +@cindex pauta, escalat de +@cindex escalat de pentagrames + +@funindex \startStaff +@funindex \stopStaff + +Els pentagrames @notation{Ossia} es poden preparar mitjançant la +creació d'un pentagrama simultani nou a la posició adequada: + +@lilypond[verbatim,quote] +\new Staff \relative { + c''4 b d c + << + { c4 b d c } + \new Staff { e4 d f e } + >> + c4 b c2 +} +@end lilypond + +@noindent +Tanmateix, l'exemple anterior no es el que normalment es desitja. +Per crear pentagrames d'ossia que estiguin per sobre el pentagrama +original, que no tinguin ni compàs ni clau, i que tinguin una mida +menor de tipus de lletra, es poden fer servir diversos +ajustaments. El Manual d'Aprenentatge descriu una tècnica +específica per assolir aquest objectiu, començant per +@rlearning{Niuat d'expressions musicals}. + +L'exemple següent fa servir la propietat @code{alignAboveContext} +per alinear el pentagrama d'ossia. Aquest mètode és molt +convenient quan calen sols alguns pentagrames d'ossia. + +@lilypond[verbatim,quote] +\new Staff = "main" \relative { + c''4 b d c + << + { c4 b d c } + + \new Staff \with { + \remove "Time_signature_engraver" + alignAboveContext = #"main" + \magnifyStaff #2/3 + firstClef = ##f + } + { e4 d f e } + >> + c4 b c2 +} +@end lilypond + +Si es requereixen molts pentagrames d'ossia aïllats, pot ser més +convenient la creació d'un context @code{Staff} buit amb +un @emph{identificador de context} específic; després es poden +crear els pentagrames d'ossia @emph{cridant} a aquest context i +usant @code{\startStaff} i @code{\stopStaff} als punts desitjats. +Els avantatges d'aquest mètode són més patents si la peça és més +llarga com a l'exemple següent. + +@lilypond[verbatim,quote,ragged-right] +<< + \new Staff = "ossia" \with { + \remove "Time_signature_engraver" + \hide Clef + \magnifyStaff #2/3 + } + { \stopStaff s1*6 } + + \new Staff \relative { + c'4 b c2 + << + { e4 f e2 } + \context Staff = "ossia" { + \startStaff e4 g8 f e2 \stopStaff + } + >> + g4 a g2 \break + c4 b c2 + << + { g4 a g2 } + \context Staff = "ossia" { + \startStaff g4 e8 f g2 \stopStaff + } + >> + e4 d c2 + } +>> +@end lilypond + +Com a alternativa, es pot usar l'ordre +@code{\RemoveAllEmptyStaves} per crear pentagrames d'ossia. Aquest +mètode és molt convenient quan els pentagrames d'ossia apareixen +immediatament després d'un salt de línia. Per veure més +informació sobre @code{\RemoveAllEmptyStaves}, consulteu +@ref{Ocultament de pentagrames}. + +@lilypond[verbatim,quote,ragged-right] +<< + \new Staff = "ossia" \with { + \remove "Time_signature_engraver" + \hide Clef + \magnifyStaff #2/3 + \RemoveAllEmptyStaves + } \relative { + R1*3 + c''4 e8 d c2 + } + \new Staff \relative { + c'4 b c2 + e4 f e2 + g4 a g2 \break + c4 b c2 + g4 a g2 + e4 d c2 + } +>> +@end lilypond + + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{vertically-aligning-ossias-and-lyrics.ly} + +@seealso +Glossari musical: +@rglos{ossia}, +@rglos{staff}, +@rglos{Frenched staff}. + +Manual d'aprenentatge: +@rlearning{Niuat d'expressions musicals}, +@rlearning{Mida dels objectes}, +@rlearning{Longitud i gruix dels objectes}. + +Referència de la notació: +@ref{Ocultament de pentagrames}. + +Fragments de codi: +@rlsr{Staff notation}. + +Referència de funcionament intern: +@rinternals{StaffSymbol}. + + +@node Ocultament de pentagrames +@unnumberedsubsubsec Ocultament de pentagrames +@translationof Hiding staves + +@cindex francesa, partitures a la +@cindex ocultament de pentagrames +@cindex francesa, pentagrama a la +@cindex pentagrama, ocultament de +@cindex pentagrama buit +@cindex ocultar pentagrames +@cindex buit, pentagrama + +@funindex \RemoveEmptyStaves +@funindex \RemoveAllEmptyStaves +@funindex Staff_symbol_engraver +@funindex \stopStaff + +Es poden ocultar les línies del pentagrama traient el gravador +@code{Staff_symbol_engraver} del context de @code{Staff}. Com a +alternativa es pot utilitzar l'ordre @code{\stopStaff}. + +@lilypond[verbatim,quote] +\new Staff \with { + \remove "Staff_symbol_engraver" +} +\relative { a''8 f e16 d c b a2 } +@end lilypond + + +Es poden ocultar els pentagrames buits (per fer el que es coneix +com a @q{partitura a la francesa}) aplicant l'ordre +@code{\RemoveEmptyStaves} sobre un context, cosa que es pot fer +globalment (dins del bloc @code{\layout}) així com per a pautes +específiques sols (dins d'un bloc @code{\with}). Aquest ordre +elimina totes les pautes buides de la partitura excepte les del +primer sistema. Si volem ocultar també les del primer sistema, +usem @code{\RemoveAllEmptyStaves}. Els contextos que estan +contemplats són @code{Staff}, +@code{RhythmicStaff} i @code{VaticanaStaff}. + +@warning{Un pentagrama es considera buit quan conté sols silencis, +silencis multicompàs, desplaçaments, silencis de separació o una +combinació d'aquests elements.} + +@lilypond[verbatim,quote,ragged-right] +\layout { + \context { + \Staff + \RemoveEmptyStaves + } +} + +\relative << + \new Staff { + e'4 f g a \break + b1 \break + a4 b c2 + } + \new Staff { + c,4 d e f \break + R1 \break + f4 g c,2 + } +>> +@end lilypond + +@cindex ossia + +@noindent +També es pot fer ser servir @code{\RemoveAllEmptyStaves} per crear +seccions d'ossia per a un pentagrama. Per veure més detalls, consulteu +@ref{Pentagrames d'Ossia}. + + +@predefined +@code{\RemoveEmptyStaves}, +@code{\RemoveAllEmptyStaves}. +@endpredefined + +@seealso +Glossari musical: +@rglos{Frenched staff}. + +Manual d'aprenentatge: +@rlearning{Visibilitat i color dels objectes}. + +Referència de la notació: +@rusernamed{Changing context default settings,Canvi dels valores per defecte dels contextos}, +@ref{El símbol del pentagrama}, +@ref{Pentagrames d'Ossia}, +@rusernamed{Hidden notes,Notes ocultes}, +@ref{Silencis invisibles}, +@rusernamed{Visibility of objects,Visibilitat dels objectes}. + +Fragments de codi: +@rlsr{Staff notation}. + +Referència de funcionament intern: +@rinternals{ChordNames}, +@rinternals{FiguredBass}, +@rinternals{Lyrics}, +@rinternals{Staff}, +@rinternals{VerticalAxisGroup}, +@rinternals{Staff_symbol_engraver}. + +@knownissues +L'eliminació del gravador @code{Staff_symbol_engraver} també +oculta les barres de compàs. Si es força la visibilitat de la +barra de compàs, poden ocórrer errors de format visual. En aquest +cas, utilitzeu les següents sobreescriptures de valors en comptes +de treure el gravador: + +@example +\omit StaffSymbol +\override NoteHead.no-ledgers = ##t +@end example + +Per veure els errors i problemes coneguts, així com els +advertiments associats amb @code{\RemoveEmptyStaves}, consulteu +@rusernamed{Changing context default settings,Canvi dels valores per defecte dels contextos}. + +@node Escriptura de les particel·les +@subsection Escriptura de les particel·les +@translationof Writing parts + +Aquesta secció explica com inserir indicacions de temps i noms +d'instruments a una partitura. També es descriuen mètodes per +citar altres veus i donar format a les notes guia. + +@menu +* Noms d'instruments:: +* Cites a altres veus:: +* Format de les notes guia:: +@end menu + + +@node Noms d'instruments +@unnumberedsubsubsec Noms d'instruments +@translationof Instrument names + +@cindex instrument, nom del +@cindex instrument, nom abreujat + +Es poden imprimir els noms dels instruments al costat esquerre +dels pentagrames dins dels contextos @code{Staff}, +@code{PianoStaff}, @code{StaffGroup}, @code{GrandStaff} i +@code{ChoirStaff}. El valor de @code{instrumentName} s'usa per al +primer pentagrama, i el valor de @code{shortInstrumentName} +s'usa per a tots los pentagrames següents.. + +@lilypond[verbatim,quote,ragged-right] +\new Staff \with { + instrumentName = #"Violin " + shortInstrumentName = #"Vln. " +} \relative { + c'4.. g'16 c4.. g'16 \break | c1 | +} +@end lilypond + +@cindex instruments, noms complexos de + +També podem fer servir @code{\markup} per construir noms +d'instrument més complicats: + +@lilypond[verbatim,quote] +\new Staff \with { + instrumentName = \markup { + \column { "Clarinetti" + \line { "in B" \smaller \flat } + } + } +} \relative { + c''4 c,16 d e f g2 +} +@end lilypond + +@cindex noms d'instruments, centrat + +Quan s'agrupen dos o més contextos de pentagrama, els noms +d'instrument i els noms curts apareixen centrats de forma +predeterminada. Per centrar noms d'instrument de diverses línies, +s'ha d'utilitzar @code{\center-column}: + +@lilypond[verbatim,quote,indent=1.5\cm] +<< + \new Staff \with { + instrumentName = #"Flute" + } \relative { + f''2 g4 f +} + \new Staff \with { + instrumentName = \markup { + \center-column { "Clarinet" + \line { "in B" \smaller \flat } + } + } + } \relative { c''4 b c2 } +>> +@end lilypond + +@funindex indent +@funindex short-indent + +Malgrat això, si els noms d'instrument són més llargs, no se +centren per a un grup de pentagrames a no ser que s'augmentin els +valors del sagnat, @code{indent}, i del sagnat curt, +@code{short-indent}. Per veure més detalls sobre aquests +ajustaments, consulteu +@rusernamed{paper variables for shifts and indents,Variables de +paper per a desplaçaments i sagnats}. +@c Quan es tradueixi fer servir +@c @ref{Variables de paper per a desplaçaments i sagnats,,Variables de @code{@bs{}paper} per a desplaçaments i sagnats}. + +@lilypond[verbatim,quote,ragged-right] +<< + \new Staff \with { + instrumentName = #"Alto Flute in G" + shortInstrumentName = #"Flt." + } \relative { + f''2 g4 f \break + g4 f g2 + } + \new Staff \with { + instrumentName = #"Clarinet" + shortInstrumentName = #"Clar." + } \relative { + c''4 b c2 \break + c2 b4 c + } +>> + +\layout { + indent = 3.0\cm + short-indent = 1.5\cm +} +@end lilypond + +@cindex noms de instrument, afegir a d'altres contextos + +Per afegir noms d'instrument a d'altres contextos (com ara +@code{ChordNames} o @code{FiguredBass}), hem d'afegir el gravador +@code{Instrument_name_engraver} a aquest context. Per veure més +detalls, consulteu +@rusernamed{Modifying context plugins,Modificació dels connectors de context}. + + +@cindex noms d'instrument, canviar + +El nom d'instrument curt @code{shortInstrumentName} es pot canviar +a la meitat d'una peça, igual que d'altres ajustaments que poden +caldre per al nou instrument; tanmateix, sols el primer +@code{instrumentName} s'imprimeix i la resta d'ells s'ignoren: + +@lilypond[verbatim,quote,ragged-right] +prepPiccolo = <>^\markup \italic { muta in Piccolo } + +setPiccolo = { + \set Staff.instrumentName = #"Piccolo" + \set Staff.shortInstrumentName = #"Picc." + \set Staff.midiInstrument = #"piccolo" + <>^\markup \bold { Piccolo } + \transposition c'' +} + +prepFlute = <>^\markup \italic { muta in Flauto } + +setFlute = { + \set Staff.instrumentName = #"Flute" + \set Staff.shortInstrumentName = #"Flt." + \set Staff.midiInstrument = #"flute" + <>^\markup \bold { Flute } + \transposition c' +} + +\new Staff \with { + instrumentName = #"Flute" + shortInstrumentName = #"Flt." + midiInstrument = #"flute" +} +\relative { + g'1 g g g \break + g1 g \prepPiccolo R R \break + \setPiccolo + g1 g g g \break + g1 g \prepFlute R R \break + \setFlute + g1 g g g +} +@end lilypond + + +@seealso +Referència de la notació: +@rusernamed{paper variables for shifts and indents,Variables de +paper per a desplaçaments i sagnats}, +@rusernamed{Modifying context plugins,Modificació dels connectors de context}. +@c Quan es tradueixi fer servir +@c @ref{Variables de paper per a desplaçaments i sagnats,,Variables de @code{@bs{}paper} per a desplaçaments i sagnats}. + +Fragments de codi: +@rlsr{Staff notation}. + +Referència de funcionament intern: +@rinternals{InstrumentName}, +@rinternals{PianoStaff}, +@rinternals{Staff}. + + +@node Cites a altres veus +@unnumberedsubsubsec Cites a altres veus +@translationof Quoting other voices + +@cindex guia, veus +@cindex citar altres veus +@cindex fragments, citar +@cindex notes guia + +@funindex \addQuote +@funindex \quoteDuring +@funindex \transposition + +És molt freqüent que una veu usi les mateixes notes que una altra +veu. Per exemple, els violins primer i segon tocant la mateixa +frase durant un determinat passatge musical. Això es fa deixant +que una veu@emph{citi} a l'altra, sense que s'hagi de tornar a +introduir la música per segon cop. + +L'ordre @code{\addQuote}, utilitzada a l'àmbit del nivell +sintàctic superior, defineix un flux de música des del qual és +possible citar fragments. + +L'ordre @code{\quoteDuring} s'usa per indicar el punt en el qual +comença la cita. Va seguida per dos arguments: el nom de la veu +citada, tal i com es va definir amb @code{\addQuote}, i una +expressió musical que indica la duració de la cita. + +@lilypond[verbatim,quote] +fluteNotes = \relative { + a'4 gis g gis | b4^"quoted" r8 ais\p a4( f) +} + +oboeNotes = \relative { + c''4 cis c b \quoteDuring #"flute" { s1 } +} + +\addQuote "flute" { \fluteNotes } + +\score { + << + \new Staff \with { instrumentName = "Flute" } \fluteNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> +} +@end lilypond + +Si l'expressió musical que s'usa per @code{\quoteDuring} conté +qualsevol cosa que no sigui un silenci de separació o un silenci +multicompàs, es produeix una situació de polifonia, cosa que no és +habitualment desitjable: + +@lilypond[verbatim,quote] +fluteNotes = \relative { + a'4 gis g gis | b4^"quoted" r8 ais\p a4( f) +} + +oboeNotes = \relative { + c''4 cis c b \quoteDuring #"flute" { e4 r8 ais b4 a } +} + +\addQuote "flute" { \fluteNotes } + +\score { + << + \new Staff \with { instrumentName = "Flute" } \fluteNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> +} +@end lilypond + +Si cal imprimir una ordre @code{\unfoldRepeat} dins d'una +expressió musical en usar @code{\quoteDuring}, aleshores ha de +contenir també la seva pròpia ordre @code{\unfoldRepeat}: + +@lilypond[verbatim,quote] +fluteNotes = \relative { + \repeat volta 2 { a'4 gis g gis } +} + +oboeNotesDW = \relative { + \repeat volta 2 \quoteDuring #"incorrecte" { s1 } +} + +oboeNotesW = \relative { + \repeat volta 2 \quoteDuring #"correcte" { s1 } +} + + +\addQuote "incorrecte" { \fluteNotes } + +\addQuote "correcte" { \unfoldRepeats \fluteNotes } + +\score { + \unfoldRepeats + << + \new Staff \with { instrumentName = "Flute" } + \fluteNotes + \new Staff \with { instrumentName = "Oboe (incorrecte)" } + \oboeNotesDW + \new Staff \with { instrumentName = "Oboe (correcte)" } + \oboeNotesW + >> +} +@end lilypond + +L'ordre @code{\quoteDuring} usa els ajustament de +@code{\transposition} tant de la part citada com de la que cita, +per produir notes que tenen la mateixa alçada de so a la part que +cita i en les de la part citada. + +@lilypond[verbatim,quote] +clarinetNotes = \relative c'' { + \transposition bes + \key d \major + b4 ais a ais | cis4^"citat" r8 bis\p b4( f) +} + +oboeNotes = \relative { + c''4 cis c b \quoteDuring #"clarinet" { s1 } +} + +\addQuote "clarinet" { \clarinetNotes } + + +\score { + << + \new Staff \with { instrumentName = "Clarinet" } \clarinetNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> +} +@end lilypond + +@cindex note-event +@cindex articulation-event +@cindex dynamic-event +@cindex rest-event +@cindex slur-event +@cindex crescendo-event + +@funindex quotedEventTypes +@funindex quotedCueEventTypes + +De forma predeterminada, la música citada inclou totes les +articulacions, matisos dinàmics, elements de marcatge, etc., de +l'expressió citada. És possible escollir quins d'aquests +objectes de la música que se cita s'imprimeixen, mitjançant la +propietat de context @code{quotedEventTypes}. + +@lilypond[verbatim,quote] +fluteNotes = \relative { + a'2 g2 | + b4\<^"quoted" r8 ais a4\f( c->) + } + +oboeNotes = \relative { + c''2. b4 | + \quoteDuring #"flute" { s1 } +} + +\addQuote "flute" { \fluteNotes } + +\score { + << + \set Score.quotedEventTypes = #'(note-event articulation-event + crescendo-event rest-event + slur-event dynamic-event) + \new Staff \with { instrumentName = "Flute" } \fluteNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> + } +@end lilypond + +Las cites també es poden etiquetar, vegeu +@rusernamed{Using tags,Us de etiquetes}. + +@seealso +Referència de la notació: +@ref{Transposició dels instruments}, +@rusernamed{Using tags,Ús de etiquetes}. + +Fitxers d'inici: +@file{scm/define-event-classes.scm}. + +Fragments de codio: +@rlsr{Staff notation}. + +Referència de funcionament intern: +@rinternals{Music classes}, +@rinternals{QuoteMusic}, +@rinternals{Voice}. + +@knownissues +Sols el contingut de la primera veu d'una ordre +@code{\addQuote} s'ha de tenir en compte per a la cita, de manera +que si l'expressió musical conté enunciats @code{\new} o +@code{\context Voice}, els seus continguts no seran citats. La +cita de notes d'adorn no està contemplada i pot fer que el +LilyPond acabi de forma abrupta; la cita d'uns tresets dins d'uns +altres pot donar com a resultat una notació de qualitat pobre. + +@node Format de les notes guia +@unnumberedsubsubsec Format de les notes guia +@translationof Formatting cue notes + +@cindex guia, format de les notes +@cindex notes guia +@cindex guia, notes +@cindex guia, notes, format de +@cindex fragments +@cindex citar altres veus +@cindex veus, citar + + +@funindex \cueDuring +@funindex \cueClef +@funindex \cueDuringWithClef +@funindex \quoteDuring + +@cindex notes petites +@cindex petites, notes +@cindex CueVoice + +La manera més senzilla de donar format a les notes guia és crear +explícitament un context @code{CueVoice} dins de la part. + +@lilypond[verbatim] +\relative { + R1 + << + { e'2\rest r4. e8 } + \new CueVoice { + \stemUp d'8^"flute" c d e fis2 + } + >> + d,4 r a r +} +@end lilypond + +L'ordre @code{\cueClef} pot usar-se també amb un context +@code{CueVoice} explícit si es requereix un canvi de clau, i +imprimeix una clau de la mida adequada per a les notes guia. +Després pot utilitzar-se l'ordre @code{\cueClefUnset} per tornar a +la clau original, de nou amb un signe de clau de la mida adequada. + +@lilypond[verbatim,noragged-right] +\relative { + \clef "bass" + R1 + << + { e'2\rest r4. \cueClefUnset e,8 } + \new CueVoice { + \cueClef "treble" \stemUp d''8^"flute" c d e fis2 + } + >> + d,,4 r a r +} +@end lilypond + +Les instruccions @code{\cueClef} i @code{\cueClefUnset} es poden +usar també sense un @code{CueVoice} si cal. + +@lilypond[verbatim,noragged-right] +\relative { + \clef "bass" + R1 + \cueClef "treble" + d''8^"flute" c d e fis2 + \cueClefUnset + d,,4 r a r +} +@end lilypond + +En casos de col·locació més complexa de notes guia, per exemple +amb transposició o inserint notes guia, per més d'una font, poden +usar-se les ordres @code{\cueDuring} o @code{\cueDuringWithClef}. +Són una forma més especialitzada de @code{\quoteDuring}, +vegeu @ref{Cites a altres veus} a la secció anterior. + +La sintaxi és: + +@example +\cueDuring #@var{nom_de_la_cita} #@var{direcció} #@var{música} +@end example + +i + +@example +\cueDuringWithClef #@var{nom_de_la_cita} #@var{direcció} #@var{clau} #@var{música} +@end example + +La música procedent dels compassos corresponents de l'element +@code{@var{nom_de_la_cita}} s' afegeix com un context +@code{CueVoice} y apareix simultàniament amb la +@code{@var{música}}, cosa que produeix una situació polifònica. La +@code{@var{direcció}} agafa un argument @code{UP} (amunt) o +@code{DOWN} (avall), i correspon amb les veus primera i segona, +respectivament, determinant com s'imprimeixen les notes guia en +relació a l'altra veu. + +@lilypond[verbatim,quote] +fluteNotes = \relative { + r2. c''4 | d8 c d e fis2 | g2 d | +} + +oboeNotes = \relative c'' { + R1 + <>^\markup \tiny { flute } + \cueDuring #"flute" #UP { R1 } + g2 c, +} + +\addQuote "flute" { \fluteNotes } + +\new Staff { + \oboeNotes +} +@end lilypond + +@noindent + +És possible ajustar quins aspectes de la música se citen amb +@code{\cueDuring} establint el valor de la propietat +@code{quotedCueEventTypes}. El seu valor per defecte és +@code{'(note-event rest-event tie-event beam-event +tuplet-span-event)}, cosa que significa que sols les notes, +silencis, lligadures d'unió, barres i grups especials se citen, +però no les articulacions, maques dinàmiques, elements de +marcatge, etc. + +@warning{Quan un context @code{Voice} comença amb +@code{\cueDuring}, com a l'exemple següent, el context +@code{Voice} s'ha de declarar explícitament, ja que en cas +contrari tota l'expressió musical pertanyeria al context +@code{CueVoice}.} + +@lilypond[verbatim,quote] +oboeNotes = \relative { + r2 r8 d''16(\f f e g f a) + g8 g16 g g2. +} +\addQuote "oboe" { \oboeNotes } + +\new Voice \relative c'' { + \set Score.quotedCueEventTypes = #'(note-event rest-event tie-event + beam-event tuplet-span-event + dynamic-event slur-event) + \cueDuring #"oboe" #UP { R1 } + g2 c, +} +@end lilypond + +Es poden usar elements de marcatge per mostrar el nom de +l'instrument citat. Si les notes guia requereixen un canvi de +clau, pot fer-se manualment però la clau original s'ha de +restaurar al final de les notes guia. + +@lilypond[verbatim,quote] +fluteNotes = \relative { + r2. c''4 d8 c d e fis2 g2 d2 +} + +bassoonNotes = \relative c { + \clef bass + R1 + \clef treble + <>^\markup \tiny { flute } + \cueDuring #"flute" #UP { R1 } + \clef bass + g4. b8 d2 +} + +\addQuote "flute" { \fluteNotes } + +\new Staff { + \bassoonNotes +} +@end lilypond + +De forma alternativa, pot usar-se la funció +@code{\cueDuringWithClef} en el seu lloc. Aquesta ordre admet un +argument addicional per especificar el canvi de clau que cal +imprimir per a les notes guia, però després imprimeix +automàticament la clau original un cop que ha finalitzat la sèrie +de notes guia. + +@lilypond[verbatim,quote] +fluteNotes = \relative { + r2. c''4 d8 c d e fis2 g2 d2 +} + +bassoonNotes = \relative c { + \clef bass + R1 + <>^\markup { \tiny "flute" } + \cueDuringWithClef #"flute" #UP #"treble" { R1 } + g4. b8 d2 +} + +\addQuote "flute" { \fluteNotes } + +\new Staff { + \bassoonNotes +} +@end lilypond + +@funindex \transposedCueDuring + +Com @code{\quoteDuring}, @code{\cueDuring} té en compte les +transposicions instrumentals. Les notes guia es produeixen en les +alçades en les quals s'escriurien per a l'instrument que rep la +cita, per produir així les alçades de so de l'instrument original. + +Per transportar les notes guia de forma diferent, useu +@code{\transposedCueDuring}. Aquesta ordre accepta un argument +addicional per especificar el so d'un Do central de concert. Això +és útil per agafar cites d'un instrument que està a un registre +completament diferent. + +@lilypond[verbatim,quote] +piccoloNotes = \relative { + \clef "treble^8" + R1 + c'''8 c c e g2 + c4 g g2 +} + +bassClarinetNotes = \relative c' { + \key d \major + \transposition bes, + d4 r a r + \transposedCueDuring #"piccolo" #UP d { R1 } + d4 r a r +} + +\addQuote "piccolo" { \piccoloNotes } + +<< + \new Staff \piccoloNotes + \new Staff \bassClarinetNotes +>> +@end lilypond + +@cindex removing cue notes +@cindex cue notes, removing + +@funindex \killCues + +L'ordre @code{\killCues} elimina les notes guia d'una expressió +musical, de forma que la mateixa expressió musical pugui +utilitzar-se per produir la particel·la instrumental (amb notes +guia) i la partitura de conjunt. L'ordre @code{\killCues} elimina +solament les notes i esdeveniments que s'han citat mitjançant +@code{\cueDuring}. Altres elements de marcatge associats amb les +guies, com els canvis de clau o una etiqueta identificativa de +l'instrument font, poden marcar-se per a la seva inclusió +selectiva dins de la partitura, vegeu +@rusernamed{Using tags,Ús de etiquetes}. + +@lilypond[verbatim,quote] +fluteNotes = \relative { + r2. c''4 d8 c d e fis2 g2 d2 +} + +bassoonNotes = \relative c { + \clef bass + R1 + \tag #'part { + \clef treble + <>^\markup \tiny { flute } + } + \cueDuring #"flute" #UP { R1 } + \tag #'part \clef bass + g4. b8 d2 +} + +\addQuote "flute" { \fluteNotes } + +\new Staff { + \bassoonNotes +} + +\new StaffGroup << + \new Staff { + \fluteNotes + } + \new Staff { + \removeWithTag #'part { \killCues { \bassoonNotes } } + } +>> +@end lilypond + +Com a alternativa, els canvis de clau i les etiquetes d'instrument +es poden recol·lectar dins d'una definició d'instrument per al seu +ús repetit, utilitzant +@code{\addInstrumentDefinition} que es descriu a +@ref{Noms d'instruments}. + +@seealso +Referència de la notació: +@ref{Cites a altres veus}, +@ref{Transposició dels instruments}, +@ref{Noms d'instruments}, +@ref{Clau}, +@ref{Musical cues,Pistes musicals}, +@rusernamed{Using tags,Ús de etiquetes}. + + +Fragments de codi: +@rlsr{Staff notation}. + +Referència de funcionament intern: +@rinternals{CueVoice}, +@rinternals{Voice}. + +@knownissues +Poden ocórrer col·lisions amb els silencis si s'usa +@code{\cueDuring}, entre els contextos de @code{Voice} i de +@code{CueVoice}. En usar @code{\cueDuringWithClef} o +@code{\transposedCueDuring} l'argument addicional requerit per a +cada cas ha d'anar després de la cita i de la direcció. diff --git a/Documentation/ca/translations.itexi b/Documentation/ca/translations.itexi index 8e95cb30bd..712dd1daa3 100644 --- a/Documentation/ca/translations.itexi +++ b/Documentation/ca/translations.itexi @@ -16,42 +16,44 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Last updated Sun Nov 6 09:35:15 UTC 2016 +@emph{Actualitzat el Sat Jun 24 12:50:41 UTC 2017 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @headitem Manual d'aprenentatge del GNU LilyPond -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traductors +@tab Revisors +@tab Traduït +@tab Actualitzat +@tab Més inf. @item -Section titles +Títols de secció @* 124 @tab Walter Garcia-Fontes +@* +Walter Garcia-Fontes @tab @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @item @@ -64,21 +66,21 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab pre-GDP @item @@ -91,75 +93,75 @@ yes @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @item 2 Notació corrent @* -4402 +4421 @tab Walter Garcia-Fontes @tab @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @item 3 Conceptes fonamentals @* -11119 +11240 @tab Walter Garcia-Fontes @tab @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @item @@ -172,21 +174,21 @@ partially @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab pre-GDP @item @@ -199,21 +201,21 @@ A Plantilles @ifhtml @html -partially (97 %) +parcialment (97 %) @end html @end ifhtml @ifnothtml -partially (97 %) +parcialment (97 %) @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @end multitable @@ -223,36 +225,38 @@ partially @headitem Referència de la notació del GNU LilyPond -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traductors +@tab Revisors +@tab Traduït +@tab Actualitzat +@tab Més inf. @item -Section titles +Títols de secció @* 326 @tab Walter Garcia-Fontes +@* +Walter Garcia-Fontes @tab @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab pre-GDP @item @@ -265,21 +269,21 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab pre-GDP @item @@ -292,48 +296,183 @@ yes @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab pre-GDP @item 1.1 Altures @* -5272 +5413 +@tab Walter Garcia-Fontes +@tab +@tab +@ifhtml + +@html +si +@end html +@end ifhtml +@ifnothtml +si +@end ifnothtml +@tab +@ifhtml + +@html +parcialment +@end html +@end ifhtml +@ifnothtml +parcialment +@end ifnothtml +@tab pre-GDP +@item +1.2 Duracions +@* +6853 +@tab Walter Garcia-Fontes +@tab +@tab +@ifhtml + +@html +si +@end html +@end ifhtml +@ifnothtml +si +@end ifnothtml +@tab +@ifhtml + +@html +parcialment +@end html +@end ifhtml +@ifnothtml +parcialment +@end ifnothtml +@tab pre-GDP +@item +1.3 Expressions +@* +1819 +@tab Walter Garcia-Fontes +@tab +@tab +@ifhtml + +@html +si +@end html +@end ifhtml +@ifnothtml +si +@end ifnothtml +@tab +@ifhtml + +@html +parcialment +@end html +@end ifhtml +@ifnothtml +parcialment +@end ifnothtml +@tab pre-GDP +@item +1.4 Repeticions +@* +1288 +@tab Walter Garcia-Fontes +@tab +@tab +@ifhtml + +@html +si +@end html +@end ifhtml +@ifnothtml +si +@end ifnothtml +@tab +@ifhtml + +@html +si +@end html +@end ifhtml +@ifnothtml +si +@end ifnothtml +@tab pre-GDP +@item +1.5 Notes simultànies +@* +2979 +@tab Walter Garcia-Fontes +@tab +@tab +@ifhtml + +@html +si +@end html +@end ifhtml +@ifnothtml +si +@end ifnothtml +@tab +@ifhtml + +@html +parcialment +@end html +@end ifhtml +@ifnothtml +parcialment +@end ifnothtml +@tab post-GDP +@item +1.6 Notació dels pentagrames +@* +2554 @tab Walter Garcia-Fontes @tab @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @end multitable @@ -343,13 +482,13 @@ partially @headitem LilyPond: manual d'utilització del programa -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traductors +@tab Revisors +@tab Traduït +@tab Actualitzat +@tab Més inf. @item -Section titles +Títols de secció @* 135 @tab Walter Garcia-Fontes @@ -358,21 +497,21 @@ Section titles @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @item @@ -385,75 +524,75 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab pre-GDP @item 1 Execució del LilyPond @* -5440 +5469 @tab Walter Garcia-Fontes @tab @tab @ifhtml @html -partially (95 %) +parcialment (95 %) @end html @end ifhtml @ifnothtml -partially (95 %) +parcialment (95 %) @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @item 2 Actualització de fitxers amb @command{convert-ly} @* -1866 +2097 @tab Walter Garcia-Fontes @tab @tab @ifhtml @html -yes +parcialment (89 %) @end html @end ifhtml @ifnothtml -yes +parcialment (89 %) @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @item @@ -466,21 +605,21 @@ partially @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @end multitable @@ -490,13 +629,13 @@ partially @headitem LilyPond: notació musical per a tots -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traductors +@tab Revisors +@tab Traduït +@tab Actualitzat +@tab Més inf. @item -Section titles +Títols de secció @* 760 @tab Walter Garcia-Fontes @@ -505,21 +644,21 @@ Section titles @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -N/A +si @end html @end ifhtml @ifnothtml -N/A +si @end ifnothtml @tab pre-GDP @item @@ -532,48 +671,48 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab pre-GDP @item Introducció @* -5814 +5793 @tab Walter Garcia-Fontes @tab @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @item @@ -586,21 +725,21 @@ Descàrrega @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @item @@ -613,48 +752,48 @@ Manuals @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @item Comunitat @* -3524 +2449 @tab Walter Garcia-Fontes @tab @tab @ifhtml @html -yes +si @end html @end ifhtml @ifnothtml -yes +si @end ifnothtml @tab @ifhtml @html -partially +parcialment @end html @end ifhtml @ifnothtml -partially +parcialment @end ifnothtml @tab pre-GDP @end multitable diff --git a/Documentation/ca/usage.tely b/Documentation/ca/usage.tely index e595bbe308..400c4e62e0 100644 --- a/Documentation/ca/usage.tely +++ b/Documentation/ca/usage.tely @@ -14,6 +14,8 @@ @afourpaper @c Translators: Walter Garcia-Fontes +@c Translation checkers: + @macro manualIntro Aquest fitxer explica com executar els programes que es diff --git a/Documentation/ca/usage/running.itely b/Documentation/ca/usage/running.itely index bcf55d0963..5f3d20070f 100644 --- a/Documentation/ca/usage/running.itely +++ b/Documentation/ca/usage/running.itely @@ -10,6 +10,8 @@ @c \version "2.19.21" +@c Translators: Walter Garcia-Fontes +@c Translation checkers: @node Execució del LilyPond @chapter Execució del LilyPond @@ -435,7 +437,7 @@ cada pàgina de sortida. Es recomana instal·lar el tipus de lletra Century Schoolbook, que està inclòs a la instal·lació del LilyPond, per a un renderitzat òptim. Sota l'UNIX, bastarà amb que copieu aquests fitxers de tipus de lletra del directori del -LilyPond (normalment @file{/usr/share/lilypond/VERSION/fonts/otf/}) +Lilypond (normalment @file{/usr/share/lilypond/VERSION/fonts/otf/}) al directori @file{~/.fonts/}. La sortida @code{SVG} hauria de ser compatible amb qualsevol editor o client de SVG. També hi ha una opció @code{svg-woff} (vegeu més avall) per usar els fitxers @@ -1037,12 +1039,12 @@ comprimida o que se surti de la pàgina.} La duració incorrecta es pot trobar fàcilment si s'utilitzen comprovacions de compàs, vegeu -@rusernamed{Bar and bar number checks,Comprovació de compàs i de número de compàs}. +@ruser{Comprovació de compàs i de número de compàs}. Si realment volem tenir una sèrie d'aquests compassos amb notes solapades, hem d'inserir una línia divisòria invisible on volem el salt de línia. Per veure més detalls, consulteu -@rusernamed{Bar lines,Barres de compàs}. +@ruser{Barres de compàs}. @node Apareix un pentagrama de més @@ -1157,7 +1159,7 @@ Un bloc @code{\score} ha de contenir una @emph{única} expressió musical. Si en comptes d'això conté diverses instruccions @code{\new Staff}, @code{\new StaffGroup} o contextos semblants introduïts amb @code{\new} sense que s'hagin tancat entre -claudàtors corbs, @code{@{ @dots{} @}}, o dobles parèntesis en +claus, @code{@{ @dots{} @}}, o dobles parèntesis en angle, @code{<< @dots{} >>}, així: @example @@ -1172,9 +1174,9 @@ angle, @code{<< @dots{} >>}, així: aleshores es produirà un missatge d'error. Per evitar l'error, tanqueu totes les instruccions @code{\new} -dins dels claudàtors corbs o dobles parèntesis d'angle. +dins de les claus o dobles parèntesis d'angle. -L'ús de claudàtors corbs introdueix les instruccions @code{\new} +L'ús de claus introdueix les instruccions @code{\new} de forma seqüencial: @lilypond[quote,verbatim] diff --git a/Documentation/ca/usage/suggestions.itely b/Documentation/ca/usage/suggestions.itely index 0d77beeaf8..70039e2701 100644 --- a/Documentation/ca/usage/suggestions.itely +++ b/Documentation/ca/usage/suggestions.itely @@ -10,6 +10,9 @@ @c \version "2.19.21" +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + @node Suggeriments per escriure fitxers d'entrada @chapter Suggeriments per escriure fitxers d'entrada @translationof Suggestions for writing files @@ -73,7 +76,7 @@ fa uns anys. @code{convert-ly} requereix que declareu quina versió del LilyPond fèieu servir. @item @strong{Incloeu comprovacions}: -@rusernamed{Bar and bar number checks,Comprovació de compàs i de número de compàs}, +@ruser{Comprovació de compàs i de número de compàs}, @ruser{Comprovació d'octava}. Si incloeu comprovacions de tant en tant, en cas que cometeu un error podreu localitzar-lo molt més ràpidament. Amb quina @@ -98,7 +101,7 @@ i també si li passeu la font a un amic, serà tot un desafiament determinar les seves intencions o de quina menara estava estructurat el fitxer si no li heu afegit els comentaris. -@item @strong{Apliqueu marges als claudàtors}. Molts problemes +@item @strong{Apliqueu marges a les claus}. Molts problemes estan casat per una falta d'equilibri en el nombre de @code{@{} i @code{@}}. @@ -631,4 +634,4 @@ copy sortida\elmeuprojecte.pdf ElMeuProjecte.pdf @seealso Manual d'utilització del programa: @rprogram{Utilització des de la línia d'ordres}, -@rprogram{LilyPond-book} +@rprogram{lilypond-book} diff --git a/Documentation/ca/usage/updating.itely b/Documentation/ca/usage/updating.itely index 15567a8799..31fba2e05d 100644 --- a/Documentation/ca/usage/updating.itely +++ b/Documentation/ca/usage/updating.itely @@ -10,6 +10,9 @@ @c \version "2.16.0" +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + @node Actualització de fitxers amb convert-ly @chapter Actualització de fitxers amb @command{convert-ly} diff --git a/Documentation/ca/web.texi b/Documentation/ca/web.texi index e271246048..d4a8689608 100644 --- a/Documentation/ca/web.texi +++ b/Documentation/ca/web.texi @@ -1,10 +1,11 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: ca -*- @c This file is part of web.texi @ignore - Translation of GIT committish: 9af671bb61b95c9cb9740e92ddb6cd1a51c1aecf + Translation of GIT committish: 472ecfdd548d8f700d71ec1a403b7a5bdce7d5ba When revising a translation, copy the HEAD committish of the - version that you are working on. See TRANSLATION for details. + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. @end ignore @setfilename web.info @@ -32,6 +33,8 @@ @end ignore @c Translators: Walter Garcia-Fontes +@c Translation checkers: + @copying Copyright @copyright{} 2009--2015 pels autors @@ -117,52 +120,116 @@ Per al LilyPond versió @version{} @c @im ageId{cmws,web-snippet-alpha.png,Catchy Musical Web Snippet} @divId{quickSummary} -@subheading ¿Què és el LilyPond? - El LilyPond és un programa de gravat musical (tipografia musical o edició de partitures), consagrat a la producció de partitures de la qualitat més alta possible. Introdueix l'estètica de la música gravada de la forma tradicional -a les partitures impreses mijtançant l'ordinador. +a les partitures impreses mitjançant l'ordinador. LilyPond és programari lliure i forma part del @uref{http://www.gnu.org/home.ca.html,Projecte GNU}. @divClass{align-right} -Podeu llegir més a la nostra @ref{Introducció}! +Podeu llegir més a la nostra @ref{Introducció}. @divEnd @divEnd -@divClass{separator} +@divId{homepage-main} + +@divClass{column-center-top} + +@subheading La bellesa de les partitures + +@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 + +El LilyPond és una eina poderosa i flexible per a +l'edició de tota classe de partitures, ja siguin +clàssiques (com l'exemple que de J.S. Bach que apareix +a dalt) o de notació complexa, música antiga, música +moderna, tabulatures, música vocal, fulls guia d'acords +(lead sheets), materials didàctics, grans projectes +orquestrals, sortida personalitzada o fins i tot +gràfics de Schenker. + +@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 + +El LilyPond és una eina poderosa i flexible per a +l'edició de tota classe de partitures, ja siguin +@uref{examples.html#Musica-Classica, clàssiques} +(com l'exemple de J.S. Bach que apareix a dalt), +@uref{examples.html#Notacio-complexa, notació complexa}, +@uref{examples.html#Musica-antiga, música antiga}, +@uref{examples.html#Musica-moderna, música moderna}, +@uref{examples.html#Tabulatura, tabulatures}, +@uref{examples.html#Musica-vocal, música vocal}, +@uref{examples.html#Musica-pop, fulls-guia d'acords (lead sheets)}, +@uref{examples.html#Aplicacions-per-a-leducacio, materials didàctics}, +@uref{examples.html#Projectes-grans, grans projectes orquestrals}, +@uref{examples.html#Sortida-personalitzada, sortida personalitzada}, +e incluso +@uref{examples.html#Schenker-Graphs, gràfics de Schenker}. + +@end ifset + +Admireu la nostra galeria de @ref{Examples} i inspireu-vos'' + +@divEnd -@divId{news} +@divClass{column-center-middle-color2} +@subheading Notícies @c TODO: generate this automatically, including RSS feed. -@include web/news-front.itexi +@include web/news-headlines.itexi -@divClass{float-right} -(@ref{Notícies antigues}) @divEnd @divEnd + @ifclear web_version @c do nothing @end ifclear @ifset web_version - @c make the box: -@divId{wildCardBox} + @c make the side bar: +@divId{homepage-sidebar} +@subheading Versió estable + +@c TODO: javascript to detect OS and suggest download? + +@ref{Descàrrega, Descàrrega de @versionStable} + +@ref{Manuals, Manuals de @versionStable} + +@subheading Versió de desenvolupament + +@ref{Desenvolupament, Descàrrega de @versionDevel} + +@ref{Desenvolupament, Manuals de @versionDevel} + @subheading Novetats -@divId{wildCardText} +@divId{pondingsText} @divEnd + @divEnd @end ifset + @html @end html -@ifset web_version - @c make the box: -@divId{latestVersion} -@subheading Enllaços ràpids - -@c TODO: javascript to detect OS and suggest download? - -@subsubheading Estable - -@ref{Descàrrega, Descàrrega de @versionStable} - -@ref{Manuals, Manuals de @versionStable} - -@subsubheading Desenvolupament - -@ref{Desenvolupament, Descàrrega de @versionDevel} - -@ref{Desenvolupament, Manuals de @versionDevel} - -@divEnd -@end ifset @ifnottex @divClass{hide} @menu * Introducció:: Comenceu aquí a crear partitures musicals. -* Descàrrega:: Obtenir el LilyPond. -* Manuals:: Llegiu els coi de manuals (RTFM). +* Descàrrega:: Obtenir el LilyPond +* Manuals:: Llegiu els benaurats manuals (RTFM) * Comunitat:: Poseu-vos en contacte amb altres usuaris. @end menu @divEnd @@ -249,8 +295,7 @@ Distributions will want to install lilypond.info in postinstall, doing: @c html; we'll need a bunch of @iftext and stuff in here. -gp @c ****************** SPECIAL MACROS FOR WEB MANUAL ************ @macro docLinks{name,base,refLink,split,big,bigsize,pdf,pdfsize} -@subheading Llegiu-lo - +@subheading Léalo @docLinksBare{\name\,\base\,\refLink\,\split\,\big\,\bigsize\,\pdf\,\pdfsize\} @@ -266,7 +311,7 @@ Distributions will want to install lilypond.info in postinstall, doing: @end macro @macro docLinkPdf{name,base,webLink} - @docLink{\base\.es.pdf,\base\.es.pdf,\webLink\} + @docLink{\base\.ca.pdf,\base\.ca.pdf,\webLink\} @end macro @@ -277,7 +322,7 @@ Distributions will want to install lilypond.info in postinstall, doing: @item @docLinkSplit{\name\,\base\,\split\} @minus{} el manual està dividit en moltes pàgines HTML. - @*@ @ @emph{(una descàrrega petita per a cada pàgina)} + @*@ @ @emph{(una descàrrega petita per cada pàgina)} @item @docLinkBig{\name\,\base\,\big\} @minus{} llegiu aquest manual com una sola pàgina HTML enorme. @@ -310,15 +355,14 @@ Distributions will want to install lilypond.info in postinstall, doing: @divClass{heading-center} @divClass{contactBox} -Si teniu coneixement de qualssevol altres \topic\ que mereixin -aparèixer relacionats aquí, us preguem que ens ho feu saber escrivint un -missatge a la llista de correu bug-lilypond. Tot i que tingueu una -subscripció a la llista, ho podeu fer a la -@uref{https://lists.gnu.org/mailman/listinfo/bug-lilypond,pàgina -informativa} de la llista o escrivint directament mitjançant la -@uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs, -interfície web de lilypond.bugs a gmane}. +Si coneixeu qualssevol altres \topic\ que mereixin aparèixer +relacionats aquí, us preguem que ens ho feu saber escrivint un +missatge a la llista de correu bug-lilypond. Si no esteu subscrit +a la llista, encara ho podeu fer a la +@uref{https://lists.gnu.org/mailman/listinfo/bug-lilypond,página informativa} +de la llista o escrivint directament a través de la +@uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs,interfície web de lilypond.bugs al gname}. @divEnd @divEnd @@ -329,9 +373,10 @@ interfície web de lilypond.bugs a gmane}. @ifnothtml @macro contactUsAbout{topic} @cartouche -Si teniu coneixement de qualsevol altre \topic\ que podria -aparèixer aquí, si us plau feu-nos-ho saber seguint les instruccions a -@ref{Bug reports}. +Si coneixeu qualssevol altres \topic\ que mereixin aparèixer +relacionats aquí, us preguem que ens ho faci saber segons +s'explica a les instruccions que apareixen a la secció a les +instruccions que apareixin a la secció @ref{Bug reports}. @end cartouche diff --git a/Documentation/ca/web/community.itexi b/Documentation/ca/web/community.itexi index 43507271a5..c14c168a7b 100644 --- a/Documentation/ca/web/community.itexi +++ b/Documentation/ca/web/community.itexi @@ -7,6 +7,10 @@ Guide, node Updating translation committishes.. @end ignore +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + @include included/acknowledge.itexi @include included/authors.itexi @include included/helpus.itexi @@ -742,7 +746,7 @@ Les proves de l'abc2ly d'aquesta versió. @item @uref{../../input/regression/lilypond-book/collated-files.html, proves de lilypond-book}: -Les proves del lilpond-book d'aquesta versió. +Les proves del lilypond-book d'aquesta versió. (@uref{../../input/regression/lilypond-book/collated-files.pdf, versió en PDF}) @end itemize @@ -752,9 +756,9 @@ Les proves del lilpond-book d'aquesta versió. @subsubheading Versió de desenvolupament @itemize -@item @regtestDevel-es (@regtestDevelPdf-ca{}) +@item @regtestDevel-ca (@regtestDevelPdf-ca{}) -@item @regtestDevelXml-es (@regtestDevelXmlPdf-ca{}) +@item @regtestDevelXml-ca (@regtestDevelXmlPdf-ca{}) @item @regtestDevelAbc (@regtestDevelAbcPdf{}) @@ -1203,9 +1207,7 @@ que introduís més advertiments dels que hi ha actualment. @ref{Golfes}} @divEnd -@include web/news-front.itexi - -@include web/news.itexi +@include web/news-new.itexi @node Golfes @@ -1282,3 +1284,5 @@ Registres de canvis dels desenvolupadors, per versió: @miscLink{CHANGES-0.0,v0.0} @divEnd + +@include web/news-old.itexi diff --git a/Documentation/ca/web/download.itexi b/Documentation/ca/web/download.itexi index aa3d94a2f9..fc88d8f35d 100644 --- a/Documentation/ca/web/download.itexi +++ b/Documentation/ca/web/download.itexi @@ -6,6 +6,10 @@ version that you are working on. See TRANSLATION for details. @end ignore +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + + @include included/generating-output.itexi @macro warningTextBased diff --git a/Documentation/ca/web/introduction.itexi b/Documentation/ca/web/introduction.itexi index cd7236fc4f..5a44ca0cde 100644 --- a/Documentation/ca/web/introduction.itexi +++ b/Documentation/ca/web/introduction.itexi @@ -1,11 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ca -*- @ignore - Translation of GIT committish: feeca25b207bd510705974896d640ea292cd7fc4 + Translation of GIT committish: 136e94ea422fc94ef2587c588d516a03e01275e1 When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore +@c Translators: Walter Garcia-Fontes +@c Translation checkers: @node Introducció @unnumbered Introducció @@ -22,18 +24,23 @@ ordinador. Els músics prefereixen llegir partitures boniques, així que perquè no haurien de poder els programadors crear un programari per produir partitures elegants? -El resultat és un sistema que allibera els músics de preocupar-se -pels detalls de la disposició sobre el paper, cosa que els permet -centrar-se en la música. LilyPond treballa colze a colze amb ells -per crear partitures de qualitat editorial, realitzades dins de -les millors tradicions del gravat musical clàssic. +El resultado es un programa que crea belles partitures seguint la +millor tradició del gravat clàssic de música. S'ocupa +internament dels detalls de la disposició de la música sobre el +paper, permetent als compositors, transcriptors i editors +centrar-se a la pròpia @emph{música} en lloc d'estar contínuament +intentant millorar l'aspecte de la sortida predeterminada del seu +programa informàtic. Als intèrprets els arriben unes particel·les +que els permet concentrar-se a @emph{tocar} la música en comptes +de sols @emph{llegir-la}. + @divEnd @divClass{link-headings} @divClass{column-left-top} -@subheading Què fa el LilyPond +@subheading Què fa el Lilypond @itemize @@ -86,14 +93,14 @@ les millors tradicions del gravat musical clàssic. @c menu. -JM @divClass{hide} @menu -* Possibilitats:: Què pot fer el LilyPond? -* Exemples:: Vull veure alguna música! +* Possibilitats:: +* Exemples:: * Llibertat:: La llibertat i la GPL. * Rerefons:: Estètica computacional. * Produccions:: Ús del LilyPond a la vida real. -* Ressenyes:: Què diu la gent sobre el LilyPond? -* Entrada de text:: Escriviu música com si fos @emph{text}?! -* Entorns millorats:: Altres formes de treballar amb el LilyPond. +* Ressenyes:: +* Entrada de text:: +* Entorns millorats:: Altres formes de treballar amb el Lilypond. @end menu @divEnd @@ -105,8 +112,7 @@ les millors tradicions del gravat musical clàssic. @divClass{column-center-top} -@subheading Elegància -@subsubheading Excel·lència al gravat clàssic +@subheading Excel·lència al gravat clàssic @imageFloat{flat-design,png,right} @@ -116,44 +122,79 @@ empleat milers d'hores a desenvolupar un programa de gravat musical que produeix com a resultat música impresa de forma bella. Tots els ajustos d'estil del LilyPond, el disseny dels tipus de lletra i els algoritmes s'han inspirat en la millor -música gravada a mà. La sortida del LilyPond té el mateix aspecte +música gravada a mà. La sortida del Lilypond té el mateix aspecte robust, equilibrat i elegant que les partitures clàssiques millor gravades. Tot això s'explica amb detall a la nostra @ressaynamed{Essay,Monografia}. +@divEnd -@subsubheading Opcions d'aspecte efectives +@divClass{column-center-top} +@subheading Entrada de text -Perdeu menys temps als ajustos de la sortida; el LilyPond -aconsegueix el format més correcte des del principi. Determina -l'espaiat per si sol i divideix les línies i les pàgines de forma -que ofereix una disposició compacta i uniforme. Els conflictes -entre la lletra de les cançons, les notes i els acords es resolen, -i les lligadures i les barres s'inclinen automàticament. +@subsubheading Tot és explícit + +El LilyPond processa l'entrada de text, que conté tota la +informació sobre el @emph{contingut} de la seva partitura i pot +llegir-se fàcilment per un humà o per un altre programa. No hi ha +cap ajust estrany ocult a darrera de complicats menús o de fitxers +de document binaris. + +Llegiu més sobre aquest concepte a @ref{Entrada de text}. + + +@subsubheading Els ajustaments són robustos i transparents + +Si heu de modificar algun aspecte de la disposició sobre la +pàgina, aquesta modificació es veurà explícitament en una forma +llegible per l'ésser humà, per la qual cosa sempre es pot seguir +la pista del que s'ha fet. Si @q{trenqueu} quelcom +accidentalment, podeu revertir o modificar fàcilment qualsevol +decisió sense dependre de la funció de @emph{Desfer}. + + +@subsubheading Els fitxers de text son a prova de fallada i duradors + +Els fitxers de text presenten una gran robustesa en front a la +corrupció del seu contingut. A més a més, com són llegibles por +part de l'ésser humà, sempre podem interpretar-los fins i tot que +no tinguen accés als programes que els van crear. + +@subsubheading Gestioneu les vostres partitures amb control de versions + +Els fitxers de text són idonis per a la seva gestió mitjançant el +control de versions. Coneixeu aquest tècnica i gaudiu de +l'experiència de tenir mecanismes de fer i desfer infinits i +selectius i la història completa del desenvolupament de les +vostres partitures. El control de versions us pot també obrir nous +models de feina (per exemple col·laboratius). @divEnd -@divClass{color2} -@subheading Facilitat d'ús +@divClass{column-center-top} +@subheading Usabilitat @imageFloat{lilypond-book,png,right} -@subsubheading Entrada basada en text -LilyPond agafa una entrada en text normal, que podem elaborar en -el nostre editor de text de preferència, de forma ràpida i -còmoda. L'entrada de text conté tota la informació, de manera que -no hi ha necessitat de recordar complexes seqüències -d'instruccions: tans sols deseu un codi d'entrada perquè serveixi -com a referència futura. +@subsubheading Opcions d'aspecte efectives + +Perdeu menys temps als ajustos de la sortida; el LilyPond +aconsegueix el format més correcte des del principi. Determina +l'espaiat per si sol i divideix les línies i les pàgines de forma +que ofereix una disposició compacta i uniforme. Els conflictes +entre la lletra de les cançons, les notes i els acords es resolen, +i les lligadures i les barres s'inclinen automàticament. @subsubheading Combinar música i text Col·loqueu fragments de música dins de textos sense retallar i enganxeu imatges. Integreu música dins del @LaTeX{} i de l'HTML de forma senzilla, o afegiu música a documents de l'OpenOffice o del -LibreOffice mitjançant OOoLilyPond. També hi ha connectors o -complements disponibles per permetre codi del LilyPond dins de -diversos blogs i wikis, fent possible la col·laboració en línia. +LibreOffice mitjançant +@uref{http://extensions.services.openoffice.org/en/project/OOoLilyPond,OOoLilypond}. +També hi ha connectors o complements disponibles per permetre codi +del LilyPond dins de diversos blogs i wikis, fent possible la +col·laboració en línia. @subsubheading Accessibilitat @@ -163,18 +204,78 @@ amb alguna dificultat manual que no poden teclejar o usar un ratolí d'ordinador, poden usar programari de reconeixement de veu per editar els fitxers del LilyPond. Fins i tot les persones totalment cegues poden usar lectors de pantalla per escriure els fitxers del -LilyPond (una tasca impossible als programes d'edició de +Lilypond (una tasca impossible als programes d'edició de partitures basats en gràfics). + +@subsubheading Diversitat d'editors + +Diversos desenvolupadors que són també usuaris actius del programa +Lilypond han escrit eines dirigides específicament a fer més ràpid +i efectiu el procés d'edició dels fitxers de codi del LilyPond; no +hi ha lligadures a una sola interfície d'usuari sinó que podeu +usar diferents eines per a diferents tasques. Fins i tot podeu +usar un editor complet a casa i usar l'aplicació de notes del +vostre telèfon mòbil per editar els fitxers mentre esteu de +viatge. Per veure alguns exemples, consulteu @ref{Entorns millorats}. +@c TODO: Change this when the new pages have been written and pushed + + +@divEnd + +@divClass{column-center-top} + @subsubheading Disseny ampliable +@subsubheading Gestió senzilla dels fulls d'estil + Tots els paràmetres de configuració es poden modificar perquè es -combinin amb el vostre gust tipogràfic personal. Si això no és +combinin amb el vostre gust tipogràfic personal. D'aquesta manera, +podeu escriure fàcilment fulls d'estil capaços de modificar tot i +cada un dels aspectes predeterminats de les partitures del +LilyPond. Atès que aquests fulls estan a més a més escrits com a +text i es poden desar com fitxers separats, podeu canviar d'un +full a un altre de manera senzilla per produir partitures que +tenen un aspecte completament diferent. Voleu imprimir una +partitura en paper A4 i projectar-la amb un canó de vídeo, a un +sistema per pàgina? El motor de recomposició del LilyPond produirà +ambdues sense cap esforç a partir del mateix codi d'entrada. + +@subsubheading Escriviu les vostres pròpies funcions + +Si això no és suficient, sempre ens queda el llenguatge de scripts Scheme incorporat, un dialecte del potent llenguatge LISP. Tots els paràmetres de configuració, variables i funcions estan documentats al complet manual de referència del programa. +@subsubheading Processeu les partitures programàticament + +Els fitxers d'entrada del LilyPond es poden editar completament o +fins i tot ser generats per altres programes i guions propis. +Això es pot usar, per exemple, per a la composició algorítmica. +Però també podeu accedir al contingut musical per al seu anàlisi, +o tractar fragments de l'entrada a una base de dades. No hi ha +cap limitació, a no ser la seva pròpia imaginació. + + +@subsubheading Produïu eines noves usant el LilyPond + +El Lilypond no és un programa monolític amb interfície gràfica, +sinó que és una eina de la línia d'ordres, per tant es pot usar +també des de dins d'altres aplicacions. D'aquesta manera és +possible equipar eines com ara aplicacions web, amb tot el poder +de la tipografia musical del LilyPond. De fet ja hi ha diverses +eines en línia que utilitzen el LilyPond. + +@c (TBD: Add a link to the new @ref{Applications} page. + + +@divEnd + +@divClass{column-center-top} + + @divEnd @divClass{color3} @@ -183,6 +284,20 @@ al complet manual de referència del programa. @imageFloat{frescobaldi-lilypond-editor-small,png,right} +@subsubheading Suport excel·lent + +El LilyPond funciona a totes les plataformes populars: GNU/Linux, +MacOS i Windows. El Lilypond ve amb una completa documentació i +sents de fitxers d'exemple. Hi ha una activa comunitat d'usuaris +disposada a respondre dubtes i qüestions a la llista de +distribució de correu d'usuaris del LilyPond, +@code{lilypond-user}, que us ofereix una ajuda amigable. El temps +de resposta ser molt curt, i freqüentment s'ofereixen solucions +brillants als problemes que es plantegen a ella. Gràcies a +l'estreta interacció amb l'equip de desenvolupament, aquests +solucions s'inclouen al mateix programa LilyPond de forma +regular. Seguiu llegint a @ref{Comunitat}. + @subsubheading Programari lliure El LilyPond es pot descarregar sense cost! Sí: és @@ -192,24 +307,8 @@ També és programari lliure, com la llibertat d'expressió. S'ofereix amb el codi font amb el permís de modificar-lo i copiar-lo. Així doncs, esteu fart d'alguna fallada o demaneu alguna funcionalitat determinada? Tan sols afegiu-la -personalment, o pagueu a algú que ho faci. - -@subsubheading Excel·lent suport - -El LilyPond funciona amb totes les plataformes populars: -GNU/Linux, MacOS X i Windows. El LilyPond ve amb una completa -documentació i centenars de fitxers d'exemple. Hi ha una activa -comunitat d'usuaris disposada a respondre dubtes i qüestions a la -llista de distribució de correu d'usuaris del LilyPond, -lilypond-user, a l'hora que l'equip de desenvolupament assegura -que els problemes es resolen amb rapidesa. - -@subsubheading Editors millorats - -Diversos desenvolupadors que són a l'hora usuaris actius del -LilyPond han escrit eines orientades específicament a fer més -fàcil i efectiu el procés d'editar fitxers del LilyPond. Per veure -alguns exemples, consulteu @ref{Entorns millorats}. +personalment, o pagueu a algú que ho faci. Seguiu llegint a +@ref{Llibertat}. @divEnd @divClass{column-center-bottom} @@ -226,20 +325,24 @@ primer lloc informeu-vos de la nostra @ref{Entrada de text}. @unnumberedsec Exemples @translationof Examples +@divClass{column-center-top} + El LilyPond és una eina potent i flexible per a tasques de gravat musical de tot tipus. Exploreu lliurement la nostra galeria d'exemples i inspireu-vos! -@newsItem +@divEnd + +@divClass{column-center-middle-color2} @subsubheading Música Clàssica Aquesta peça d'òrgan del J.S. Bach és un projecte força típic de gravat amb el LilyPond. @exampleImage{bach-bwv610} -@newsEnd +@divEnd -@newsItem +@divClass{column-center-middle-color2} @subsubheading Notació complexa Aquest exemple procedent de les @emph{Goyescas} de l'Enric @@ -248,18 +351,18 @@ composició tipogràfica, com ara les barres en angle, vírgules de pentagrama creuat i línies de seguiment de veus. @exampleImage{granados} -@newsEnd +@divEnd -@newsItem +@divClass{column-center-middle-color2} @subsubheading Música antiga El LilyPond també contempla diferents tipus de notació antiga, com ara aquest passatge de cant gregorià. @exampleImage{ancient-headword} -@newsEnd +@divEnd -@newsItem +@divClass{column-center-middle-color2} @subsubheading Música moderna Els compositors contemporanis troben que el LilyPond és adequat @@ -267,10 +370,10 @@ per a la impressió de notació inusual. Heus aquí un extracte de l'obra @emph{Čáry}, del Trevor Bača, per a flauta baixa sola. @exampleImage{cary} -@newsEnd +@divEnd -@newsItem +@divClass{column-center-middle-color2} @subsubheading Creació flexible i eficient de material d'interpretació Es poden crear diferents materials de lectura a partir del mateix @@ -285,9 +388,9 @@ veu, i una particel·la de violí. @exampleImage{sesto-violin} -@newsEnd +@divEnd -@newsItem +@divClass{column-center-middle-color2} @subsubheading Tabulatura El LilyPond contempla la notació de xifra per a guitarra, que es @@ -297,9 +400,9 @@ automàticament a partir de les notes que s'escriuen al pentagrama normal. @exampleImage{tab-example} -@newsEnd +@divEnd -@newsItem +@divClass{column-center-middle-color2} @subsubheading Gràfics de Schenker La sortida estàndard es pot modificar de forma molt @@ -309,9 +412,19 @@ pel Kris Schaffer, per a un article a la revista Journal}. S'han afegit alguns colors per millorar la visibilitat. @exampleImage{bach-schenker} -@newsEnd +@divEnd -@newsItem +@divClass{column-center-middle-color2} +@subheading Sortida personalitzada + +Un petit fragment de la @emph{Klavierstück II} de Stockhausen, per +demostrar la capacitat del LilyPond d'oferir una sortida +personalitzada. + +@exampleImage{Stockhausen_Klavierstueck2} +@divEnd + +@divClass{column-center-middle-color2} @subsubheading Música vocal El LilyPond és excel·lent per a tot tipus de música vocal, des @@ -321,13 +434,13 @@ tenor està escrita en un compàs diferent a les altres però s'ha d'alinear com si estigués al mateix compàs. El LilyPond tracta aquesta situació amb molta elegància. Observeu també els incípit amb les claus a l'estil de l'edició vaticana, les vírgules -barrades que indiquen notes repetides, i els claudàtors de +barrades que indiquen notes repetides, i els parèntesis de lligadura per sobre de certs grups de notes. @exampleImage{aucun-snippet} -@newsEnd +@divEnd -@newsItem +@divClass{column-center-middle-color2} @subsubheading Aplicacions per a l'educació El LilyPond està molt indicat també per a aplicacions @@ -335,9 +448,9 @@ educatives. Heus aquí un exemple d'un senzill exercici de contrapunt. @exampleImage{theory} -@newsEnd +@divEnd -@newsItem +@divClass{column-center-middle-color2} @subsubheading Música pop És senzill crear fulls guia d'acords en xifrat americà per a @@ -347,9 +460,9 @@ de posicions predefinides, però es poden personalitzar profundament per complir amb gairebé qualsevol situació. @exampleImage{chart} -@newsEnd +@divEnd -@newsItem +@divClass{column-center-middle-color2} @subsubheading Projectes grans El LilyPond és excel·lent per a projectes grans com ara òperes o @@ -358,7 +471,7 @@ basada en text proporciona una major accessibilitat (aquest exemple ha estat aportat per Hu Haipeng, un compositor cec). @exampleImage{orchestra} -@newsEnd +@divEnd @divClass{column-center-bottom} @@ -407,11 +520,11 @@ LilyPond crea algun tipus de notació musical, podeu veure exactament com està feta. @item -Ampliable: podeu afegir possibilitat, corregir errors i canviar el -funcionament. Si no sabeu programar, podeu contractar a algú +Ampliable: podeu afegir noves funcionalitats, corregir errors i canviar el +funcionament. Si no sabeu programar, podeu contractar a algun programador perquè faci aquestes tasques. -Això pot sembla poc atractiu per a músics ocasionals, però la +Això pot semblar poc atractiu per a músics ocasionals, però la capacitat d'expandir el programari pot ser molt valuosa per als compositors seriosos, empreses i acadèmics. @@ -483,8 +596,8 @@ trobar feina a empreses o a universitats. @subheading I ara què? Encara no us convenç el LilyPond? Llegiu el nostre estens assaig -sobre la nostra filosofia del gravar a @ref{Rerefons}. Si ja voleu -provar el LilyPond, en primer lloca llegiu el que hem escrit sobre +sobre la nostra filosofia de gravar a @ref{Rerefons}. Si ja voleu +provar el LilyPond, en primer lloc llegiu el que hem escrit sobre la @ref{Entrada de text}. @divEnd @@ -499,8 +612,9 @@ la @ref{Entrada de text}. Tenim una àmplia monografia que descriu l'estètica computacional: l'art de crear bellesa amb un ordinador. -Si tan sols voleu una introducció ràpida al LilyPond, llegir tot -el material que constitueix la monografia podria ser massa. Si voleu +És una lectura interessant si voleu profunditzar en la discussió +de les nostres idees fonamentals. A causa del seu volum, +s'ofereix com un «manual». Si voleu llegir-lo ara, continueu cap a @ressaynamed{Essay,Monografia}. @divEnd @@ -518,23 +632,48 @@ sobre la nostra @ref{Entrada de text}. @unnumberedsec Produccions @translationof Productions +@divClass{column-center-top} + +@subheading Producciones que usan LilyPond + +Aquí podeu informar-vos sobre les persones que usen efectivament +el LilyPond en les seves produccions, ja sigui per interpretacions +en viu de la seva música o com a partitures publicades. + +@divEnd + + @divClass{column-left-top} @subheading Concerts -La música tipografiada amb el LilyPond s'ha utilitzat en +La música gravada amb el LilyPond s'ha utilitzat en interpretacions i actuacions per tot el mon. Alguns titulars: @divClass{keep-bullets} @itemize @item -@uref{http://www.aurelienbello.com/,Aurélien Bello} ha +@uref{http://www.aurelienbello.com/,Aurélien Bello} va arreglar +una versió del @emph{Der Rosenkavalier} de Richard Strauss per a +quatre cantants i orquestra de cambra composta per a trenta +instrumentistes. La producció va ser encarregada per l'Orquestra +Filarmònica de Berlin, els membres d la qual van ser els +intèrprets el +@uref{http://www.festspielhaus.de/veranstaltung/der-kleine-rosenkavalier-02-04-2015-1100/,2 +i el 7 d'abril} a la Festspielhaus de Baden-Baden, i el +@uref{http://www.berliner-philharmoniker.de/konzerte/kalender/details/21070/,26 +d'abril} a la @emph{Philharmonie (großer Saal)} de Berlín. Ens +encanta veure músics de alta reputació tocant a partir de +partitures fetes amb el LilyPond (i segons sembla estan molt +contents amb elles). + +Aurélien també ha reorquestrat @emph{Der Ring des Nibelungen} del Richard Wagner a una @uref{http://www.rsb-online.de/content/konzerte/wagnerzyklus-10-13/wagner-fuer-kinder/index_ger.html, per a nens} de 100 minuts de durada. Està escrita per a orquestra simfònica estàndard però amb -una plantilla reduïda de cantants, i s'interpretarà per la -@emph{Radio-Sinfonieorchester Berlin} els dies 5 i 6 d'abril de -2014 a l'Atze Musiktheater de Berlín. El director és el Heiko +una plantilla reduïda de cantants, i va ser interpretada per la +@emph{Radio-Sinfonieorchester Berlin} a l'abril de +2014 a l'Atze Musiktheater de Berlín. El director va ser el Heiko Matthias Förster. @item @@ -546,10 +685,10 @@ www.queridokinderenjeugdboeken.nl}; partitures d'assaig de cor per a la traducció holandesa del @emph{Saint Nicolas} del Benjamin Britten realitzat per @emph{Muziektheater Hollands Diep} el 2011, @uref{http://www.muziektheaterhollandsdiep.nl/nl/voorstellingen/sint_nicolaas_leeft, -www.muziektheaterhollandsdiep.nl}; i està treballant actualment en +www.muziektheaterhollandsdiep.nl}. També va treballar en la partitura general i particel·les d'un arranjament del @emph{Boris Godounov} del Moussurgsky per a quartet de vent, -piano i percussió. S'interpretarà el 2014, de nou per part de +piano i percussió. Es va interpreta el 2014, de nou per part de @emph{Muziektheater Hollands Diep}. @item @@ -569,8 +708,8 @@ Els @emph{Quadres d'una exposició} del Mussorgsky, reorquestrats i dirigits per l'@uref{http://www.aurelienbello.com/,Aurélien Bello} amb la orquestra @uref{http://www.junge-philharmonie-brandenburg.de/, Junge -Philharmonie Brandenburg} el 10 d'octubre de 2011 i una altra -vegada els dies 15 i 16 d'abril de 2012. +Philharmonie Brandenburg} a l'octubre de 2011 i +l'abril de 2012. @item @uref{http://www.kierenmacmillan.info/, Kieren MacMillan}, compositor @@ -579,7 +718,7 @@ i director musical. Entre les seves nombroses recents estan @uref{http://www.saltlakechoralartists.org/, Salt Lake Choral Artists} al març de 2012; la @emph{Just Out of Reach Suite} interpretada pel @uref{http://www.herald-dispatch.com/news/marshall/x1883873762/Music-duo-Chrysalis-to-perform-at-Marshall-University-on-Jan-19, -Duo Chrysalis} ; @emph{thrafsmata} interpretada el juliol de 2011 pel +Duo Chrysalis} ; @emph{thrafsmata} interpretada al juliol de 2011 pel @uref{http://www.pnme.org/CurrentSeason/PreviousSeasons.html, Pittsburgh New Music Ensemble}. @@ -639,7 +778,7 @@ Montpellier}, a França. El @uref{http://www.mutopiaproject.org/index.html, Projecte Mutopia} inclou més de 1500 partitures de música clàssica per a la seva descàrrega lliure, i és el principal aparador de partitures del -LilyPond. +Lilypond. @c don't make this "Mutopia" a link, since that looks silly. @item @@ -683,6 +822,11 @@ de text}. @unnumberedsec Ressenyes @translationof Reviews +@divClass{column-center-top} +@subheading Que diu la gent sobre el LilyPond? + +@divEnd + @divClass{column-left-top} @subheading Articles publicats @@ -802,7 +946,7 @@ partitures produïdes pel LilyPond son excepcionalment boniques Juliol/agost de 2004 Dave Phillips va escriure un article introductori per a Linux -Journal At the Sounding edge: LilyPond, +Journal At the Sounding edge: Lilypond, @uref{http://www.linuxjournal.com/article/7657, primera} i @uref{http://www.linuxjournal.com/article/7719, segona} part. @@ -820,7 +964,7 @@ Febrer de 2004 El cantant de jazz Gail Selkirk escriu sobre @uref{http://www.songbirdofswing.com/editorial_page/lilypond/, -Submergir-se a l'estany dels nenúfars (LilyPond)}. +Submergir-se a l'estany dels nenúfars (Lily Pond)}. @qq{@dots{} pot fer fulls guia d'acords o parts orquestrals completes, i el resultat pot ser increïble.} @uref{http://www.computermusic.co.uk/, Computer Music Special}, número @@ -950,7 +1094,7 @@ bellesa. Això és massa modèstia! (@dots{}) a mesura que el LilyPond millora contínuament i observo com es fan les coses amb el Scheme, tinc cada cop menys frustracions. De totes maneres el que vull dir és: gràcies per -donar-nos el LilyPond, és realment bo.} +donar-nos el Lilypond, és realment bo.} @divEnd @@ -1154,48 +1298,8 @@ In particular, don't link to: @end ignore @divClass{column-center-top} -@subheading Tunefl - -@sourceimage{logo-linux,,,} -@sourceimage{logo-freebsd,,,} -@sourceimage{logo-macosx,,,} -@sourceimage{logo-windows,,,} - -@uref{http://www.tunefl.com} - -Amb el tunefl es poden gravar les partitures senzilles de -forma directa en línia sense necessitat d'instal·lar el LilyPond -localment. Permet provar totes les capacitats del programa usant -una interfície web còmoda. - -@divEnd - -@divClass{column-center-top} -@subheading LilyPondTool - -@imageClickable{lilypondtool-2.12-screenshot-400wide,png, (cliqueu -per veure una imatge més gran),lilypondtool-2.12-screenshot,png,right} - -@sourceimage{logo-linux,,,} -@sourceimage{logo-freebsd,,,} -@sourceimage{logo-macosx,,,} -@sourceimage{logo-windows,,,} - -@uref{http://lilypondtool.organum.hu} - -Creat com un @q{connector} o complement per a l'editor de text -@uref{http://www.jedit.org,jEdit}, el LilyPondTool és una de les -eines basades en text més riques en funcionament per a l'edició de -partitures del LilyPond. Entre les seves possibilitats es troben: -un assistent de documents que contempla la possibilitat de -introduir lletres de cançons per a la preparació fàcil de -documents, i un visor de PDF integrat que contempla la -possibilitat d'apuntar i clicar per mostrar el codi. - -@divEnd - -@divClass{column-center-top} -@subheading Frescobaldi +@subheading Aplicacions amb interfície gràfica +@subsubheading Frescobaldi @imageClickable{frescobaldi-lilypond-editor-small,png, (cliqueu per veure una imatge més gran),frescobaldi-lilypond-editor,png,right} @@ -1205,16 +1309,18 @@ per veure una imatge més gran),frescobaldi-lilypond-editor,png,right} @sourceimage{logo-windows,,,} @uref{http://www.frescobaldi.org} - -El Frescobaldi és un editor lleuger i potent de text i música per -al LilyPond amb un visor de PDF incorporat. És molt fàcil -d'utilitzar i funciona en tots els principals sistemes operatius -(GNU/Linux, Mac OS X i Windows). - -@divEnd - -@divClass{column-center-top} -@subheading Entorn gràfic: Denemo +El Frescobaldi és un editor de música i text lleuger tot i que +potent, amb moltes funcions creades especialment per al LilyPond. +Entre les seves principals possibilitats estan els enllaços per +d'apuntar i clicar amb el ratolí entre el codi i la vista prèvia +de la música, detallats assistents de partitura, un navegador +incorporat per a la documentació del Lilypond, sintaxi amb colors +i completat automàtic de les paraules clau. El Frescobaldi està +escrit amb Python amb el PyQt4 per a la interfície d'usuari, i +funciona als principals sistemes operatius (GNU/Linux, Mac OS X i +Windows). + +@subsubheading Denemo @imageClickable{screenshot-denemo-small,png, (cliqueu per veure una imatge més gran),screenshot-denemo,png,right} @@ -1240,7 +1346,28 @@ del programa. @divEnd @divClass{column-center-top} -@subheading Editors de text +@subheading Editores basados en el navegador web + +@subsubheading LilyBin +@uref{http://lilybin.com} + +Un editor de LilyPond basado en web, donde uno puede crear sus +partituras directamente online sin necesidad de instalar LilyPond. + +@subsubheading Tunefl +@uref{http://www.tunefl.com} + +Amb el tunefl es poden gravar les partitures senzilles de +forma directa en línia sense necessitat d'instal·lar el LilyPond +localment. Permet provar totes les capacitats del programa usant +una interfície web còmoda. + +@divEnd + +@divClass{column-center-top} +@subheading Complements d'IDE + +@subsubheading Elysium @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,} @@ -1255,8 +1382,9 @@ la partitura. Inclou realimentació visual ràpida i intuïtiva sense haver d'alternar entre contextos, i porta moltes plantilles conduïdes per assistents. -@uref{http://www.gnu.org/software/emacs/} +@subsubheading Emacs +@uref{http://www.gnu.org/software/emacs/} L'Emacs és un editor de text amb funcionalitats avançades per a molts llenguatges de programació. L'Emacs és un editor que es pot expandir àmpliament i es pot usar com un entorn integrat de @@ -1266,20 +1394,27 @@ LilyPond. Un desenvolupador ha escrit @uref{https://github.com/nsceaux/lyqi,lyqi}, un mode principal de l'Emacs. -@uref{http://www.vim.org} +Si no esteu familiaritzat prèviament amb l'Emacs, potser +preferireu usar un editor diferent per a l'escriptura de fitxers +del LilyPond. + +Hi ha més informació sobre la configuració de l'Emacs a +@rprogramnamed{Text editor support,Suport per als editors de text}. -El Vim és un editor de text minimalista que és una estensió de -l'antic editor @command{vi} de l'Unix. També és es pot expandir i -configurar. +@subsubheading Vim +@uref{http://www.vim.org} El Vim és un editor de text minimalista +que és una estensió de l'antic editor @command{vi} de l'Unix. +També és es pot expandir i configurar. -Per regla general, si no esteu familiaritzat prèviament amb +Si no esteu familiaritzat prèviament amb l'Emacs o el Vim, probablement preferireu utilitzar un editor diferent per escriure fitxers d'entrada del LilyPond. Hi ha més informació sobre la configuració de l'Emacs i del Vim a -@rprogram{Text editor support}. +@rprogramnamed{Text editor support,Suport per als editors de text}. @sourceimage{logo-macosx,,,} +@subsubheading TeXShop @uref{http://www.uoregon.edu/~koch/texshop} L'editor TexShop per a MacOS@tie{}X es pot estendre perquè executi @@ -1293,7 +1428,7 @@ dins de l'editor, utilitzant les extensions que estan disponibles a: @divEnd @divClass{column-center-top} -@subheading Programes capaços d'exportar codi del LilyPond +@subheading Altres programes capaços d'exportar codi del LilyPond @subsubheading Editors de partitura, tablatura i MIDI: @@ -1319,22 +1454,11 @@ d'@uref{http://www.gvox.com/,Encore} en una del LilyPond. @item @uref{https://github.com/hanwen/go-enc2ly,go-enc2ly} és una eina de GO que converteix fitxers de -@uref{http://www.gvox.com/,Encore} al LilyPond. Es va crear +Encore al LilyPond. Es va crear utilitzant la recerca i la enginyeria inversa per mitjà de la modificació puntual de fitxers .enc i carregant-los a la versió de demostració 4.55. -@item -@uref{http://www.musescore.org,MuseScore}, un editor de -partitures, té exportació incompleta del LilyPond però s'està -desenvolupant de forma activa. - -@item -@uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd}, -un editor de partitures basat en la biblioteca -@uref{http://www.cairographics.org,Cairo}, -contempla de forma experimental l'exportació al LilyPond. - @item @uref{http://www.holmessoft.co.uk/homepage/software/NWC2LY/index.htm,NW2LY} és un programa en C# que converteix una cançó del NoteWorthy @@ -1351,15 +1475,6 @@ musicals a una sola partitura o particel·la. MIDI i d'àudio, que té també un editor de partitura per a edició d'un sol pentagrama. -@item -@uref{https://launchpad.net/rumor/,Rumor}, un convertidor -monofònic de MIDI al LilyPond en temps real. - -@item -@uref{http://www.tuxguitar.com.ar/,TuxGuitar}, un editor i -reproductor de tabulatura multipista, té visor de partitura i és -capaç d'exportar cap al LilyPond. - @end itemize @subsubheading Generadors de codi algorítmics @@ -1394,10 +1509,28 @@ un entorn construït sobre el llenguatge de restriccions @itemize +@item +@uref{https://sourceforge.net/projects/lily4jedit,LilyPondTool} +va ser creat amb una extensió per a l'editor de text +@uref{http://www.jedit.org,jEdit}. + @item @uref{http://lilykde.googlecode.com/,LilyKDE} s'ha substituït per @uref{http://www.frescobaldi.org/,Frescobaldi}, i existeix com a -LilyKDE3 per a KDE 3.5 i com a lilypond-KDE4 per a KDE 4.1 solament. +LilyKDE3 per a KDE 3.5 i com a lilypond-KDE4 per a KDE 4.1 +solament. + +@item +@uref{http://lilycomp.sourceforge.net, LilyComp} és un programa +gràfic d'introducció de notes, que actua com un teclat numèric que +produeix notes del LilyPond. + +@item +@uref{http://www.musescore.org,MuseScore}, un editor de +partitures. L'exportació de codi del LilyPond es va descartar en +la versió 2.0, però encara estan disponible versions més antigues +per a descarregar a +@uref{http://sourceforge.net/projects/mscore/files/mscore/,Sourceforge}. @item @uref{https://sourceforge.net/projects/noteedit.berlios/,NoteEdit}, que importava @@ -1405,11 +1538,21 @@ LilyKDE3 per a KDE 3.5 i com a lilypond-KDE4 per a KDE 4.1 solament. @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd} i @uref{http://canorus.org,Canorus}. +@item +@uref{http://extensions.services.openoffice.org/en/project/OOoLilyPond,OOoLilypond}, +una extensió de l'OpenOffice.org que converteix fitxers del +LilyPond a imatge dins de documents de l'OpenOffice .org. Tot i +que ja no s'està desenvolupant de forma activa, encara sembla +funciona amb la versió 4. @item -@uref{http://lilycomp.sourceforge.net, LilyComp} és un programa -gràfic d'introducció de notes, que actua més o menys com un -teclat numèric que produeix notes del LilyPond. +@uref{https://launchpad.net/rumor/,Rumor}, un convertidor +monofònic de MIDI al LilyPond en temps real. + +@item +@uref{http://sourceforge.net/projects/tuxguitar/,TuxGuitar}, un +editor i reproductor multipista de tabulatura, que inclou un visor +de partitura i pot exportar al LilyPond. @end itemize @@ -1432,6 +1575,9 @@ més, el nostre enfoc de l'estètica computacional del gravat musical clàssic ve explicat en el nostre tractat sobre el @ref{Rerefons}. +@divEnd + +@divClass{column-center-bottom} @subheading Formalitats legals @divClass{legal} diff --git a/Documentation/ca/web/manuals.itexi b/Documentation/ca/web/manuals.itexi index 32ef0021b7..c795b7ee4f 100644 --- a/Documentation/ca/web/manuals.itexi +++ b/Documentation/ca/web/manuals.itexi @@ -7,6 +7,9 @@ version that you are working on. See TRANSLATION for details. @end ignore +@c Translators: Walter Garcia-Fontes +@c Translation checkers: + @node Manuals @unnumbered Manuals diff --git a/Documentation/ca/web/news-front.itexi b/Documentation/ca/web/news-front.itexi index 0a0869026c..17c18eca25 100644 --- a/Documentation/ca/web/news-front.itexi +++ b/Documentation/ca/web/news-front.itexi @@ -13,6 +13,7 @@ @c into news.itexi. @c Translators: Walter Garcia-Fontes +@c Translation checkers: @c keep two blank lines between news entries @c used for news about the upcoming release; see CG 10.2 diff --git a/Documentation/changes.tely b/Documentation/changes.tely index 958ecb109e..570c1c308a 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -62,7 +62,80 @@ which scares away people. @end ignore @item -The music function @code{\\unfoldRepeats} can now take an +It is now possible to move systems with reference to their current +position using the @code{extra-offset} subproperty of +@code{NonMusicalPaperColumn.line-break-system-details}. Both vertical +and horizontal changes are possible. This feature is especially useful +for making slight adjustments to the default vertical position of +individual systems. See @ruser{Explicit staff and system positioning} for +more information. + +@item +It is now possible to add text to analysis brackets through the +@code{HorizontalBracketText} object. +@lilypond[quote,verbatim] +\layout { + \context { + \Voice + \consists "Horizontal_bracket_engraver" + } +} + +{ + \once \override HorizontalBracketText.text = "a" + c''\startGroup d''\stopGroup + e''-\tweak HorizontalBracketText.text "a'" \startGroup d''\stopGroup +} +@end lilypond + +@item +The ends of hairpins may now be fine-tuned using the @code{shorten-pair} +grob property, which previously only affected text-spanners like +@code{TupletBracket} and @code{OttavaBracket}. Positive values offset +to the right, negative to the left. +@lilypond[quote,verbatim] +{ \once \override Hairpin.shorten-pair = #'(2 . 2) + c'1~\< + c'2~ c'\! + \once \override Hairpin.shorten-pair = #'(-2 . -2) + c'1~\< + c'2~ c'\! } +@end lilypond + +@item +In fret-diagrams the distance between frets and the distance between strings is +now independently adjustable. Available are @code{fret-distance} and +@code{string-distance} as subproperties of @code{fret-diagram-details}. +@lilypond[verbatim,quote] +fretMrkp = \markup { \fret-diagram-terse #"x;x;o;2;3;2;" } + +\markuplist +\override #'(padding . 2) +\table #'(0 -1) { + "default" + + \fretMrkp + + "fret-distance" + + \override #'(fret-diagram-details . ((fret-distance . 2))) + \fretMrkp + + "string-distance" + + \override #'(fret-diagram-details . ((string-distance . 2))) + \fretMrkp +} +@end lilypond + +@item +Accidental rules can now be defined across @code{ChoirStaff} contexts. +Two new rules @code{choral} and @code{choral-cautionary} are available +that combine the characteristics of @code{modern-voice} and @code{piano} +or their equivalents with cautionary accidentals. + +@item +The music function @code{\unfoldRepeats} can now take an optional argument-list specifying which type(s) of repeated music should be unfolded. Possible entries are @code{percent}, @code{tremolo}, @code{volta}. @@ -941,6 +1014,55 @@ option @samp{-dstrokeadjust} to LilyPond. When generating looking @code{PDF} previews but significantly larger file size. Print quality at high resolutions will be unaffected. +@item +Default text fonts have been changed from +@code{Century Schoolbook L}, @code{sans-serif}, and @code{monospace}. + +For @code{svg} backend: +@multitable @columnfractions .15 .30 +@headitem Family @tab Default font +@item @emph{roman} @tab @code{serif} +@item @emph{sans} @tab @code{sans-serif} +@item @emph{typewriter} @tab @code{monospace} +@end multitable + +@code{serif}, @code{sans-serif}, and @code{monospace} are +@code{generic-family} in SVG and CSS specifications. + +For other backends: +@multitable @columnfractions .15 .30 .55 +@headitem Family @tab Default font (alias) @tab Alias definition lists +@item @emph{roman} +@tab @code{LilyPond Serif} +@tab +TeX Gyre Schola, +C059, Century SchoolBook URW, Century Schoolbook L, +DejaVu Serif, +..., serif +@item @emph{sans} +@tab @code{LilyPond Sans Serif} +@tab +TeX Gyre Heros, +Nimbus Sans, Nimbus Sans L, DejaVu Sans, +..., sans-serif +@item @emph{typewriter} +@tab @code{LilyPond Monospace} +@tab +TeX Gyre Cursor, +Nimbus Mono PS, Nimbus Mono, Nimbus Mono L, +DejaVu Sans Mono, +..., monospace +@end multitable + +@code{LilyPond Serif}, @code{LilyPond Sans Serif}, +and @code{LilyPond Monospace} are font aliases defined +in the LilyPond dedicated FontConfig configuration file +@code{00-lilypond-fonts.conf}. +Where a character dosen't exist in the first font listed, +the next font listed will be used instead for that character. +For details of alias definitions, please see +to @code{00-lilypond-fonts.conf} under the installed directory. + @end itemize @ifhtml diff --git a/Documentation/common-macros.itexi b/Documentation/common-macros.itexi index 7ee978a076..b5c16e8dc0 100644 --- a/Documentation/common-macros.itexi +++ b/Documentation/common-macros.itexi @@ -141,7 +141,7 @@ UNTRANSLATED NODE: IGNORE ME @ifset web -@c make link to bugfixes for news.itexi +@c make link to bugfixes for news-old.itexi @c use underscores for version: @bugfixes{2_13_13,} @c use specifier arg when listing multiple versions @c (see September 20, 2007 post for an example) diff --git a/Documentation/contributor.texi b/Documentation/contributor.texi index ed1a1df7f1..ac485a3962 100644 --- a/Documentation/contributor.texi +++ b/Documentation/contributor.texi @@ -66,7 +66,7 @@ Copyright @copyright{} 2007--2015 by the authors. * Programming work:: * Release work:: * Build system notes:: -* Modifying the feta font:: +* Modifying the Emmentaler font:: * Administrative policies:: Appendices @@ -94,7 +94,7 @@ Appendices @include contributor/programming-work.itexi @include contributor/release-work.itexi @include contributor/build-notes.itexi -@include contributor/feta-font.itexi +@include contributor/emmentaler-font.itexi @include contributor/administration.itexi @node LilyPond grammar diff --git a/Documentation/contributor/doc-translation-list.itexi b/Documentation/contributor/doc-translation-list.itexi index 44ead1df1a..63db61ac56 100644 --- a/Documentation/contributor/doc-translation-list.itexi +++ b/Documentation/contributor/doc-translation-list.itexi @@ -26,28 +26,28 @@ procedures}. @example -1- Web site 760 web.texi -5814 web/introduction.itexi +5793 web/introduction.itexi 1158 web/download.itexi 1139 macros.itexi 9 po/lilypond-doc.pot (translate to po/@var{MY_LANGUAGE}.po) 0 search-box.ihtml --- lilypond-texi2html.init (section TRANSLATIONS) -8880 total +8859 total -2- Tutorial 1314 web/manuals.itexi 124 learning.tely 2499 learning/tutorial.itely -4402 learning/common-notation.itely -8339 total +4421 learning/common-notation.itely +8358 total -3- Fundamental Concepts, starting of Usage and Community -11119 learning/fundamental.itely -- Fundamental concepts +11240 learning/fundamental.itely -- Fundamental concepts 135 usage.tely -5440 usage/running.itely -1866 usage/updating.itely -3524 web/community.itexi -22084 total +5469 usage/running.itely +2097 usage/updating.itely +2449 web/community.itexi +21390 total -4- Rest of Learning manual and Suggestions on writing LilyPond files 16592 learning/tweaks.itely -- Tweaking output @@ -58,31 +58,31 @@ procedures}. -5- Notation reference 326 notation.tely 91 notation/notation.itely -- Musical notation -5272 notation/pitches.itely -6822 notation/rhythms.itely +5413 notation/pitches.itely +6853 notation/rhythms.itely 1819 notation/expressive.itely 1288 notation/repeats.itely -2920 notation/simultaneous.itely +2979 notation/simultaneous.itely 2554 notation/staff.itely -1477 notation/editorial.itely -2755 notation/text.itely +1481 notation/editorial.itely +2754 notation/text.itely 81 notation/specialist.itely -- Specialist notation 4977 notation/vocal.itely -1979 notation/chords.itely +1975 notation/chords.itely 702 notation/piano.itely 799 notation/percussion.itely 826 notation/guitar.itely 66 notation/strings.itely 242 notation/bagpipes.itely -5516 notation/ancient.itely -12839 notation/input.itely -- Input syntax +5518 notation/ancient.itely +12853 notation/input.itely -- Input syntax 2164 notation/non-music.itely -- Non-musical notation -10911 notation/spacing.itely -- Spacing issues -15597 notation/changing-defaults.itely -- Changing defaults +10982 notation/spacing.itely -- Spacing issues +17050 notation/changing-defaults.itely -- Changing defaults 5187 notation/programming-interface.itely -- Interfaces for programmers 3079 notation/notation-appendices.itely -- Notation manual tables 252 notation/cheatsheet.itely -- Cheat sheet -90541 total +92311 total -6- Rest of Application Usage 4211 usage/lilypond-book.itely -- LilyPond-book diff --git a/Documentation/contributor/feta-font.itexi b/Documentation/contributor/emmentaler-font.itexi similarity index 76% rename from Documentation/contributor/feta-font.itexi rename to Documentation/contributor/emmentaler-font.itexi index 002aa895a4..4c4c81b57f 100644 --- a/Documentation/contributor/feta-font.itexi +++ b/Documentation/contributor/emmentaler-font.itexi @@ -1,9 +1,9 @@ @c -*- coding: utf-8; mode: texinfo; -*- -@node Modifying the feta font -@chapter Modifying the feta font +@node Modifying the Emmentaler font +@chapter Modifying the Emmentaler font @menu -* Overview of the feta font:: +* Overview of the Emmentaler font:: * Font creation tools:: * Adding a new font section:: * Adding a new glyph:: @@ -11,33 +11,35 @@ * METAFONT formatting rules:: @end menu -@node Overview of the feta font -@section Overview of the feta font +@node Overview of the Emmentaler font +@section Overview of the Emmentaler font -The feta font is a font that was created specifically for use in -LilyPond. The sources for the font are found in mf/*.mf. +Emmentaler was created specifically for use in LilyPond. The font +consists of two @emph{sub-sets} of glyphs. @qq{Feta}, used for clasical +notation and @qq{Parmesan}, used for Ancient notation. The sources of +which are all found in mf/*.mf. -The feta font is merged from a number of subfonts. Each subfont -can contain at most 224 glyphs. This is because each subfont is -limited to a one-byte address space (256 glyphs maximum) and we -avoid the first 32 points in that address space, since they are -non-printing control characters in ASCII. +The font is merged from a number of subfonts. Each subfont can contain +at most 224 glyphs. This is because each subfont is limited to a +one-byte address space (256 glyphs maximum) and we avoid the first 32 +points in that address space, since they are non-printing control +characters in ASCII. -In LilyPond, glyphs are accessed by glyph name, rather than by code point. -Therefore, the naming of glyphs is significant. +In LilyPond, glyphs are accessed by a @q{glyph name}, rather than by +code point. Therefore, the name of a glyph is significant. Information about correctly creating glyphs is found in @file{mf/README}. Please make sure you read and understand this file. -TODO -- we should get mf/README automatically generated from texinfo source -and include it here. +TODO -- we should get mf/README automatically generated from texinfo +source and include it here. @node Font creation tools @section Font creation tools -The sources for the feta font are written in metafont. The definitive -reference for metafont is "The METAFONT book". Source for the book is +The sources for Emmentaler are written in metafont. The definitive +reference for metafont is "The METAFONT book" -- the source of which is available at CTAN. mf2pt1 is used to create type 1 fonts from the metafont sources. @@ -46,6 +48,7 @@ FontForge is used to postprocess the output of mf2pt1 and clean up details of the font. It can also be used by a developer to display the resulting glyph shapes. + @node Adding a new font section @section Adding a new font section @@ -74,6 +77,7 @@ An entry in @file{scripts/build/gen-emmentaler-scripts.py} See the examples in @code{mf/} for more information. + @node Adding a new glyph @section Adding a new glyph @@ -101,6 +105,7 @@ entry. The glyph is finished with: fet_endchar; @end example + @node Building the changed font @section Building the changed font @@ -113,6 +118,7 @@ rm mf/out/* make @end example + @node METAFONT formatting rules @section METAFONT formatting rules @@ -137,4 +143,3 @@ def draw_something (test) = ------->fi; enddef; @end example - diff --git a/Documentation/contributor/issues.itexi b/Documentation/contributor/issues.itexi index 434ead511a..85e6009ce7 100644 --- a/Documentation/contributor/issues.itexi +++ b/Documentation/contributor/issues.itexi @@ -171,12 +171,12 @@ the currently-active Bug Squad member(s) can handle the message. @example Monday: Federico Bruni -Tuesday: Simon Albrecht +Tuesday: Graham Percival Wednesday: Simon Albrecht Thursday: Colin Campbell Friday: Ralph Palmer Saturday: Colin Campbell -Sunday: +Sunday: Graham Percival @end example diff --git a/Documentation/contributor/quick-start.itexi b/Documentation/contributor/quick-start.itexi index e3ee9e9141..d41b7ad3e7 100644 --- a/Documentation/contributor/quick-start.itexi +++ b/Documentation/contributor/quick-start.itexi @@ -508,28 +508,38 @@ This will download and update you to the lastest version of git-cl. @node Configuring git-cl @unnumberedsubsec Configuring @code{git-cl} -@subsubheading Set up login accounts - Because @code{git-cl} updates two separate websites (Google's Rietveld Code Review Tool and LilyPond's issue tracker) you @emph{must} have a valid user account (login and password) for both sites. +@subsubheading Set up a login account for Rietveld Code Review Tool + @noindent -For the Rietveld Code Review Tool you will need a Google account. Note -that a Google account does not require that you have or use a @q{Google} -email address. You can use @emph{any} email address for your Google -account. Just select the option @qq{I prefer to use my current email -address} when you sign up. +For the Rietveld Code Review Tool you will need a Google account but +this does @emph{not} require @q{Google} email address; i.e. @emph{any} +email address for your Google account can be used. Just select the +option @qq{I prefer to use my current email address} when you sign up +with Google. + +@warning{In order for @code{git-cl} to work correctly with this Google +account, your Google Account Settings must have the +@q{Access for less secure apps} set to @q{Allowed} -- this is normally +the default setting.} -@warning{In order for @code{git-cl} to work, your Google Account -Settings must have the @q{Access for less secure apps} set to -@q{Allowed}. This is normally the default setting.} +@subsubheading Set up a login account for LilyPond's Issue Tracker + +@noindent +Please register a user account at +@code{https://sourceforge.net/user/registration} preferably using the +same email address that you want to use LilyPond Developer mailing list +login. @noindent -For the LilyPond issue tracker, please request a user account by sending -an email to the LilyPond Developer's mailing list -(@code{lilypond-devel@@gnu.org}), preferably using the same email -address that you want to use for your user login. +Once you have created this Sourceforge user account, send an email to +the LilyPond Developer's mailing list (@code{lilypond-devel@@gnu.org}) +asking for write access to the issue tracker along with your Sourceforce +@emph{Username} (not email address) and someone will then be able to set +this up for you. @subsubheading Authorizing git-cl for the LilyPond issue tracker diff --git a/Documentation/contributor/regressions.itexi b/Documentation/contributor/regressions.itexi index 365582e87f..1963a6bebc 100644 --- a/Documentation/contributor/regressions.itexi +++ b/Documentation/contributor/regressions.itexi @@ -11,7 +11,6 @@ * Finding the cause of a regression:: * Memory and coverage tests:: * MusicXML tests:: -* Grand Regression Test Checking:: @end menu @@ -506,7 +505,7 @@ code has been exercised by the tests. For tracking memory usage as part of this test, you will need GUILE CVS; especially the following patch: @smallexample -@uref{http://www.lilypond.org/vc/old/gub.darcs/patches/guile-1.9-gcstats.patch}. +@uref{http://lilypond.org/vc/old/gub.darcs/patches/guile-1.9-gcstats.patch}. @end smallexample @subheading Code coverage @@ -542,49 +541,3 @@ available in the LilyPond documentation: @uref{http://lilypond.org/doc/latest/input/regression/musicxml/collated-files} @end example - -@node Grand Regression Test Checking -@section Grand Regression Test Checking - -@subheading What is this all about? - -Regression tests (usually abbreviated "regtests") is a collection -of @file{.ly} files used to check whether LilyPond is working correctly. -Example: before version 2.15.12 breve noteheads had incorrect width, -which resulted in collisions with other objects. After the issue was fixed, -a small @file{.ly} file demonstrating the problem was added to the regression -tests as a proof that the fix works. If someone will accidentally break -breve width again, we will notice this in the output of that regression test. - -@subheading How can I help? - -We ask you to help us by checking one or two regtests from time to time. -You don't need programming skills to do this, not even LilyPond skills - -just basic music notation knowledge; checking one regtest takes less than -a minute. Simply go here: - -@example -@uref{http://www.philholmes.net/lilypond/regtests/} -@end example - -@subheading Some tips on checking regtests - -@subsubheading Description text - -The description should be clear even for a music beginner. -If there are any special terms used in the description, -they all should be explained in our @rglosnamed{Top, Music Glossary} -or @rinternalsnamed{Top, Internals Reference}. -Vague descriptions (like "behaves well", "looks reasonable") shouldn't be used. - -@ignore -this may be useful for advanced regtest checking -@subsubheading Is regtest straightforward and systematic? - -Unfortunately some regtests are written poorly. A good regtest should be -straightforward: it should be obvious what it checks and how. Also, it -usually shouldn't check everything at once. For example it's a bad idea to test -accidental placement by constucting one huge chord with many suspended notes -and loads of accidentals. It's better to divide such problem into a series -of clearly separated cases. -@end ignore diff --git a/Documentation/contributor/release-work.itexi b/Documentation/contributor/release-work.itexi index 32b7a1ac71..cc05df8c65 100644 --- a/Documentation/contributor/release-work.itexi +++ b/Documentation/contributor/release-work.itexi @@ -131,7 +131,7 @@ git checkout release/unstable git merge origin/master make -C $LILYPOND_BUILD_DIR po-replace mv $LILYPOND_BUILD_DIR/po/lilypond.pot po/ -gedit Documentation/web/news-front.itexi Documentation/web/news.itexi +gedit Documentation/web/news-new.itexi Documentation/web/news-old.itexi gedit Documentation/web/news-headlines.itexi gedit VERSION gedit ly/Wel*.ly @@ -738,7 +738,7 @@ pulls git master to the web server, and the other makes the website with the standard @code{make website} command. They run hourly, 30 minutes apart. So - to update the front page of the website, it's necessary to update @code{VERSION} and -@code{news-front.itexi} in master and then wait for the cron +@code{news-headlines.itexi} in master and then wait for the cron jobs to run. (N.B. - this is done by pushing the changes to staging and letting patchy do its checks before it pushes to master). diff --git a/Documentation/contributor/source-code.itexi b/Documentation/contributor/source-code.itexi index bfebb9a0c8..620368280a 100644 --- a/Documentation/contributor/source-code.itexi +++ b/Documentation/contributor/source-code.itexi @@ -209,13 +209,25 @@ git config --global core.editor @var{nano} @end example Finally, and in some ways most importantly, let's make sure that -we know what branch we're on. If you're not using LilyDev, add -this to your @file{~/.bashrc}: +we can easily see the state of our working copy, without the need +of typing @code{git status} repeatedly. If you're not using +LilyDev, add the following lines to your @file{~/.bashrc}: @verbatim export PS1="\u@\h \w\$(__git_ps1)$ " +export GIT_PS1_SHOWDIRTYSTATE=true +export GIT_PS1_SHOWUNTRACKEDFILES=true +export GIT_PS1_SHOWUPSTREAM=auto @end verbatim +The first line will show the branch we're on. The other lines +will use some symbols next to the branch name to indicate some +kind of state. @qq{*} means that there are unstaged changes, +@qq{+} indicates staged changes; if there are untracked files, +a @qq{%} will appear. Finally, we can also see if our HEAD is +behind (@qq{<}) or ahead (@qq{>}) of its upstream, and if they +have diverged (@qq{<>}) or they are synced (@qq{=}). + You may need to install the additional @code{bash-completion} package, but it is definitely worth it. After installation you must log out, and then log back in again to enable it. @@ -1251,6 +1263,11 @@ Web: and Web-@var{**}: Commits that affect the website should use @qq{Web:@tie{}} for English, and @qq{Web-@var{**}:@tie{}} for other languages. +@item +CSS: Commits that change CSS files should use @qq{Web:@tie{}CSS:@tie{}} +or @qq{Doc:@tie{}CSS:@tie{}} depending on whether they affect the +website or the documentation/manuals. + @item Changes to a single file are often prefixed with the name of the file involved. diff --git a/Documentation/cs/learning.tely b/Documentation/cs/learning.tely index a40230bf36..20470b369c 100644 --- a/Documentation/cs/learning.tely +++ b/Documentation/cs/learning.tely @@ -67,7 +67,7 @@ se podívejte na @ref{O dokumentaci}. @cindex URL Více informací lze najít na -@uref{http://@/www@/.lilypond@/.org/}. Na internetových stránkách +@uref{http://@/lilypond@/.org/}. Na internetových stránkách naleznete kopii tohoto a dalších souborů s dokumentací. @end ignore diff --git a/Documentation/cs/macros.itexi b/Documentation/cs/macros.itexi index 85be1a1404..7fc74f92cf 100644 --- a/Documentation/cs/macros.itexi +++ b/Documentation/cs/macros.itexi @@ -64,7 +64,7 @@ příručkami, nebo kvůli čtení této příručky v jiném formátu, navštivte, prosím, @rweb{Manuals}. Pokud vám příručky chybí, naleznete celou dokumentaci -pod @w{@uref{http://@/www@/.lilypond@/.org/}}. +pod @w{@uref{http://@/lilypond@/.org/}}. @end cartouche @end macro diff --git a/Documentation/cs/translations.itexi b/Documentation/cs/translations.itexi index 9578fbb2cf..93bdfbec07 100644 --- a/Documentation/cs/translations.itexi +++ b/Documentation/cs/translations.itexi @@ -16,19 +16,19 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Last updated Sun Nov 6 09:35:15 UTC 2016 +@emph{Naposledy obnoveno Sat Jun 24 12:50:41 UTC 2017 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @headitem Příručka k učení se -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Překladatelé +@tab Zkoušeči překladu +@tab Přeloženo +@tab Současné +@tab Více informací @item -Section titles +Nadpisy @* 124 @tab Pavel Fric @@ -37,23 +37,23 @@ Section titles @ifhtml @html -yes +ano @end html @end ifhtml @ifnothtml -yes +ano @end ifnothtml @tab @ifhtml @html -partially +částečně @end html @end ifhtml @ifnothtml -partially +částečně @end ifnothtml -@tab pre-GDP +@tab před-GDP @item LilyPond -- \TITLE\ @* @@ -64,23 +64,23 @@ LilyPond -- \TITLE\ @ifhtml @html -yes +ano @end html @end ifhtml @ifnothtml -yes +ano @end ifnothtml @tab @ifhtml @html -partially +částečně @end html @end ifhtml @ifnothtml -partially +částečně @end ifnothtml -@tab pre-GDP +@tab před-GDP @item 1 Cvičení @* @@ -91,77 +91,77 @@ partially @ifhtml @html -partially (50 %) +částečně (50 %) @end html @end ifhtml @ifnothtml -partially (50 %) +částečně (50 %) @end ifnothtml @tab @ifhtml @html -partially +částečně @end html @end ifhtml @ifnothtml -partially +částečně @end ifnothtml -@tab pre-GDP +@tab před-GDP @item 2 Běžný notový zápis @* -4402 +4421 @tab Pavel Fric @tab @tab @ifhtml @html -partially (37 %) +částečně (37 %) @end html @end ifhtml @ifnothtml -partially (37 %) +částečně (37 %) @end ifnothtml @tab @ifhtml @html -partially +částečně @end html @end ifhtml @ifnothtml -partially +částečně @end ifnothtml -@tab pre-GDP +@tab před-GDP @item 3 Základní pojmy @* -11119 +11240 @tab Pavel Fric @tab @tab @ifhtml @html -yes +ano @end html @end ifhtml @ifnothtml -yes +ano @end ifnothtml @tab @ifhtml @html -partially +částečně @end html @end ifhtml @ifnothtml -partially +částečně @end ifnothtml -@tab pre-GDP +@tab před-GDP @item 4 Ladění výstupu @* @@ -172,23 +172,23 @@ partially @ifhtml @html -partially (51 %) +částečně (51 %) @end html @end ifhtml @ifnothtml -partially (51 %) +částečně (51 %) @end ifnothtml @tab @ifhtml @html -partially +částečně @end html @end ifhtml @ifnothtml -partially +částečně @end ifnothtml -@tab pre-GDP +@tab před-GDP @item A Předlohy @* @@ -199,23 +199,23 @@ A Předlohy @ifhtml @html -partially (75 %) +částečně (75 %) @end html @end ifhtml @ifnothtml -partially (75 %) +částečně (75 %) @end ifnothtml @tab @ifhtml @html -partially +částečně @end html @end ifhtml @ifnothtml -partially +částečně @end ifnothtml -@tab pre-GDP +@tab před-GDP @end multitable @@ -223,13 +223,13 @@ partially @headitem LilyPond -- Zápis not pro každého -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Překladatelé +@tab Zkoušeči překladu +@tab Přeloženo +@tab Současné +@tab Více informací @item -Section titles +Nadpisy @* 760 @tab Pavel Fric @@ -238,23 +238,23 @@ Section titles @ifhtml @html -yes +ano @end html @end ifhtml @ifnothtml -yes +ano @end ifnothtml @tab @ifhtml @html -partially +částečně @end html @end ifhtml @ifnothtml -partially +částečně @end ifnothtml -@tab pre-GDP +@tab před-GDP @item LilyPond -- \TITLE\ @* @@ -265,50 +265,50 @@ LilyPond -- \TITLE\ @ifhtml @html -yes +ano @end html @end ifhtml @ifnothtml -yes +ano @end ifnothtml @tab @ifhtml @html -partially +částečně @end html @end ifhtml @ifnothtml -partially +částečně @end ifnothtml -@tab pre-GDP +@tab před-GDP @item Úvod @* -5814 +5793 @tab Pavel Fric @tab @tab @ifhtml @html -yes +ano @end html @end ifhtml @ifnothtml -yes +ano @end ifnothtml @tab @ifhtml @html -partially +částečně @end html @end ifhtml @ifnothtml -partially +částečně @end ifnothtml -@tab pre-GDP +@tab před-GDP @item Stažení @* @@ -319,23 +319,23 @@ Stažení @ifhtml @html -yes +ano @end html @end ifhtml @ifnothtml -yes +ano @end ifnothtml @tab @ifhtml @html -partially +částečně @end html @end ifhtml @ifnothtml -partially +částečně @end ifnothtml -@tab pre-GDP +@tab před-GDP @item Příručky @* @@ -346,49 +346,49 @@ Příručky @ifhtml @html -yes +ano @end html @end ifhtml @ifnothtml -yes +ano @end ifnothtml @tab @ifhtml @html -partially +částečně @end html @end ifhtml @ifnothtml -partially +částečně @end ifnothtml -@tab pre-GDP +@tab před-GDP @item Společenství @* -3524 +2449 @tab  Pavel Fric @tab @tab @ifhtml @html -partially (95 %) +částečně (92 %) @end html @end ifhtml @ifnothtml -partially (95 %) +částečně (92 %) @end ifnothtml @tab @ifhtml @html -partially +částečně @end html @end ifhtml @ifnothtml -partially +částečně @end ifnothtml -@tab pre-GDP +@tab před-GDP @end multitable diff --git a/Documentation/cs/usage/running.itely b/Documentation/cs/usage/running.itely index 5d7aee756c..e184f6be41 100644 --- a/Documentation/cs/usage/running.itely +++ b/Documentation/cs/usage/running.itely @@ -857,7 +857,7 @@ mit einem Semikolon (@code{;}). Diese Fehlermeldung erscheint in der Kommandozeilenausgabe, wenn die Datei ein Zeichen enthält, das nicht zu ASCII gehört und die Datei -nicht in UTF-8-Kodierung gespeichert wurd. Sie auch @ruser{Zeichenkodierung}. +nicht in UTF-8-Kodierung gespeichert wurd. Siehe auch @ruser{Zeichenkodierung}. @node Varování: staff affinities by měly jen klesat diff --git a/Documentation/cs/web.texi b/Documentation/cs/web.texi index 1c3680ff13..f49ae5f279 100644 --- a/Documentation/cs/web.texi +++ b/Documentation/cs/web.texi @@ -135,7 +135,7 @@ Více se dočtete v @ref{Úvod,,úvodu}! @divId{news} @c TODO: generate this automatically, including RSS feed. -@include web/news-front.itexi +@include web/news-headlines.itexi @divClass{float-right} (@ref{News,,,,Starší novinky}) diff --git a/Documentation/cs/web/community.itexi b/Documentation/cs/web/community.itexi index 55829684f1..107c1f85d4 100644 --- a/Documentation/cs/web/community.itexi +++ b/Documentation/cs/web/community.itexi @@ -646,7 +646,7 @@ příručky se nacházejí na @url{http://lilypond.org}.} @tab @docLinkBig{Lernen,learning,@manualDevelLearningBig-cs} @tab -@docLinkPdf{Lernen,learning,@manualDevelLearningPdf-cs} +@docLinkPdf{Lernen,learning,@manualDevelLearningPdf} @item @docLinkSplit{Glossar,music-glossary,@manualDevelGlossarySplit} @@ -693,7 +693,7 @@ příručky se nacházejí na @url{http://lilypond.org}.} @tab @docLinkBig{Webseite,web,@manualDevelWebBig-cs} @tab -@docLinkPdf{Webseite,web,@manualDevelWebPdf-cs} +@docLinkPdf{Webseite,web,@manualDevelWebPdf} @item @docLinkSplit{Veränderungen,changes,@manualDevelChangesSplit} @@ -850,6 +850,6 @@ příručky se nacházejí na @url{http://lilypond.org}.} @unnumberedsec Starší novinky @translationof News -@include web/news-front.itexi +@include web/news-new.itexi -@include web/news.itexi +@include web/news-old.itexi diff --git a/Documentation/cs/web/manuals.itexi b/Documentation/cs/web/manuals.itexi index 021fb99b63..91df697dbe 100644 --- a/Documentation/cs/web/manuals.itexi +++ b/Documentation/cs/web/manuals.itexi @@ -200,7 +200,7 @@ další informace. @rlearningnamed{Top,Učení}, @manualStableLearningSplit-cs, @manualStableLearningBig-cs, 1.5 MB, - @manualStableLearningPdf-cs, 3 MB} + @manualStableLearningPdf, 3 MB} @divEnd diff --git a/Documentation/css/lilypond-manuals.css b/Documentation/css/lilypond-manuals.css index e0e8eca9b6..f7b88a1ca2 100644 --- a/Documentation/css/lilypond-manuals.css +++ b/Documentation/css/lilypond-manuals.css @@ -2,10 +2,14 @@ /* GENERAL INFORMATION */ /**********************************************************/ -/* It has been requested that each web manual be styled using a - different color. To faciliate that, each manual is being - assigned a hue value on the HSB color chart. All specific - colors for a manual will be shades and tints of that hue. +/* Each web manual is styled using a different color. Each + one has been assigned a hue value on the HSB color chart. + All specific colors for a manual are shades and tints + of that hue. + + The brown of the usage manual does not follow this scheme. + Neither does the 'default' olive green of the glossary, + essay, snippets, and changes manuals. Manual Color Hue learning green 120 @@ -13,7 +17,7 @@ essay notation blue 205 - usage yellow 50 + usage brown snippets changes @@ -36,7 +40,7 @@ body { height: 100%; font-size: 100%; line-height: 1.125; - color: #000; + color: #222; background-color: #fff; } @@ -55,23 +59,12 @@ body { } .settitle { - background: #657f40; - color: white; font-size: 2em; text-align: center; - padding: 0.4em 0.5em; - border: solid black; - border-width: 1px 0; - margin: 0 0 10px 0; + padding: 0.8em 0.5em; + margin: 0; } -body.learning .settitle { background-color: #407f40; } -body.notation .settitle { background-color: #40657f; } -body.usage .settitle { background-color: #7f7f33; } -body.extending .settitle { background-color: #7f4040; } -body.internals .settitle { background-color: #6a407f; } -body.contributor .settitle { background-color: #000000; } - .chapter, .appendix, .unnumbered, .section, .appendixsec, .unnumberedsec, .subsection, .appendixsubsec, .unnumberedsubsec, @@ -127,22 +120,17 @@ a:hover { /* BLOCK FORMATTING */ /***********************************************************/ -blockquote, .smallexample { +blockquote, +.smallexample { width: 96%; padding: 0; - border: solid #b1d281; - border-width: 1px 1px 1px 5px; + border: solid #d5d7d6; + border-width: 1px 1px 1px 3px; + border-radius: 5px; margin: 1em auto; background-color: white; } -body.learning blockquote, body.learning .smallexample { border-color: #00ff00; } -body.notation blockquote, body.notation .smallexample { border-color: #0095ff; } -body.usage blockquote, body.usage .smallexample { border-color: #ffff00; } -body.extending blockquote, body.extending .smallexample { border-color: #ff0000; } -body.internals blockquote, body.internals .smallexample { border-color: #aa00ff; } -body.contributor blockquote, body.contributor .smallexample { border-color: #000000; } - blockquote p, pre.smallexample { padding: 1em; margin: 0; @@ -167,21 +155,14 @@ blockquote blockquote { } table.cartouche { - background: #f5f5dc; + background: #eef; width: 85%; border-collapse: collapse; padding: 0 0.5em; - border: 2px solid #8f5902; + border: 1px solid #c8c8c8; margin: 0 auto 1em; } -body.learning table.cartouche { background-color: #cfe5cf; border: 2px solid #7db27d; } -body.notation table.cartouche { background-color: #cfdce5; border: 2px solid #7d9cb2; } -body.usage table.cartouche { background-color: #e5e2b8; border: 2px solid #b2b27d; } -body.extending table.cartouche { background-color: #e5cfcf; border: 2px solid #b27d7d; } -body.internals table.cartouche { background-color: #decfe5; border: 2px solid #a17db2; } -body.contributor table.cartouche { background-color: #e5e5e5; border: 2px solid #b2b2b2; } - table.cartouche p { padding: 1em; margin: 0; @@ -225,7 +206,8 @@ p { } #languages { - padding: 0.5em 1em; + font-size: 0.8em; + padding: 0.9em 18px; margin: 0; } @@ -244,6 +226,10 @@ pre.menu-comment { margin-bottom: 1em; } +table th { + text-align: left; +} + table td { vertical-align: top; padding-bottom: .5em; @@ -262,19 +248,19 @@ div#tocframe { padding: 0; margin: 0; overflow: auto; - background: #dce35cf; + background: #657f40; z-index: 100; list-style-type: none; font-size: 0.83em; line-height: 1.3; } -body.learning div#tocframe { background-color: #cfe5cf; } -body.notation div#tocframe { background-color: #cfdce5; } -body.usage div#tocframe { background-color: #e5e5b8; } -body.extending div#tocframe { background-color: #e5cfcf; } -body.internals div#tocframe { background-color: #decfe5; } -body.contributor div#tocframe { background-color: #e5e5e5; } +body.learning #tocframe { background-color: #407f40; } +body.notation #tocframe { background-color: #40657f; } +body.usage #tocframe { background-color: #81613e; } +body.extending #tocframe { background-color: #7f4040; } +body.internals #tocframe { background-color: #6a407f; } +body.contributor #tocframe { background-color: #333333; } @media screen { body > div#tocframe { @@ -282,34 +268,24 @@ body.contributor div#tocframe { background-color: #e5e5e5; } } } -div#tocframe a:link, div#tocframe a:visited { - color: black; +div#tocframe a:link, +div#tocframe a:visited { + color: #eee; text-decoration: none; } div#tocframe a:hover { - color: #666666; + color: #fff; text-decoration: underline; } div#tocframe p.toc_uplink { font-size: 1em; line-height: 1.125; - background: #c9ccc4; padding: 0.25em 1em 0.25em 0.5em; - border-bottom: 1px solid black; margin: 0; } -div#tocframe p.toc_uplink a:link, -div#tocframe p.toc_uplink a:visited { - color: #1c1c1b; -} - -div#tocframe p.toc_uplink a:hover { - color: #000; -} - div#tocframe h4 { font-size: 1em; line-height: 1.125; @@ -347,6 +323,10 @@ div#tocframe h4 { font-size: 1em; } +#tocframe .contents > ul.toc > li { + margin-top: 0.5em; +} + #tocframe ul.toc li li { padding-left: 1em; } @@ -368,16 +348,18 @@ li.toc_current ul { .nav_table { width: 100%; - background: #c9ccc4; + background-color: #d5d7d6; + color: #505050; font-size: 0.83em; - border-collapse: collapse; - padding: 0; + border-collapse: separate; + padding: 5px 18px; border: none; margin: 0; } -.nav_table a:link, .nav_table a:visited { - color: #1c1c1b; +.nav_table a:link, +.nav_table a:visited { + color: #505050; text-decoration: none; } @@ -386,13 +368,14 @@ li.toc_current ul { text-decoration: underline; } -.nav_table tr, .nav_table a { +.nav_table tr, +.nav_table a { padding: 0; margin: 0; } .nav_table td { - padding: 0.25em; + padding: 0.1em 0px; margin: 0; } @@ -443,28 +426,13 @@ table .title { } .footer { - background: #657f40; font-size: 0.8em; padding: 0.2em 0; - border: solid white; - border-width: 0 0 5px 0; margin: 0; - color: white; -} - -body.learning .footer { background-color: #407f40; } -body.notation .footer { background-color: #40657f; } -body.usage .footer { background-color: #7f7f33; } -body.extending .footer { background-color: #7f4040; } -body.internals .footer { background-color: #6a407f; } -body.contributor .footer { background-color: #000000; } - -.footer a:link { - color: white; } .footer p { - padding: 0 1.25em; + padding: 0 18px; margin: 0.4em 0; } @@ -518,26 +486,30 @@ div#search p, div#search form { background: #eef; text-align: left; padding: 0; - border: 1px solid green; - /* Experimental rounded corners */ - border-radius: 10px; + border: 1px solid #c8c8c8; + border-radius: 5px; margin: 1em; } -body.learning .warning { border-color: #00ff00; } -body.notation .warning { border-color: #0095ff; } -body.usage .warning { border-color: #ffff00; } -body.extending .warning { border-color: #ff0000; } -body.internals .warning { border-color: #aa00ff; } -body.contributor .warning { border-color: #000000; } - - .advanced { - background: #eeffcc; + background: #ffffc8; text-align: left; padding: 0; - border: 1px solid green; - /* Experimental rounded corners */ - border-radius: 10px; + border: 1px solid #c8c8c8; + border-radius: 5px; margin: 0.5em 0.5em 2em 3em; } + +/***********************************************************/ +/* RESPONSIVE DESIGN */ +/***********************************************************/ + +@media (min-width: 1280px) { + div#main { + left: 346px + } + div#tocframe { + width: 346px; + right: 0; + } +} diff --git a/Documentation/css/lilypond-website.css b/Documentation/css/lilypond-website.css index e018b49774..fb90a9defc 100644 --- a/Documentation/css/lilypond-website.css +++ b/Documentation/css/lilypond-website.css @@ -13,7 +13,7 @@ body { width: 99%; min-width: 42em; max-width: 70em; - font-size: 95%; + font-size: 0.95em; line-height: 1.5; text-align: justify; padding: 0; @@ -78,7 +78,7 @@ div#tocframe { rgb(25, 115, 50), rgb(45, 205, 115)); max-width: 70em; - font-size: 100%; + font-size: 1em; line-height: 1; padding: 0; border-bottom-left-radius: 7px; @@ -120,7 +120,7 @@ div#tocframe { #tocframe li form { float: left; width: 16%; - font-size: 100%; + font-size: 1em; padding: 0.5em 0.8%; margin: 0 0 0 1%; } @@ -129,7 +129,7 @@ div#tocframe { display: block; float: left; width: 92%; - font-size: 90%; + font-size: 0.9em; color: rgb(85, 85, 85); background: rgb(235, 242, 232); padding: 0.1em 0.1em 0.1em 0.6em; @@ -178,7 +178,7 @@ div#tocframe { top: 3.8em; left: 0.5%; right: 0.5%; - font-size: 82%; + font-size: 0.82em; padding: 0; margin: 0; } @@ -237,7 +237,7 @@ div#tocframe { position: absolute; top: 2em; left: 5%; - font-size: 100%; + font-size: 1em; } #tocframe .toc .toc .toc li { @@ -332,7 +332,7 @@ div#cmws { div#quickSummary { text-align: left; margin: 3em 14em 25px 0; - font-size: 19px; + font-size: 1.25em; } #quickSummary p { @@ -390,7 +390,7 @@ div#quickSummary { } #homepage-sidebar .subheading { - font-size: 15.2px; + font-size: 1em; background: #5b7f64; color: #fff; padding: 0.2em 0.5em 0.1em 0.7em; @@ -655,7 +655,7 @@ div.float-center a.clickable { } .news-item h3 { - font-size: 15.2px; + font-size: 1em; } /* color3 */ @@ -708,6 +708,12 @@ div.float-center a.clickable { margin: 0 0 0.5em 0; } +/* Used for google summer of code project ideas, for example. */ +.bigger-subsubheadings h4 { + font-size: 1.17em; + margin: 1.5em 0 0.5em 0; +} + .column-center-top ul, .column-center-middle-color2 ul, .column-center-middle-color3 ul, diff --git a/Documentation/de/learning.tely b/Documentation/de/learning.tely index 30ff306960..75d44d3bf1 100644 --- a/Documentation/de/learning.tely +++ b/Documentation/de/learning.tely @@ -74,7 +74,7 @@ dieses Handbuchs siehe @ref{Über die Dokumentation}. @cindex URL Mehr Information unter -@uref{http://@/www@/.lilypond@/.org/}. Auf der Internetseite +@uref{http://@/lilypond@/.org/}. Auf der Internetseite finden sich Kopien dieser und anderer Dokumentationsdateien. @end ignore diff --git a/Documentation/de/macros.itexi b/Documentation/de/macros.itexi index df1a8c3f1c..9ebcdc02e5 100644 --- a/Documentation/de/macros.itexi +++ b/Documentation/de/macros.itexi @@ -95,7 +95,7 @@ positioniert, oder um dieses Handbuch in einem anderen Format zu lesen, besuchen Sie bitte @rweb{Manuals}. Wenn Ihnen Handbücher fehlen, finden Sie die gesamte Dokumentation -unter @w{@uref{http://@/www@/.lilypond@/.org/}}. +unter @w{@uref{http://@/lilypond@/.org/}}. @end cartouche @end macro diff --git a/Documentation/de/notation/ancient.itely b/Documentation/de/notation/ancient.itely index 4d777e2b92..d9ae6c8247 100644 --- a/Documentation/de/notation/ancient.itely +++ b/Documentation/de/notation/ancient.itely @@ -528,12 +528,11 @@ Beispiel den Schlüssel auf der zweiten Linie) Mensuraler F-Schlüssel im Petrucci-Stil, kann auf verschiedenen Notenlinien benutzt werden (im Beispiel auf der dritten Linie) @tab -@code{petrucci-c1}, @code{petrucci-c2},@* -@code{petrucci-c3}, @code{petrucci-c4},@* -@code{petrucci-c5} +@code{petrucci-f3}, @code{petrucci-f4},@* +@code{petrucci-f5} @tab @lilypond[relative=1,notime] - \clef "petrucci-c2" + \clef "petrucci-f3" \override NoteHead.style = #'mensural c @end lilypond @@ -2664,7 +2663,7 @@ Glossar: Notationsreferenz: @ref{Versetzungszeichen}, @ref{Automatische Versetzungszeichen}, -@ref{Die Feta-Schriftart} +@ref{Die Emmentaler-Schriftart}. @node Kiever Taktstriche @unnumberedsubsubsec Kiever Taktstriche @@ -2682,7 +2681,7 @@ Schlussstrich bezeichnen kann. Es wird gesetzt mit @code{\bar "k"}. @seealso @ref{Takte}, -@ref{Die Feta-Schriftart} +@ref{Die Emmentaler-Schriftart} @c Working with ancient music: scenarios and solutions:: {{{1 @node Musiksatz Alter Musik in der Praxis -- Szenarien und Lösungen diff --git a/Documentation/de/notation/changing-defaults.itely b/Documentation/de/notation/changing-defaults.itely index 70950526ff..61959ce946 100644 --- a/Documentation/de/notation/changing-defaults.itely +++ b/Documentation/de/notation/changing-defaults.itely @@ -4060,16 +4060,16 @@ XinO = { } @end lilypond -Alle Schriftzeichen in der feta-Schriftart können +Alle Schriftzeichen in der Feta-Glyphe können mit dem @code{\musicglyph}-Befehl erreicht werden. -Siehe auch @ref{Die Feta-Schriftart}. +Siehe auch @ref{Die Emmentaler-Schriftart}. @seealso Notationsreferenz: @ref{Graphische Notation innerhalb einer Textbeschriftung}, @ref{Text formatieren}, @ref{Textbeschriftungsbefehle}, -@ref{Die Feta-Schriftart}. +@ref{Die Emmentaler-Schriftart}. diff --git a/Documentation/de/notation/fretted-strings.itely b/Documentation/de/notation/fretted-strings.itely index e5120acb6a..9df61f5e7e 100644 --- a/Documentation/de/notation/fretted-strings.itely +++ b/Documentation/de/notation/fretted-strings.itely @@ -239,7 +239,7 @@ bevorzugt. Wenn man eine bestimmte Tonhöhe auf einer bestimmten Saite gespielt haben will, kann man eine Saitennummeranweisung zur Tonhöhe hinzufügen. Wenn man die Saitenzahlanweisung nicht in der traditionellen Notation sehen will, kann man den entsprechenden Stencil mit @code{\override} -verändernt. Es ist jedoch sehr viel bequemer, die Spielposition unter +verändern. Es ist jedoch sehr viel bequemer, die Spielposition unter Benutzung von @code{minimumFret} zu definieren. Der Standardwert von @code{minimumFret} beträgt 0. @@ -1271,7 +1271,7 @@ mychordlist = { Die Tabelle der vordefinierten Bunddiagramme für Gitarre enthält acht Akkorde (Dur, Moll, übermäßig, vermindert, Dominantseptakkord, große Septime, kleine Septime und Dominantnonenakkord) für alle 17 -Tonarten. Die Tabelle der vortdefinierten Bunddiagramme für +Tonarten. Die Tabelle der vordefinierten Bunddiagramme für Ukulele enthält neben diesen Akkorden noch zusätzlich drei weitere (große Sext, Sekundakkord und Quartakkort). Eine vollständige Liste der vordefinierten Bunddiagramme findet sich diff --git a/Documentation/de/notation/input.itely b/Documentation/de/notation/input.itely index 7721d3019a..84abdec71e 100644 --- a/Documentation/de/notation/input.itely +++ b/Documentation/de/notation/input.itely @@ -2473,8 +2473,8 @@ Kommandozeile. Siehe @rprogram{Grundlegende Optionen auf der Kommandozeile für @subsection Die Notationsschriftart verändern @translationof Replacing the notation font -Gonville ist eine Alternative zu der Feta-Schriftart, die in LilyPond -eingesetzt wird und kann unter der Adresse +Gonville ist eine Alternative zu der Emmentaler-Schriftart, die in +LilyPond eingesetzt wird und kann unter der Adresse @example @uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/} @end example @@ -2486,7 +2486,7 @@ heruntergeladen werden. Hier einige Takte Noten mit der Gonville-Schriftart: @c for the font comparison. -gp @sourceimage{Gonville_after,,,} -Und hier einige Beispieltakte in der Feta-Schriftart: +Und hier einige Beispieltakte in der Feta-Glyphe: @sourceimage{Gonville_before,,,} diff --git a/Documentation/de/notation/notation-appendices.itely b/Documentation/de/notation/notation-appendices.itely index a0e4c30173..a218f519d5 100644 --- a/Documentation/de/notation/notation-appendices.itely +++ b/Documentation/de/notation/notation-appendices.itely @@ -24,7 +24,7 @@ * Vordefinierte Papierformate:: * MIDI-Instrumente:: * Liste der Farben:: -* Die Feta-Schriftart:: +* Die Emmentaler-Schriftart:: * Notenkopfstile:: * Textbeschriftungsbefehle:: * Textbeschriftungslistenbefehle:: @@ -868,18 +868,34 @@ greyN erstellt werden, wobei N eine Zahl von 0--100 darstellt. -@node Die Feta-Schriftart -@appendixsec Die Feta-Schriftart -@translationof The Feta font +@node Die Emmentaler-Schriftart +@appendixsec Die Emmentaler-Schriftart +@translationof The Emmentaler font +@cindex Emmentaler font +@cindex Font, Emmentaler @cindex Feta font @cindex Font, Feta +@cindex Parmesan font +@cindex Font, Parmesan Die folgenden Symbole sind als Emmentaler-Schriftart verfügbar; auf sie kann direkt zugegriffen werden, indem man die übliche Textbeschriftung benutzt. @code{\musicglyph} greift direkt auf die Notationsschriftart -zu (bspw. @code{g^\markup @{ -\musicglyph #"scripts.segno" @}}). Siehe auch @ref{Text formatieren}. +zu + +@example +g^\markup @{\musicglyph #"scripts.segno" @} +@end example + +@noindent +or + +@example +\markup @{\musicglyph #"five"@}. +@end example + +Siehe auch @ref{Text formatieren}. @menu * Notenschlüssel-Glyphen:: @@ -1273,7 +1289,7 @@ Lesbarkeit eingefügt. @cindex Semicirculus @cindex signum congruentiae -Die Skripte unten sind in der Feta-Schriftart definiert und können +Die Skripte unten sind in der Feta-Glyphe definiert und können an Noten angehängt werden (etwa @samp{c\accent}). @menu diff --git a/Documentation/de/notation/pitches.itely b/Documentation/de/notation/pitches.itely index b4fce56e2d..9466ed06e2 100644 --- a/Documentation/de/notation/pitches.itely +++ b/Documentation/de/notation/pitches.itely @@ -852,7 +852,7 @@ Der relative Modus wirkt nicht in @code{\transpose}, @code{\chordmode} oder @code{\relative}. Um auch im relativen Modus transponieren zu können, muss ein @code{\relative} innerhalb des -@code{\tranpose} zusätzlich gesetzt werden. +@code{\transpose} zusätzlich gesetzt werden. Dreifache Versetzungszeichen werden nicht ausgegeben, wenn @code{\transpose} benutzt wird. Eine enharmonisch diff --git a/Documentation/de/notation/repeats.itely b/Documentation/de/notation/repeats.itely index fecc8cfeca..4e136e37f0 100644 --- a/Documentation/de/notation/repeats.itely +++ b/Documentation/de/notation/repeats.itely @@ -158,14 +158,15 @@ Mehrfache Wiederholungen mit mehr als einer Alternative: } @end lilypond -@warning{Wenn es zwei oder mehr Alternativen gibt, darf nicht zwischen +@warning{Wenn es zwei oder mehr Alternativen gibt, darf nichts zwischen der schließenden Klammer der einen und der öffnenden Klammer der anderen Wiederholung stehen, weil sonst nicht die erwartete Anzahl von Endungen produziert wird.} @warning{Wenn man @code{@bs{}relative} innerhalb von @code{@bs{}repeat} notiert, ohne den @code{Voice}-Kontext explizit zu beginnen, erscheinen -zusätzliche (ungewollte) Systeme. Sie auch @rprogram{Ein zusätzliches System erscheint}.} +zusätzliche (ungewollte) Systeme. +Siehe auch @rprogram{Ein zusätzliches System erscheint}.} @cindex Wiederholung mit Auftakt @@ -610,7 +611,8 @@ wiederholt werden. Siehe @ref{Akkord-Wiederholungen}. @warning{Wenn man @code{@bs{}relative} innerhalb von @code{@bs{}repeat} notiert, ohne den @code{Voice}-Kontext explizit zu beginnen, erscheinen -zusätzliche (ungewollte) Systeme. Sie auch @rprogram{Ein zusätzliches System erscheint}.} +zusätzliche (ungewollte) Systeme. +Siehe auch @rprogram{Ein zusätzliches System erscheint}.} @seealso Notationsreferenz: diff --git a/Documentation/de/notation/rhythms.itely b/Documentation/de/notation/rhythms.itely index 0e63af4282..dbbac4d75a 100644 --- a/Documentation/de/notation/rhythms.itely +++ b/Documentation/de/notation/rhythms.itely @@ -3272,7 +3272,7 @@ Musikbuchstaben (wie etwa das Segno-Zeichen) können mit dem Befehl @end lilypond @noindent -Siehe @ref{Die Feta-Schriftart}, wo alle Symbole gezeigt sind, die +Siehe @ref{Die Emmentaler-Schriftart}, wo alle Symbole gezeigt sind, die mit dem Befehl @code{\musicglyph} ausgegeben werden können. Übliche Veränderungen der Positionierung von Übungszeichen finden @@ -3285,7 +3285,7 @@ können als Anregung für andere Formatierungsfunktionen genommen werden. @seealso Notationsreferenz: -@ref{Die Feta-Schriftart}, +@ref{Die Emmentaler-Schriftart}, @ref{Text formatieren}, @ref{Objekte ausrichten}. diff --git a/Documentation/de/notation/spacing.itely b/Documentation/de/notation/spacing.itely index 67f8b0ab7d..ec59eaa6eb 100644 --- a/Documentation/de/notation/spacing.itely +++ b/Documentation/de/notation/spacing.itely @@ -1258,7 +1258,7 @@ muss @noindent eingesetzt werden. -Die Feta-Schriftart stellt die Noten- und Musiksymbole +Die Feta-Glyphe stellt die Noten- und Musiksymbole für acht verschiedene Größen zur Verfügung. Jede Schriftgröße ist einer bestimmten Systemgröße angepasst: für kleinere Schriftgrößen werden die Zeichen etwas diff --git a/Documentation/de/notation/text.itely b/Documentation/de/notation/text.itely index ef12e4bb0d..ba1860457a 100644 --- a/Documentation/de/notation/text.itely +++ b/Documentation/de/notation/text.itely @@ -323,7 +323,7 @@ Notationsreferenz: @ref{Übungszeichen}, @ref{Text formatieren}, @ref{Musikalische Notation innerhalb einer Textbeschriftung}, -@ref{Die Feta-Schriftart}. +@ref{Die Emmentaler-Schriftart}. Schnipsel: @rlsr{Text}. @@ -1275,7 +1275,7 @@ d-\markup { Allgemeiner gesagt kann jedes verfügbare Notationssymbol unabhängig von der Notation als ein Textbeschriftungsobjekt eingefügt werden, wie unten gezeigt. Eine vollständige Liste der verfügbaren Symbole findet -sich in @ref{Die Feta-Schriftart}. +sich in @ref{Die Emmentaler-Schriftart}. @lilypond[quote,verbatim] \relative { @@ -1348,7 +1348,7 @@ Eine vollständige Liste der Musiksymbol-Befehle findet sich in @ref{Music}. @seealso Notationsreferenz: @ref{Music}, -@ref{Die Feta-Schriftart}, +@ref{Die Emmentaler-Schriftart}, @ref{Was sind Schriftarten}. Installierte Dateien: @@ -1465,7 +1465,7 @@ Notationsschriftarten können als eine Ansammlung von besonderen Zeichen erklärt werden, wobei die Sonderzeichen in verschiedene Familien klassifiziert werden. Die Syntax des folgenden Beispiels ermöglicht es, direkt auf verschiedene nicht textuelle Sonderzeichen der -@code{feta}-Schriftart zuzugreifen. Das ist die Standardschriftart +@code{feta}-Glyphe zuzugreifen. Das ist die Standardschriftart für Notationselemente in LilyPond. @lilypond[quote,verbatim,fragment] @@ -1559,7 +1559,7 @@ in folgenden Abschnitten: @ref{Schriftarten für einen Eintrag} und @seealso Notationsreferenz: -@ref{Die Feta-Schriftart}, +@ref{Die Emmentaler-Schriftart}, @ref{Drehen von Objekten}, @ref{Musikalische Notation innerhalb einer Textbeschriftung}, @ref{Überblick über die wichtigsten Textbeschriftungsbefehle}, diff --git a/Documentation/de/notation/vocal.itely b/Documentation/de/notation/vocal.itely index 367223d7dd..030b7e2a4e 100644 --- a/Documentation/de/notation/vocal.itely +++ b/Documentation/de/notation/vocal.itely @@ -177,8 +177,8 @@ sondern @end example Punkte, Gesangstext mit Akzenten, verschiedene lateinische und nicht-lateinische -Zeichen sowie auch etwa Sonderzeichen (wie ein Herz-Symbol) könn direkt in -die Notationsdatei geschrieben werden. Es muss dabei sichergestell werden, dass +Zeichen sowie auch etwa Sonderzeichen (wie ein Herz-Symbol) können direkt in +die Notationsdatei geschrieben werden. Es muss dabei sichergestellt werden, dass die Datei in der UTF-8-Kodierung gespeichert wird. Zu mehr Information siehe @ref{Sonderzeichen}. diff --git a/Documentation/de/texidocs/hymn-template.texidoc b/Documentation/de/texidocs/hymn-template.texidoc index d40b1e48a6..daf0a44e2c 100644 --- a/Documentation/de/texidocs/hymn-template.texidoc +++ b/Documentation/de/texidocs/hymn-template.texidoc @@ -2,7 +2,7 @@ texidocde = " Dieses Beispiel zeigt eine Möglichkeit, eine Hymnusmelodie zu setzen, in -der jede Zeiel mit einem Auftakt beginnt und einem unvollständigen +der jede Zeile mit einem Auftakt beginnt und einem unvollständigen Takt abschließt. Es zeigt auch, wie man die Strophen als allein stehenden Text unter die Noten hinzufügt. diff --git a/Documentation/de/translations.itexi b/Documentation/de/translations.itexi index b7718e93e7..264ad2e3f2 100644 --- a/Documentation/de/translations.itexi +++ b/Documentation/de/translations.itexi @@ -16,19 +16,19 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Last updated Sun Nov 6 09:35:15 UTC 2016 +@emph{Zuletzt aktualisiert am Sat Jun 24 12:50:41 UTC 2017 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @headitem Aufsatz über den automatischen Musiksatz -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Übersetzer +@tab Übersetzungsüberprüfer +@tab Übersetzt +@tab Aktuell +@tab Mehr Information @item -Section titles +Überschriften @* 92 @tab Till Paala @@ -37,23 +37,23 @@ Section titles @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item LilyPond -- \TITLE\ @* @@ -64,23 +64,23 @@ LilyPond -- \TITLE\ @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 1 Notensatz @* @@ -91,23 +91,23 @@ yes @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2 Literatur @* @@ -118,23 +118,23 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @end multitable @@ -142,13 +142,13 @@ partially @headitem LilyPond erweitern -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Übersetzer +@tab Übersetzungsüberprüfer +@tab Übersetzt +@tab Aktuell +@tab Mehr Information @item -Section titles +Überschriften @* 107 @tab Till Paala @@ -157,23 +157,23 @@ Section titles @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item LilyPond -- \TITLE\ @* @@ -184,23 +184,23 @@ LilyPond -- \TITLE\ @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 1 Scheme-Tutorium @* @@ -211,23 +211,23 @@ yes @ifhtml @html -partially (54 %) +teilweise (54 %) @end html @end ifhtml @ifnothtml -partially (54 %) +teilweise (54 %) @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2 Schnittstellen für Programmierer @* @@ -238,23 +238,23 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @end multitable @@ -262,13 +262,13 @@ partially @headitem LilyPond Handbuch zum Lernen -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Übersetzer +@tab Übersetzungsüberprüfer +@tab Übersetzt +@tab Aktuell +@tab Mehr Information @item -Section titles +Überschriften @* 124 @tab Till Paala @@ -279,23 +279,23 @@ Michael Gerdau @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item LilyPond -- \TITLE\ @* @@ -308,23 +308,23 @@ Michael Gerdau @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 1 Tutorium @* @@ -339,27 +339,27 @@ Michael Gerdau @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2 Übliche Notation @* -4402 +4421 @tab ??? @* Michael Gerdau @@ -368,27 +368,27 @@ Michael Gerdau @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +teilweise @end html @end ifhtml @ifnothtml -yes +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 3 Grundbegriffe @* -11119 +11240 @tab Till Paala @* Reinhold Kainhofer @@ -399,23 +399,23 @@ Michael Gerdau @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +teilweise @end html @end ifhtml @ifnothtml -yes +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 4 Die Ausgabe verbessern @* @@ -428,23 +428,23 @@ Michael Gerdau @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item A Vorlagen @* @@ -457,23 +457,23 @@ Michael Gerdau @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @end multitable @@ -481,13 +481,13 @@ yes @headitem LilyPond Benutzerhandbuch -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Übersetzer +@tab Übersetzungsüberprüfer +@tab Übersetzt +@tab Aktuell +@tab Mehr Information @item -Section titles +Überschriften @* 326 @tab Till Paala @@ -496,23 +496,23 @@ Section titles @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item LilyPond -- \TITLE\ @* @@ -523,23 +523,23 @@ LilyPond -- \TITLE\ @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 1 Musikalische Notation @* @@ -550,77 +550,77 @@ yes @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 1.1 Tonhöhen @* -5272 +5413 @tab Till Paala @tab @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 1.2 Rhythmus @* -6822 +6853 @tab Till Paala @tab @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 1.3 Ausdrucksbezeichnungen @* @@ -631,23 +631,23 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 1.4 Wiederholungszeichen @* @@ -658,50 +658,50 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 1.5 Gleichzeitig erscheinende Noten @* -2920 +2979 @tab Till Paala @tab @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 1.6 Notation auf Systemen @* @@ -712,77 +712,77 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 1.7 Anmerkungen @* -1477 +1481 @tab Till Paala @tab @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 1.8 Text @* -2755 +2754 @tab Till Paala @tab @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2 Spezielle Notation @* @@ -793,23 +793,23 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2.1 Notation von Gesang @* @@ -820,23 +820,23 @@ yes @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2.2 Tasteninstrumente und andere Instrumente mit mehreren Systemen @* @@ -847,23 +847,23 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2.3 Bundlose Saiteninstrumente @* @@ -874,23 +874,23 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2.4 Saiteninstrumente mit Bünden @* @@ -901,23 +901,23 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2.5 Schlagzeug @* @@ -928,23 +928,23 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2.6 Blasinstrumente @* @@ -955,50 +955,50 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2.7 Notation von Akkorden @* -1979 +1975 @tab Till Paala @tab @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2.8 Zeitgenössische Musik @* @@ -1009,50 +1009,50 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2.9 Notation von alter Musik @* -5516 +5518 @tab Till Paala @tab @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2.10 Weltmusik @* @@ -1063,104 +1063,104 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 3 Allgemeine Eingabe und Ausgabe @* -12839 +12853 @tab Till Paala @tab @tab @ifhtml @html -partially (94 %) +teilweise (94 %) @end html @end ifhtml @ifnothtml -partially (94 %) +teilweise (94 %) @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 4 Abstände @* -10911 +10982 @tab Till Paala @tab @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 5 Standardeinstellungen verändern @* -15597 +17050 @tab Till Paala @tab @tab @ifhtml @html -partially (85 %) +teilweise (85 %) @end html @end ifhtml @ifnothtml -partially (85 %) +teilweise (85 %) @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item A Notationsübersicht @* @@ -1171,23 +1171,23 @@ A Notationsübersicht @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item B Befehlsübersicht @* @@ -1198,23 +1198,23 @@ B Befehlsübersicht @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @end multitable @@ -1222,13 +1222,13 @@ partially @headitem GNU LilyPond Programmbenutzung -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Übersetzer +@tab Übersetzungsüberprüfer +@tab Übersetzt +@tab Aktuell +@tab Mehr Information @item -Section titles +Überschriften @* 135 @tab Till Paala @@ -1237,23 +1237,23 @@ Section titles @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item LilyPond -- \TITLE\ @* @@ -1264,27 +1264,27 @@ LilyPond -- \TITLE\ @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 1 @command{lilypond} starten @* -5440 +5469 @tab Reinhold Kainhofer @* Till Paala @@ -1293,50 +1293,50 @@ Till Paala @ifhtml @html -partially (95 %) +teilweise (95 %) @end html @end ifhtml @ifnothtml -partially (95 %) +teilweise (95 %) @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 2 Dateien mit @command{convert-ly} aktualisieren @* -1866 +2097 @tab Till Paala @tab @tab @ifhtml @html -yes +teilweise (89 %) @end html @end ifhtml @ifnothtml -yes +teilweise (89 %) @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 3 @command{lilypond-book} aufrufen @* @@ -1347,23 +1347,23 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 4 Externe Programme @* @@ -1376,23 +1376,23 @@ Reinhold Kainhofer @ifhtml @html -partially (87 %) +teilweise (87 %) @end html @end ifhtml @ifnothtml -partially (87 %) +teilweise (87 %) @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item 5 Vorschläge zum Schreiben von LilyPond-Eingabe-Dateien @* @@ -1403,23 +1403,23 @@ partially @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @end multitable @@ -1427,13 +1427,13 @@ partially @headitem LilyPond -- Notation für Jedermann -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Übersetzer +@tab Übersetzungsüberprüfer +@tab Übersetzt +@tab Aktuell +@tab Mehr Information @item -Section titles +Überschriften @* 760 @tab Till Paala @@ -1444,23 +1444,23 @@ Michael Gerdau @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item LilyPond -- \TITLE\ @* @@ -1473,27 +1473,27 @@ Michael Gerdau @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item Einleitung @* -5814 +5793 @tab Till Paala @* Michael Gerdau @@ -1502,23 +1502,23 @@ Michael Gerdau @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +teilweise @end html @end ifhtml @ifnothtml -yes +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item Download @* @@ -1531,23 +1531,23 @@ Michael Gerdau @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item Handbücher @* @@ -1560,27 +1560,27 @@ Michael Gerdau @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab vor-GDP @item Gemeinschaft @* -3524 +2449 @tab Till Paala @* Michael Gerdau @@ -1589,22 +1589,22 @@ Michael Gerdau @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +teilweise @end html @end ifhtml @ifnothtml -partially +teilweise @end ifnothtml -@tab pre-GDP +@tab vor-GDP @end multitable diff --git a/Documentation/de/usage/running.itely b/Documentation/de/usage/running.itely index fb0030b709..be66d12d03 100644 --- a/Documentation/de/usage/running.itely +++ b/Documentation/de/usage/running.itely @@ -1154,7 +1154,7 @@ mit einem Semikolon (@code{;}). Diese Fehlermeldung erscheint in der Kommandozeilenausgabe, wenn die Datei ein Zeichen enthält, das nicht zu ASCII gehört und die Datei -nicht in UTF-8-Kodierung gespeichert wurd. Sie auch @ruser{Zeichenkodierung}. +nicht in UTF-8-Kodierung gespeichert wurd. Siehe auch @ruser{Zeichenkodierung}. @node Warnung über absteigende staff affinities diff --git a/Documentation/de/web/community.itexi b/Documentation/de/web/community.itexi index 9b3c480191..a0a54c1eb4 100644 --- a/Documentation/de/web/community.itexi +++ b/Documentation/de/web/community.itexi @@ -1210,9 +1210,7 @@ automatisiert Patches, die zusätzliche Warnungen erzeugen, abzulehnen. @ref{Abstellkammer}} @divEnd -@include web/news-front.itexi - -@include web/news.itexi +@include web/news-new.itexi @@ -1289,3 +1287,5 @@ Thanks to developers, contributors, bug hunters and suggestions for @miscLink{CHANGES-0.0,v0.0} @divEnd + +@include web/news-old.itexi diff --git a/Documentation/es/changes.tely b/Documentation/es/changes.tely index fe38731b92..20fc13c750 100644 --- a/Documentation/es/changes.tely +++ b/Documentation/es/changes.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 32839fc7052761649d3ba3512ca29373acbe880c + Translation of GIT committish: 24dd6365d3d05f13b9259f547be9b2517851a5d1 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -70,6 +70,137 @@ which scares away people. @end ignore +@item +Ahora se pueden mover sistemas respecto a su posición actual +usando la subpropiedad @code{extra-offset} de +@code{NonMusicalPaperColumn.line-break-system-details}. Son +posibles tanto desplazamientos horizontales como verticales. Esta +funcionalidad es especialmente útil para hacer pequeños ajustes +sobre la posición vertical predeterminada de los sistemas +individuales. Véase @ruser{Explicit staff and system positioning} +para más información. + +@item +Ahora se puede añadir texto sobre los corchetes de análisis +mediante el objeto @code{HorizontalBracketText}. +@lilypond[quote,verbatim] +\layout { + \context { + \Voice + \consists "Horizontal_bracket_engraver" + } +} + +{ + \once \override HorizontalBracketText.text = "a" + c''\startGroup d''\stopGroup + e''-\tweak HorizontalBracketText.text "a'" \startGroup d''\stopGroup +} +@end lilypond + +@item +Se puede hacer ahora un ajuste fino de los extremos de los +reguladores usando la propiedad de grob @code{shorten-pair}, que +anteriormente afectaba solo a los objetos extensos de texto como +@code{TupletBracket} y @code{OttavaBracket}. Los valores +positivos producen un desplazamiento a la derecha, los negativos a +la izquierda. +@lilypond[quote,verbatim] +{ \once \override Hairpin.shorten-pair = #'(2 . 2) + c'1~\< + c'2~ c'\! + \once \override Hairpin.shorten-pair = #'(-2 . -2) + c'1~\< + c'2~ c'\! } +@end lilypond + +@item +En los diagramas de posiciones de acorde, la distancia entre los +trastes y entre las cuerdas se puede ajustar de forma +independiente. Eestán disponibles @code{fret-distance} y +@code{string-distance} como subpropiedades de +@code{fret-diagram-details}. +@lilypond[verbatim,quote] +fretMrkp = \markup { \fret-diagram-terse #"x;x;o;2;3;2;" } + +\markuplist +\override #'(padding . 2) +\table #'(0 -1) { + "default" + + \fretMrkp + + "fret-distance" + + \override #'(fret-diagram-details . ((fret-distance . 2))) + \fretMrkp + + "string-distance" + + \override #'(fret-diagram-details . ((string-distance . 2))) + \fretMrkp +} +@end lilypond + +@item +Las reglas de alteraciones accidentales se pueden definir ahora +para todo un contexto de @code{ChoirStaff}. Se encuentran +disponibles dos nuevas reglas, @code{choral} y +@code{choral-cautionary}, que combinan las características de +@code{modern-voice} y de @code{piano} o sus equivalentes con +alteraciones de precaución. + +@item +La función musical @code{\unfoldRepeats} ahora puede tomar unla +lista de argumentos opcional que especifica qué tipo de música (o +músicas) repetida(s) se debe(n) desplegar. Los valores posibles +son @code{percent} (para repeticiones de compás o parte de ellos), +@code{tremolo} y @code{volta} (para casillas de primera y segunda +vez). Si no se especifica la lista opcional de argumentos, se usa +@code{repeated-music}, que lo despliega todo. + +@item +Ahora se usa una nueva propiedad de grob, +@code{output-attributes}, para la salida de SVG en lugar de la +propiedad de grob @code{id}. Permite que más de un atributo se +pueda definir como una lista de asociación. Por ejemplo, +@code{#'((id . 123) (class . fulano) (data-loquesea +. @qq{mengano}))} produce la siguiente etiqueta de grupo en el +archivo SVG de salida: @code{ @dots{} }. + +@item +Las ligaduras de expresión y de fraseo pueden comenzar ahora a +partir de las notas individuales de un acorde. Las diferentes +ligaduras simultáneas por cada contexto @code{Voice} se deben +distinguir especificando su @code{spanner-id}. + +@item +La propiedad musical y de grob @code{spanner-id} para distinguir +ligaduras simultáneas de expresión y de fraseo ha cambiado de ser +una cadena a ser una @q{key}, un entero no negativo o un símbolo. + +@item +Existe una instrucción nueva @code{\=} para especificar el +identificador de objeto extenso @code{spanner-id} para ligaduras +simultáneas de expresión o de fraseo. +@lilypond[verbatim,quote] +\fixed c' { + 2 +} +@end lilypond + +@item +Los bloques @code{\header} se pueden almacenar dentro de variables +y usados como argumentos para las funciones musicales y de Scheme, +y como cuerpo de construcciones del tipo @code{#@{@dots{}#@}}. Se +representan como un módulo de Guile. + +Si bien los bloques @code{\book}, @code{\bookpart}, @code{\score}, +@code{\with}, @code{\layout}, @code{\midi} y @code{\paper} se +pueden pasar de manera similar, están representados por distintos +tipos de datos. + @item Las listas de elementos separados por puntos como @code{FretBoard.stencil} ya estaban contempladas a partir de la diff --git a/Documentation/es/extending/scheme-tutorial.itely b/Documentation/es/extending/scheme-tutorial.itely index de1c30089f..5905f3e8d9 100644 --- a/Documentation/es/extending/scheme-tutorial.itely +++ b/Documentation/es/extending/scheme-tutorial.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 934175b31d43c95e341b098f12c2e833522a5d45 + Translation of GIT committish: 3025442087de8dd3f88736290887ced86e360c25 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -857,20 +857,30 @@ veintiCuatro = (* 2 doce) @end example @noindent -lo que daría lugar a que el número 24 se almacenase dentro de la -variable @code{veintiCuatro} de LilyPond (y de Scheme). - -La forma usual de referirse a las variables de LilyPond, es -llamarlas usando una barra invertida, es decir -@code{\veintiCuatro} (véase -@ref{Sintaxis del Scheme de LilyPond}). Dado que esto crea una -copia para la mayor parte de los tipos internos de LilyPond, -concretamente las expresiones musicales, las funciones musicales -no sueln crear copias del material que ellas mismas modifican. -Por este motivo, las expresiones musicales dadas con @code{#} no -deberían, por lo general, contener material que no se haya creado -partiendo de cero o copiado explícitamente en lugar de estar -referenciado directamente. +lo que daría lugar a que el número @emph{24} se almacenase dentro +de la variable @code{veintiCuatro} de LilyPond (y de Scheme). + +El lenguaje Scheme permite la modificación de expresiones +complejas in situ y LilyPond hace uso de esta @q{modificación in +situ} al usar funciones musicales. Pero cuando las expresiones +musicales se almacenan dentro de variables en lugar de ser +introducidas directamente, lo que habitualmente se espera cuando +se pasan a funciones musicales sería que el valor original quedase +intacto. Así pues, cuando se referencia una variable musical con +la barra invertida (como @code{\veintiCuatro}), LilyPond crea una +copia del valor musical de tal variable para utilizarla dentro de +la expresión musical circundante, en lugar de usar el valor de la +variable directamente. + +Por ello, las expresiones musicales de Scheme escritas con la +sintasis de almohadilla @code{#} deberían utilizarse para +cualquier material creado @q{partiendo de cero} (o que se ha +copiado explícitamente) en lugar de utilizarse para referenciar +música directamente. + +@seealso +Manual de extensión: +@ref{Sintaxis del Scheme de LilyPond}. @node Variables de entrada y Scheme @subsection Variables de entrada y Scheme diff --git a/Documentation/es/included/acknowledge.itexi b/Documentation/es/included/acknowledge.itexi new file mode 100644 index 0000000000..08939eadf1 --- /dev/null +++ b/Documentation/es/included/acknowledge.itexi @@ -0,0 +1,52 @@ +@c -*- coding: utf-8; mode: texinfo; -*- +@c This file is part of community.itexi + +@ignore + Translation of GIT committish: 5d83b53ee321d8890d792191032b1fe352577517 + + 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.. + + This file lists projects and institutions that support LilyPond by + providing infrastructure: + +@end ignore + + +@macro acknowledgementsCurrent + +@itemize + +@item +GNU, GNU Savannah +@uref{http://savannah.gnu.org/} +Código fuente y listas de distribución de correo + +@item +Webdev.nl +@uref{http://www.webdev.nl/} +alojamiento de lilypond.org + +@item +Linuxaudio/VirgniaTech +@uref{http://linuxaudio.org/} +Descargas de los lanzamientos + +@item +Google Code +@uref{http://code.google.com/} +Seguimiento de las incidencias + +@item +Rietveld +@uref{https://codereview.appspot.com/} +Revisión del código + +@item +Maison des Sciences de l'Homme Paris Nord +@uref{http://www.mshparisnord.fr/} +Pruebas de construcción automatizadas + +@end itemize +@end macro diff --git a/Documentation/es/included/helpus.itexi b/Documentation/es/included/helpus.itexi index 002f9ba775..00dc0f3f8c 100644 --- a/Documentation/es/included/helpus.itexi +++ b/Documentation/es/included/helpus.itexi @@ -82,7 +82,7 @@ deberían leer @rcontribnamed{Working with source code,Trabajar con el código fuente} y @rcontribnamed{Compiling,Compilación}. -Comience leyendo @rcontrib{Summary for experienced developers}. +Comience leyendo el @rcontribnamed{Summary for experienced developers,Resumen para desarrolladores con experiencia}. @itemize @item diff --git a/Documentation/es/learning/common-notation.itely b/Documentation/es/learning/common-notation.itely index b54f8705c9..c6504166b7 100644 --- a/Documentation/es/learning/common-notation.itely +++ b/Documentation/es/learning/common-notation.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 42cd2e57e37cbbf1fc5ccbe2bc83048761690f60 + Translation of GIT committish: 250f1bf95f84616b68932324d6b5026833080cc4 When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @@ -1453,9 +1453,9 @@ Las variables se pueden usar para otros muchos tipos de objetos dentro del código de entrada. Por ejemplo, @example -ancho = 4.5\cm -nombre = "Wendy" -papelAcinco = \paper @{ paperheight = 21.0 \cm @} +miAncho = 4.5\cm % número pasado a una variable de \paper (unidades: milímetros) +miNombre = "Wendy" % cadena pasada a un elemento de marcado +papelAcinco = \paper @{ #(set-paper-size "a5") @} @end example Dependiendo de su contenido, la variable se puede usar en @@ -1465,11 +1465,11 @@ anteriores: @example \paper @{ \papelAcinco - line-width = \ancho + line-width = \miAncho @} @{ - c4^\nombre + c4^\miNombre @} @end example diff --git a/Documentation/es/learning/fundamental.itely b/Documentation/es/learning/fundamental.itely index d4a149e016..3d81f0ef44 100644 --- a/Documentation/es/learning/fundamental.itely +++ b/Documentation/es/learning/fundamental.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 8451fc41680f500fff56f826017b53dc3dcbf65d + Translation of GIT committish: 4244c3a9fbf1f3ff2e20e665f92516d35b61de53 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -269,6 +269,7 @@ entrada, consulte @ruser{Estructura del archivo}. @subsection La partitura es una (única) expresión musical compuesta @translationof Score is a (single) compound musical expression +@funindex \score @cindex score @cindex partitura @cindex contenido del bloque score @@ -741,12 +742,30 @@ matices dinámicos, etc., se ajusta de forma correcta. \new Staff \relative { % Main voice c'16 d e f - % Voice = "1" Voice = "2" Voice = "3" + % Voice = "1" Voice = "2" Voice = "3" << { g4 f e } \\ { r8 e4 d c8~ } >> | << { d2 e } \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> | } @end lilypond +@funindex \voices +Si prefiere introducir las voces en un orden distinto, como de +arriba a abajo, puede especificar los números de voz respectivos +delante de una construcción @code{<< @dots{} >>} usando la +instrucción @code{\voices} command, como por ejemplo: + +@lilypond[quote,verbatim] +\new Staff \relative { + % Main voice + c'16 d e f + % Voice = "1" Voice = "2" + << { g4 f e } \\ { r8 e4 d c8~ } >> | + \voices 1,3,2 + % Voice = "1" Voice = "3" Voice = "2" + << { d2 e } \\ { s4 b c2 } \\ { c8 b16 a b8 g~ 2 } >> | +} +@end lilypond + Todas estas voces están separadas de la voz principal que contiene las notas justo por fuera de la construcción @code{<< @dots{} >>}. Le llamaremos a esto la @emph{construcción @@ -860,6 +879,7 @@ explicarán en secciones posteriores). @lilypond[quote,ragged-right] \new Staff \relative { \key aes \major + \voices 1,2,4 % No voice three << % Voice one { c''2 aes4. bes8 } \\ % Voice two @@ -870,7 +890,6 @@ explicarán en secciones posteriores). \once \override NoteColumn.force-hshift = #0.5 des2 } - \\ % No voice three \\ % Voice four { \override NoteColumn.force-hshift = #0 @@ -906,6 +925,7 @@ explicará más tarde, así pues ignore todo lo que no entienda. @lilypond[quote,ragged-right] \new Staff \relative { \key aes \major + \voices 1,2,4 % No Voice three (we want stems down) << { % Voice one \voiceOneStyle @@ -919,7 +939,6 @@ explicará más tarde, así pues ignore todo lo que no entienda. \once \override NoteColumn.force-hshift = #0.5 des2 } - \\ % No Voice three (we want stems down) \\ % Voice four { \voiceThreeStyle \override NoteColumn.force-hshift = #0 @@ -955,19 +974,19 @@ Las direcciones de las plicas se asignan automáticamente de forma que las voces de numeración impar reciben las plicas hacia arriba y las de numeración par hacia abajo. Las plicas de las voces 1 y 2 están correctas, pero las plicas de la voz 3 debería ir hacia -abajo en este fragmento en particular. Podemos corregir esto -simplemente olvidándonos de la voz tres y situando la música en -la voz cuatro. Esto se hace escribiendo otro par de barras -invertidas (@code{\\}). +abajo en este fragmento en particular. Puede hacerse simplemente +añadiendo otro par de barras @code{\\}, pero en lugar de eso +usamosla instrucción @code{\voices} (que también nos permitiría +introducir las voces en un orden distinto, si quisiéramos): @lilypond[quote,verbatim,ragged-right] \new Staff \relative { \key aes \major + \voices 1,2,4 % Omit Voice three << % Voice one { c''2 aes4. bes8 } \\ % Voice two { 2 des } - \\ % Omit Voice three \\ % Voice four { aes'2 f4 fes } >> | @@ -1092,7 +1111,7 @@ indicaciones de dinámica: } @end lilypond -A continuación veremos tres formas distintas de componer la +A continuación veremos cuatro formas distintas de componer la notación del mismo pasaje polifónico, cada una de las cuales tiene sus ventajas según la circunstancia, utilizando el ejemplo de la sección anterior. @@ -1132,6 +1151,37 @@ ligadura por encima de ellas. } @end lilypond +@cindex voices, continuas +@funindex \voices + +La instrucción @code{\voices} se puede usar también para continuar +una voz principal dentro de la construcción de voces simultáneas: + +@lilypond[quote,ragged-right,verbatim] +\new Staff \relative { + \new Voice = "main" { + \voiceOneStyle + % This section is homophonic + c'16^( d e f + % Start simultaneous section of three voices + \voices "main",2,3 + << + % Continue the main voice in parallel + { g4 f e | d2 e) | } + % Initiate second voice + \\ + % Set stems, etc., down + { r8 e4 d c8~ | 8 b16 a b8 g~ 2 | } + \\ + % Initiate third voice + % Set stems, etc, up + { s2. | s4 b c2 | } + >> + } +} +@end lilypond + + @cindex anidado de expresiones musicales @cindex anidado de construcciones simultáneas @cindex anidado de voces @@ -1536,10 +1586,11 @@ Referencia de la notación: @cindex creación de contextos @cindex contextos, creación de -En un archivo de entrada, el bloque de partitura, que se presenta -precedido por la instrucción @code{\score}, contiene una sola -expresión musical y una definición de salida asociada (bien un -bloque @code{\layout} o bien un bloque @code{\midi}). El +En un archivo de entrada, el bloque de partitura (que se presenta +precedido por la instrucción @code{\score}) contiene una sola +expresión musical; pero también puede contener +una definición de salida asociada: bien un +bloque @code{\layout} o bien un bloque @code{\midi}. El contexto @code{Score} se suele dejar que se cree automáticamente cuando comienza la interpretación de esa expresión musical. @@ -1829,20 +1880,22 @@ tenemos que saber en qué contexto operan. A veces es algo obvio, pero en ocasiones puede ser algo enrevesado. Si especificamos un contexto equivocado, no se produce ningún mensaje de error, pero el funcionamiento esperado no tendrá lugar. Por ejemplo, la -propiedad @code{instrumentName} (nombre del instrumento) vive +propiedad @code{clefGlyph} (dibujo de la clave) vive claramente dentro del contexto de @code{Staff}, puesto que es el -pentagrama el que debe ser nombrado. En este ejemplo, el primer -pentagrama resulta etiquetado, pero no el segundo, porque hemos +glifo de la clave del pentagrama lo que se quiere cambiar. +En este ejemplo, la primera clave del +pentagrama se imprime correctamente, pero no la segunda (que imprime +la clave predeterminada de Sol en lugar de la de Fa), porque hemos omitido el nombre del contexto. @lilypond[quote,verbatim,ragged-right] << \new Staff \relative { - \set Staff.instrumentName = #"Soprano" + \set Staff.clefGlyph = "clefs.C" c''2 c } \new Staff \relative { - \set instrumentName = #"Alto" % Wrong! + \set clefGlyph = "clefs.F" % Wrong! d'2 d } >> @@ -1850,8 +1903,8 @@ omitido el nombre del contexto. Recuerde que el nombre del contexto predeterminado es @code{Voice}, así que la segunda instrucción @code{\set} -establece la propiedad @code{instrumentName} del contexto -@code{Voice} a @qq{Alto}, pero como LilyPond no busca esta +establece la propiedad @code{clefGlyph} del contexto +@code{Voice} a @code{clefs.F}, pero como LilyPond no busca esta propiedad en el contexto @code{Voice}, no se realiza ninguna acción. Esto no es un error, y no se registra ningún mensaje en el archivo Log de registro de errores. @@ -1873,7 +1926,7 @@ recomienda comprobar la corrección del nombre de la propiedad en el manual de Referencia de funcionamiento interno: véase @rinternals{Tunable context properties} o @rinternals{Contexts}. -La propiedad @code{instrumentName} tendrá efecto solamente si se +La propiedad @code{clefGlyph} tendrá efecto solamente si se establece dentro del contexto @code{Staff}, pero algunas propiedades se pueden establecer en más de un contexto. Por ejemplo, la propiedad @code{extraNatural} está establecida por @@ -2536,8 +2589,9 @@ lower = \relative { \score { << % combine ChoirStaff and PianoStaff in parallel \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" + \new Staff = "sopranos" + \with { instrumentName = #"Soprano" } + << \new Voice = "sopranos" { \global \sopranoMusic @@ -2546,24 +2600,31 @@ lower = \relative { \new Lyrics \lyricsto "sopranos" { \sopranoWords } - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" + \new Staff = "altos" + \with { instrumentName = #"Alto" } + << \new Voice = "altos" { \global \altoMusic } >> - \new Lyrics \lyricsto "altos" { \altoWords } - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" + \new Lyrics \lyricsto "altos" { + \altoWords + } + \new Staff = "tenors" + \with { instrumentName = #"Tenor" } + << \new Voice = "tenors" { \global \tenorMusic } >> - \new Lyrics \lyricsto "tenors" { \tenorWords } - \new Staff = "basses" << - \set Staff.instrumentName = #"Bass" + \new Lyrics \lyricsto "tenors" { + \tenorWords + } + \new Staff = "basses" + \with { instrumentName = #"Bass" } + << \new Voice = "basses" { \global \bassMusic @@ -2573,8 +2634,8 @@ lower = \relative { \bassWords } >> % end ChoirStaff - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" + \new PianoStaff \with { instrumentName = #"Piano" } + << \new Staff = "upper" \upper \new Staff = "lower" \lower >> @@ -2618,8 +2679,9 @@ Al hacerlo así obtenemos el ChoirStaff siguiente: @example \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" + \new Staff = "sopranos" + \with @{ instrumentName = #"Soprano" @} + << \new Voice = "sopranos" @{ \global \musicaSoprano @@ -2628,8 +2690,9 @@ Al hacerlo así obtenemos el ChoirStaff siguiente: \new Lyrics \lyricsto "sopranos" @{ \letraSoprano @} - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" + \new Staff = "altos" + \with @{ instrumentName = #"Alto" @} + << \new Voice = "altos" @{ \global \musicaAlto @@ -2638,8 +2701,9 @@ Al hacerlo así obtenemos el ChoirStaff siguiente: \new Lyrics \lyricsto "altos" @{ \letraAlto @} - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" + \new Staff = "tenors" + \with @{ instrumentName = #"Tenor" @} + << \new Voice = "tenors" @{ \global \musicaTenor @@ -2648,9 +2712,10 @@ Al hacerlo así obtenemos el ChoirStaff siguiente: \new Lyrics \lyricsto "tenors" @{ \letraTenor @} - \new Staff = "bajos" << - \set Staff.instrumentName = #"Bajo" - \new Voice = "bajos" @{ + \new Staff = "basses" + \with @{ instrumentName = #"Bass" @} + << + \new Voice = "basses" @{ \global \musicaBajo @} @@ -2666,8 +2731,8 @@ fácil: tan sólo hay que sacar la parte de piano de la plantilla de @q{Piano solista}: @example -\new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" +\new PianoStaff \with @{ instrumentName = #"Piano " @} +<< \new Staff = "superior" \superior \new Staff = "inferior" \inferior >> @@ -2722,8 +2787,8 @@ Los grupos ChoirStaff y PianoStaff se deben combinar utilizando @} >> % fin del ChoirStaff - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" + \new PianoStaff \with @{ instrumentName = #"Piano" @} + << \new Staff = "upper" \upper \new Staff = "lower" \lower >> @@ -2775,8 +2840,9 @@ lower = \relative { \score { << % combine ChoirStaff and PianoStaff in parallel \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" + \new Staff = "sopranos" + \with { instrumentName = #"Soprano" } + << \new Voice = "sopranos" { \global \sopranoMusic @@ -2785,8 +2851,9 @@ lower = \relative { \new Lyrics \lyricsto "sopranos" { \sopranoWords } - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" + \new Staff = "altos" + \with { instrumentName = #"Alto" } + << \new Voice = "altos" { \global \altoMusic @@ -2795,8 +2862,9 @@ lower = \relative { \new Lyrics \lyricsto "altos" { \altoWords } - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" + \new Staff = "tenors" + \with { instrumentName = #"Tenor" } + << \new Voice = "tenors" { \global \tenorMusic @@ -2805,8 +2873,9 @@ lower = \relative { \new Lyrics \lyricsto "tenors" { \tenorWords } - \new Staff = "basses" << - \set Staff.instrumentName = #"Bass" + \new Staff = "basses" + \with { instrumentName = #"Bass" } + << \new Voice = "basses" { \global \bassMusic @@ -2817,8 +2886,9 @@ lower = \relative { } >> % end ChoirStaff - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano " + \new PianoStaff + \with { instrumentName = #"Piano " } + << \new Staff = "upper" \upper \new Staff = "lower" \lower >> diff --git a/Documentation/es/learning/tutorial.itely b/Documentation/es/learning/tutorial.itely index 47439ec3da..c053fa65cc 100644 --- a/Documentation/es/learning/tutorial.itely +++ b/Documentation/es/learning/tutorial.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 88cfc9ee61dece9cffff98ab7f10318633698c39 + Translation of GIT committish: 09ef86c87175cc6c1071eedb022ed1d01a93bcaf 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/es/learning/tweaks.itely b/Documentation/es/learning/tweaks.itely index 97465bf0ff..ca4465be50 100644 --- a/Documentation/es/learning/tweaks.itely +++ b/Documentation/es/learning/tweaks.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 5ae5c88bdb1a478263ed874cb823ec58dafc93f9 + Translation of GIT committish: db92af51a444062c8edaef3afa36f57375b8feeb 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/es/macros.itexi b/Documentation/es/macros.itexi index eeba20876c..68f0af67a8 100644 --- a/Documentation/es/macros.itexi +++ b/Documentation/es/macros.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 0dab09bcbd2046e1dc38fb264ae8f7d2097d3d71 + Translation of GIT committish: 9dbf6c2c5c8b2847cdfeb6d3c2d11d6f33d3a506 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -104,7 +104,7 @@ con el resto de la documentación, o para leer este manual en otros formatos, consulte @rweb{Manuales}. Si le falta algún manual, encontrará toda la documentación en -@w{@uref{http://@/www@/.lilypond@/.org/}}. +@w{@uref{http://@/lilypond@/.org/}}. @end cartouche @end macro @@ -203,16 +203,20 @@ Para la versión de 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 Instrucciones predefinidas +@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 @@ -739,7 +743,6 @@ Para la versión de LilyPond @version{} @end iftex - @c ***** Macros specific to the web site ***** @ifset web @@ -773,6 +776,7 @@ Para la versión de LilyPond @version{} @end html @end macro + @c LEGALESE @macro logoLegalLinux diff --git a/Documentation/es/notation/ancient.itely b/Documentation/es/notation/ancient.itely index f1f10c14e5..b9218f8ecd 100644 --- a/Documentation/es/notation/ancient.itely +++ b/Documentation/es/notation/ancient.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @c vim: foldmethod=marker @ignore - Translation of GIT committish: 09fca104f8cd9c8b85b269a4006ce3b7f9511489 + Translation of GIT committish: 18d03fa6a724b0102ccc47d194209802cea02f2e When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -2620,7 +2620,7 @@ Glosario musical: Referencia de la notación: @ref{Alteraciones accidentales}, @ref{Alteraciones accidentales automáticas}, -@ref{La tipografía Feta}. +@ref{La tipografía Emmentaler}. @node Líneas divisorias del canto kievano @unnumberedsubsubsec Líneas divisorias del canto kievano @@ -2638,7 +2638,7 @@ del canto kievano». Se puede invocar como @code{\bar "k"}. @seealso @ref{Barras de compás}, -@ref{La tipografía Feta}. +@ref{La tipografía Emmentaler}. @node Melismas del canto kievano @unnumberedsubsubsec Melismas del canto kievano diff --git a/Documentation/es/notation/changing-defaults.itely b/Documentation/es/notation/changing-defaults.itely index 62aaf8785f..3b760ea47a 100644 --- a/Documentation/es/notation/changing-defaults.itely +++ b/Documentation/es/notation/changing-defaults.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore -Translation of GIT committish: 4299c96f609f79426a181ffed107d17fa6e1fdbd +Translation of GIT committish: c377d85f06e524599d20e9edf102ae186ede5e77 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -520,16 +520,17 @@ Referencia de la notación: @cindex contextos, mantener vivos @cindex contextos, tiempo de vida -Normalmente los contextos finalizan en el primer momento musical en -que no tienen nada que hacer. Así, los contextos de @code{Voice} -mueren tan pronto como ya no contienen ningún evento; los contextos de -@code{Staff} mueren tan pronto como todos los contextos de -@code{Voice} que contenían ya no contengan ningún evento; etc. Esto -puede ocasionar dificultades si se tiene que hacer referencia a -contextos anteriores que ya han muerto, por ejemplo, al cambiar de -pentagramas con instrucciones @code{\change}, asociar letra con una -voz mediante instrucciones @code{\lyricsto}, o cuando se añaden -eventos musicales adicionales a un contexto anterior. +Normalmente los contextos finalizan en el primer momento musical +en que no tienen nada que hacer. Así, los contextos de +@code{Voice} mueren tan pronto como ya no contienen ningún evento, +los contextos de @code{Staff} mueren tan pronto como todos los +contextos de @code{Voice} que contenían ya no contengan ningún +evento, etc. Esto puede ocasionar dificultades si se tiene que +hacer referencia a contextos anteriores que ya han muerto, por +ejemplo, al cambiar de pentagramas con instrucciones +@code{\change}, asociar letra con una voz mediante instrucciones +@code{\lyricsto}, o cuando se añaden eventos musicales adicionales +a un contexto anterior. Existe una excepción a esta regla general: dentro de una construcción @code{@{@dots{}@}} (música secuencial), la noción que @@ -1034,10 +1035,29 @@ inmediatamente después de las instrucciones @code{\new} @} @end example -Dado que dicha @q{modificación de contexto} está especificada -dentro de la música, afectará a @emph{todas} las salidas -(tipografía @emph{y también} el MIDI), a diferencia de los cambios -que se hacen dentro de una definición de salida. +De forma alternativa, si la música se escribe usando la forma +corta de las instrucciones de especificación de modo, como por +ejemplo @code{\chords} en lugar de @code{\chordmode}, la +instrucción @code{\with} se debe colocar inmediatamente después de +la instrucción que especifica el modo: + +@example +\chords \with @{ [ajustes de contexto para esta instancia de contexto (implícita) solamente] @} +@{ + @dots{} +@} +@end example + +@noindent +dado que es el contexto implícito creado por estas formas breves +el que se quiere modificar. Se aplica la misma consideración a +las otras formas cortas de especificar el modo de entrada +(@code{\drums}, @code{\figures}), véase @ref{Modos de entrada}. + +Dado las modificaciones de contexto especificadas en bloques +@code{\with} están dentro de la música, afectarán a @emph{todas} +las salidas (tipografía @emph{y también} el MIDI), a diferencia de +los cambios que se hacen dentro de una definición de salida. Se pueden especificar los siguientes tipos de ajustes: @@ -1113,6 +1133,10 @@ Una instrucción predefinida tal como @code{\dynamicUp} @end itemize +@seealso +Referencia de la notación: +@ref{Modos de entrada} + @node Orden de precedencia @unnumberedsubsubsec Orden de precedencia @translationof Order of precedence @@ -2558,6 +2582,343 @@ con @code{\tweak} cuando se originan a partir de un evento musical o, en el caso de @code{\overrideProperty}, para una sobreescritura específica. +@node La instrucción offset +@subsection La instrucción @code{\offset} +@translationof The offset command + +@funindex \offset +@cindex desplazamiento +@cindex valores predeterminados, desplazar + +Aunque es posible fijar propiedades de grob a valores nuevos con +las instrucciones @code{\override}, @code{\tweak} y +@code{\overrideProperty}, muchas veces conviene más modificar +dichas propiedades en una cantidad relativa al valor +predeterminado. La instrucción @code{\offset} se encuentra +disponible para este fin. + +La sintaxis de @code{\offset} es + +@example +[-]\offset @var{propiedad} @var{incrementos} @var{elemento} +@end example + +La instrucción funciona añadiendo el contenido de +@var{incrementos} al ajuste predeterminado de la @var{propiedad} +del grob indicado por @var{elemento}. + +Dependiendo de la formulación de la instrucción, @code{\offset} +puede actuar como un @code{\tweak} (trucaje) o como un +@code{\override} (sobreescritura). Las variaciones en su uso se +explicarán después de haber examinado las propiedades de grob que +se pueden usar con @code{\offset}. + +@subsubsubheading{Propiedades que admiten el desplazamiento} + +Muchas, pero no todas, las propiedades de grob admiten la +aplicación de un desplazamiento. Si @var{propiedad} no se puede +desplazar, el objeto permanece sin cambios y se emite una +advertencia. En estos casos se deben usar en su lugar +@code{\override} o @code{\tweak} para modificar el objeto. + +Se puede trabajar por ensayo y error y dejar que las advertencias +nos sirvan de guía para saber lo que puede o no puede ser +desplazado. Sin embargo, es posible un enfoque más sistemático. + +Los criterios siguientes determinan si una propiedad se puede +modificar con @code{\offset}: + +@itemize + +@item +La propiedad tiene un @q{ajuste predeterminado} en la descripción +del grob. Tales propiedades aparecen listadas para cada grob en +@rinternals{All layout objects} (y también están en +@file{scm/define-grobs.scm}). + +@item +La propiedad admite un valor numérico. Entre los valores +numéricos se encuentran @code{number}, una lista de +@code{number}s, @code{number-pair}, y @code{number-pair-list}. +Las páginas de @rinternals{All layout objects} contienen una lista +de los tipos de datos característicos de cada propiedad. No +importa si el ajuste predeterminado es una función. + +@item +La propiedad no puede ser una @q{subpropiedad} (una propiedad que +reside dentro de otra propiedad). + +@item +Las propiedades establecidas a valores infinitos no se pueden +desplazar. No hay ninguna forma sensata de incrementar los valores +infinitos positivos o negativos. +@end itemize + +Los ejemplos siguientes tratan diversas propiedades de grob frente +a los criterios que se han expuesto. + +@itemize + +@item Propiedades que se pueden desplazar + +@table @asis + +@item @code{Hairpin.height} + +Esta propiedad no es una subpropiedad, y está en la lista que +aparece en @rinternals{Hairpin}. En cuanto a su valor, admite +@q{dimension, in staff space} (dimensión, en espacios de +pentagrama) fijado a @code{0.6666} (que claramente es un +@code{number} no infinito). + +@item @code{Arpeggio.positions} + +En la lista de la página que describe @rinternals{Arpeggio} +aparece una propiedad @code{positions} que admite una @q{pareja de +números}. Su valor predeterminado es +@code{ly:arpeggio::positions}, que es un @q{callback} que se +evalúa durante la fase de tipografiado para dar como resultado una +pareja de números para cualguier objeto @code{Arpeggio} dado. + +@end table + +@item Propiedades que no admiten el desplazamiento + +@table @asis + +@item @code{Hairpin.color} + +No hay un listado para @code{color} en @rinternals{Hairpin}. + +@item @code{Hairpin.circled-tip} + +La lista de @code{Hairpin.circled-tip} en la página de +@rinternals{Hairpin} muestra que admite un valor @code{boolean}. +Los valores booleanos so no numéricos. + +@item @code{Stem.details.lengths} + +Aunque está listado en @rinternals{Stem} y su valor por omisión es +una lista de @code{number}s, es una @q{subpropiedad}. Por el +momento no se contemplan las @q{propiedades anidadas}. + +@end table + +@end itemize + +@subsubsubheading{@bs{}offset como sobreescritura} + +Si @var{elemento} es un nombre de grob como @code{Arpeggio} o +@code{Staff.OttavaBracket}, el resultado es un @code{\override} o +sobreescritura de el tipo de grob especificado. + +@example +\offset @var{propiedad} @var{incremento} [@var{contexto}.]@var{NombreDeGrob} +@end example + +Observe que el guión precedente @emph{nunca} se utiliza con la +forma @q{override}, de igual manera que nunca se usa con la propia +instrucción @code{\override}. + +El ejemplo siguiente usa la forma @q{override}, de sobreescritura, +para alargar los arpegios predeterminados que aparecen en el +primer compás para que cubran todo el tamaño de los acordes. Los +arpegios se amplían en medio espacio de pentagrama hacia arriba y +hacia abajo. También se muestra la misma operación efectuada +sobre el primer acorde con una sobreescritura normal de la +propiedad the @code{positions}. Este método no es en absoluto +expresivo de la acción de @q{ampliar en medio espacio de +pentagrama}, porque los extremos se tienen que especificar +mediante coordenadas absolutas, no relativas. Además, se +necesitarían sobreescrituras individuales para los otros acordes, +ya que varían en tamaño y posición. + +@lilypond[quote,verbatim] +arpeggioMusic = { + \arpeggio \arpeggio + \arpeggio \arpeggio +} + +{ + \arpeggioMusic + \bar "||" + \offset positions #'(-0.5 . 0.5) Arpeggio + \arpeggioMusic + \bar "||" + \once \override Arpeggio.positions = #'(-3.5 . -0.5) + 1\arpeggio + \bar "||" +} +@end lilypond + +En su uso como @q{override}, @code{\offset} se puede hacer +preceder por @code{\once} o por @code{\temporary} y revertirse +mediante @code{\revert} con la @var{propiedad}. Esto se sigue a +partir del hecho de que @code{\offset} en realidad crea un +@code{\override} para la @var{propiedad}. + +@lilypond[quote,verbatim] +music = { c'8\< d' e' f'\! } + +{ + \music + \offset height 1 Hairpin + \music + \music + \revert Hairpin.height + \music + \bar "||" + \once \offset height 1 Hairpin + \music \music + \bar "||" + \override Hairpin.height = 0.2 + \music + \temporary \offset height 2 Hairpin + \music + \music + \revert Hairpin.height + \music + \bar "||" +} +@end lilypond + +Así como @code{\override}, la forma @q{override} de @code{\offset} +se puede usar con @code{\undo} y con @code{\single}. + +@lilypond[quote,verbatim] +longStem = \offset length 6 Stem + +{ + \longStem c'4 c''' c' c'' + \bar "||" + \undo \longStem c'4 c''' c' c'' + \bar "||" + \single \longStem c'4 c''' c' c'' + \bar "||" +} +@end lilypond + +@subsubsubheading{@bs{}offset como trucaje} + +Si @var{elemento} es una expresión musical como @code{(} o +@code{\arpeggio}, el resultado es la misma expresión musical con +un trucaje aplicado. + +@example +[-]\offset [@var{NombreDeGrob}.]@var{propiedad} @var{incrementos} @var{expresión-musical} +@end example + +La sintaxis de @code{\offset} en forma de @q{tweak} es análoga a +la propia instrucción @code{\tweak}, tanto en orden como en cuanto +a la presencia o ausencia del guión inicial. + +El ejemplo siguiente usa la forma @q{tweak} para ajustar la +posición vertical del objeto @code{BreathingSign}. Compárelo con +la instrucción @code{\tweak} normal que también aparece. La +sintaxis es equivalente; sin embargo, la salida de @code{\tweak} +es menos intuitiva, ya que @code{BreathingSign.Y-offset} se +calcula a partir de la tercera línea del pentagrama. No es +necesario saber cómo se calcula @code{Y-offset}, al usar +@code{\offset}. + +@lilypond[quote,verbatim] +{ + c''4 + \breathe + c''4 + \offset Y-offset 2 \breathe + c''2 + \tweak Y-offset 3 \breathe +} +@end lilypond + +En el ejemplo anterior, los objetos trucados se crearon +directamente a partir de la entrada del usuario: la instrucción +@code{\breathe} era una instrucción explícita para devolver un +objeto @code{BreathingSign}. Dado que el objeto de la instrucción +no es ambiguo, no había necesidad de especificar el nombre del +objeto. Sin embargo, cuando un objeto se crea +@emph{indirectamente}, es necesario incluir el nombre del grob. +Es lo mismo que para la instrucción @code{\tweak}. + +En el ejemplo siguiente, el objeto @code{Beam} se baja en dos +espacios de pentagrama aplicando @code{\offset} a la propiedad +@code{positions}. + +La primera aplicación de @code{\offset} exige que se incluya el +nombre del grob, porque nada en el código de entrada crea +explícitamente la barra. En la segunda aplicación, la barra se +crea manualmente con la expresión musical @code{[}; por tanto, el +nombre del grob no es necesario (también aparece en la ilustración +una abreviatura: un solo número se aplica a los dos miembros de +una pareja). + +@lilypond[quote,verbatim] +{ + c''8 g'' e'' d'' + \offset Beam.positions #'(-2 . -2) + c''8 g'' e'' d'' + c''8 g'' e'' d'' + c''8-\offset positions #-2 [ g'' e'' d''] +} +@end lilypond + +@subsubsubheading{@bs{}offset con objetos extensos divididos} + +También es posible modificar segmentos de un objeto que se +extiende sobre un salto o saltos de línea. En este caso, +@var{offsets} admite una lista de valores del tipo de datos +requerido por la propiedad. + +La instrucción @code{\offset} usada de esta forma es similar a la +instrucción @code{\alterBroken} +(véase @ref{Modificación de objetos de extensión divididos}). Sin +embargo, a diferencia de @code{\alterBroken}, los valores que se +le dan a @code{\offset} son relativos, no absolutos. + +El ejemplo siguiente desplaza el objeto @q{dividido} +@code{OttavaBracket} a través de su propiedad +@code{staff-padding}. Dado que la propiedad toma un +@code{number}, se le proporciona a @var{incrementos} una lista de +números para aplicarlos a los dos segmentos creados por el salto +de línea. La parte de corchete de la primera línea queda, en +realidad, inalterada, ya que se añade @code{0} a su valor por +omisión de @code{staff-padding}. El segmento que está en la +segunda línea se eleva tres espacios de pentagrama a partir de su +altura por omisión. La altura predeterminada resulta ser +@code{2}, aunque no es necesario saberlo para conseguir la +posición deseada. + +@lilypond[quote,verbatim] +{ + \offset staff-padding #'(0 3) Staff.OttavaBracket + \ottava #1 + c'''2 c''' + \break + c'''2 c''' +} +@end lilypond + +El ejemplo siguiente copia el efecto de la instrucción +@code{\shape} mediante el incremento de la propiedad +@code{control-points} del objeto @code{Slur}. Aquí, +@var{incrementos} es una lista de parejas de números, una por cada +segmento de la ligadura. Este ejemplo produce un resultado +idéntico a la ilustración correspondiente que aparece en +@ref{Modificación de las formas}. + +@lilypond[quote,verbatim] +{ + c'4-\offset control-points #'( + ((0 . 0) (0 . 0) (0 . 0) (0 . 1)) + ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5)) + ) ( f'4 g' c'' + \break + d'4 c'' f' c') +} +@end lilypond + + @node Modificación de las listas-A @subsection Modificación de las listas-A @translationof Modifying alists @@ -2707,46 +3068,57 @@ como listas-A.} La forma en que se interpreta la notación contenida dentro de un archivo de entrada, está determinada por el modo de entrada en -curso. +curso. In general, +there are two ways of specifying the mode: a long form, e.g. +@code{\chordmode}, and a short form, e.g. @code{\chords}. The long +form is typically used when supplying input to a variable or when +entering input directly into an explicitly created context. The short +form implicitly creates a context of the correct type for the input and +passes the input directly to it. It is useful in simple situations +when there is no requirement to explicitly create the receiving context. @subsubsubheading Modo de acordes Se activa con la instrucción @code{\chordmode} y produce que la entrada se interprete con al sintaxis de la notación de acordes, -véase @ref{Notación de acordes}. Los acordes se imprimen como -notas sobre un pentagrama. +véase @ref{Notación de acordes}. Music in chord mode is rendered as chords on a staff +when entered into a @code{Staff} context, as chord names when entered +into a @code{ChordNames} context or as fret boards when entered into +a @code{FretBoards} context. El modo de acordes se activa también con la instrucción -@code{\chords}. Esto crea también un contexto @code{ChordNames} -nuevo y produce que el código que sigue se interprete con la -sintaxis de la notación de acordes y se imprima como nombres de -acorde dentro del contexto @code{ChordNames}, véase @ref{Impresión -de los nombres de acorde}. +@code{\chords}. Esto también produce que el código que sigue se interprete con la +sintaxis de la notación de acordes but in addition it implicitly creates a new +@code{ChordNames} context and renders the input into it as chord names, véase @ref{Impresión de los nombres de acorde}. @subsubsubheading Modo de percusión Se activa con la instrucción @code{\drummode} y produce que el código de entrada se interprete con la sintaxis de la notación de -percusión, véase @ref{Notación básica de percusión}. +percusión, véase @ref{Notación básica de percusión}. Music in drum mode is rendered as +percussion notes when entered into a @code{DrumStaff} context. El modo de percusión también se activa con la instrucción -@code{\drums}. También crea un contexto @code{DrumStaff} nuevo y +@code{\drums}. También hace que el código que sigue se interprete con la sintaxis de la -notación de percusión y se imprima como símbolos de percusión -sobre un pentagrama de percusión, véase @ref{Notación básica de +notación de percusión but in addition it implicitly creates a new +@code{DrumStaff} context and renders the input into it as percussion +notes, véase @ref{Notación básica de percusión}. @subsubsubheading Modo de cifras Se activa con la instrucción @code{\figuremode} y hace que el código de entrada se interprete con la sintaxis del bajo cifrado, véase -@ref{Introducir el bajo cifrado}. +@ref{Introducir el bajo cifrado}. Music in figure mode is rendered as +figured bass when entered into a @code{FiguredBass} context or a +@code{Staff} context. El modo de cifras también se activa con la instrucción -@code{\figures}. También crea un contexto de @code{FiguredBass} -nuevo y hace que el código que viene a continuación se interprete -con la sintaxis del bajo cifrado y se imprima como símbolos de -bajo cifrado dentro del contexto @code{FiguredBass}, véase +@code{\figures}. También hace que el código que viene a continuación se interprete +con la sintaxis del bajo cifrado but in addition it implicitly creates a new +@code{FiguredBass} context and renders the input into it as figured +bass, véase @ref{Introducción al bajo cifrado}. @subsubsubheading Modos de traste y tablatura @@ -2758,10 +3130,8 @@ Para crear diagramas de trastes, escriba las notas o acordes en el modo de notas e imprímalos dentro de un contexto @code{TabStaff}, véase @ref{Tablaturas predeterminadas}. -Para crear diagramas de trastes encima de un pentagrama, podemos -elegir entre dos posibilidades. Se puede usar el contexto -@code{FretBoards} (véase @ref{Diagramas de traste automáticos}) o -se pueden introducir como elementos de marcado encima de las notas +Para crear diagramas de trastes encima de un pentagrama, enter notes or chords in either +note mode or chord mode and render them in a @code{FretBoards} context, véase @ref{Diagramas de traste automáticos}. Alternatively, los diagramas de trastes se pueden introducir como elementos de marcado encima de las notas utilizando la instrucción @code{\fret-diagram}, véase @ref{Marcas de diagramas de trastes}. @@ -2770,12 +3140,19 @@ utilizando la instrucción @code{\fret-diagram}, véase Se activa con la instrucción @code{\lyricmode}, y hace que la entrada se interprete como sílabas de la letra de la canción con duraciones opcionales y modificadores de letra asociados, véase -@ref{Música vocal}. +@ref{Música vocal}. Input in +lyric mode is rendered as lyric syllables when entered into a +@code{Lyrics} context. El modo de letra también se habilita con la instrucción -@code{\addlyrics}. Esto también crea un contexto @code{Lyrics} -nuevo y una instrucción @code{\lyricsto} implícita que asocia la -letra que viene a continuación con la música precedente. +@code{\addlyrics}. This +also causes the following input to be interpreted as lyric syllables +but in addition it implicitly creates a new @code{Lyrics} context and +renders the input into it as lyric syllables. + +Lyric mode is also activated with the @code{\addlyrics} command. Esto también crea un contexto @code{Lyrics} +nuevo y además añade una instrucción @code{\lyricsto} implícita que asocia la +letra que viene a continuación con la música precedente, véase @ref{Automatic syllable durations}. @subsubsubheading Modo de marcado @@ -2878,7 +3255,7 @@ predefinidas para especificar la dirección. Todas ellas son de la forma: @example -\xxxUp, \xxxDown o \xxxNeutral +\xxxUp, \xxxDown or \xxxNeutral @end example @noindent @@ -4411,9 +4788,9 @@ XinO = { } @end lilypond -Cualquiera de los glifos de la fuente tipográfica Feta se puede +Cualquiera de los glifos de @emph{Feta} usados en la fuente tipográfica Emmentaler se puede pasar a la instrucción de marcado @code{\musicglyph}: véase -@ref{La tipografía Feta}. +@ref{La tipografía Emmentaler}. Se pueden insertar en línea tanto imágenes en formato @file{EPS} como instrucciones de Postscript usando las instrucciones de @@ -4426,7 +4803,7 @@ Referencia de la notación: @ref{Notación gráfica dentro de elementos de marcado}, @ref{Formatear el texto}, @ref{Text markup commands}, -@ref{La tipografía Feta}, +@ref{La tipografía Emmentaler}, @ref{Graphic}. diff --git a/Documentation/es/notation/chords.itely b/Documentation/es/notation/chords.itely index 41c66b9aca..4c76dfcd60 100644 --- a/Documentation/es/notation/chords.itely +++ b/Documentation/es/notation/chords.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 828310574b05b95170920eabb8142bf0e8f23182 + Translation of GIT committish: 553410afdd9496f7d9f1498e755ea18de8e70596 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -486,7 +486,7 @@ N.C., Sin Acorde). @funindex{\chords} @code{\chords @{ @dots{} @}} es una forma abreviada de escribir -@code{\new ChordNames @{ \chordmode @{ @dots{} @} @}}. +@code{\new ChordNames \chordmode @{ @dots{} @}}. @lilypond[verbatim,quote,ragged-right] \chords { @@ -851,7 +851,7 @@ tipo @code{BassFigure}. El bajo cifrado también se puede imprimir dentro de contextos de @code{Staff}. @code{\figures@{ @dots{} @}} es una notación abreviada de -@code{\new FiguredBass @{ \figuremode @{ @dots{} @} @}}. +@code{\new FiguredBass \figuremode @{ @dots{} @}}. Aunque el soporte para bajo cifrado puede parecerse superficialmente al de los acordes, realmente es mucho más simple. @@ -894,12 +894,18 @@ escribe después del @code{>}. } @end lilypond -Se pueden añadir alteraciones accidentales (incluso becuadros) a -las cifras: + +Se pueden usar alteraciones accidentales (incluso becuadros) +para modificar grados de la escala. Se escriben añadiendo @code{+} +(para los sostenidos), @code{-} (para los bemoles) +o @code{!} (para los becuadros) después del número. Para obtener +alteraciones dobles, se aplica el modificador dos veces seguidas. +Con frecuencia, para la modificación del tercer grado se omite el +número, lo que puede obtenerse utilizando @code{_} en lugar de un número. @lilypond[verbatim,quote,ragged-right] \figures { - <7! 6+ 4-> <5++> <3--> + <7! 6+ 4-> <5++> <3--> < _+ > < 7 _!> } @end lilypond @@ -920,11 +926,11 @@ normalmente para sextas elevadas): } @end lilypond -Se pueden incluir espacios verticales y corchetes en las cifras: +Se pueden incluir corchetes en las cifras: @lilypond[verbatim,quote,ragged-right] \figures { - <[12 _!] 8 [6 4]> + <[12] 8 [6 4]> } @end lilypond diff --git a/Documentation/es/notation/contemporary.itely b/Documentation/es/notation/contemporary.itely index ec6bc6a994..742dde23e1 100644 --- a/Documentation/es/notation/contemporary.itely +++ b/Documentation/es/notation/contemporary.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a + Translation of GIT committish: 8a1b303e7930b596753b075e4341a297211d6a0a 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/es/notation/editorial.itely b/Documentation/es/notation/editorial.itely index 10e3cf6b56..a97ccac7bf 100644 --- a/Documentation/es/notation/editorial.itely +++ b/Documentation/es/notation/editorial.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @c This file is included from notation.itely @ignore - Translation of GIT committish: a22f2ad68fccb81e52f805ba69cb8c0e6bf8cd82 + Translation of GIT committish: dbc2dd143e50e000a39883fc8217b4ec60e08657 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -533,12 +533,13 @@ Si @code{x11-color} no entiende el parámetro, el color predeterminado que se devuelve es el negro. @lilypond[verbatim,quote] -\relative c'' { - \override Staff.StaffSymbol.color = #(x11-color 'SlateBlue2) - \set Staff.instrumentName = \markup { - \with-color #(x11-color 'navy) "Clarinet" +\new Staff \with { + instrumentName = \markup { + \with-color #(x11-color 'red) "Clarinet" + } } - + \relative c'' { + \override Staff.StaffSymbol.color = #(x11-color 'SlateBlue2) gis8 a \override Beam.color = #(x11-color "medium turquoise") gis a @@ -562,12 +563,13 @@ Se pueden especificar colores RGB exactos utilizando la función de Scheme @code{rgb-color}. @lilypond[verbatim,quote] +\new Staff \with { + instrumentName = \markup { + \with-color #(x11-color 'red) "Clarinet" + } + } \relative c'' { \override Staff.StaffSymbol.color = #(x11-color 'SlateBlue2) - \set Staff.instrumentName = \markup { - \with-color #(x11-color 'navy) "Clarinet" - } - \override Stem.color = #(rgb-color 0 0 0) gis8 a \override Stem.color = #(rgb-color 1 1 1) @@ -917,12 +919,19 @@ Los corchetes de análisis se pueden anidar. } @end lilypond -@seealso -Fragmentos de código: -@rlsr{Editorial annotations}. +@snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{analysis-brackets-above-the-staff.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{analysis-brackets-with-labels.ly} + +@seealso Referencia de funcionamiento interno: @rinternals{Horizontal_bracket_engraver}, @rinternals{HorizontalBracket}, @rinternals{horizontal-bracket-interface}, +@rinternals{HorizontalBracketText}, +@rinternals{horizontal-bracket-text-interface}, @rinternals{Staff}. diff --git a/Documentation/es/notation/expressive.itely b/Documentation/es/notation/expressive.itely index 94196896b6..435dd32e4f 100644 --- a/Documentation/es/notation/expressive.itely +++ b/Documentation/es/notation/expressive.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 21be03e4b893ec2bbea745a713360310931337b9 + Translation of GIT committish: c473929f7e9d1219a1fbe60ae0922d17c26fdefe When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -318,6 +318,8 @@ centro de la nota que tiene adosada la siguiente indicación @code{\<} ó @code{\>}. El regulador siguiente empezará entonces en el borde derecho de la misma nota en lugar del borde izquierdo, como sería usual si hubiese terminado con @code{\!} previamente. +Si un regulador termina en el inicio de un compás, finalizará +sobre la línea divisoria precedente. @lilypond[verbatim,quote] \relative { @@ -470,12 +472,17 @@ piano. @snippets +@cindex reguladores sobre líneas divisorias + @lilypondfile[verbatim,quote,texidoc,doctitle] {setting-hairpin-behavior-at-bar-lines.ly} @lilypondfile[verbatim,quote,texidoc,doctitle] {setting-the-minimum-length-of-hairpins.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{moving-the-ends-of-hairpins.ly} + @cindex al niente @cindex niente, al @@ -717,8 +724,8 @@ pueden superponerse a las ligaduras de expresión normales, véase @ref{Ligaduras de fraseo}. Cuando se necesitan varias ligaduras de expresión normales dentro de una sola voz, los comienzos y finales correspondientes de las ligaduras deben etiquetarse -precediéndolos por @code{\=} seguido de un número o cadena de -caracteres que la identifique. +precediéndolos por @code{\=} seguido de una clave identificativa +(un símbolo o un entero no negativo). @lilypond[verbatim,quote] \fixed c' { @@ -1286,7 +1293,7 @@ utilizando @notation{ligaduras de unión}. Véase @code{\arpeggioArrowDown}, @code{\arpeggioNormal}, @code{\arpeggioBracket}, -@code{\arpeggioParenthesis} +@code{\arpeggioParenthesis}, @code{\arpeggioParenthesisDashed}. @endpredefined diff --git a/Documentation/es/notation/fretted-strings.itely b/Documentation/es/notation/fretted-strings.itely index facc1aaedd..dac5d206c3 100644 --- a/Documentation/es/notation/fretted-strings.itely +++ b/Documentation/es/notation/fretted-strings.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: a9fa9784c0b21fe7de2738befc0a3bcc5f89ee4f + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -2113,7 +2113,7 @@ LilyPond contempla las tablaturas para laúd. Para obtener las cuerdas graves adicionales, utilice @code{additionalBassStrings}, donde se determinan las notas correspondientes a dichas cuerdas. Se imprimen por debajo de la -línea inferior como: a, /a, //a, ///a, 4, 5 etc. +línea inferior como: a, /a, //a, ///a, 4, 5, etc. Se debe usar el valor @code{fret-letter-tablature-format} para la propiedad de contexto @code{tablatureFormat} y probablemente diff --git a/Documentation/es/notation/input.itely b/Documentation/es/notation/input.itely index 88e9d7600f..ef98fe765f 100644 --- a/Documentation/es/notation/input.itely +++ b/Documentation/es/notation/input.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 4c31c117565b1c7dd78e606fceb7cba354f2859a + Translation of GIT committish: 1e5c6b0f54079eb3285dcc4c7e53f17d8bb03933 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -404,9 +404,10 @@ Un bloque @code{\score}. Esta partitura se reúne con otras partituras del nivel superior, y se combina con ellas formando un @code{\book} (libro) único. Este comportamiento se puede cambiar estableciendo el valor de la variable -@code{toplevel-score-handler} en el nivel superior. El -@emph{handler} predeterminado se define en el archivo de inicio -@file{../scm/lily.scm}. +@code{toplevel-score-handler} en el nivel superior (el +@emph{handler} predeterminado se define en el archivo +@file{../scm/lily-library.scm} y su valor se establece en el archivo +@file{../ly/declarations-init.ly}.) @item Un bloque @code{\book} combina lógicamente varios movimientos (es @@ -574,7 +575,7 @@ compositor; ciertas piezas tienen mucha más información. @menu * Crear títulos encabezamientos y pies de página:: * Títulos encabezamientos y pies de página personalizados:: -* Creación de metadatos de PDF:: +* Crear metadatos en los archivos de salida:: * Crear notas al pie:: * Referencia a números de página:: * Índice general:: @@ -1232,14 +1233,15 @@ comprobación de diversas condiciones: @headitem Nombre del procedimiento @tab Condición que se comprueba -@item print-page-number-check-first @tab ¿debería imprimirse esta página? +@item print-page-number-check-first @tab ¿debería imprimirse este número de página? @item create-page-number-stencil @tab ¿es print-page-numbers verdadero? @item print-all-headers @tab ¿es print-all-headers verdadero? @item first-page @tab ¿es la primera página del libro? +@item not-first-page @tab ¿no es la primera página del libro? @item (on-page nmbr) @tab ¿es el número de página = nmbr? @item last-page @tab ¿es la última página del libro? -@item not-first-page @tab ¿no es la primera página del libro? @item part-first-page @tab ¿es la primera página de la parte de libro? +@item not-part-first-page @tab ¿no es la primera página de la parte de libro? @item part-last-page @tab ¿es la última página de la parte de libro? @item not-single-page @tab ¿es el núm. de páginas en la parte de libro > 1? @@ -1295,24 +1297,36 @@ Referencia de la notación: Archivos instalados: @file{../ly/titling-init.ly}. -@node Creación de metadatos de PDF -@subsection Creación de metadatos de PDF -@translationof Creating PDF metadata +@node Crear metadatos en los archivos de salida +@subsection Crear metadatos en los archivos de salida +@translationof Creating output file metadata @cindex metadatos de PDF +@cindex metadatos de MIDI Además de mostrarse en la salida impresa, las variables de encabezamiento de @code{\header} se usan para establecer los -metadatos de PDF (la información que muestran los lectores de PDF -como @code{propiedades} del archivo). Por ejemplo, si se +metadatos para los archivos de salida. Por ejemplo, con los +archivos PDF, estos metadatos pueden mostrarse por parte de los +lectores de documentos como @code{propiedades} del PDF. Para cada +tipo de archivo de salida, solamente se consultan las definiciones +de @code{\header} de los bloques que definen archivos separados de +ese tipo, y los bloques más altos en la jerarquía de bloques. Por +tanto, para los archivos PDF, solo afectan a los metadatos de PDF +de cada documento las definiciones de @code{\header} de los +niveles de @code{\book} y de nivel superior, mientras que para +archivos MIDI, se usan todas las cabeceras que están por encima o +al nivel de @code{\score}. + +Por ejemplo, si se establece la propiedad @code{title} del bloque @code{header} como @q{Sinfonía núm. 1}, el documento PDF llevará también este -título. +título, y lo usará como el nombre de la secuencia del archivo MIDI. @example - \header@{ - title = "Sinfonía núm. 1" - @} +\header@{ + title = "Sinfonía núm. 1" +@} @end example Si quiere fijar el título de la salida impresa con un texto pero @@ -1321,10 +1335,10 @@ diferente, puede usar @code{pdftitle} como se muestra a continuación. @example - \header@{ - title = "Sinfonía núm. 1" - pdftitle = "Sinfonía núm. 1 de Beethoven" - @} +\header@{ + title = "Sinfonía núm. 1" + pdftitle = "Sinfonía núm. 1 de Beethoven" +@} @end example Todas las variables @code{title}, @code{subject}, @@ -1342,6 +1356,11 @@ establecimiento de un valor para la variable de cabecera @code{moddate} (o @code{pdfmoddate}) a una cadena de fecha de PDF válida. +La variable @code{title} establece también el nombre de la +secuencia para el archivo MIDI. Se puede usar la variable +@code{midititle} para fijar el nombre de la secuencia +independientemente del valor usado para la salida impresa. + @node Crear notas al pie @subsection Crear notas al pie @translationof Creating footnotes @@ -2483,12 +2502,11 @@ music = \relative c'' { El uso de dos o más filtros @code{\keepWithTag} sobre una sola expresión musical produce la eliminación de @emph{todas} las -secciones etiquetadas. El primer filtro quita todas excepto -la que se nombra, y cualquier filtro posterior -elimina el resto. -Usando una sola instrucción @code{\keepWithTag} con una -lista de varias etiquetas se suprimirán solamente -las secciones etiquetadas que no aparezcan especificadas en la lista. +secciones etiquetadas. El primer filtro quita todas excepto la +que se nombra, y cualquier filtro posterior elimina el resto. +Usando una sola instrucción @code{\keepWithTag} con una lista de +varias etiquetas se suprimirán solamente las secciones etiquetadas +que no aparezcan especificadas en la lista. @lilypond[verbatim,quote] music = \relative c'' { @@ -2513,8 +2531,8 @@ will print @code{\tag}s @var{violinI} and @var{violinII} but not Aunque @code{\keepWithTag} es útil para el manejo de @emph{un solo} conjunto de alternativas, la eliminación de música etiquetada con otras etiquetas @emph{no relacionadas} es -problemática si se utilizan para más de un propósito. -En ese caso pueden declararse @q{grupos de etiquetas}: +problemática si se utilizan para más de un propósito. En ese caso +pueden declararse @q{grupos de etiquetas}: @example \tagGroup #'(violinI violinII viola cello) @@ -2992,8 +3010,10 @@ también están disponibles a través de opciones de la línea de @subsection Sustituir la tipografía de la notación @translationof Replacing the notation font -Gonville es una alternativa a la tipografía Feta que se utiliza -en LilyPond y se puede descargar de: +Gonville es un conjunto de glifos alternativo a la tipografía Feta +(que es parte de la tipografía Emmentaler que se usa en LilyPond). +Se puede descargar de: + @example @uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/} @end example @@ -3005,7 +3025,7 @@ fuente Gonville: @c for the font comparison. -gp @sourceimage{Gonville_after,15cm,,} -Aquí hay unos compases de muestra tipografiados en la fuente Feta +Aquí hay unos compases de muestra tipografiados con los glifos Feta de LilyPond: @sourceimage{Gonville_before,15cm,,} @@ -3017,12 +3037,15 @@ Descargue y extraiga el archivo zip. Copie la carpeta más información, consulte @rlearning{Otras fuentes de información}. Renombre la carpeta @code{fonts} existente a @code{fonts_orig} y la carpeta @code{lilyfonts} a @code{fonts}. -Para volver a la fuente Feta, invierta el proceso. +Para volver a la fuente Emmentaler, invierta el proceso. @seealso Manual de aprendizaje: @rlearning{Otras fuentes de información}. +Referencia de la notación: +@ref{La tipografía Emmentaler}. + @knownissues Gonville no se puede usar para tipografiar notación de @q{Música Antigua} y es probable que cualquier nuevo glifo en versiones @@ -3158,7 +3181,7 @@ estar vacío, dentro del bloque @code{\score}: @} @end example -@warning{ Un bloque @code{@bs{}score} que, además de la música, +@warning{Un bloque @code{@bs{}score} que, además de la música, contiene solamente un bloque @code{@bs{}midi} (o sea, @emph{sin} el bloque @code{@bs{}layout}), solo produce archivos de salida MIDI; no se imprime ninguna notación musical.} @@ -3181,7 +3204,8 @@ antes del comienzo de uno de los bloques @code{\book}, @seealso Referencia de la notación: -@ref{Estructura del archivo}. +@ref{Estructura del archivo}, +@ref{Crear metadatos en los archivos de salida}. Archivos instalados: @file{scm/midi.scm}. diff --git a/Documentation/es/notation/keyboards.itely b/Documentation/es/notation/keyboards.itely index 65fa5258bb..098dc5fcd5 100644 --- a/Documentation/es/notation/keyboards.itely +++ b/Documentation/es/notation/keyboards.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: e6e59e19a164f0d3af53b0bde3798940de162d66 + Translation of GIT committish: 09ef86c87175cc6c1071eedb022ed1d01a93bcaf 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/es/notation/notation-appendices.itely b/Documentation/es/notation/notation-appendices.itely index cd96f25151..4ba6e688f8 100644 --- a/Documentation/es/notation/notation-appendices.itely +++ b/Documentation/es/notation/notation-appendices.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 0b22ae65f4614b93ba9d604d3a164816b2baac42 + Translation of GIT committish: 1e5c6b0f54079eb3285dcc4c7e53f17d8bb03933 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -22,7 +22,7 @@ * Tamaños de página predefinidos:: * Instrumentos MIDI:: * Lista de colores:: -* La tipografía Feta:: +* La tipografía Emmentaler:: * Estilos de cabezas de nota:: * Estilos de clave:: * Instrucciones de marcado de texto:: @@ -952,20 +952,39 @@ greyN donde N es un número entre 0 y 100. -@node La tipografía Feta -@appendixsec La tipografía Feta -@translationof The Feta font +@node La tipografía Emmentaler +@appendixsec La tipografía Emmentaler +@translationof The Emmentaler font +@cindex Emmentaler, tipografía +@cindex tipografía, Emmentaler @cindex Feta, tipografía -@cindex tipografía Feta +@cindex tipografía, Feta +@cindex Parmesan, tipografía +@cindex tipografía Parmesan -Los símbolos siguientes están disponibles en la tipografía -Emmentaler y es posible acceder a ellos directamente utilizando -elementos de marcado textual con el nombre del glifo tal y como se -muestra en las tablas de abajo, por ejemplo @code{g^\markup -@{\musicglyph #"scripts.segno" @}} ó @code{\markup @{\musicglyph -#"five"@}}. Para ver más información, consulte @ref{Formatear el -texto}. +La fuente tipográfica Emmentaler consiste en dos +@emph{subconjuntos} de glifos. @qq{Feta}, utilizado para la +notación clásica, y @qq{Parmesan}, usado para la notación de la +música antigua. + +Cualquier glifo que esté comprendido dentro de la tipografía +Emmentaler se puede acceder directamente usando elementos de +marcado de texto junto con el nombre del glifo (según se muestra +en las tablas, más adelante). Por ejemplo: + +@example +g^\markup @{\musicglyph #"scripts.segno" @} +@end example + +@noindent +or + +@example +\markup @{\musicglyph #"five"@} +@end example + +Para ver más información, consulte @ref{Formatear el texto}. @menu * Glifos de clave:: @@ -1561,7 +1580,7 @@ legibilidad. Las listas siguientes relacionan todos los símbolos de la -tipografía Feta que se pueden adjuntar a las notas +tipografía Emmentaler que se pueden adjuntar a las notas (p. ej. @samp{f\accent} o @samp{f->}). Cada ejemplo muestra el símbolo en las posiciones @emph{superior}, @emph{inferior} y @emph{neutra}, respectivamente. @@ -2430,8 +2449,8 @@ Una lista asociativa o abreviadamente una @strong{lista-A} (alist en inglés) es una pareja de Scheme que asocia un valor con una clave: @w{@code{(clave . valor)}}. Por ejemplo, en @file{scm/lily.scm}, la lista-A @w{@qq{type-p-name-alist}} asocia -ciertos predicadps de tipo (p.ej.@tie{}@code{ly:music?}) con -nombres (p.ej.@tie{}@qq{music}) de forma que se pueda informar de +ciertos predicadps de tipo (p.ej. @code{ly:music?}) con +nombres (p.ej. @qq{music}) de forma que se pueda informar de los fallos de comprobación de tipo con un mensaje de consola que incluye el nombre del predicado de tipo esperado. diff --git a/Documentation/es/notation/percussion.itely b/Documentation/es/notation/percussion.itely index 66353944de..338789eaf0 100644 --- a/Documentation/es/notation/percussion.itely +++ b/Documentation/es/notation/percussion.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 0129dea8eff59c10ba6e295f6f2cd48083fc5296 + Translation of GIT committish: 041cb33a404a829a8cdeeaebce17e45f613f10d8 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -90,10 +90,8 @@ modo de entrada apropiados para percusión: Esto es una abreviatura de @lilypond[quote,verbatim] -\new DrumStaff { - \drummode { - hihat4 hh bassdrum bd - } +\new DrumStaff \drummode { + hihat4 hh bassdrum bd } @end lilypond @@ -495,27 +493,22 @@ Para más información sobre estos delicados asuntos, consulte Una pandereta, escrita mediante @q{tamb} (@emph{tambourine}): -@lilypond[quote,verbatim] +@lilypond[verbatim,quote] #(define mydrums '((tambourine default #t 0))) -tambustaff = { - \override Staff.StaffSymbol.line-positions = #'( 0 ) - \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \set DrumStaff.instrumentName = #"Tambourine" -} +\new DrumStaff \with { instrumentName = #"Tambourine" } -\new DrumStaff { - \tambustaff +\drummode { \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + \override Staff.StaffSymbol.line-positions = #'( 0 ) + \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \drummode { - \time 6/8 - tamb8. 16 8 8 8 8 | - tamb4. 8 8 8 | - % the trick with the scaled duration and the shorter rest - % is neccessary for the correct ending of the trill-span! - tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan | - } + \time 6/8 + tamb8. 16 8 8 8 8 | + tamb4. 8 8 8 | + % the trick with the scaled duration and the shorter rest + % is neccessary for the correct ending of the trill-span! + tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan | } @end lilypond @@ -524,19 +517,14 @@ Música para gong, introducida con @q{tt} (tam-tam): @lilypond[quote,verbatim] #(define mydrums '((tamtam default #t 0))) -tamtamstaff = { - \override Staff.StaffSymbol.line-positions = #'( 0 ) - \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \set DrumStaff.instrumentName = #"Tamtam" -} +\new DrumStaff \with { instrumentName = #"Tamtam" } -\new DrumStaff { - \tamtamstaff - \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) +\drummode { +\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) +\override Staff.StaffSymbol.line-positions = #'( 0 ) +\override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \drummode { - tt 1 \pp \laissezVibrer - } + tt 1 \pp \laissezVibrer } @end lilypond @@ -547,20 +535,16 @@ Dos campanas, introducidas con @q{cb} (@emph{cowbell}, cencerro) y #(define mydrums '((ridebell default #t 3) (cowbell default #t -2))) -bellstaff = { - \override DrumStaff.StaffSymbol.line-positions = #'(-2 3) +\new DrumStaff \with { instrumentName = #"Different Bells" } + +\drummode { \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + \override DrumStaff.StaffSymbol.line-positions = #'(-2 3) \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \set DrumStaff.instrumentName = #"Different Bells" -} -\new DrumStaff { - \bellstaff - \drummode { - \time 2/4 - rb8 8 cb8 16 rb16-> ~ | - 16 8 16 cb8 8 | - } + \time 2/4 + rb8 8 cb8 16 rb16-> ~ | + 16 8 16 cb8 8 | } @end lilypond @@ -606,22 +590,22 @@ drumsB = { \score { \new StaffGroup << - \new DrumStaff { - \set DrumStaff.instrumentName = \markup { + \new DrumStaff \with { + instrumentName = \markup { \column { "Tambourine" "et" "caisse claire s. timbre" } } - \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) - \drumsA - } - - \new DrumStaff { - \set DrumStaff.instrumentName = #"Grosse Caisse" - \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) - \drumsB } + drumStyleTable = #(alist->hash-table mydrums) + } + \drumsA + \new DrumStaff \with { + instrumentName = #"Grosse Caisse" + drumStyleTable = #(alist->hash-table mydrums) + } + \drumsB >> } @end lilypond diff --git a/Documentation/es/notation/pitches.itely b/Documentation/es/notation/pitches.itely index f03c553e14..6282800918 100644 --- a/Documentation/es/notation/pitches.itely +++ b/Documentation/es/notation/pitches.itely @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: e45059ae37b240ce52639ad5c49110b510a89481 + Translation of GIT committish: 041cb33a404a829a8cdeeaebce17e45f613f10d8 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 \version "2.19.22" +@c \version "2.19.53" @node Alturas @@ -311,6 +311,24 @@ independientemente del número de semitonos de cada uno de ellos. } @end lilypond +En situaciones complejas puede ser útil recuperar una determinada +altura, independientemente de lo que hubiera ocurrido con anterioridad. +Esto se puede hacer utilizando @code{\resetRelativeOctave}: + +@lilypond[verbatim,quote] +\relative { + << + { c''2 d } + \\ + { e,,2 f } + >> + \resetRelativeOctave c'' + c2 +} +@end lilypond + +@funindex \resetRelativeOctave + @seealso Glosario musical: @@ -537,7 +555,7 @@ Además de los nombres de las notas, los sufijos de las alteraciones pueden también variar dependiendo del idioma: @quotation -@multitable {@code{nederlands}} {-@code{s}/-@code{-sharp}} {-@code{ess}/-@code{es}} {-@code{ss}/-@code{x}/-@code{-sharpsharp}} {-@code{essess}/-@code{eses}} +@multitable {@code{nederlands}} {-@code{s}/-@code{-sharp}} {-@code{f}/-@code{-flat}} {-@code{ss}/-@code{x}/-@code{-sharpsharp}} {-@code{ff}/-@code{-flatflat}} @headitem Idioma @tab sostenido @tab bemol @tab doble sostenido @tab doble bemol @item @code{nederlands} @@ -936,10 +954,15 @@ music = \relative { c'8. ees16( fis8. a16 b8.) gis16 f8. d16 } @end lilypond @knownissues -Las ligaduras de unión manuales dentro de @code{\retrograde} se -reomperán y generarán advertencias. Se pueden generar algunas -ligaduras automáticamente activando -@ref{División automática de las notas}. +@code{\retrograde} es una herramienta más bien sencilla. +Puesto que muchos eventos se invierten como en un espejo +en lugar de intercambiarse, los trucajes y los modificadores direccionales +tienen que añadirse en los elementos de cierre correspondientes: +@code{^(} debe terminar con @code{^)}, todos y cada uno de los +@code{\<} o @code{\cresc} han de terminar en @code{\!} o en +@code{\endcr}, y todo @code{\>} o @code{\decr} debe terminar en +@code{\enddecr}. Las instrucciones o sobreescrituras que cambien propiedades +y que tengan un efecto duradero, probablemente produzcan sorpresas. @seealso Referencia de la notación: @@ -1262,6 +1285,14 @@ Staff.forceClef = ##t} modifica este comportamiento. c'1 @end lilypond +@noindent +Para ser más exactos, no es la propia instrucción +@code{\clef} la que imprime una clave. Más bien, fija o cambia +una propiedad del grabador de clave @code{Clef_engraver}, que a continuación +decide por sí mismo si imprimir o no una clave en el pentagrama actual. +La propiedad @code{forceClef} sobreescribe esta decisión localmente +para reimprimir la clave una vez más. + Cuando hay un cambio de clave manual, el glifo de la clave modificada es pás pequeño de lo normal. Se puede sobreescribir este comportamiento. @@ -1554,26 +1585,24 @@ unísono. @lilypond[verbatim,quote] \new GrandStaff << - \new Staff = "violin" { - \relative c'' { - \set Staff.instrumentName = #"Vln" - \set Staff.midiInstrument = #"violin" - % not strictly necessary, but a good reminder - \transposition c' - - \key c \major - g4( c8) r c r c4 - } + \new Staff = "violin" \with { + instrumentName = #"Vln" + midiInstrument = #"violin" } - \new Staff = "clarinet" { - \relative c'' { - \set Staff.instrumentName = \markup { Cl (B\flat) } - \set Staff.midiInstrument = #"clarinet" - \transposition bes - - \key d \major - a4( d8) r d r d4 - } + \relative c'' { + % not strictly necessary, but a good reminder + \transposition c' + \key c \major + g4( c8) r c r c4 + } + \new Staff = "clarinet" \with { + instrumentName = \markup { Cl (B\flat) } + midiInstrument = #"clarinet" + } + \relative c'' { + \transposition bes + \key d \major + a4( d8) r d r d4 } >> @end lilypond @@ -2243,6 +2272,134 @@ musicB = { } @end lilypond + +@item choral + +@cindex alteraciones, estilo coral +@cindex coral, alteraciones +@cindex coral, estilo de alteraciones accidentales +@cindex corales, alteraciones + +@funindex choral + +Esta regla es una combinación de los estilos @code{modern-voice} y +@code{piano}. Muestra todas las alteraciones accidentales +requeridas para los cantantes que siguen solo su propia voz, así +como las alteraciones adicionales necesarias para los lectores que +siguen simultáneamente todas las voces de un @code{ChoirStaff} +completo. + +Este estilo de alteraciones se aplica de forma predeterminada al +contexto @code{ChoirStaff} actual. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new ChoirStaff { + << + \context Staff = "up" { + \accidentalStyle choral + \musicA + } + \context Staff = "down" { + \musicB + } + >> +} +@end lilypond + +@item choral-cautionary + +@cindex alteraciones, coral con precaución +@cindex precaución, alteraciones, coral +@cindex coral, alteraciones de precaución +@cindex cortesía, alteraciones de +@cindex alteraciones, estilo de, coral con precaución +@cindex precaución, estilo de alteraciones, coral +@cindex coral, estilo de alteraciones con precaución + +@funindex choral-cautionary + +Es lo mismo que @code{choral} pero con las alteraciones adicionales +impresas como de precaución (o cortesía). + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new ChoirStaff { + << + \context Staff = "up" { + \accidentalStyle choral-cautionary + \musicA + } + \context Staff = "down" { + \musicB + } + >> +} +@end lilypond + + @item neo-modern @cindex neo-moderno, estilo de alteraciones diff --git a/Documentation/es/notation/rhythms.itely b/Documentation/es/notation/rhythms.itely index 4bcf40ae9a..e29c3e5966 100644 --- a/Documentation/es/notation/rhythms.itely +++ b/Documentation/es/notation/rhythms.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 3ecc98aa5db8a47adcf9defc4ec9fc018c5cc47d + Translation of GIT committish: 18d03fa6a724b0102ccc47d194209802cea02f2e When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -467,7 +467,7 @@ subdivisiones del compás de mayor duración: @c KEEP LY @lilypond[verbatim,quote] \relative { - r8^"sí" c'~ 2 r4 | + r8^"sí" c'4.~ 4 r4 | r8^"no" c2~ 8 r4 } @end lilypond @@ -2005,6 +2005,23 @@ rasgueado. Esto se puede hacer con el grabador >> @end lilypond +También se puede usar música que contenga acordes como entrada +para @code{RhythmicStaff} y para usarla con el grabador +@code{Pitch_squash_engraver} si los acordes se reducen primero a +notas individuales con la función musical @code{\reduceChords}: + +@lilypond[quote,verbatim] +\new RhythmicStaff { + \time 4/4 + \reduceChords { + 2 + 2 + 2 + 4 + 4 + } +} +@end lilypond @predefined @code{\improvisationOn}, @@ -3430,9 +3447,9 @@ de una función que produce un número encerrado en una caja. @end lilypond El archivo @file{scm/translation-functions.scm} contiene las -definiciones de @code{format-mark-numbers} (el formato por -omisión), @code{format-mark-box-numbers}, -@code{format-mark-letters} y @code{format-mark-box-letters}. Se +definiciones de @code{format-mark-letters} (el formato por +omisión), @code{format-mark-box-letters}, +@code{format-mark-numbers} y @code{format-mark-box-numbers}. Se pueden usar éstos como inspiración para otras funciones de formateo. @@ -3479,7 +3496,7 @@ un elemento @code{\mark} @end lilypond @noindent -Consulte @ref{La tipografía Feta} para ver una lista de los +Consulte @ref{La tipografía Emmentaler} para ver una lista de los símbolos que se pueden imprimir con @code{\musicglyph}. Para ver formas comunes de trucar la colocación de las letras de @@ -3494,7 +3511,7 @@ para escribir otras funciones de formateo. @seealso Referencia de la notación: -@ref{La tipografía Feta}, +@ref{La tipografía Emmentaler}, @ref{Formatear el texto}, @ref{Alineación de objetos}. @@ -3589,12 +3606,24 @@ notas de adorno que siguen a la nota principal. \relative { c''1 \afterGrace d1 { c16[ d] } c1 } @end lilypond -Esto pone las notas de adorno después de un espacio que dura 3/4 -de la longitud de la nota principal. La fracción predeterminada -de 3/4 se puede cambiar estableciendo @code{afterGraceFraction}. -El ejemplo siguiente muestra el resultado de establecer el espacio -en su valor predeterminado, en 15/16, y por último en 1/2 de la -nota principal. +Esto sitúa las notas de adorno @emph{después} del comienzo de la +nota principal. El instante temporal en que se colocan las notas +de adorno es una fracción dada de la duración de la nota principal. +El ajuste predeterminado de + +@example +afterGraceFraction = 3/4 +@end example + +@noindent +se puede redefinir en el nivel jerárquico superior. +Las instrucciones @code{\afterGrace} individuales +pueden, en vez de esto, llevar especificada la fracción directamente, +después de la propia instrucción. + +El siguiente ejemplo muestra el resultado de establecer el espacio a su valor +predeterminado, establecerlo a @code{15/16}, y finalmente a @code{1/2} +de la nota principal. @lilypond[quote,verbatim] << @@ -3602,18 +3631,16 @@ nota principal. c''1 \afterGrace d1 { c16[ d] } c1 } \new Staff \relative { - #(define afterGraceFraction (cons 15 16)) - c''1 \afterGrace d1 { c16[ d] } c1 + c''1 \afterGrace 15/16 d1 { c16[ d] } c1 } \new Staff \relative { - #(define afterGraceFraction (cons 1 2)) - c''1 \afterGrace d1 { c16[ d] } c1 + c''1 \afterGrace 1/2 d1 { c16[ d] } c1 } >> @end lilypond -El espacio entre la nota principal y la de adorno también se puede -especificar usando espaciadores. El ejemplo siguiente sitúa la +El efecto de @code{\afterGrace} también se puede obtener usando +espaciadores. El ejemplo siguiente sitúa la nota de adorno después de un espacio que dura 7/8 de la nota principal. @@ -3881,10 +3908,10 @@ la siguiente línea divisoria cae en 9/8 en vez de hacerlo en 5/4. @end lilypond @noindent -Como lo ilustra el ejemplo, @code{ly:make-moment n m} construye +Como lo ilustra el ejemplo, @code{ly:make-moment n/m} construye una duración de la fracción n/m de una redonda. Por ejemplo, -@code{ly:make-moment 1 8} es una duración de una corchea y -@code{ly:make-moment 7 16} es la duración de siete semicorcheas. +@code{ly:make-moment 1/8} es una duración de una corchea y +@code{ly:make-moment 7/16} es la duración de siete semicorcheas. @seealso Referencia de la notación: diff --git a/Documentation/es/notation/simultaneous.itely b/Documentation/es/notation/simultaneous.itely index e220a56e45..c5e0f9376b 100644 --- a/Documentation/es/notation/simultaneous.itely +++ b/Documentation/es/notation/simultaneous.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 16661f7f6a78f04d056228d11bdc9e17a7cdf760 + Translation of GIT committish: 4244c3a9fbf1f3ff2e20e665f92516d35b61de53 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -595,6 +595,28 @@ arriba, y las de numeración par reciben plicas hacia abajo: >> @end lilypond +@funindex \voices +Si se desea introducir las voces en un orden distinto, puede ser de +utilidad la instrucción @code{\voices}: + +@lilypond[quote,verbatim] +\new Staff \voices 1,3,5,6,4,2 << + \time 2/4 + { f''2 } % 1: highest + \\ + { d''2 } % 3: second-highest + \\ + { b'2 } % 5: third-highest + \\ + { g'2 } % 6: third-lowest + \\ + { e'2 } % 4: second-lowest + \\ + { c'2 } % 2: lowest +>> +@end lilypond + + @warning{No se pueden crear letras ni elementos de extensión (como ligaduras, reguladores, etc.) que se crucen de una voz a otra.} diff --git a/Documentation/es/notation/spacing.itely b/Documentation/es/notation/spacing.itely index cb44a81ee6..bdc27ea3bb 100644 --- a/Documentation/es/notation/spacing.itely +++ b/Documentation/es/notation/spacing.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 1e339d5efe13a725a4f0c2d8dfc3d40390446b89 + Translation of GIT committish: 24dd6365d3d05f13b9259f547be9b2517851a5d1 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -986,8 +986,8 @@ definen en el archivo @file{ly/paper-defaults-init.ly} Algoritmo de saltos de página que utilizar. Se puede elegir entre @code{ly:minimal-breaking}, @code{ly:page-turn-breaking}, -@code{ly:one-line-breaking}, -@code{ly:one-line-auto-height-breaking}, y +@code{ly:one-page-breaking}, @code{ly:one-line-breaking}, +@code{ly:one-line-auto-height-breaking} y @code{ly:optimal-breaking} (predeterminado). @item page-breaking-system-system-spacing @@ -1074,7 +1074,9 @@ Referencia de la notación: @ref{Saltos de página óptimos}, @ref{Paso de página óptimo}, @ref{Saltos de página mínimos}, -@ref{Saltos de página del tipo una-línea}. +@ref{Saltos de página del tipo página única}, +@ref{Saltos de página del tipo una-línea} +@ref{Saltos de página del tipo una-línea-altura-automática}. Archivos de inicio: @file{ly/paper-defaults-init.ly}. @@ -1485,12 +1487,13 @@ evitar reducir el grosor de las líneas del pentagrama. @subheading Peso automático de la tipografía a distintos tamaños -La fuente tipográfica Feta ofrece símbolos musicales a ocho -tamaños distintos. Cada fuente tipográfica está afinada para un -tamaño de pentagrama distinto: a un tamaño menor la tipografía se -vuelve más pesada, para que coincida con las líneas de pentagrama -relativamente más gruesas. Los tamaños de tipografía recomendados -están relacionados en la tabla siguiente: +La tipografía Emmentaler ofrece el conjunto de glifos musicales +@emph{Feta} en ocho tamaños distintos, cada uno de ellos ajustado +a un tamaño de pentagrama. Cuanto más pequeño es el tamaño de los +glifos, más @qq{pesados} se vuelven, de manera que armonicen con +las líneas del pentagrama, que son también relativamente más +gruesas. Los tamaños de glifo recomendados se relacionan en la +tabla siguiente: @multitable @columnfractions .15 .2 .22 .2 @@ -1507,7 +1510,8 @@ están relacionados en la tabla siguiente: @seealso Referencia de la notación: -@ref{Seleccionar el tamaño de la tipografía para la notación}. +@ref{Seleccionar el tamaño de la tipografía para la notación}, +@ref{La tipografía Emmentaler}. Fragmentos de código: @rlsr{Spacing}. @@ -1712,6 +1716,7 @@ página, y cómo modificarlos. * Saltos de página manuales:: * Saltos de página óptimos:: * Saltos de página mínimos:: +* Saltos de página del tipo página única:: * Saltos de página del tipo una-línea:: * Saltos de página del tipo una-línea-altura-automática:: * Paso de página óptimo:: @@ -1875,6 +1880,29 @@ Snippets: @rlsr{Spacing}. +@node Saltos de página del tipo página única +@unnumberedsubsubsec Saltos de página del tipo página única +@translationof One-page page breaking + +@funindex ly:one-page-breaking + +La función @code{ly:one-page-breaking} (saltos de página única) es +un algoritmo de saltos de página de proósito especial que ajusta +automáticamente la altura de la página para que quepa toda la +música en una sola página. La variable @code{paper-height} del +bloque @code{paper} se ignora, pero los otros ajustes funcionan de +la manera acostumbrada. Concretamente, el espaciado entre el +último sistema (o elemento de marcado de nivel superior) y el pie +de página se puede personalizar con @code{last-bottom-spacing} +dentro del bloque @code{paper}. La anchura de la página se queda +sin alterar por omisión, pero se puede fijar con la variable +@code{paper-width} del bloque @code{paper}. + +@knownissues +@code{ly:one-page-breaking} no es compatible, de momento, con +@code{\bookpart}. + + @node Saltos de página del tipo una-línea @unnumberedsubsubsec Saltos de página del tipo una-línea @translationof One-line page breaking @@ -2635,11 +2663,12 @@ especifican relleno vertical, especificar posiciones verticales exactas sobre la página. @code{NonMusicalPaperColumn.line-break-system-details} acepta una -lista asociativa de tres ajustes diferentes: +lista asociativa de cuatro ajustes diferentes: @itemize @item @code{X-offset} (desplazamiento en X) @item @code{Y-offset} (desplazamiento en Y) +@item @code{extra-offset} (desplazamiento adicional) @item @code{alignment-distances} (distancias de alineación) @end itemize @@ -2759,6 +2788,42 @@ aquí sólo fijamos un valor. Observe también que aquí la propiedad @code{Y-offset} determina la posición vertical exacta sobre la página en la que se trazará cada uno de los nuevos sistemas. +En contraste con el posicionado absoluto que está disponible a +través de @code{Y-offset} y de @code{X-offset}, es posible un +posicionamiento relativo con la propiedad @code{extra-offset} de +@code{line-break-system-details}. La colocación es relativa a la +disposición predeterminada o al posicionamiento absoluto creado +mediante el establecimiento de los valores de @code{X-offset} y de +@code{Y-offset}. La propiedad @code{extra-offset} acepta una +pareja de números (un @code{pair}) que consiste en desplazamientos +a lo largo de los ejes X e Y. + +@lilypond[verbatim,quote,staffsize=16] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((extra-offset . (0 . 10))) + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((extra-offset . (0 . 10))) + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new Staff { + \repeat unfold 15 { d'4 d' d' d' } + } + >> + } +} +@end lilypond + Ahora que hemos establecido explícitamente el punto de origen vertical de cada sistema, podemos también establecer manualmente las distancias verticales entre los pentagramas dentro de cada @@ -2847,11 +2912,11 @@ Algunos puntos que tener en cuenta: son pautas, no cuentan como un pentagrama. @item Las unidades de los números que se pasan a @code{X-offset}, -@code{Y-offset} y @code{alignment-distances} se interpretan como -múltiplos de la distancia entre líneas de pentagrama adyacentes. -Los valores positivos mueven a los pentagramas y a la letra hacia -arriba, los valores negativos mueven los pentagramas y la letra -hacia abajo. +@code{Y-offset}, @code{extra-offset} y @code{alignment-distances} +se interpretan como múltiplos de la distancia entre líneas de +pentagrama adyacentes. Los valores positivos mueven a los +pentagramas y a la letra hacia arriba, los valores negativos +mueven los pentagramas y la letra hacia abajo. @item A causa de que los ajustes a @code{NonMusicalPaperColumn.line-break-system-details} dados aquí diff --git a/Documentation/es/notation/staff.itely b/Documentation/es/notation/staff.itely index cf585bc585..4480227fe3 100644 --- a/Documentation/es/notation/staff.itely +++ b/Documentation/es/notation/staff.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 19d0e8e1a9cee3444ec4915b1d2d116e67f5b3f7 + Translation of GIT committish: 041cb33a404a829a8cdeeaebce17e45f613f10d8 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -226,8 +226,8 @@ del nombre del instrumento. Para ver más detalles, consulte @ref{Nombres de instrumentos}. @lilypond[verbatim,quote] -\new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" +\new PianoStaff \with { instrumentName = #"Piano" } +<< \new Staff \relative { c''1 c } \new Staff \relative { \clef bass c1 c } >> @@ -1002,20 +1002,14 @@ ignoran: @lilypond[verbatim,quote,ragged-right] prepPiccolo = <>^\markup \italic { muta in Piccolo } +prepFlute = <>^\markup \italic { muta in Flauto } + setPiccolo = { - \set Staff.instrumentName = #"Piccolo" - \set Staff.shortInstrumentName = #"Picc." - \set Staff.midiInstrument = #"piccolo" <>^\markup \bold { Piccolo } \transposition c'' } -prepFlute = <>^\markup \italic { muta in Flauto } - setFlute = { - \set Staff.instrumentName = #"Flute" - \set Staff.shortInstrumentName = #"Flt." - \set Staff.midiInstrument = #"flute" <>^\markup \bold { Flute } \transposition c' } @@ -1023,14 +1017,17 @@ setFlute = { \new Staff \with { instrumentName = #"Flute" shortInstrumentName = #"Flt." - midiInstrument = #"flute" } \relative { g'1 g g g \break g1 g \prepPiccolo R R \break + \set Staff.instrumentName = #"Piccolo" + \set Staff.shortInstrumentName = #"Picc." \setPiccolo g1 g g g \break g1 g \prepFlute R R \break + \set Staff.instrumentName = #"Flute" + \set Staff.shortInstrumentName = #"Flt." \setFlute g1 g g g } @@ -1122,9 +1119,9 @@ oboeNotes = \relative { } @end lilypond -Si una instrucción @code{\unfoldRepeat} dentro de una expresión +Si una instrucción @code{\unfoldRepeats} dentro de una expresión musical se necesita imprimir al usar @code{\quoteDuring}, entonces -debe contener también su propia instrucción @code{\unfoldRepeat}; +debe contener también su propia instrucción @code{\unfoldRepeats}; @lilypond[verbatim,quote] fluteNotes = \relative { @@ -1435,7 +1432,7 @@ bassoonNotes = \relative c { De forma alternativa, puede usarse la función @code{\cueDuringWithClef} en su lugar. Esta instrucción admite un -argumento adicional para especificar el cambio de clabe que se +argumento adicional para especificar el cambio de clave que se necesita imprimir para las notas guía, pero después imprime automáticamente la clave original una vez que ha finalizado la serie de notas guía. @@ -1472,7 +1469,7 @@ Para transportar las notas guía de forma diferente, use @code{\transposedCueDuring}. Esta instrucción acepta un argumento adicional para especificar (en modo absoluto) la altura impresa con que queremos representar el sonido de un Do central de -concierto. Esto es útil para toma citas de un instrumento que +concierto. Esto es útil para extraer citas de un instrumento que está en un registro completamente diferente. @lilypond[verbatim,quote] diff --git a/Documentation/es/notation/text.itely b/Documentation/es/notation/text.itely index 20b95b4cb0..0979c9484a 100644 --- a/Documentation/es/notation/text.itely +++ b/Documentation/es/notation/text.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: bfc3420ada8810d57156e9fc871560188f044a64 + Translation of GIT committish: 18d03fa6a724b0102ccc47d194209802cea02f2e When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -321,7 +321,7 @@ Referencia de la notación: @ref{Llamadas de ensayo}, @ref{Formatear el texto}, @ref{Notación musical dentro de elementos de marcado}, -@ref{La tipografía Feta}. +@ref{La tipografía Emmentaler}. Fragmentos de código: @rlsr{Text}. @@ -533,7 +533,7 @@ Archivos de inicio: @file{scm/markup.scm}. @knownissues -Los errores de sintaxis para el modo de marcado a menudo producen +Los mensajes de error de sintaxis para el modo de marcado a menudo producen confusión. @@ -576,7 +576,7 @@ El tamaño de la fuente tipográfica se puede alterar en relación al tamaño global del pentagrama, de una serie de formas como se ve a continuación. -Se puede fijar a un tamaño predefinido, +Se puede fijar a un tamaño predefinido: @lilypond[quote,verbatim] \relative b' { @@ -586,7 +586,7 @@ Se puede fijar a un tamaño predefinido, } @end lilypond -Se puede establecer a un tamaño relativo al valor anterior, +Se puede establecer a un tamaño relativo al valor anterior: @lilypond[quote,verbatim] \relative b' { @@ -597,7 +597,7 @@ Se puede establecer a un tamaño relativo al valor anterior, @end lilypond Se puede aumentar o disminuir de forma relativa al valor fijado -por el tamaño global del pentagrama, +por el tamaño global del pentagrama: @lilypond[quote,verbatim] \relative b' { @@ -608,7 +608,7 @@ por el tamaño global del pentagrama, @end lilypond También se puede establecer a un tamaño de puntos fijo, -independientemente del tamaño global del pentagrama, +independientemente del tamaño global del pentagrama: @lilypond[quote,verbatim] \relative b' { @@ -1229,7 +1229,7 @@ marcado: De forma más general, cualquier símbolo musical disponible se puede incluir por separado dentro de un objeto de marcado, como se ejemplifica a continuación; hay una lista exhaustiva de estos -símbolos y sus nombres en @ref{La tipografía Feta}. +símbolos y sus nombres en @ref{La tipografía Emmentaler}. @lilypond[quote,verbatim] \relative { @@ -1300,7 +1300,7 @@ notación musical en @ref{Music}. @seealso Referencia de la notación: @ref{Music}, -@ref{La tipografía Feta}, +@ref{La tipografía Emmentaler}, @ref{Explicación de las fuentes tipográficas}. Archivos de inicio: @@ -1418,8 +1418,8 @@ utilizando Pango. Las tipografías de notación musical se pueden describir como un conjunto de glifos específicos, ordenados en varias familias. La -siguiente sintaxis permite usar directamente varias tipografías -@code{feta} de LilyPond distintas a las de texto en el modo de +siguiente sintaxis permite usar directamente varios glifos de la tipografía +@code{Feta} de LilyPond distintas a las de texto en el modo de marcado: @lilypond[quote,verbatim,fragment] @@ -1517,7 +1517,7 @@ explica en las siguientes secciones: @seealso Referencia de la notación: -@ref{La tipografía Feta}, +@ref{La tipografía Emmentaler}, @ref{Notación musical dentro de elementos de marcado}, @ref{Rotación de objetos}, @ref{Seleccionar la tipografía y su tamaño}, diff --git a/Documentation/es/notation/unfretted-strings.itely b/Documentation/es/notation/unfretted-strings.itely index 3d1cb444c4..7473a1f964 100644 --- a/Documentation/es/notation/unfretted-strings.itely +++ b/Documentation/es/notation/unfretted-strings.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 38876d5851add12a153f8e7adb375a8c1c84f376 + Translation of GIT committish: 47b45b556c729d13e71782e52d378e1c2a0f2b4d When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -219,10 +219,6 @@ presentan los puntillos. La propiedad de contexto } @end lilypond -@warning{@code{@bs{}harmonic} @strong{se debe} colocar dentro de -una construcción de acorde incluso si solamente hay una nota. -Normalmente se usaría @code{@bs{}harmonicsOn} en esta situación.} - @seealso Glosario musical: @rglos{harmonics}. diff --git a/Documentation/es/notation/vocal.itely b/Documentation/es/notation/vocal.itely index cc317c5a7d..5981e01da8 100644 --- a/Documentation/es/notation/vocal.itely +++ b/Documentation/es/notation/vocal.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 88cfc9ee61dece9cffff98ab7f10318633698c39 + Translation of GIT committish: b680788cd1c671d52819d69e9e130ff45361a590 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -837,11 +837,11 @@ debe incluir dentro del melisma: @predefined - @code{\autoBeamOff}, @code{\autoBeamOn}, @code{\melisma}, @code{\melismaEnd}. +@endpredefined @seealso Glosario musical: @@ -2412,6 +2412,7 @@ Cuando una parte vocal se divide temporalmente, debemos usar @code{\oneVoice}, @code{\voiceOne}, @code{\voiceTwo}. +@endpredefined @seealso Manual de aprendizaje: @@ -2509,7 +2510,10 @@ aquí: @end lilypond @predefined -@code{\dynamicUp}, @code{\dynamicDown}, @code{\dynamicNeutral}. +@code{\dynamicUp}, +@code{\dynamicDown}, +@code{\dynamicNeutral}. +@endpredefined @seealso Referencia de la notación: diff --git a/Documentation/es/notation/wind.itely b/Documentation/es/notation/wind.itely index 5d254e2c53..9c8cc6a0f2 100644 --- a/Documentation/es/notation/wind.itely +++ b/Documentation/es/notation/wind.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 88cfc9ee61dece9cffff98ab7f10318633698c39 + Translation of GIT committish: 09ef86c87175cc6c1071eedb022ed1d01a93bcaf 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/es/texidocs/accordion-discant-symbols.texidoc b/Documentation/es/texidocs/accordion-discant-symbols.texidoc index 45eeb479b8..83cd54dc09 100644 --- a/Documentation/es/texidocs/accordion-discant-symbols.texidoc +++ b/Documentation/es/texidocs/accordion-discant-symbols.texidoc @@ -1,10 +1,10 @@ -%% Translation of GIT committish: 296d30fe2fb22a66682c7529bbee0612b5863b93 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Este fragmento de código ha quedado obsoleto por las instrucciones de -marcado predefinidas, véase @ruser{Accordion Registers}. Sin embargo -aún es útil como demostración sencilla de la forma de combinar -símbolos: la colocación de los símbolos añadidos con @code{\\markup} -se puede trucar modificando los argumentos de +marcado predefinidas, véase @q{Registros de acordeón} en la Referencia +de la notación. Sin embargo aún es útil como demostración sencilla de +la forma de combinar símbolos: la colocación de los símbolos añadidos +con @code{\\markup} se puede trucar modificando los argumentos de @code{\\translate-scaled}. Aquí se usa @code{\\translate-scaled} en lugar de @code{\\translate} para que el posicionamiento de las partes de símbolos se adapte a los cambios en @code{font-size}. diff --git a/Documentation/es/texidocs/accordion-registers.texidoc b/Documentation/es/texidocs/accordion-registers.texidoc deleted file mode 100644 index 54b2cd36e0..0000000000 --- a/Documentation/es/texidocs/accordion-registers.texidoc +++ /dev/null @@ -1,11 +0,0 @@ -%% Translation of GIT committish: 3496b8d5f19b657c5097e913a98a522d6a0f48d8 - texidoces = " -Los símbolos de registración para el acordeón están disponibles como -elementos @code{\\markup} así como en forma de eventos musicales -autónomos (pues los cambios de registro suelen producirse entre -eventos musicales reales). Los registros de bajo no están muy -estandarizados. Pueden verse las instrucciones disponibles en la -sección @rusernamed{Accordion Registers, Registros de acordeón}. - -" - doctitlees = "Símbolos de registros de acordeón" diff --git a/Documentation/es/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc b/Documentation/es/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc index 26bec6949c..5c3f1a9e69 100644 --- a/Documentation/es/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc +++ b/Documentation/es/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 5db593aa3737cf8c60f9c4c4fcbe317c2d832766 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Al escribir un bajo cifrado, podemos situar las cifras encima o debajo de las notas del bajo, mediante la definición de la propiedad diff --git a/Documentation/es/texidocs/adding-ambitus-per-voice.texidoc b/Documentation/es/texidocs/adding-ambitus-per-voice.texidoc index e3189690ba..5d5584d0a1 100644 --- a/Documentation/es/texidocs/adding-ambitus-per-voice.texidoc +++ b/Documentation/es/texidocs/adding-ambitus-per-voice.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 doctitlees = "Añadir un ámbito por voz" texidoces = " Se puede añadir un ámbito por cada voz. En este caso, el ámbito se diff --git a/Documentation/es/texidocs/adding-an-extra-staff-at-a-line-break.texidoc b/Documentation/es/texidocs/adding-an-extra-staff-at-a-line-break.texidoc index 45c0aed5a7..e607a5fbe2 100644 --- a/Documentation/es/texidocs/adding-an-extra-staff-at-a-line-break.texidoc +++ b/Documentation/es/texidocs/adding-an-extra-staff-at-a-line-break.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 6e4e9c4eacb94d68c11fd6b9062da4f724114860 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Al añadir un pentagrama nuevo en un salto de línea, por desgracia se añade un espacio adicional al final de la línea antes del salto diff --git a/Documentation/es/texidocs/adding-an-extra-staff.texidoc b/Documentation/es/texidocs/adding-an-extra-staff.texidoc index 253f3e6a4d..e1ed85eabe 100644 --- a/Documentation/es/texidocs/adding-an-extra-staff.texidoc +++ b/Documentation/es/texidocs/adding-an-extra-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 6e4e9c4eacb94d68c11fd6b9062da4f724114860 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede añadir (posiblemente de forma temporal) un pentagrama nuevo una vez que la pieza ha comenzado. diff --git a/Documentation/es/texidocs/adding-an-ottava-marking-to-a-single-voice.texidoc b/Documentation/es/texidocs/adding-an-ottava-marking-to-a-single-voice.texidoc index 8f6b6d9565..c5497a6f3f 100644 --- a/Documentation/es/texidocs/adding-an-ottava-marking-to-a-single-voice.texidoc +++ b/Documentation/es/texidocs/adding-an-ottava-marking-to-a-single-voice.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Si tiene más de una voz en el mismo pentagrama, el cambio de octavación de una voz transportará la posición de las notas en todas diff --git a/Documentation/es/texidocs/adding-bar-lines-to-chordnames-context.texidoc b/Documentation/es/texidocs/adding-bar-lines-to-chordnames-context.texidoc index f01486276f..e4cd53fd20 100644 --- a/Documentation/es/texidocs/adding-bar-lines-to-chordnames-context.texidoc +++ b/Documentation/es/texidocs/adding-bar-lines-to-chordnames-context.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Para añadir indicaciones de línea divisoria dentro del contexto de los nombres de acorde @code{ChordNames}, incluya el grabador diff --git a/Documentation/es/texidocs/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.texidoc b/Documentation/es/texidocs/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.texidoc index a97f5addca..3cf9bc2a5b 100644 --- a/Documentation/es/texidocs/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.texidoc +++ b/Documentation/es/texidocs/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La sintaxis de LilyPond puede implicar muchas colocaciones poco comunes para los paréntesis, corchetes, etc, que a veces se tienen diff --git a/Documentation/es/texidocs/adding-drum-parts.texidoc b/Documentation/es/texidocs/adding-drum-parts.texidoc index 8a151b50a9..2b95899b3c 100644 --- a/Documentation/es/texidocs/adding-drum-parts.texidoc +++ b/Documentation/es/texidocs/adding-drum-parts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 3f57efa0cde39bf0642fb6fb3672a19262ceda83 texidoces = " Mediante la utilización de las potentes herramientas preconfiguradas como la función @code{\\drummode} y el contexto @code{DrumStaff}, la diff --git a/Documentation/es/texidocs/adding-extra-fingering-with-scheme.texidoc b/Documentation/es/texidocs/adding-extra-fingering-with-scheme.texidoc index 8a81c92ddd..1d8927031d 100644 --- a/Documentation/es/texidocs/adding-extra-fingering-with-scheme.texidoc +++ b/Documentation/es/texidocs/adding-extra-fingering-with-scheme.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 84d2fa7df561701dc9eb882df69c127f575f2df7 +%% Translation of GIT committish: 98ac53591234404cd70c5eebd370a598ec74095b texidoces = " Se pueden añadir elementos adicionales a las notas usando @code{map-some-music}. En este ejemplo se ajunta una inscripción diff --git a/Documentation/es/texidocs/adding-fingerings-to-a-score.texidoc b/Documentation/es/texidocs/adding-fingerings-to-a-score.texidoc index 9928c9e4ec..8e52ad6dbd 100644 --- a/Documentation/es/texidocs/adding-fingerings-to-a-score.texidoc +++ b/Documentation/es/texidocs/adding-fingerings-to-a-score.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden escribir instrucciones de digitación usando una sintaxis muy sencilla. diff --git a/Documentation/es/texidocs/adding-fingerings-to-tablatures.texidoc b/Documentation/es/texidocs/adding-fingerings-to-tablatures.texidoc index fd8308146d..bb35448fbf 100644 --- a/Documentation/es/texidocs/adding-fingerings-to-tablatures.texidoc +++ b/Documentation/es/texidocs/adding-fingerings-to-tablatures.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Para añadir digitaciones a las tablaturas, utilice una combinación de @code{\\markup} y @code{\\finger}. diff --git a/Documentation/es/texidocs/adding-indicators-to-staves-which-get-split-after-a-break.texidoc b/Documentation/es/texidocs/adding-indicators-to-staves-which-get-split-after-a-break.texidoc index fa41985ebc..b47362d93f 100644 --- a/Documentation/es/texidocs/adding-indicators-to-staves-which-get-split-after-a-break.texidoc +++ b/Documentation/es/texidocs/adding-indicators-to-staves-which-get-split-after-a-break.texidoc @@ -1,10 +1,11 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 0bed3bc9d8ad506e51c02faf95715e584e4bc335 texidoces = " -Este fragmento de código define la instrucción -@code{\\splitStaffBarLine}, que añade flechas en las direcciones -Noroeste y Sudeste en una línea divisoria, para denotar que cada una -de las voces que comparten un pentagrama continuán en su propio -pentagrama en el siguiente sistema. +Este fragmento de código define las instrucciones +@code{\\splitStaffBarLine}, @code{convUpStaffBarLine} y +@code{convDownStaffBarLine}, que añaden flechas en las sobre una línea +divisoria, para denotar que cada una de las voces que comparten un +pentagrama continúan en su propio pentagrama en el siguiente sistema, +o que las voces así divididas se recombinan. " doctitlees = "Añadir indicadoes a los pentagramas que se dividen después de un salto de línea" diff --git a/Documentation/es/texidocs/adding-links-to-objects.texidoc b/Documentation/es/texidocs/adding-links-to-objects.texidoc index f4040bb295..9903040b5b 100644 --- a/Documentation/es/texidocs/adding-links-to-objects.texidoc +++ b/Documentation/es/texidocs/adding-links-to-objects.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " Para añadir un enlace al sello de un objeto gráfico, podemos usar @code{add-link} tal y como se define aquí. FUnciona con diff --git a/Documentation/es/texidocs/adding-orchestral-cues-to-a-vocal-score.texidoc b/Documentation/es/texidocs/adding-orchestral-cues-to-a-vocal-score.texidoc index 829bd2df07..f37cd2e04d 100644 --- a/Documentation/es/texidocs/adding-orchestral-cues-to-a-vocal-score.texidoc +++ b/Documentation/es/texidocs/adding-orchestral-cues-to-a-vocal-score.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: bc4b56a8dee39a1fa3f40ac329ab0754d46fc56f +%% Translation of GIT committish: 98ac53591234404cd70c5eebd370a598ec74095b texidoces = " Este ejemplo muestra una forma de simplificar la adición de muchas notas guía orquestales a la reducción de piano en una partitura vocal. diff --git a/Documentation/es/texidocs/adding-parentheses-around-an-expressive-mark-or-chordal-note.texidoc b/Documentation/es/texidocs/adding-parentheses-around-an-expressive-mark-or-chordal-note.texidoc index 3206e89f49..cc24dcbf1e 100644 --- a/Documentation/es/texidocs/adding-parentheses-around-an-expressive-mark-or-chordal-note.texidoc +++ b/Documentation/es/texidocs/adding-parentheses-around-an-expressive-mark-or-chordal-note.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La función @code{\\parenthesize} es un truco especial que encierra objetos entre paréntesis. El grob asociado es @code{ParenthesesItem}. diff --git a/Documentation/es/texidocs/adding-the-current-date-to-a-score.texidoc b/Documentation/es/texidocs/adding-the-current-date-to-a-score.texidoc index 398b138fa0..036ee15424 100644 --- a/Documentation/es/texidocs/adding-the-current-date-to-a-score.texidoc +++ b/Documentation/es/texidocs/adding-the-current-date-to-a-score.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Con algo de código de Scheme, se puede añadir fácilmente la fecha actual a una partitura. diff --git a/Documentation/es/texidocs/adding-timing-marks-to-long-glissandi.texidoc b/Documentation/es/texidocs/adding-timing-marks-to-long-glissandi.texidoc index 3537d60fde..e708965f73 100644 --- a/Documentation/es/texidocs/adding-timing-marks-to-long-glissandi.texidoc +++ b/Documentation/es/texidocs/adding-timing-marks-to-long-glissandi.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 0df86f1528d4e85021fa52e5c302c2507df6a19c +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Los pulsos que se saltan en glissandos muy largos se indican a veces mediante marcas de tiempo, que a menudo consisten en figuras sin diff --git a/Documentation/es/texidocs/adding-volta-brackets-to-additional-staves.texidoc b/Documentation/es/texidocs/adding-volta-brackets-to-additional-staves.texidoc index fb9ce6ddc1..2eaea0c1a8 100644 --- a/Documentation/es/texidocs/adding-volta-brackets-to-additional-staves.texidoc +++ b/Documentation/es/texidocs/adding-volta-brackets-to-additional-staves.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " El grabador @code{Volta_engraver} reside de forma predeterminada dentro del contexto de @code{Score}, y los corchetes de la repetición diff --git a/Documentation/es/texidocs/additional-voices-to-avoid-collisions.texidoc b/Documentation/es/texidocs/additional-voices-to-avoid-collisions.texidoc index 6ebffcad41..f844073362 100644 --- a/Documentation/es/texidocs/additional-voices-to-avoid-collisions.texidoc +++ b/Documentation/es/texidocs/additional-voices-to-avoid-collisions.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: f0a8d907612e79271f97a2936165f57505b12350 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 doctitlees = "Voces adicionales para evitar colisiones" texidoces = " En ciertos casos de polifonía compleja, se necesitan voces adicionales diff --git a/Documentation/es/texidocs/adjusting-grace-note-spacing.texidoc b/Documentation/es/texidocs/adjusting-grace-note-spacing.texidoc index 150042ab96..e8689f93a7 100644 --- a/Documentation/es/texidocs/adjusting-grace-note-spacing.texidoc +++ b/Documentation/es/texidocs/adjusting-grace-note-spacing.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede ajustar la separación entre las notas de adorno utilizando la propiedad @code{spacing-increment} de @code{Score.GraceSpacing}. diff --git a/Documentation/es/texidocs/adjusting-lyrics-vertical-spacing.texidoc b/Documentation/es/texidocs/adjusting-lyrics-vertical-spacing.texidoc index 38599b1981..acfe79717b 100644 --- a/Documentation/es/texidocs/adjusting-lyrics-vertical-spacing.texidoc +++ b/Documentation/es/texidocs/adjusting-lyrics-vertical-spacing.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " Este fragmento de código muestra cómo situar la línea de base de la letra más cerca del pentagrama. diff --git a/Documentation/es/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc b/Documentation/es/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc index 257374f0bd..670f1f6151 100644 --- a/Documentation/es/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc +++ b/Documentation/es/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Puede ser necesario trucar la propiedad @code{shortest-duration-space} para poder ajustar el tamaño de las diff --git a/Documentation/es/texidocs/aligning-and-centering-instrument-names.texidoc b/Documentation/es/texidocs/aligning-and-centering-instrument-names.texidoc index b9323a802e..e045399168 100644 --- a/Documentation/es/texidocs/aligning-and-centering-instrument-names.texidoc +++ b/Documentation/es/texidocs/aligning-and-centering-instrument-names.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 3f57efa0cde39bf0642fb6fb3672a19262ceda83 texidoces = " La alineación horizontal de los nombres de instrumento se puede trucar modificando la propiedad @code{Staff.InstrumentName diff --git a/Documentation/es/texidocs/aligning-bar-numbers.texidoc b/Documentation/es/texidocs/aligning-bar-numbers.texidoc index f5e63b7035..d4e9e6c305 100644 --- a/Documentation/es/texidocs/aligning-bar-numbers.texidoc +++ b/Documentation/es/texidocs/aligning-bar-numbers.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Los números de compás se alinean de forma predeterminada por la derecha con su objeto padre. Éste es por lo general el borde diff --git a/Documentation/es/texidocs/aligning-objects-created-with-the--mark-command.texidoc b/Documentation/es/texidocs/aligning-objects-created-with-the--mark-command.texidoc index 40350d7d11..eaa19bf12e 100644 --- a/Documentation/es/texidocs/aligning-objects-created-with-the--mark-command.texidoc +++ b/Documentation/es/texidocs/aligning-objects-created-with-the--mark-command.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " De forma predeterminada, la instrucción @code{\\mark} centra los objetos sobre la barra de compás. Este comportamiento se puede diff --git a/Documentation/es/texidocs/aligning-syllables-with-melisma.texidoc b/Documentation/es/texidocs/aligning-syllables-with-melisma.texidoc index bacab3471a..6198fabbb8 100644 --- a/Documentation/es/texidocs/aligning-syllables-with-melisma.texidoc +++ b/Documentation/es/texidocs/aligning-syllables-with-melisma.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " De forma predeterminada, las sílabas de la letra que comienzan un melisma se alinean a la izquierda sobre su nota correspondiente. Se diff --git a/Documentation/es/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.texidoc b/Documentation/es/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.texidoc index dcad48cb7b..c5728b54a1 100644 --- a/Documentation/es/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.texidoc +++ b/Documentation/es/texidocs/allowing-fingerings-to-be-printed-inside-the-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Las cifras de digitación orientadas verticalmente se colocan de forma predeterminada fuera del pentagrama. Sin embargo, este comportamiento diff --git a/Documentation/es/texidocs/altering-the-length-of-beamed-stems.texidoc b/Documentation/es/texidocs/altering-the-length-of-beamed-stems.texidoc index 09f040f60b..48e3f354f3 100644 --- a/Documentation/es/texidocs/altering-the-length-of-beamed-stems.texidoc +++ b/Documentation/es/texidocs/altering-the-length-of-beamed-stems.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede variar la longitud de las plicas de las figuras unidas por una barra mediante la sobreescritura de la propiedad diff --git a/Documentation/es/texidocs/alternative-bar-numbering.texidoc b/Documentation/es/texidocs/alternative-bar-numbering.texidoc index 7e09048b12..bcc4d71229 100644 --- a/Documentation/es/texidocs/alternative-bar-numbering.texidoc +++ b/Documentation/es/texidocs/alternative-bar-numbering.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 5c42908f1c8d0a5c1d88851a2d793ca55476612c +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden seleccionar dos métodos alternativos para la numeración de compases, especiales para cuando hay repeticiones. diff --git a/Documentation/es/texidocs/alternative-breve-notes.texidoc b/Documentation/es/texidocs/alternative-breve-notes.texidoc index dc75fb5c80..8d4e1ae700 100644 --- a/Documentation/es/texidocs/alternative-breve-notes.texidoc +++ b/Documentation/es/texidocs/alternative-breve-notes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Las figuras de breve también están disponibles con dos líneas verticales a los lados de la cabeza en lugar de una sola línea y la diff --git a/Documentation/es/texidocs/ambitus-with-multiple-voices.texidoc b/Documentation/es/texidocs/ambitus-with-multiple-voices.texidoc index 2ecb8fd1a9..52bf28fb1a 100644 --- a/Documentation/es/texidocs/ambitus-with-multiple-voices.texidoc +++ b/Documentation/es/texidocs/ambitus-with-multiple-voices.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 doctitlees = "Ámbitos con varias voces" texidoces = " La adición del grabador @code{Ambitus_engraver} al contexto de diff --git a/Documentation/es/texidocs/ambitus.texidoc b/Documentation/es/texidocs/ambitus.texidoc index e515f6fc28..415578afd6 100644 --- a/Documentation/es/texidocs/ambitus.texidoc +++ b/Documentation/es/texidocs/ambitus.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Las indicaciones de ámbito o tesitura indican rangos de alturas para las voces. diff --git a/Documentation/es/texidocs/analysis-brackets-above-the-staff.texidoc b/Documentation/es/texidocs/analysis-brackets-above-the-staff.texidoc index 821e750ea8..18294f5ab2 100644 --- a/Documentation/es/texidocs/analysis-brackets-above-the-staff.texidoc +++ b/Documentation/es/texidocs/analysis-brackets-above-the-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " De forma predeterminada se añaden corchetes de análisis sencillos debajo del pentagrama. El ejemplo siguiente muestra una manera de diff --git a/Documentation/es/texidocs/ancient-fonts.texidoc b/Documentation/es/texidocs/ancient-fonts.texidoc index 9fddfe0631..d9885c497f 100644 --- a/Documentation/es/texidocs/ancient-fonts.texidoc +++ b/Documentation/es/texidocs/ancient-fonts.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: bc4b56a8dee39a1fa3f40ac329ab0754d46fc56f +%% Translation of GIT committish: 3bd039bb1bb0ed2820458f957debbaa75511ca4e texidoces = " -Aquí se muestran muchos de (¿o quizá todos?) los símbolos que -están contemplados por la capacidad de LilyPond para la música +Aquí se muestran muchos de los símbolos de LilyPond para la música antigua. + " doctitlees = "Tipografía de música antigua" diff --git a/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc b/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc index 816aebe979..e10097a483 100644 --- a/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc +++ b/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 0df86f1528d4e85021fa52e5c302c2507df6a19c +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Este ejemplo muestra cómo hacer una transcripción moderna de canto gregoriano. El canto gregoriano no tiene compás ni plicas; utiliza diff --git a/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc b/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc deleted file mode 100644 index 4e2b549f1f..0000000000 --- a/Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc +++ /dev/null @@ -1,14 +0,0 @@ -%% Translation of GIT committish: 6e4e9c4eacb94d68c11fd6b9062da4f724114860 - texidoces = " -Al transcribir música mensural, es útil un «incipit» al compienzo -de la pieza para indicar la tonalidad y el tempo -originales. Aunque los músicos actuales están acostumbrados a las -barras de compás para reconocer con más facilidad los patrones -rítmicos, durante el período de la música mensural aún no se -habían inventado las líneas divisorias; de hecho, la medida solía -cambiar a cada pocas notas. Como compromiso, a menudo las líneas -divisorias se imprimen entre los pentagramas en vez de hacerlo -encima de ellos. - -" - doctitlees = "Plantilla de notación de música antigua (transcripción moderna de música mensural)" diff --git a/Documentation/es/texidocs/ancient-time-signatures.texidoc b/Documentation/es/texidocs/ancient-time-signatures.texidoc index 3152049dc3..8cb13e52ec 100644 --- a/Documentation/es/texidocs/ancient-time-signatures.texidoc +++ b/Documentation/es/texidocs/ancient-time-signatures.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Las indicaciones de compás también se pueden grabar en estilo antiguo. diff --git a/Documentation/es/texidocs/anglican-psalm-template.texidoc b/Documentation/es/texidocs/anglican-psalm-template.texidoc index 8886785f0d..c2874f3ab0 100644 --- a/Documentation/es/texidocs/anglican-psalm-template.texidoc +++ b/Documentation/es/texidocs/anglican-psalm-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Esta plantilla muestra una forma de preparar un cántico salmódico anglicano. También muestra cómo se pueden añadir estrofas adicionales diff --git a/Documentation/es/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc b/Documentation/es/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc index 1a09e2e0a8..20431fa3b9 100644 --- a/Documentation/es/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc +++ b/Documentation/es/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 6f88af063980030706a883f95b20b11cdc7d780b +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 doctitlees = "Aplicar estilos de cabeza según la nota de la escala" texidoces = " La propiedad @code{shapeNoteStyles} se puede usar para definir varios diff --git a/Documentation/es/texidocs/arabic-improvisation.texidoc b/Documentation/es/texidocs/arabic-improvisation.texidoc index ceed5316c8..33b4471ace 100644 --- a/Documentation/es/texidocs/arabic-improvisation.texidoc +++ b/Documentation/es/texidocs/arabic-improvisation.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Para las improvisaciones o @emph{taqasim} que son libres durante unos momentos, se puede omitir la indicación de compás y se puede usar diff --git a/Documentation/es/texidocs/asymmetric-slurs.texidoc b/Documentation/es/texidocs/asymmetric-slurs.texidoc index d332da45aa..ff78138276 100644 --- a/Documentation/es/texidocs/asymmetric-slurs.texidoc +++ b/Documentation/es/texidocs/asymmetric-slurs.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede hacer que una ligadura de expresión sea asimétrica para adaptarse mejor a un patrón asimétrico de notas. diff --git a/Documentation/es/texidocs/automatic-beam-subdivisions.texidoc b/Documentation/es/texidocs/automatic-beam-subdivisions.texidoc index 98a8bcde27..e05bcb70ce 100644 --- a/Documentation/es/texidocs/automatic-beam-subdivisions.texidoc +++ b/Documentation/es/texidocs/automatic-beam-subdivisions.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 3ecc98aa5db8a47adcf9defc4ec9fc018c5cc47d texidoces = " Se pueden subdividir las barras automáticamente. Estableciendo la propiedad @code{subdivideBeams}, las barras se subdividen en diff --git a/Documentation/es/texidocs/automatically-change-durations.texidoc b/Documentation/es/texidocs/automatically-change-durations.texidoc index 1e01d5e3e8..82a384b05b 100644 --- a/Documentation/es/texidocs/automatically-change-durations.texidoc +++ b/Documentation/es/texidocs/automatically-change-durations.texidoc @@ -1,6 +1,6 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " -Se puede usar shiftDurations para cambiar la longitud de +Se puede usar @code{shiftDurations} para cambiar la longitud de las notas de una pieza musical. Toma dos argumentos: el factor de escalado como una potencia de dos, y el número de puntillos que añadir como un entero positivo. diff --git a/Documentation/es/texidocs/automatically-changing-the-stem-direction-of-the-middle-note-based-on-the-melody.texidoc b/Documentation/es/texidocs/automatically-changing-the-stem-direction-of-the-middle-note-based-on-the-melody.texidoc index 2e889f5da2..2c78655fa5 100644 --- a/Documentation/es/texidocs/automatically-changing-the-stem-direction-of-the-middle-note-based-on-the-melody.texidoc +++ b/Documentation/es/texidocs/automatically-changing-the-stem-direction-of-the-middle-note-based-on-the-melody.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 942f957aae58fdc7252d6bc2b548a28e9fadc666 texidoces = " LilyPond puede alterar la dirección de la plica de las notas que van en la tercera línea de un pentagrama de forma que siga la melodía, diff --git a/Documentation/es/texidocs/avoiding-collisions-with-chord-fingerings.texidoc b/Documentation/es/texidocs/avoiding-collisions-with-chord-fingerings.texidoc index 88fa4aa89c..9443182050 100644 --- a/Documentation/es/texidocs/avoiding-collisions-with-chord-fingerings.texidoc +++ b/Documentation/es/texidocs/avoiding-collisions-with-chord-fingerings.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Las digitaciones y números de cuerda que se aplican a las notas individuales evitan automáticamente las barras y las plicas de las diff --git a/Documentation/es/texidocs/bar-chords-notation-for-guitar--with-text-spanner.texidoc b/Documentation/es/texidocs/bar-chords-notation-for-guitar--with-text-spanner.texidoc deleted file mode 100644 index 011d2d39dc..0000000000 --- a/Documentation/es/texidocs/bar-chords-notation-for-guitar--with-text-spanner.texidoc +++ /dev/null @@ -1,10 +0,0 @@ -%% Translation of GIT committish: bc4b56a8dee39a1fa3f40ac329ab0754d46fc56f - texidoces = " -He aquí cómo imprimir acordes con cejilla o con media cejilla (quite -la marca de comentario de la línea adecuada para seleccionar uno de -ellos). - -La sintaxis es @code{\\bbarre #\"@var{número de traste}\"@{ notas @} }. - -" - doctitlees = "Notación de acordes de cejilla para guitarra (con elemento de extensión de texto)" diff --git a/Documentation/es/texidocs/beam-endings-in-score-context.texidoc b/Documentation/es/texidocs/beam-endings-in-score-context.texidoc index 9879885e96..bcbd3b9e24 100644 --- a/Documentation/es/texidocs/beam-endings-in-score-context.texidoc +++ b/Documentation/es/texidocs/beam-endings-in-score-context.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 3ecc98aa5db8a47adcf9defc4ec9fc018c5cc47d texidoces = " Las reglas de final de barra especificadas en el contexto @code{Score} se aplican a todos los pentagramas, pero se pueden diff --git a/Documentation/es/texidocs/beam-grouping-in-7-8-time.texidoc b/Documentation/es/texidocs/beam-grouping-in-7-8-time.texidoc deleted file mode 100644 index 9265296a9d..0000000000 --- a/Documentation/es/texidocs/beam-grouping-in-7-8-time.texidoc +++ /dev/null @@ -1,11 +0,0 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a - texidoces = " -No está especificada ninguna agrupación predeterminada automática de -las barras para el compás de 7/8, de forma que si se requieren barras -automáticas se debe especificar el agrupamiento mediante -beatStructure. Por ejemplo, para agrupar todas las -barras en la forma 2-3-2 en el compás de 7/8, especificamos los -finales de barra en 2/8 y 5/8: - -" - doctitlees = "Agrupamiento de las barras en el compás de 7/8" diff --git a/Documentation/es/texidocs/beams-across-line-breaks.texidoc b/Documentation/es/texidocs/beams-across-line-breaks.texidoc index 0f99f2cd09..6ae3d0a620 100644 --- a/Documentation/es/texidocs/beams-across-line-breaks.texidoc +++ b/Documentation/es/texidocs/beams-across-line-breaks.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Normalmente están prohibidos los saltos de línea si las barras atraviesan las líneas divisorias. Se puede cambiar este diff --git a/Documentation/es/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc b/Documentation/es/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc index 759a52c216..41d7c19290 100644 --- a/Documentation/es/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc +++ b/Documentation/es/texidocs/blanking-staff-lines-using-the--whiteout-command.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 85559b2545524db25e44ef7360aff31cbc85e191 texidoces = " La instrucción @code{\\whiteout} intercala un rectángulo blanco debajo de un elemento de marcado. Este rectángulo blanco no tapa diff --git a/Documentation/es/texidocs/book-parts.texidoc b/Documentation/es/texidocs/book-parts.texidoc index 15936255ea..efd690a0b1 100644 --- a/Documentation/es/texidocs/book-parts.texidoc +++ b/Documentation/es/texidocs/book-parts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede usar @code{\\bookpart} para dividir un libro en varias partes. La última página de cada parte vùede quedar afectada por el diff --git a/Documentation/es/texidocs/breathing-signs.texidoc b/Documentation/es/texidocs/breathing-signs.texidoc index 2ee76878e4..73fdda3e9f 100644 --- a/Documentation/es/texidocs/breathing-signs.texidoc +++ b/Documentation/es/texidocs/breathing-signs.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " Las marcas de respiración están disponibles para varios gustos: coma (la predeterminada), raya corta, uve y @qq{vías del tren} (cesura). diff --git a/Documentation/es/texidocs/broken-crescendo-hairpin.texidoc b/Documentation/es/texidocs/broken-crescendo-hairpin.texidoc index 20a2093ac8..eccfc395ab 100644 --- a/Documentation/es/texidocs/broken-crescendo-hairpin.texidoc +++ b/Documentation/es/texidocs/broken-crescendo-hairpin.texidoc @@ -1,8 +1,9 @@ -%% Translation of GIT committish: a2030063498b24f5b08e10b0e429a12a82abbf2d +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Para hacer invisibles partes de un regulador de crescendo, se usa el método de dibujar un rectángulo blanco encima de la parte respectiva -del regulador, tapándola. +del regulador, tapándola. El rectángulo se define como código de +postscript dentro de un elemento de marcado de texto. La instrucción de marcado @code{with-dimensions} indica a LilyPond que considere solamente el extremo inferior del rectángulo cuando realice @@ -10,7 +11,7 @@ el espaciado de éste frente al regulador. La propiedad @code{staff-padding} evita que el rectángulo quepa entre el regulador y el pentagrama. -Asegúrse de poner el regulador en una capa más baja que el +Asegúrse de que el regulador está en una capa más baja que el elemento de marcado de texto para trazar el rectángulo encima del regulador. diff --git a/Documentation/es/texidocs/caesura-railtracks-with-fermata.texidoc b/Documentation/es/texidocs/caesura-railtracks-with-fermata.texidoc index a498d08ddb..4084b9d283 100644 --- a/Documentation/es/texidocs/caesura-railtracks-with-fermata.texidoc +++ b/Documentation/es/texidocs/caesura-railtracks-with-fermata.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " A veces se denota una «cesura» mediante una doble marca de respiración parecida a las vías del tren, con un calderón encima. Este fragmento diff --git a/Documentation/es/texidocs/center-text-below-hairpin-dynamics.texidoc b/Documentation/es/texidocs/center-text-below-hairpin-dynamics.texidoc index d5b311b804..a9857df9c5 100644 --- a/Documentation/es/texidocs/center-text-below-hairpin-dynamics.texidoc +++ b/Documentation/es/texidocs/center-text-below-hairpin-dynamics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 46821fda434ae17eccc778bd1a0276e785fffdf6 texidoces = " Este ejemplo proporciona una función para tipografiar un regulador con texto por debajo, como @qq{molto} o @qq{poco}. El texto añadido diff --git a/Documentation/es/texidocs/centered-measure-numbers.texidoc b/Documentation/es/texidocs/centered-measure-numbers.texidoc index e46c646901..4764440928 100644 --- a/Documentation/es/texidocs/centered-measure-numbers.texidoc +++ b/Documentation/es/texidocs/centered-measure-numbers.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4d9770a67176122b9779426cf540ad1694f07f61 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Con frecuencia, las partituras de obras para conjuntos grandes tienen los números de compás debajo del sistema y centrados horizontalmente diff --git a/Documentation/es/texidocs/centering-markup-on-note-heads-automatically.texidoc b/Documentation/es/texidocs/centering-markup-on-note-heads-automatically.texidoc deleted file mode 100644 index 1fa8e58cb3..0000000000 --- a/Documentation/es/texidocs/centering-markup-on-note-heads-automatically.texidoc +++ /dev/null @@ -1,15 +0,0 @@ -%% Translation of GIT committish: bc4b56a8dee39a1fa3f40ac329ab0754d46fc56f - texidoces = " -Por razones técnicas, las inscripciones textuales que se adjuntan a la -cabeza de las notas no pueden centrarse fácilmente sobre el ancho de -la cabeza de la nota, a diferencia de las articulaciones. - -En lugar de usar trucos de ensayo y error para el desplazamiento, este -fragmento de código utiliza un grabador de Scheme para reiniciar el -elemento padre horizontal de cada elemento de marcado a una -@code{NoteColumn}. Esto también permite colocar texto a continuación -de las notas que hayan sufrido un desplazamiento por medio de -@code{force-hshift}. - -" - doctitlees = "Centrado de elementos de marcado sobre la cabeza de las notas de forma automática" diff --git a/Documentation/es/texidocs/changing--flageolet-mark-size.texidoc b/Documentation/es/texidocs/changing--flageolet-mark-size.texidoc index fd3637706a..fba1456b2e 100644 --- a/Documentation/es/texidocs/changing--flageolet-mark-size.texidoc +++ b/Documentation/es/texidocs/changing--flageolet-mark-size.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Para hacer más pequeño el círculo de @code{\\flageolet} (armónico) utilice la siguiente función de Scheme. diff --git a/Documentation/es/texidocs/changing-a-single-notes-size-in-a-chord.texidoc b/Documentation/es/texidocs/changing-a-single-notes-size-in-a-chord.texidoc index 3e267d660c..12511b3e99 100644 --- a/Documentation/es/texidocs/changing-a-single-notes-size-in-a-chord.texidoc +++ b/Documentation/es/texidocs/changing-a-single-notes-size-in-a-chord.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " Se pueden modificar notas individuales de un acorde con la instrucción @code{\\tweak}, alterando la propiedad @code{font-size}. diff --git a/Documentation/es/texidocs/changing-beam-knee-gap.texidoc b/Documentation/es/texidocs/changing-beam-knee-gap.texidoc index 0bb3c95d74..c154dfe5bd 100644 --- a/Documentation/es/texidocs/changing-beam-knee-gap.texidoc +++ b/Documentation/es/texidocs/changing-beam-knee-gap.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se insertan automáticamente barras en ángulo cuando se detecta un intervalo muy grande entre las notas. Se puede hacer un ajuste diff --git a/Documentation/es/texidocs/changing-chord-separator.texidoc b/Documentation/es/texidocs/changing-chord-separator.texidoc index 2545fa4bc3..4c7d7e06aa 100644 --- a/Documentation/es/texidocs/changing-chord-separator.texidoc +++ b/Documentation/es/texidocs/changing-chord-separator.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede establecer el separador entre las distintas partes del nombre de un acorde para que sea cualquier elemento de marcado. diff --git a/Documentation/es/texidocs/changing-form-of-multi-measure-rests.texidoc b/Documentation/es/texidocs/changing-form-of-multi-measure-rests.texidoc index 3284ecc64d..d31a57d292 100644 --- a/Documentation/es/texidocs/changing-form-of-multi-measure-rests.texidoc +++ b/Documentation/es/texidocs/changing-form-of-multi-measure-rests.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 2ba2ca2073f389842aa87f85b6c740b8488f0125 doctitlees = "Cambiar la forma de los silencios multicompás" texidoces = " Si hay diez compases de silencio o menos, se imprime en el pentagrama diff --git a/Documentation/es/texidocs/changing-fret-orientations.texidoc b/Documentation/es/texidocs/changing-fret-orientations.texidoc index 2507b26aa6..18a32f2597 100644 --- a/Documentation/es/texidocs/changing-fret-orientations.texidoc +++ b/Documentation/es/texidocs/changing-fret-orientations.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Los diagramas de posiciones de acordes se pueden orientar de tres formas. De manera predeterminada se alinena la cuerda o traste diff --git a/Documentation/es/texidocs/changing-midi-output-to-one-channel-per-voice.texidoc b/Documentation/es/texidocs/changing-midi-output-to-one-channel-per-voice.texidoc index 8437ed9277..17c4251a58 100644 --- a/Documentation/es/texidocs/changing-midi-output-to-one-channel-per-voice.texidoc +++ b/Documentation/es/texidocs/changing-midi-output-to-one-channel-per-voice.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 45dd19546e9b75b3e1e977732f0962f35dd3290e +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Al producir una salida MIDI, el comportamiento predeterminado es que cada pentagrama representa un canal MIDI, con todas las voces de dicho diff --git a/Documentation/es/texidocs/changing-partcombine-texts.texidoc b/Documentation/es/texidocs/changing-partcombine-texts.texidoc index 5f69a9d1c9..e381680172 100644 --- a/Documentation/es/texidocs/changing-partcombine-texts.texidoc +++ b/Documentation/es/texidocs/changing-partcombine-texts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Al utilizar la posibilidad de combinación automática de partes, se puede modificar el texto que se imprime para las secciones de solo diff --git a/Documentation/es/texidocs/changing-properties-for-individual-grobs.texidoc b/Documentation/es/texidocs/changing-properties-for-individual-grobs.texidoc index fa249a9698..920026bf1d 100644 --- a/Documentation/es/texidocs/changing-properties-for-individual-grobs.texidoc +++ b/Documentation/es/texidocs/changing-properties-for-individual-grobs.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 7b3d43f2b604e8ccdc24315fa0c094e04dcfcbaf texidoces = " La instrucción @code{\\applyOutput} hace posible el ajuste fino de cualquier objeto de presentación, en cualquier contexto. Requiere una diff --git a/Documentation/es/texidocs/changing-stanza-fonts.texidoc b/Documentation/es/texidocs/changing-stanza-fonts.texidoc index bd5e32622f..5044d249ce 100644 --- a/Documentation/es/texidocs/changing-stanza-fonts.texidoc +++ b/Documentation/es/texidocs/changing-stanza-fonts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: c4c1512a79d84d8d1acffa663c588b617a4dead8 texidoces = " Se pueden cambiar las fuentes tipográficas de forma independiente para cada estrofa, incuida la fuente que se usa para imprimir el número de diff --git a/Documentation/es/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc b/Documentation/es/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc index eaa6b459fb..60f8db0777 100644 --- a/Documentation/es/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc +++ b/Documentation/es/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede modificar el texto empleado para los crescendos y decrescendos modificando las propiedades de contexto diff --git a/Documentation/es/texidocs/changing-the-ambitus-gap.texidoc b/Documentation/es/texidocs/changing-the-ambitus-gap.texidoc index 0b87bcc2da..62c40b3ba8 100644 --- a/Documentation/es/texidocs/changing-the-ambitus-gap.texidoc +++ b/Documentation/es/texidocs/changing-the-ambitus-gap.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Es posible ajustar la separación predeterminada entre las notas de la indicación de tesitura y la línea que las une. diff --git a/Documentation/es/texidocs/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.texidoc b/Documentation/es/texidocs/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.texidoc index f4540a7828..a22a1d9e3e 100644 --- a/Documentation/es/texidocs/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.texidoc +++ b/Documentation/es/texidocs/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede cambiar el aspecto de las ligaduras de expresión de continuas a punteadas o intermitentes. diff --git a/Documentation/es/texidocs/changing-the-breath-mark-symbol.texidoc b/Documentation/es/texidocs/changing-the-breath-mark-symbol.texidoc index 348f94a122..70a811bd47 100644 --- a/Documentation/es/texidocs/changing-the-breath-mark-symbol.texidoc +++ b/Documentation/es/texidocs/changing-the-breath-mark-symbol.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " El glifo de la marca de respiración se puede ajustar sobreescribiendo la propiedad de texto del objeto de presentación diff --git a/Documentation/es/texidocs/changing-the-chord-names-to-german-or-semi-german-notation.texidoc b/Documentation/es/texidocs/changing-the-chord-names-to-german-or-semi-german-notation.texidoc index 194fb141e2..666a069d0c 100644 --- a/Documentation/es/texidocs/changing-the-chord-names-to-german-or-semi-german-notation.texidoc +++ b/Documentation/es/texidocs/changing-the-chord-names-to-german-or-semi-german-notation.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La nomenclatura inglesa (predeterminada) para los acordes del cifrado americano se puede cambiar por la alemana (@code{\\germanChords} diff --git a/Documentation/es/texidocs/changing-the-default-text-font-family.texidoc b/Documentation/es/texidocs/changing-the-default-text-font-family.texidoc index 1ae33f4293..eef1e6fb0e 100644 --- a/Documentation/es/texidocs/changing-the-default-text-font-family.texidoc +++ b/Documentation/es/texidocs/changing-the-default-text-font-family.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: c4c1512a79d84d8d1acffa663c588b617a4dead8 texidoces = " Las familias de fuente tipográfica para el texto se pueden sobreescribir con @code{make-pango-font-tree}. diff --git a/Documentation/es/texidocs/changing-the-interval-of-lines-on-the-stave.texidoc b/Documentation/es/texidocs/changing-the-interval-of-lines-on-the-stave.texidoc index 02d44c45c7..8208bf9284 100644 --- a/Documentation/es/texidocs/changing-the-interval-of-lines-on-the-stave.texidoc +++ b/Documentation/es/texidocs/changing-the-interval-of-lines-on-the-stave.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se usa @code{staffLineLayoutFunction} para cambiar la posición de las notas. Este fragmento de código muestra cómo ajustar su valor al de diff --git a/Documentation/es/texidocs/changing-the-number-of-augmentation-dots-per-note.texidoc b/Documentation/es/texidocs/changing-the-number-of-augmentation-dots-per-note.texidoc index c95ee05e97..ca4b4add49 100644 --- a/Documentation/es/texidocs/changing-the-number-of-augmentation-dots-per-note.texidoc +++ b/Documentation/es/texidocs/changing-the-number-of-augmentation-dots-per-note.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La cantidad de puntillos de una nota se puede modificar independientemente de los puntillos que se escriben después de la nota. diff --git a/Documentation/es/texidocs/changing-the-number-of-lines-in-a-staff.texidoc b/Documentation/es/texidocs/changing-the-number-of-lines-in-a-staff.texidoc index b08aa2f569..e5a17bf2b4 100644 --- a/Documentation/es/texidocs/changing-the-number-of-lines-in-a-staff.texidoc +++ b/Documentation/es/texidocs/changing-the-number-of-lines-in-a-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " El número de líneas de una pauta se puede modificar sobreescribiendo la propiedad @code{line-count} del objeto @code{StaffSymbol}. diff --git a/Documentation/es/texidocs/changing-the-positions-of-figured-bass-alterations.texidoc b/Documentation/es/texidocs/changing-the-positions-of-figured-bass-alterations.texidoc index 1468ef7509..b0af80d0f2 100644 --- a/Documentation/es/texidocs/changing-the-positions-of-figured-bass-alterations.texidoc +++ b/Documentation/es/texidocs/changing-the-positions-of-figured-bass-alterations.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Las alteraciones y los signos «más» pueden aparecer antes o después de los números, según el valor de las propiedades diff --git a/Documentation/es/texidocs/changing-the-size-of-woodwind-diagrams.texidoc b/Documentation/es/texidocs/changing-the-size-of-woodwind-diagrams.texidoc index 238bbf095d..f0828ff7f1 100644 --- a/Documentation/es/texidocs/changing-the-size-of-woodwind-diagrams.texidoc +++ b/Documentation/es/texidocs/changing-the-size-of-woodwind-diagrams.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede cambiar el tamaño y grosor de las líneas de los diagramas de posiciones para instrumentos de viento madera. diff --git a/Documentation/es/texidocs/changing-the-staff-size.texidoc b/Documentation/es/texidocs/changing-the-staff-size.texidoc index b9e113d7db..10bf3998d9 100644 --- a/Documentation/es/texidocs/changing-the-staff-size.texidoc +++ b/Documentation/es/texidocs/changing-the-staff-size.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Aunque la manera más sencilla de redimensionar los pentagramas es usar @code{#(set-global-staff-size xx)}, el tamaño de una pauta individual diff --git a/Documentation/es/texidocs/changing-the-tempo-without-a-metronome-mark.texidoc b/Documentation/es/texidocs/changing-the-tempo-without-a-metronome-mark.texidoc index 42b47f69ee..adebe26ba8 100644 --- a/Documentation/es/texidocs/changing-the-tempo-without-a-metronome-mark.texidoc +++ b/Documentation/es/texidocs/changing-the-tempo-without-a-metronome-mark.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Para cambiar el tempo en la salida MIDI sin imprimir nada, hacemos invisible la indicación metronómica: diff --git a/Documentation/es/texidocs/changing-the-text-for-sustain-markings.texidoc b/Documentation/es/texidocs/changing-the-text-for-sustain-markings.texidoc index e900f61b84..c967d09ea1 100644 --- a/Documentation/es/texidocs/changing-the-text-for-sustain-markings.texidoc +++ b/Documentation/es/texidocs/changing-the-text-for-sustain-markings.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede usar @code{Staff.pedalSustainStrings} para fijar el texto de las indicaciones de pisar pedal y levantar pedal. Observe que las diff --git a/Documentation/es/texidocs/changing-the-tuplet-number.texidoc b/Documentation/es/texidocs/changing-the-tuplet-number.texidoc index 1d7583bde2..f477b3f0ad 100644 --- a/Documentation/es/texidocs/changing-the-tuplet-number.texidoc +++ b/Documentation/es/texidocs/changing-the-tuplet-number.texidoc @@ -1,8 +1,11 @@ -%% Translation of GIT committish: 0df86f1528d4e85021fa52e5c302c2507df6a19c +%% Translation of GIT committish: c174139b36102ad0e0997bbcce20175dec772a71 doctitlees = "Cambiar el número del grupo especial" texidoces = " De forma predeterminada sólo se imprime sobre el corchete de grupo el -numerador del grupo especial. De forma alternativa, se puede imprimr +numerador del grupo especial, o sea, el numerador del argumento de la instrucción +@code{\\tuplet}. + +De forma alternativa, se puede imprimr un quebrado en la forma numerador:denominador del número del grupo, o eliminar el número. diff --git a/Documentation/es/texidocs/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.texidoc b/Documentation/es/texidocs/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.texidoc index 1bf248a368..ffd7492d01 100644 --- a/Documentation/es/texidocs/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.texidoc +++ b/Documentation/es/texidocs/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: e797772ef677c797c169b7096a28f6a5959353ef +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La propiedad @code{measureLength}, junto con @code{measurePosition}, determina cuándo es necesario dibujar una diff --git a/Documentation/es/texidocs/chant-or-psalms-notation.texidoc b/Documentation/es/texidocs/chant-or-psalms-notation.texidoc index 5ce12e5243..d4858d94ba 100644 --- a/Documentation/es/texidocs/chant-or-psalms-notation.texidoc +++ b/Documentation/es/texidocs/chant-or-psalms-notation.texidoc @@ -1,6 +1,6 @@ -%% Translation of GIT committish: 75988240e6ba28320ce5d835670712cc09cbd966 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " -Este tipo de notación se utiliza para el canto de los Salmos, en +Este tipo de notación se utiliza para los cantos salmódicos, en que las estrofas no siempre tienen la misma longitud. " diff --git a/Documentation/es/texidocs/chord-glissando-in-tablature.texidoc b/Documentation/es/texidocs/chord-glissando-in-tablature.texidoc index b3c67d89d5..3de8897801 100644 --- a/Documentation/es/texidocs/chord-glissando-in-tablature.texidoc +++ b/Documentation/es/texidocs/chord-glissando-in-tablature.texidoc @@ -1,6 +1,6 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " -Los deslizamientos para acordes se pueden indicar tanto en el contexto +Los deslizamientos para acordes se indican por omisión tanto en el contexto @code{Staff} como en @code{TabStaff}. Los números de cuerda son necesarios para TabStaff porque los cálculos de cuerda automáticos son diferentes para los acordes y para notas sueltas. diff --git a/Documentation/es/texidocs/chord-name-exceptions.texidoc b/Documentation/es/texidocs/chord-name-exceptions.texidoc index 491956220d..b766da2be8 100644 --- a/Documentation/es/texidocs/chord-name-exceptions.texidoc +++ b/Documentation/es/texidocs/chord-name-exceptions.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede usar la propiedad @code{chordNameExceptions} para almacenar una lista de notaciones espaciales para acordes diff --git a/Documentation/es/texidocs/chord-name-major7.texidoc b/Documentation/es/texidocs/chord-name-major7.texidoc index 835b88d79c..9ddec2fb3d 100644 --- a/Documentation/es/texidocs/chord-name-major7.texidoc +++ b/Documentation/es/texidocs/chord-name-major7.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La presentación del acorde de séptima mayor se puede ajustar mediante majorSevenSymbol. diff --git a/Documentation/es/texidocs/chordchanges-for-fretboards.texidoc b/Documentation/es/texidocs/chordchanges-for-fretboards.texidoc index 95ab357730..fbc605bdba 100644 --- a/Documentation/es/texidocs/chordchanges-for-fretboards.texidoc +++ b/Documentation/es/texidocs/chordchanges-for-fretboards.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede hacer que los diagramas de posiciones se muestren sólo cuando el acorde cambia o al comienzo de una nueva línea. diff --git a/Documentation/es/texidocs/clefs-can-be-transposed-by-arbitrary-amounts.texidoc b/Documentation/es/texidocs/clefs-can-be-transposed-by-arbitrary-amounts.texidoc index 49404976d3..1e20ff2683 100644 --- a/Documentation/es/texidocs/clefs-can-be-transposed-by-arbitrary-amounts.texidoc +++ b/Documentation/es/texidocs/clefs-can-be-transposed-by-arbitrary-amounts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden transponer las claves en intervalos arbitrarios, no solo octavas. diff --git a/Documentation/es/texidocs/clip-systems.texidoc b/Documentation/es/texidocs/clip-systems.texidoc index baca30209f..64321c3b7c 100644 --- a/Documentation/es/texidocs/clip-systems.texidoc +++ b/Documentation/es/texidocs/clip-systems.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 3f57efa0cde39bf0642fb6fb3672a19262ceda83 texidoces = " Este código muestra cómo recortar (extraer) fragmentos a partir de una partitura completa. diff --git a/Documentation/es/texidocs/clusters.texidoc b/Documentation/es/texidocs/clusters.texidoc index d774156085..9e2aabc811 100644 --- a/Documentation/es/texidocs/clusters.texidoc +++ b/Documentation/es/texidocs/clusters.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Los «clusters» o racimos son un mecanismo para indicar la interpretación de un ámbito de notas al mismo tiempo. diff --git a/Documentation/es/texidocs/coloring-notes-depending-on-their-pitch.texidoc b/Documentation/es/texidocs/coloring-notes-depending-on-their-pitch.texidoc index c17244c4db..1e8dfd9383 100644 --- a/Documentation/es/texidocs/coloring-notes-depending-on-their-pitch.texidoc +++ b/Documentation/es/texidocs/coloring-notes-depending-on-their-pitch.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Es posible colorear la cabeza de las notas dependiendo de su altura y/o de su nombre: la función que se usa en este ejemplo hace posible diff --git a/Documentation/es/texidocs/combining-dynamics-with-markup-texts.texidoc b/Documentation/es/texidocs/combining-dynamics-with-markup-texts.texidoc index 87ca62cb20..d1880ec0b9 100644 --- a/Documentation/es/texidocs/combining-dynamics-with-markup-texts.texidoc +++ b/Documentation/es/texidocs/combining-dynamics-with-markup-texts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Ciertas indicaciones dinámicas pueden llevar textos (como @qq{più forte} o @qq{piano subito}). Se pueden producir usando un bloque diff --git a/Documentation/es/texidocs/combining-two-parts-on-the-same-staff.texidoc b/Documentation/es/texidocs/combining-two-parts-on-the-same-staff.texidoc index 9b27ded64a..147a16f02b 100644 --- a/Documentation/es/texidocs/combining-two-parts-on-the-same-staff.texidoc +++ b/Documentation/es/texidocs/combining-two-parts-on-the-same-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 3f57efa0cde39bf0642fb6fb3672a19262ceda83 texidoces = " La herramienta de combinación de partes (instrucción @code{\\partcombine}) permite la combinación de varias partes diff --git a/Documentation/es/texidocs/compound-time-signatures.texidoc b/Documentation/es/texidocs/compound-time-signatures.texidoc index a92fec7ec0..61d7167e6c 100644 --- a/Documentation/es/texidocs/compound-time-signatures.texidoc +++ b/Documentation/es/texidocs/compound-time-signatures.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: d000c543411bb4c2fb459578bd87ef357ac4aa92 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 doctitlees = "Indicaciones de compases compuestos" texidoces = " -Las indicaciones de compás poco frecuentes como @qq{5/8} se pueden -ejecutar como compases compuestos (p.ej. @qq{3/8 + 2/8}), que combinan +Las indicaciones de compás poco frecuentes como \"5/8\" se pueden +ejecutar como compases compuestos (p.ej. \"3/8 + 2/8\"), que combinan dos o más metros diferentes. LilyPond puede hacer la música de este tipo fácil de leer e interpretar, imprimiendo explícitamente las indicaciones de compás compuesto y adaptando el comportamiento diff --git a/Documentation/es/texidocs/conducting-signs,-measure-grouping-signs.texidoc b/Documentation/es/texidocs/conducting-signs,-measure-grouping-signs.texidoc index ff25713e13..7dd49c6ac0 100644 --- a/Documentation/es/texidocs/conducting-signs,-measure-grouping-signs.texidoc +++ b/Documentation/es/texidocs/conducting-signs,-measure-grouping-signs.texidoc @@ -1,9 +1,9 @@ -%% Translation of GIT committish: 5c42908f1c8d0a5c1d88851a2d793ca55476612c +%% Translation of GIT committish: 3ecc98aa5db8a47adcf9defc4ec9fc018c5cc47d texidoces = " La agrupación de pulsos dentro de un compás está controlada por la propiedad de contexto @code{beatStructure}. Hay establecidos valores de @code{beatStructure} para muchos tipos de compases en -@file{scm/time-signature-settings.scm}. Los valores de +@code{scm/time-signature-settings.scm}. Los valores de @code{beatStructure} se pueden cambiar o establecer con @code{\\set}. Como alternativa, se puede usar @code{\\time} para establecer tanto el compás como la estructura de pulsos. Para ello, especificamos la @@ -21,7 +21,7 @@ de pulsos. Estos símbolos facilitan la lectura de música moderna rítmicamente compleja. En este ejemplo, el compás de 9/8 se agrupa según dos patrones distintos utilizando los dos métodos, mientras que el compás de 5/8 se agrupa de acuerdo con el ajuste predeterminado que -está en @file{scm/time-signature-settings.scm}: +está en @code{scm/time-signature-settings.scm}: " doctitlees = "Símbolos de dirección y símbolos de agrupación de compás" diff --git a/Documentation/es/texidocs/consistently-left-aligned-bar-numbers.texidoc b/Documentation/es/texidocs/consistently-left-aligned-bar-numbers.texidoc index c942efe7eb..aa49063d03 100644 --- a/Documentation/es/texidocs/consistently-left-aligned-bar-numbers.texidoc +++ b/Documentation/es/texidocs/consistently-left-aligned-bar-numbers.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Cuando se alinean los números de compás, pueden aparecer problemas de superposición con los corchetes de sistema. Este fragmento de código diff --git a/Documentation/es/texidocs/contemporary-glissando.texidoc b/Documentation/es/texidocs/contemporary-glissando.texidoc index 2c403c4332..532ac99fe7 100644 --- a/Documentation/es/texidocs/contemporary-glissando.texidoc +++ b/Documentation/es/texidocs/contemporary-glissando.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede tipografiar un gissando contemporáneo sin nota final utilizando una nota oculta y temporalización de cadenza. diff --git a/Documentation/es/texidocs/controlling-spanner-visibility-after-a-line-break.texidoc b/Documentation/es/texidocs/controlling-spanner-visibility-after-a-line-break.texidoc index bd7caa0a24..9b29077672 100644 --- a/Documentation/es/texidocs/controlling-spanner-visibility-after-a-line-break.texidoc +++ b/Documentation/es/texidocs/controlling-spanner-visibility-after-a-line-break.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La visibilidad de los objetos de extensión que acaban en la primera nota después de un salto de línea está controlada por la función de diff --git a/Documentation/es/texidocs/controlling-the-placement-of-chord-fingerings.texidoc b/Documentation/es/texidocs/controlling-the-placement-of-chord-fingerings.texidoc index cd254f7ccf..e0c38b3735 100644 --- a/Documentation/es/texidocs/controlling-the-placement-of-chord-fingerings.texidoc +++ b/Documentation/es/texidocs/controlling-the-placement-of-chord-fingerings.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede controlar con precisión la colocación de los números de digitación. Para que se tenga en cuenta la orientación de las diff --git a/Documentation/es/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc b/Documentation/es/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc index 3b8a74bdf5..bc43d826af 100644 --- a/Documentation/es/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc +++ b/Documentation/es/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " El orden vertical que ocupan las inscripciones gráficas está controlado con la propiedad @code{'script-priority}. Cuanto más diff --git a/Documentation/es/texidocs/controlling-tuplet-bracket-visibility.texidoc b/Documentation/es/texidocs/controlling-tuplet-bracket-visibility.texidoc index cf72a45a07..e17edbebfb 100644 --- a/Documentation/es/texidocs/controlling-tuplet-bracket-visibility.texidoc +++ b/Documentation/es/texidocs/controlling-tuplet-bracket-visibility.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " El comportamiento predeterminado de la visibilidad de los corchetes de grupo de valoración especial es imprimir el corchete a no ser que haya diff --git a/Documentation/es/texidocs/creating-a-delayed-turn.texidoc b/Documentation/es/texidocs/creating-a-delayed-turn.texidoc index 1d4215e2f5..5b07f484ce 100644 --- a/Documentation/es/texidocs/creating-a-delayed-turn.texidoc +++ b/Documentation/es/texidocs/creating-a-delayed-turn.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 5db593aa3737cf8c60f9c4c4fcbe317c2d832766 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La creación de un grupeto circular de anticipación entre dos notas, donde la nota inferior del grupeto utiliza una alteración, requiere diff --git a/Documentation/es/texidocs/creating-a-sequence-of-notes-on-various-pitches.texidoc b/Documentation/es/texidocs/creating-a-sequence-of-notes-on-various-pitches.texidoc index 15ccc7816c..966fabde01 100644 --- a/Documentation/es/texidocs/creating-a-sequence-of-notes-on-various-pitches.texidoc +++ b/Documentation/es/texidocs/creating-a-sequence-of-notes-on-various-pitches.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: e797772ef677c797c169b7096a28f6a5959353ef +%% Translation of GIT committish: e115f1949f9f63d5faee3369fbf2094c54966f9f texidoces = " En una música que tenga muchas apariciones de la misma secuencia de notas a distintas alturas, podría ser de diff --git a/Documentation/es/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc b/Documentation/es/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc index 725e33029c..8c733ef344 100644 --- a/Documentation/es/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc +++ b/Documentation/es/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede trazar un símbolo de arpegio entre notas de distintas voces que están sobre el mismo pentagrama si el grabador diff --git a/Documentation/es/texidocs/creating-blank-staves.texidoc b/Documentation/es/texidocs/creating-blank-staves.texidoc index ea18d3d630..d7086d0d8c 100644 --- a/Documentation/es/texidocs/creating-blank-staves.texidoc +++ b/Documentation/es/texidocs/creating-blank-staves.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Para crear pentagramas en blanco, genere compases vacíos y después elimine el grabador de números de compás @code{Bar_number_engraver} diff --git a/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc b/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc index ed9e399bf3..e018e22dcf 100644 --- a/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc +++ b/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Dentro de un @code{PianoStaff}, es posible hacer que un arpegio cruce entre los pentagramas ajustando la propiedad diff --git a/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc b/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc index 3c36bcdca9..e11c65a8e9 100644 --- a/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc +++ b/Documentation/es/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden crear arpegios que se cruzan entre pentagramas dentro de contextos distintos a @code{GrandStaff}, @code{PianoStaff} y diff --git a/Documentation/es/texidocs/creating-double-digit-fingerings.texidoc b/Documentation/es/texidocs/creating-double-digit-fingerings.texidoc index 0393886d45..8236034d82 100644 --- a/Documentation/es/texidocs/creating-double-digit-fingerings.texidoc +++ b/Documentation/es/texidocs/creating-double-digit-fingerings.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 598ef6a6d2ae8068611d6c3d2f184bb3c7969fbd +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Es posible crear digitaciones con un número mayor de 5. diff --git a/Documentation/es/texidocs/creating-metronome-marks-in-markup-mode.texidoc b/Documentation/es/texidocs/creating-metronome-marks-in-markup-mode.texidoc index 58d66554cc..8dd3f26ed1 100644 --- a/Documentation/es/texidocs/creating-metronome-marks-in-markup-mode.texidoc +++ b/Documentation/es/texidocs/creating-metronome-marks-in-markup-mode.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden crear indicaciones metronómicas nuevas en modo de marcado, pero no cambian el tempo en la salida MIDI. diff --git a/Documentation/es/texidocs/creating-real-parenthesized-dynamics.texidoc b/Documentation/es/texidocs/creating-real-parenthesized-dynamics.texidoc index 5c77f30807..db9d1b5b5d 100644 --- a/Documentation/es/texidocs/creating-real-parenthesized-dynamics.texidoc +++ b/Documentation/es/texidocs/creating-real-parenthesized-dynamics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 2af02df6f579b66ef76db9316af8f0ddd70b23f4 +%% Translation of GIT committish: 98ac53591234404cd70c5eebd370a598ec74095b texidoces = " Aunque la manera más fácil de añadir paréntesis a una indicación de dinámica es utilizar un bloque @code{\\markup}, este método diff --git a/Documentation/es/texidocs/creating-simultaneous-rehearsal-marks.texidoc b/Documentation/es/texidocs/creating-simultaneous-rehearsal-marks.texidoc index 0306b8a350..2427c3a236 100644 --- a/Documentation/es/texidocs/creating-simultaneous-rehearsal-marks.texidoc +++ b/Documentation/es/texidocs/creating-simultaneous-rehearsal-marks.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 6e4e9c4eacb94d68c11fd6b9062da4f724114860 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " A diferencia de las inscripciones de texto, las lestras de ensayo no se pueden apilar en un punto concreto de la partitura: sólo se diff --git a/Documentation/es/texidocs/creating-slurs-across-voices.texidoc b/Documentation/es/texidocs/creating-slurs-across-voices.texidoc index 4b87581c94..e28d24a826 100644 --- a/Documentation/es/texidocs/creating-slurs-across-voices.texidoc +++ b/Documentation/es/texidocs/creating-slurs-across-voices.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " En determinadas situaciones es necesario crear ligaduras de expresión entre notas que están en voces distintas. diff --git a/Documentation/es/texidocs/creating-text-spanners.texidoc b/Documentation/es/texidocs/creating-text-spanners.texidoc index ad2ba267a4..7a8cfdada0 100644 --- a/Documentation/es/texidocs/creating-text-spanners.texidoc +++ b/Documentation/es/texidocs/creating-text-spanners.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Las instrucciones @code{\\startTextSpan} y @code{\\stopTextSpan} permiten la creación de elementos de extensión textuales tan diff --git a/Documentation/es/texidocs/cross-staff-stems.texidoc b/Documentation/es/texidocs/cross-staff-stems.texidoc index 6fef99ce63..74d45c2ee5 100644 --- a/Documentation/es/texidocs/cross-staff-stems.texidoc +++ b/Documentation/es/texidocs/cross-staff-stems.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 5c42908f1c8d0a5c1d88851a2d793ca55476612c +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Este fragmento de código muestra el uso del grabador @code{Span_stem_engraver} y de @code{\crossStaff} para conectar diff --git a/Documentation/es/texidocs/cross-staff-tremolos.texidoc b/Documentation/es/texidocs/cross-staff-tremolos.texidoc index 1d2c417982..74577df352 100644 --- a/Documentation/es/texidocs/cross-staff-tremolos.texidoc +++ b/Documentation/es/texidocs/cross-staff-tremolos.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Dado que @code{\\repeat tremolo} espera exactamente dos argumentos musicales para los trémolos de acorde, la nota o acorde que cambia de diff --git a/Documentation/es/texidocs/custodes.texidoc b/Documentation/es/texidocs/custodes.texidoc index ae8dda98cf..610399e702 100644 --- a/Documentation/es/texidocs/custodes.texidoc +++ b/Documentation/es/texidocs/custodes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden tipografiar «custos» en diferentes estilos. diff --git a/Documentation/es/texidocs/customizing-fretboard-fret-diagrams.texidoc b/Documentation/es/texidocs/customizing-fretboard-fret-diagrams.texidoc index 0eb14dd7a9..345e785f7d 100644 --- a/Documentation/es/texidocs/customizing-fretboard-fret-diagrams.texidoc +++ b/Documentation/es/texidocs/customizing-fretboard-fret-diagrams.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden establecer las propiedades de los diagramas de posiciones de acordes por medio de @code{'fret-diagram-details}. diff --git a/Documentation/es/texidocs/customizing-markup-fret-diagrams.texidoc b/Documentation/es/texidocs/customizing-markup-fret-diagrams.texidoc index 2c2496544e..5f373d7219 100644 --- a/Documentation/es/texidocs/customizing-markup-fret-diagrams.texidoc +++ b/Documentation/es/texidocs/customizing-markup-fret-diagrams.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden establecer las propiedades de los diagramas de posiciones a través de @code{'fret-diagram-details}. Para los diff --git a/Documentation/es/texidocs/default-direction-of-stems-on-the-center-line-of-the-staff.texidoc b/Documentation/es/texidocs/default-direction-of-stems-on-the-center-line-of-the-staff.texidoc index bf8069c619..b9aa818b0e 100644 --- a/Documentation/es/texidocs/default-direction-of-stems-on-the-center-line-of-the-staff.texidoc +++ b/Documentation/es/texidocs/default-direction-of-stems-on-the-center-line-of-the-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La dirección predeterminada de las plicas sobre la tercera línea del pentagrama está determinada por la propiedad diff --git a/Documentation/es/texidocs/defining-an-engraver-in-scheme--ambitus-engraver.texidoc b/Documentation/es/texidocs/defining-an-engraver-in-scheme--ambitus-engraver.texidoc index d98f50980c..ee69c04da0 100644 --- a/Documentation/es/texidocs/defining-an-engraver-in-scheme--ambitus-engraver.texidoc +++ b/Documentation/es/texidocs/defining-an-engraver-in-scheme--ambitus-engraver.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 5c42908f1c8d0a5c1d88851a2d793ca55476612c +%% Translation of GIT committish: 43e591c72387cd624d98ed48f63cfc063d857359 texidoces = " Este ejemplo muestra cómo puede definirse el grabador de ámbito o tesitura en el espacio del usuario, con un grabador de Scheme. diff --git a/Documentation/es/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc b/Documentation/es/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc index 10c9b400e1..950a94920e 100644 --- a/Documentation/es/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc +++ b/Documentation/es/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden añadir diagramas de posiciones predefinidas para instrumentos nuevos además de los estándar que se usan para la diff --git a/Documentation/es/texidocs/demo-midiinstruments.texidoc b/Documentation/es/texidocs/demo-midiinstruments.texidoc index 93f656f93d..6ab88f1603 100644 --- a/Documentation/es/texidocs/demo-midiinstruments.texidoc +++ b/Documentation/es/texidocs/demo-midiinstruments.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Problema: ¿cómo saber qué instrumento MIDI @code{midiInstrument} viene mejor para nuestra composición? Solución: un archivo de demostración diff --git a/Documentation/es/texidocs/demonstrating-all-headers.texidoc b/Documentation/es/texidocs/demonstrating-all-headers.texidoc index 508bcc54e2..422ad5dad9 100644 --- a/Documentation/es/texidocs/demonstrating-all-headers.texidoc +++ b/Documentation/es/texidocs/demonstrating-all-headers.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Muestra de todos los tipos de encabezamiento. diff --git a/Documentation/es/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc b/Documentation/es/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc index 2a8e38db1b..b819f4d451 100644 --- a/Documentation/es/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc +++ b/Documentation/es/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Si hay un solo pentagrama en un de los tipos de sistema @code{ChoirStaff} o @code{StaffGroup}, el comportamiento diff --git a/Documentation/es/texidocs/displaying-a-whole-grandstaff-system-if-only-one-of-its-staves-is-alive.texidoc b/Documentation/es/texidocs/displaying-a-whole-grandstaff-system-if-only-one-of-its-staves-is-alive.texidoc index 7ad6066b64..0df4d384c8 100644 --- a/Documentation/es/texidocs/displaying-a-whole-grandstaff-system-if-only-one-of-its-staves-is-alive.texidoc +++ b/Documentation/es/texidocs/displaying-a-whole-grandstaff-system-if-only-one-of-its-staves-is-alive.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " A veces, en las partituras orquestales se dejan en silencio instrumentos individuales o grupos de ellos durante un período de diff --git a/Documentation/es/texidocs/displaying-complex-chords.texidoc b/Documentation/es/texidocs/displaying-complex-chords.texidoc index 301ee2efc0..ce2b971b19 100644 --- a/Documentation/es/texidocs/displaying-complex-chords.texidoc +++ b/Documentation/es/texidocs/displaying-complex-chords.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 46821fda434ae17eccc778bd1a0276e785fffdf6 texidoces = " He aquí una forma de imprimir un acorde en el que suena la misma nota dos veces con distintas alteraciones. diff --git a/Documentation/es/texidocs/displaying-grob-ancestry.texidoc b/Documentation/es/texidocs/displaying-grob-ancestry.texidoc index 5872cb9212..549dae87cb 100644 --- a/Documentation/es/texidocs/displaying-grob-ancestry.texidoc +++ b/Documentation/es/texidocs/displaying-grob-ancestry.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 66944d2d921889a3c45ef0db23171a9f48a46825 texidoces = " Al trabajar con los callbacks de un grob, puede ser de mucha ayuda -entender el @qq{árbol genealógico} de un grob. La mayor parte de los -grobs tienen @qq{padres} que influyen en el posicionamiento del grob. +entender el árbol genealógico de un grob. La mayor parte de los +grobs tienen padres que influyen en el posicionamiento del grob. los padres X e Y influyen en las posiciones horizontal y vertical del grob, respectivamente. Además, cada pade puede tener padres a su vez. @@ -11,19 +11,15 @@ Por desgracia, existen varios aspectos de la genealogía de un grob que pueden llevar a confusión: -@itemize - -@item Los tipos de padre que tiene un grob pueden depender del +* Los tipos de padre que tiene un grob pueden depender del contexto. -@item Para ciertos grobs, los padres X e Y son el mismo. - -@item Un @qq{ancestro} concreto puede estar relacionado con un grob de -mas de una manera. +* Para ciertos grobs, los padres X e Y son el mismo. -@item El concepto de @qq{generaciones} es engañoso. +* Un \"ancestro\" concreto puede estar relacionado con un grob de +más de una manera. -@end itemize +* El concepto de \"generaciones\" es engañoso. Por ejemplo, el grob @code{System} puede ser tanto un padre (sobre el @@ -35,33 +31,24 @@ Este macro imprime, en la consola, una representación textual de la genealogía de un grob. -Cuando se llama de esta forma - -@example -@{ - \\once \\override NoteHead #'before-line-breaking = #display-ancestry - c4 -@} -@end example +Cuando se llama de esta forma: +@code{@{ \\once \\override NoteHead.before-line-breaking = +#display-ancestry c @}} Se genera la siguiente salida: -@example ------------------------------------- - -NoteHead X,Y: NoteColumn - X: PaperColumn - X,Y: System - Y: VerticalAxisGroup - X: NonMusicalPaperColumn - X,Y: System - Y: VerticalAlignment - X: NonMusicalPaperColumn - X,Y: System - Y: System -@end example +@code{NoteHead X,Y: NoteColumn + X: PaperColumn + X,Y: System + Y: VerticalAxisGroup + X: NonMusicalPaperColumn + X,Y: System + Y: VerticalAlignment + X: NonMusicalPaperColumn + X,Y: System + Y: System} " doctitlees = "Imprimir el árbol genealógico de un grob" diff --git a/Documentation/es/texidocs/dotted-harmonics.texidoc b/Documentation/es/texidocs/dotted-harmonics.texidoc index 7177f69473..ca0bf329d9 100644 --- a/Documentation/es/texidocs/dotted-harmonics.texidoc +++ b/Documentation/es/texidocs/dotted-harmonics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Los armónicos artificiales que usan la instrucción @code{\\harmonic} no tienen puntillo. Para sobreescribir este comportamiento, fije la diff --git a/Documentation/es/texidocs/double-glissando.texidoc b/Documentation/es/texidocs/double-glissando.texidoc index 8f7af4ea5d..87b631cf03 100644 --- a/Documentation/es/texidocs/double-glissando.texidoc +++ b/Documentation/es/texidocs/double-glissando.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Para conectar acordes con líneas de glissando, ponga un segundo glissando sobre una voz oculta. diff --git a/Documentation/es/texidocs/drawing-boxes-around-grobs.texidoc b/Documentation/es/texidocs/drawing-boxes-around-grobs.texidoc index 56e1511447..d32cc77dc8 100644 --- a/Documentation/es/texidocs/drawing-boxes-around-grobs.texidoc +++ b/Documentation/es/texidocs/drawing-boxes-around-grobs.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede sobreescribir la función @code{print-function} para trazar un rectángulo alrededor de un objeto gráfico arbitrario. diff --git a/Documentation/es/texidocs/drawing-circles-around-note-heads.texidoc b/Documentation/es/texidocs/drawing-circles-around-note-heads.texidoc index bde9215735..34a8e2eb33 100644 --- a/Documentation/es/texidocs/drawing-circles-around-note-heads.texidoc +++ b/Documentation/es/texidocs/drawing-circles-around-note-heads.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " He aquí cómo rodear una nota con una circunferencia. diff --git a/Documentation/es/texidocs/drawing-circles-around-various-objects.texidoc b/Documentation/es/texidocs/drawing-circles-around-various-objects.texidoc index 962ad723e7..d9b0910150 100644 --- a/Documentation/es/texidocs/drawing-circles-around-various-objects.texidoc +++ b/Documentation/es/texidocs/drawing-circles-around-various-objects.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La instrucción de marcado @code{\\circle} traza circunferencias alrededor de varios objetos, por ejemplo las indicaciones de diff --git a/Documentation/es/texidocs/dynamics-custom-text-spanner-postfix.texidoc b/Documentation/es/texidocs/dynamics-custom-text-spanner-postfix.texidoc index 460f92c2c2..fa9ebfefce 100644 --- a/Documentation/es/texidocs/dynamics-custom-text-spanner-postfix.texidoc +++ b/Documentation/es/texidocs/dynamics-custom-text-spanner-postfix.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 98ac53591234404cd70c5eebd370a598ec74095b texidoces = " Funciones postfijas para la creación de objetos de extensión de texto personalizados. Los objetos de extensión deben comenzar en la primera diff --git a/Documentation/es/texidocs/dynamics-text-spanner-postfix.texidoc b/Documentation/es/texidocs/dynamics-text-spanner-postfix.texidoc index 8f05baed28..196e0cc0ac 100644 --- a/Documentation/es/texidocs/dynamics-text-spanner-postfix.texidoc +++ b/Documentation/es/texidocs/dynamics-text-spanner-postfix.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Los objetos de extensión \cresc, \dim y \decresc ahora se pueden redefinir como operadores postfijos y producir un solo objeto de diff --git a/Documentation/es/texidocs/embedding-native-postscript-in-a--markup-block.texidoc b/Documentation/es/texidocs/embedding-native-postscript-in-a--markup-block.texidoc index 541b87e39c..5bfb31de89 100644 --- a/Documentation/es/texidocs/embedding-native-postscript-in-a--markup-block.texidoc +++ b/Documentation/es/texidocs/embedding-native-postscript-in-a--markup-block.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede insertar códico PostScript directamente dentro de un bloque @code{\\markup}. diff --git a/Documentation/es/texidocs/engravers-one-by-one.texidoc b/Documentation/es/texidocs/engravers-one-by-one.texidoc index 12dc321017..00449db8fc 100644 --- a/Documentation/es/texidocs/engravers-one-by-one.texidoc +++ b/Documentation/es/texidocs/engravers-one-by-one.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 11cf358d3e89f42616c4361fc3203add5662cf4e +%% Translation of GIT committish: 7c5fcff15f69f2e758d346bea43f226218c4da70 texidoces = " Del problema central de la notación, esto es, crear un determinado símbolo, se encargan los «plugins» o complementos añadidos. Cada diff --git a/Documentation/es/texidocs/engraving-ties-manually.texidoc b/Documentation/es/texidocs/engraving-ties-manually.texidoc index 6aceee67fb..6e2070db35 100644 --- a/Documentation/es/texidocs/engraving-ties-manually.texidoc +++ b/Documentation/es/texidocs/engraving-ties-manually.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 doctitlees = "Grabado manual de las ligaduras" texidoces = " Se pueden grabar a mano las ligaduras modificando la propiedad diff --git a/Documentation/es/texidocs/engraving-tremolos-with-floating-beams.texidoc b/Documentation/es/texidocs/engraving-tremolos-with-floating-beams.texidoc index eefa6a2cd8..8f17a5c5ea 100644 --- a/Documentation/es/texidocs/engraving-tremolos-with-floating-beams.texidoc +++ b/Documentation/es/texidocs/engraving-tremolos-with-floating-beams.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Si la duración total de un trémolo es menor de una negra, o exactamente de una blanca, normalmente se compone tipográficamente con diff --git a/Documentation/es/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc b/Documentation/es/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc deleted file mode 100644 index 0e27b5fe79..0000000000 --- a/Documentation/es/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc +++ /dev/null @@ -1,16 +0,0 @@ -%% Translation of GIT committish: e797772ef677c797c169b7096a28f6a5959353ef - doctitlees = "Escribir varios grupos especiales usando una sola instrucción \\tuplet" - texidoces = " -La propiedad @code{tupletSpannerDuration} establece cuánto debe durar -cada grupo de valoración especial contenido dentro del corchete que -aparece después de @code{\\tuplet}. Así, se pueden escribir muchos -tresillos seguidos dentro de una sola expresión @code{\\tuplet}, -ahorrando trabajo de teclado. - -Existen varias maneras de fijar el valor de -@code{tupletSpannerDuration}. La instrucción @code{\\tupletSpan} lo -establece a una duración dada, y lo borra cuando se especifica -@code{\\default} en lugar de una duración. Otra forma es utilizar un -argumento opcional con @code{\\tuplet}. - -" diff --git a/Documentation/es/texidocs/extending-glissandi-across-repeats.texidoc b/Documentation/es/texidocs/extending-glissandi-across-repeats.texidoc index afd3db2ead..18d275d756 100644 --- a/Documentation/es/texidocs/extending-glissandi-across-repeats.texidoc +++ b/Documentation/es/texidocs/extending-glissandi-across-repeats.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4edb291a57597d4913cfbb955d565ed5d6d533ff +%% Translation of GIT committish: 98ac53591234404cd70c5eebd370a598ec74095b texidoces = " Se puede simular un glissando que se extiende hasta el interior de varios bloques @code{\alternative} de primera y segunda vez mediante diff --git a/Documentation/es/texidocs/faking-a-hammer-in-tablatures.texidoc b/Documentation/es/texidocs/faking-a-hammer-in-tablatures.texidoc index 78a50caa5c..2dc655ac8f 100644 --- a/Documentation/es/texidocs/faking-a-hammer-in-tablatures.texidoc +++ b/Documentation/es/texidocs/faking-a-hammer-in-tablatures.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede simular un @qq{hammer} o ligado ascendente con ligaduras de expresión. diff --git a/Documentation/es/texidocs/fine-tuning-pedal-brackets.texidoc b/Documentation/es/texidocs/fine-tuning-pedal-brackets.texidoc index 41ede752c6..5cecc46cbe 100644 --- a/Documentation/es/texidocs/fine-tuning-pedal-brackets.texidoc +++ b/Documentation/es/texidocs/fine-tuning-pedal-brackets.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede alterar el aspecto de las líneas de pedal de varias formas. diff --git a/Documentation/es/texidocs/fingering-symbols-for-wind-instruments.texidoc b/Documentation/es/texidocs/fingering-symbols-for-wind-instruments.texidoc index 34e0742c94..4acd3bd5de 100644 --- a/Documentation/es/texidocs/fingering-symbols-for-wind-instruments.texidoc +++ b/Documentation/es/texidocs/fingering-symbols-for-wind-instruments.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: c174139b36102ad0e0997bbcce20175dec772a71 texidoces = " Se pueden conseguir símbolos especiales combinando glifos existentes, lo que es de utilidad para la notación de instrumentos de viento. diff --git a/Documentation/es/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc b/Documentation/es/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc index 26613107f3..8ffc317656 100644 --- a/Documentation/es/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc +++ b/Documentation/es/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " En este ejemplo se combinan las digitaciones de la mano izquierda, indicaciones del número de cuerda y digitaciones de la mano diff --git a/Documentation/es/texidocs/flamenco-notation.texidoc b/Documentation/es/texidocs/flamenco-notation.texidoc index f2cadef237..176c848968 100644 --- a/Documentation/es/texidocs/flamenco-notation.texidoc +++ b/Documentation/es/texidocs/flamenco-notation.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 6e4e9c4eacb94d68c11fd6b9062da4f724114860 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Para la guitarra flamenca se utilizan ciertos elementos de notación especiales: diff --git a/Documentation/es/texidocs/flat-flags-and-beam-nibs.texidoc b/Documentation/es/texidocs/flat-flags-and-beam-nibs.texidoc index f2a598331e..97b7119914 100644 --- a/Documentation/es/texidocs/flat-flags-and-beam-nibs.texidoc +++ b/Documentation/es/texidocs/flat-flags-and-beam-nibs.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 703dca1fd6b202716cbfdc650c604dd835795b01 texidoces = " Son posibles tanto los corchetes rectos sobre notas sueltas como extremos de barra sueltos en figuras unidas, con una combinación de diff --git a/Documentation/es/texidocs/flute-slap-notation.texidoc b/Documentation/es/texidocs/flute-slap-notation.texidoc index 17aa4ad43d..379c0840a9 100644 --- a/Documentation/es/texidocs/flute-slap-notation.texidoc +++ b/Documentation/es/texidocs/flute-slap-notation.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: db963831475f58bc64d88bd527e408722ebe8954 texidoces = " Es posible indicar técnicas de articulación especiales como el golpe de lengua de la flauta (@qq{tongue slap}) sustituyendo la cabeza de la diff --git a/Documentation/es/texidocs/forcing-a-clef-symbol-to-be-displayed.texidoc b/Documentation/es/texidocs/forcing-a-clef-symbol-to-be-displayed.texidoc index 33ec73067e..7e71304198 100644 --- a/Documentation/es/texidocs/forcing-a-clef-symbol-to-be-displayed.texidoc +++ b/Documentation/es/texidocs/forcing-a-clef-symbol-to-be-displayed.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 1010f574a85b40fb70e0b31136e7eb788e4946be texidoces = " Cuando ya se ha impreso la clave y aún no se ha cambiado a una distinta, LilyPond ignorará la repetición de la instrucción diff --git a/Documentation/es/texidocs/forcing-horizontal-shift-of-notes.texidoc b/Documentation/es/texidocs/forcing-horizontal-shift-of-notes.texidoc index 0db33518f9..a06686bf3d 100644 --- a/Documentation/es/texidocs/forcing-horizontal-shift-of-notes.texidoc +++ b/Documentation/es/texidocs/forcing-horizontal-shift-of-notes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 doctitlees = "Forzar el desplazamiento horizontal de las notas" texidoces = " Cuando el motor de tipografiado no es capaz de todo, se puede usar la diff --git a/Documentation/es/texidocs/forcing-hyphens-to-be-shown.texidoc b/Documentation/es/texidocs/forcing-hyphens-to-be-shown.texidoc index 62cb7a23a0..3f1f115d0b 100644 --- a/Documentation/es/texidocs/forcing-hyphens-to-be-shown.texidoc +++ b/Documentation/es/texidocs/forcing-hyphens-to-be-shown.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Si LilyPond no cree que haya sitio suficiente para un guión separador de sílabas, lo omitirá. Se puede sobreescribir este comportamiento diff --git a/Documentation/es/texidocs/forcing-measure-width-to-adapt-to-metronomemarks-width.texidoc b/Documentation/es/texidocs/forcing-measure-width-to-adapt-to-metronomemarks-width.texidoc index 14868df438..17c369753e 100644 --- a/Documentation/es/texidocs/forcing-measure-width-to-adapt-to-metronomemarks-width.texidoc +++ b/Documentation/es/texidocs/forcing-measure-width-to-adapt-to-metronomemarks-width.texidoc @@ -1,11 +1,7 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 2ba2ca2073f389842aa87f85b6c740b8488f0125 texidoces = " De forma predeterminada, las indicaciones metronómicas no influyen el -espaciado horizontal. Esto tiene un inconveniente: cuando se usan -silencios comprimidos, algunas indicaciones metronómicas pueden -aparecer demasiado seguidas, lo que las haría imprimirse unas sobre -otras verticalmente, como se muestra en la primera parte de este -ejemplo. Eesto se puede resolver por medio de una sencilla +espaciado horizontal. Esto se puede resolver por medio de una sencilla sobreescritura, como puede verse en la segunda mitad del ejemplo. " diff --git a/Documentation/es/texidocs/forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.texidoc b/Documentation/es/texidocs/forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.texidoc index c4ab4c1c94..08d1f916c9 100644 --- a/Documentation/es/texidocs/forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.texidoc +++ b/Documentation/es/texidocs/forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " Este fragmento de código muestra cómo obtener marcas de ensayo ordenadas automáticamente, pero partiendo de la letra o número diff --git a/Documentation/es/texidocs/formatting-lyrics-syllables.texidoc b/Documentation/es/texidocs/formatting-lyrics-syllables.texidoc index 1d61f14692..2a0fdd948f 100644 --- a/Documentation/es/texidocs/formatting-lyrics-syllables.texidoc +++ b/Documentation/es/texidocs/formatting-lyrics-syllables.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Es posible usar el modo de marcado para dar formato a sílabas individuales dentro de la letra. diff --git a/Documentation/es/texidocs/fret-diagrams-explained-and-developed.texidoc b/Documentation/es/texidocs/fret-diagrams-explained-and-developed.texidoc index 47fea47351..f84cecb146 100644 --- a/Documentation/es/texidocs/fret-diagrams-explained-and-developed.texidoc +++ b/Documentation/es/texidocs/fret-diagrams-explained-and-developed.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Eeste fragmento de código presenta muchas posibilidades para obtener diagramas de posiciones de acorde y cómo trucarlos. diff --git a/Documentation/es/texidocs/fretboards-alternate-tables.texidoc b/Documentation/es/texidocs/fretboards-alternate-tables.texidoc index e12f201ac6..0d7b0fd093 100644 --- a/Documentation/es/texidocs/fretboards-alternate-tables.texidoc +++ b/Documentation/es/texidocs/fretboards-alternate-tables.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden crear tablas alternativas de diagramas de posiciones. Se utilizarían para tener diagramas altenativos para un acorde dado. diff --git a/Documentation/es/texidocs/fretted-string-harmonics-in-tablature.texidoc b/Documentation/es/texidocs/fretted-string-harmonics-in-tablature.texidoc index c52f455529..5b0d851eba 100644 --- a/Documentation/es/texidocs/fretted-string-harmonics-in-tablature.texidoc +++ b/Documentation/es/texidocs/fretted-string-harmonics-in-tablature.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Armónicos sobre cuerdas pisadas (armónicos artificiales): " diff --git a/Documentation/es/texidocs/generating-custom-flags.texidoc b/Documentation/es/texidocs/generating-custom-flags.texidoc index d6caf3d863..3a0749b627 100644 --- a/Documentation/es/texidocs/generating-custom-flags.texidoc +++ b/Documentation/es/texidocs/generating-custom-flags.texidoc @@ -1,6 +1,6 @@ -%% Translation of GIT committish: bc4b56a8dee39a1fa3f40ac329ab0754d46fc56f +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " -La propiedad @code{stencil} del grob Flag (el objeto gráfico corchete) +La propiedad @code{stencil} del grob @code{Flag} (el objeto gráfico corchete) se puede fijar a una función de Scheme personalizada que genere el glifo del corchete. diff --git a/Documentation/es/texidocs/generating-random-notes.texidoc b/Documentation/es/texidocs/generating-random-notes.texidoc index 702167dbde..f6a0e133c3 100644 --- a/Documentation/es/texidocs/generating-random-notes.texidoc +++ b/Documentation/es/texidocs/generating-random-notes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Este fragmento de código basado en Scheme genera 24 notas aleatorias (o tantas como se necesiten), basándose en la diff --git a/Documentation/es/texidocs/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.texidoc b/Documentation/es/texidocs/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.texidoc index 59b57d0685..130d178f58 100644 --- a/Documentation/es/texidocs/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.texidoc +++ b/Documentation/es/texidocs/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 7f48cb638958a728209577caa41bbaca8a2e4ef2 texidoces = " Internamente, una partitura de lilypond no es más que una expresión de Scheme, generada por el analizador sintáctico de lilypond. Usando diff --git a/Documentation/es/texidocs/glissandi-can-skip-grobs.texidoc b/Documentation/es/texidocs/glissandi-can-skip-grobs.texidoc index 0f71eab4b4..e7a8504868 100644 --- a/Documentation/es/texidocs/glissandi-can-skip-grobs.texidoc +++ b/Documentation/es/texidocs/glissandi-can-skip-grobs.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: bc4b56a8dee39a1fa3f40ac329ab0754d46fc56f +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " Los objetos gráficos de columna de nota (los grobs @code{NoteColumn}) pueden ser sobrepasados por los glissandos. diff --git a/Documentation/es/texidocs/graphical-and-text-woodwind-diagrams.texidoc b/Documentation/es/texidocs/graphical-and-text-woodwind-diagrams.texidoc index 391aca1a4e..dd722f38b2 100644 --- a/Documentation/es/texidocs/graphical-and-text-woodwind-diagrams.texidoc +++ b/Documentation/es/texidocs/graphical-and-text-woodwind-diagrams.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " En muchos casos, las llaves que no están en la columna central se pueden presentar por el nombre de la llave así como de forma gráfica. diff --git a/Documentation/es/texidocs/grid-lines--changing-their-appearance.texidoc b/Documentation/es/texidocs/grid-lines--changing-their-appearance.texidoc index 2ffbb1e134..03ed1d290d 100644 --- a/Documentation/es/texidocs/grid-lines--changing-their-appearance.texidoc +++ b/Documentation/es/texidocs/grid-lines--changing-their-appearance.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede cambiar el aspecto de las líneas de rejilla sobreescribiendo algunas de sus propiedades. diff --git a/Documentation/es/texidocs/grid-lines--emphasizing-rhythms-and-notes-synchronization.texidoc b/Documentation/es/texidocs/grid-lines--emphasizing-rhythms-and-notes-synchronization.texidoc index 2974f56175..d37c07aa91 100644 --- a/Documentation/es/texidocs/grid-lines--emphasizing-rhythms-and-notes-synchronization.texidoc +++ b/Documentation/es/texidocs/grid-lines--emphasizing-rhythms-and-notes-synchronization.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 6e4e9c4eacb94d68c11fd6b9062da4f724114860 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden trazar líneas verticales normales entre pentagramas para mostrar la relación entre notas; sin embargo, en caso de música diff --git a/Documentation/es/texidocs/guitar-slides.texidoc b/Documentation/es/texidocs/guitar-slides.texidoc index 07e60de59b..6c9f59ca48 100644 --- a/Documentation/es/texidocs/guitar-slides.texidoc +++ b/Documentation/es/texidocs/guitar-slides.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: 0df86f1528d4e85021fa52e5c302c2507df6a19c +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " A diferencia de los glissandos, los @q{slides} o ligaduras pueden partir de un punto impreciso del mástil hasta un traste específico. -Una buena forma de hacerlo es añadir una nota de mordente antes de la +Una buena forma de hacerlo es añadir una nota de mordente oculta antes de la nota real, como se muestra en el ejemplo siguiente. " diff --git a/Documentation/es/texidocs/guitar-strum-rhythms.texidoc b/Documentation/es/texidocs/guitar-strum-rhythms.texidoc index 6cc0d36a98..6dc2c2ff64 100644 --- a/Documentation/es/texidocs/guitar-strum-rhythms.texidoc +++ b/Documentation/es/texidocs/guitar-strum-rhythms.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Para la música de guitarra, es posible mostrar los ritmos de rasgueo, además de las notas de la melodía, acordes y diagramas de posiciones. diff --git a/Documentation/es/texidocs/hairpins-with-different-line-styles.texidoc b/Documentation/es/texidocs/hairpins-with-different-line-styles.texidoc index d737f3781a..a7c9db0a8e 100644 --- a/Documentation/es/texidocs/hairpins-with-different-line-styles.texidoc +++ b/Documentation/es/texidocs/hairpins-with-different-line-styles.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Los reguladores pueden imprimirse en uno cualquiera de los estilos de @code{line-interface}: discontinuo, punteado, línea, trino o zig-zag. diff --git a/Documentation/es/texidocs/heavily-customized-polymetric-time-signatures.texidoc b/Documentation/es/texidocs/heavily-customized-polymetric-time-signatures.texidoc index 8b373d707d..2033130ccb 100644 --- a/Documentation/es/texidocs/heavily-customized-polymetric-time-signatures.texidoc +++ b/Documentation/es/texidocs/heavily-customized-polymetric-time-signatures.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: d000c543411bb4c2fb459578bd87ef357ac4aa92 +%% Translation of GIT committish: 3f57efa0cde39bf0642fb6fb3672a19262ceda83 texidoces = " Aunque aquí el elemento más esencial no es la indicación de compás polimétrica que se muestra, se ha incluido para mostrar el pulso de la diff --git a/Documentation/es/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc b/Documentation/es/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc index 319de2f0c7..458bda7496 100644 --- a/Documentation/es/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc +++ b/Documentation/es/texidocs/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Aquí se muestra la manera de ocultar las alteraciones de las notas ligadas al comienzo de un sistema nuevo. diff --git a/Documentation/es/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc b/Documentation/es/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc index 880b5eb80a..84ad2e9b66 100644 --- a/Documentation/es/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc +++ b/Documentation/es/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Los cambios de dinámica con estilo de texto (como cresc. y dim.) se imprimen con una línea intermitente que muestra su alcance. diff --git a/Documentation/es/texidocs/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.texidoc b/Documentation/es/texidocs/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.texidoc index 5b9d892e73..fec38166e2 100644 --- a/Documentation/es/texidocs/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.texidoc +++ b/Documentation/es/texidocs/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.texidoc @@ -1,11 +1,11 @@ -%% Translation of GIT committish: 5db593aa3737cf8c60f9c4c4fcbe317c2d832766 +%% Translation of GIT committish: 3f57efa0cde39bf0642fb6fb3672a19262ceda83 texidoces = " Algunas expresiones de matiz dinámico llevan texto adicional, como -@qq{sempre pp}. Dado que los matices suelen ir centrados bajo la +\"sempre pp\". Dado que los matices suelen ir centrados bajo la nota, el \\pp se imprimiría mucho después de la nota a la que se aplica el matiz. -Para alinear correctamente el @qq{sempre pp} en sentido horizontal, de +Para alinear correctamente el \"sempre pp\" en sentido horizontal, de manera que se alinee como si estuviese solamente el \\pp, hay varios enfoques: @@ -21,9 +21,12 @@ Inconveniente: el relleno realmente ocupa ese espacio y no permite que se imprima ningún otro elemento de marcado o matiz dinámico en esa posición. +* Desplazar la inscripción dinámica @code{\\once\\override ... .X-offset = ..}. +Inconveniente: ¡se necesita @code{\\once\\override} para cada una de las invocaciones! + * Fijar las dimensiones del texto adicional a cero (usando @code{#:with-dimensions '(0 . 0) '(0 . 0)}). Inconveniente: para -LilyPond @qq{sempre} no tiene dimensiones, por lo que podría imprimir +LilyPond \"sempre\" no tiene dimensiones, por lo que podría imprimir otros elementos en su mismo lugar y producir colisiones (que no serían advertidas por el mecanismo de detección de colisiones). Asimismo, aparentemente hay algún espacio, y por tanto no es exactamente la @@ -35,7 +38,7 @@ de Scheme que produce el elemento dynamic-script. * Fijar una alineación explícita dentro del dynamic-script. De forma predeterminada, esto no tendría ningún efecto, a no ser que fijásemos un valor para X-offset. Inconveniente: tenemos que dar un valor a -@code{DynamicText #'X-offset} ¡que se aplicaría a todos los textos de +@code{DynamicText.X-offset} ¡que se aplicaría a todos los textos de dinámica!. Asimismo, se alinea con el extremo derecho del texto adicional, no con el centro del pp. diff --git a/Documentation/es/texidocs/how-to-change-fret-diagram-position.texidoc b/Documentation/es/texidocs/how-to-change-fret-diagram-position.texidoc index 12708f23ff..8176126716 100644 --- a/Documentation/es/texidocs/how-to-change-fret-diagram-position.texidoc +++ b/Documentation/es/texidocs/how-to-change-fret-diagram-position.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: c4c1512a79d84d8d1acffa663c588b617a4dead8 texidoces = " Si queremos mover un diagrama de posiciones de acorde, por ejemplo, para evitar la colisión, o situarlo entre dos notas, tenemos varias diff --git a/Documentation/es/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-1.texidoc b/Documentation/es/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-1.texidoc index 15d9e6e64a..15ffa6cdbe 100644 --- a/Documentation/es/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-1.texidoc +++ b/Documentation/es/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-1.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: c268818b8a410959476bae38057def9a25fc0e23 +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " Este método imprime dos letras de ensayo, una encima de la otra, desplaza la marca inferior a una posición debajo del pentagrama y diff --git a/Documentation/es/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.texidoc b/Documentation/es/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.texidoc index b7f48a06cc..12a37635c4 100644 --- a/Documentation/es/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.texidoc +++ b/Documentation/es/texidocs/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Este método imprime dos 'letras de ensayo': una sobre el pentagrama y otra debajo, creando dos voces, añadiendo el grabador Rehearsal Mark a diff --git a/Documentation/es/texidocs/how-to-put-ties-between-syllables-in-lyrics.texidoc b/Documentation/es/texidocs/how-to-put-ties-between-syllables-in-lyrics.texidoc index 6ec6491114..4857679eb0 100644 --- a/Documentation/es/texidocs/how-to-put-ties-between-syllables-in-lyrics.texidoc +++ b/Documentation/es/texidocs/how-to-put-ties-between-syllables-in-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede hacer separando las sílabas mediante símbolos de tilde curva. diff --git a/Documentation/es/texidocs/hymn-template.texidoc b/Documentation/es/texidocs/hymn-template.texidoc index f62b647599..ad1a1f83a5 100644 --- a/Documentation/es/texidocs/hymn-template.texidoc +++ b/Documentation/es/texidocs/hymn-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Este fragmento de código muestra una forma de preparar un himno cuando cada línea comienza con un compás parcial. También muestra cómo diff --git a/Documentation/es/texidocs/incipit.texidoc b/Documentation/es/texidocs/incipit.texidoc index 1d38bb1f12..c0cf1244e7 100644 --- a/Documentation/es/texidocs/incipit.texidoc +++ b/Documentation/es/texidocs/incipit.texidoc @@ -1,6 +1,13 @@ -%% Translation of GIT committish: 0df86f1528d4e85021fa52e5c302c2507df6a19c +%% Translation of GIT committish: c4b122bf88e2aff20df5f85130e67aab73f7c5bf texidoces = " -Los «incipit» se pueden escribir utilizando el grob del nombre del -instruemento, pero manteniendo independientes las definiciones del -nombre del instrumento y del incipit." + +Al transcribir música mensural, es útil poner un incipit al comienzo +de la pieza para indicar la tonalidad y el compás originales. +Actualmente los músicos están acostumbrados a las líneas del +pentagrama, pero en el período de la música mensural aún no se +utilizaban. Como compromiso, con frecuencia se imprimen líneas +divisorias entre los pentagramas, un estilo de diseño conocido como +mensurstriche. + +" doctitlees = "Incipit" diff --git a/Documentation/es/texidocs/indicating-cross-staff-chords-with-arpeggio-bracket.texidoc b/Documentation/es/texidocs/indicating-cross-staff-chords-with-arpeggio-bracket.texidoc index 2ae2c8dcf7..239be77edb 100644 --- a/Documentation/es/texidocs/indicating-cross-staff-chords-with-arpeggio-bracket.texidoc +++ b/Documentation/es/texidocs/indicating-cross-staff-chords-with-arpeggio-bracket.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Un corchete de arpegio puede indicar que se tienen que tocar con la misma mano notas que están en dos pentagramas distintos. Para hacerlo, diff --git a/Documentation/es/texidocs/inserting-a-caesura.texidoc b/Documentation/es/texidocs/inserting-a-caesura.texidoc index e13aae0b6d..447d1041c8 100644 --- a/Documentation/es/texidocs/inserting-a-caesura.texidoc +++ b/Documentation/es/texidocs/inserting-a-caesura.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Las marcas de cesura se pueden crear sobreescribiendo la propiedad @code{'text} del objeto @code{BreathingSign}. También está disponible diff --git a/Documentation/es/texidocs/inserting-score-fragments-above-a-staff,-as-markups.texidoc b/Documentation/es/texidocs/inserting-score-fragments-above-a-staff,-as-markups.texidoc index 2226d10d16..a1d75a0602 100644 --- a/Documentation/es/texidocs/inserting-score-fragments-above-a-staff,-as-markups.texidoc +++ b/Documentation/es/texidocs/inserting-score-fragments-above-a-staff,-as-markups.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: a52e63690dc92d4b9205811ac0cf27153c3158fd +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " La instrucción @code{\\markup} es muy versátil. En este fragmento de código, contiene un bloque @code{\\score} con una partitura completa diff --git a/Documentation/es/texidocs/isolated-percent-repeats.texidoc b/Documentation/es/texidocs/isolated-percent-repeats.texidoc index daebc6d56c..c2667b51e2 100644 --- a/Documentation/es/texidocs/isolated-percent-repeats.texidoc +++ b/Documentation/es/texidocs/isolated-percent-repeats.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 98ac53591234404cd70c5eebd370a598ec74095b texidoces = " También se pueden imprimir símbolos de porcentaje sueltos. diff --git a/Documentation/es/texidocs/jazz-combo-template.texidoc b/Documentation/es/texidocs/jazz-combo-template.texidoc index 9abeb04310..c6f5e7541d 100644 --- a/Documentation/es/texidocs/jazz-combo-template.texidoc +++ b/Documentation/es/texidocs/jazz-combo-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 0df86f1528d4e85021fa52e5c302c2507df6a19c +%% Translation of GIT committish: 3f57efa0cde39bf0642fb6fb3672a19262ceda83 texidoces = " Ésta es una plantilla bastante avanzada, para un conjunto de jazz. Observe que la notación de todos los instrumentos está en diff --git a/Documentation/es/texidocs/keep-change-clefs-full-sized.texidoc b/Documentation/es/texidocs/keep-change-clefs-full-sized.texidoc index 5bc4f0dd8f..9522a4fad7 100644 --- a/Documentation/es/texidocs/keep-change-clefs-full-sized.texidoc +++ b/Documentation/es/texidocs/keep-change-clefs-full-sized.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 1010f574a85b40fb70e0b31136e7eb788e4946be texidoces = " Cuando se produce un cambio de clave, el símbolo de clave se imprime a un tamaño menor que la clave inicial. Esto se puede ajustar con diff --git a/Documentation/es/texidocs/laissez-vibrer-ties.texidoc b/Documentation/es/texidocs/laissez-vibrer-ties.texidoc index 163d74a0d8..4d32a08534 100644 --- a/Documentation/es/texidocs/laissez-vibrer-ties.texidoc +++ b/Documentation/es/texidocs/laissez-vibrer-ties.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Las ligaduras @qq{Laissez vibrer} (dejar vibrar) tienen un tamaño fijo. Se puede ajustar su formato usando @code{'tie-configuration}. diff --git a/Documentation/es/texidocs/letter-tablature-formatting.texidoc b/Documentation/es/texidocs/letter-tablature-formatting.texidoc index 391f3dd460..3ec4e7916f 100644 --- a/Documentation/es/texidocs/letter-tablature-formatting.texidoc +++ b/Documentation/es/texidocs/letter-tablature-formatting.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La tablatura se puede formatear utilizando letras en lugar de números. diff --git a/Documentation/es/texidocs/line-arrows.texidoc b/Documentation/es/texidocs/line-arrows.texidoc index ac0d8e05b5..f517335d4e 100644 --- a/Documentation/es/texidocs/line-arrows.texidoc +++ b/Documentation/es/texidocs/line-arrows.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden aplicar puntas de flecha a los elementos de extensión de texto y de línea (como el Glissando). diff --git a/Documentation/es/texidocs/lyrics-alignment.texidoc b/Documentation/es/texidocs/lyrics-alignment.texidoc index 150fad8c2d..35ac758d32 100644 --- a/Documentation/es/texidocs/lyrics-alignment.texidoc +++ b/Documentation/es/texidocs/lyrics-alignment.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La alineación horizontal de la letra se puede ajustar sobreescribiendo la propiedad @code{self-alignment-X} del objeto @code{LyricText}. diff --git a/Documentation/es/texidocs/makam-example.texidoc b/Documentation/es/texidocs/makam-example.texidoc index 8955bb0c18..cac2a02d50 100644 --- a/Documentation/es/texidocs/makam-example.texidoc +++ b/Documentation/es/texidocs/makam-example.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " El «Makam» es un tipo de melodía de Turquía que utiliza alteraciones microtonales de 1/9 de tono. Consulte el diff --git a/Documentation/es/texidocs/making-an-object-invisible-with-the-transparent-property.texidoc b/Documentation/es/texidocs/making-an-object-invisible-with-the-transparent-property.texidoc index 5f8dc08483..f2c4dded5d 100644 --- a/Documentation/es/texidocs/making-an-object-invisible-with-the-transparent-property.texidoc +++ b/Documentation/es/texidocs/making-an-object-invisible-with-the-transparent-property.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 0df86f1528d4e85021fa52e5c302c2507df6a19c +%% Translation of GIT committish: 01cf27b0b2ef4625b7b7f023848df87bb1e4e382 texidoces = " Si se ajusta la propiedad @code{transparent} de un objeto, se imprime en @qq{tinta invisible}: el objeto no se imprime pero se retienen diff --git a/Documentation/es/texidocs/making-glissandi-breakable.texidoc b/Documentation/es/texidocs/making-glissandi-breakable.texidoc index 20b122277b..030e80e6af 100644 --- a/Documentation/es/texidocs/making-glissandi-breakable.texidoc +++ b/Documentation/es/texidocs/making-glissandi-breakable.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 0df86f1528d4e85021fa52e5c302c2507df6a19c +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " Si se ajusta la propiedad @code{breakable} al valor @code{#t} en combinación con @code{after-line-breaking}, podemos hacer que un diff --git a/Documentation/es/texidocs/making-slurs-with-complex-dash-structure.texidoc b/Documentation/es/texidocs/making-slurs-with-complex-dash-structure.texidoc index cf4333afa2..2537b7507f 100644 --- a/Documentation/es/texidocs/making-slurs-with-complex-dash-structure.texidoc +++ b/Documentation/es/texidocs/making-slurs-with-complex-dash-structure.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Las ligaduras de expresión se pueden construir con patrones de discontinuidad complejos mediante la definición de la propiedad diff --git a/Documentation/es/texidocs/making-some-staff-lines-thicker-than-the-others.texidoc b/Documentation/es/texidocs/making-some-staff-lines-thicker-than-the-others.texidoc index 372f08140b..fc604eafc8 100644 --- a/Documentation/es/texidocs/making-some-staff-lines-thicker-than-the-others.texidoc +++ b/Documentation/es/texidocs/making-some-staff-lines-thicker-than-the-others.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede engrosar una línea del pentagrama con fines pedagógicos (p.ej. la tercera línea o la de la clave de Sol). Esto se puede diff --git a/Documentation/es/texidocs/manually-break-figured-bass-extenders-for-only-some-numbers.texidoc b/Documentation/es/texidocs/manually-break-figured-bass-extenders-for-only-some-numbers.texidoc index 8841200f30..92a3e949b3 100644 --- a/Documentation/es/texidocs/manually-break-figured-bass-extenders-for-only-some-numbers.texidoc +++ b/Documentation/es/texidocs/manually-break-figured-bass-extenders-for-only-some-numbers.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " A menudo, el bajo figurado usa líneas de extensión para indicar la continuación del elemento correspondiente dentro del acorde. Sin diff --git a/Documentation/es/texidocs/manually-controlling-beam-positions.texidoc b/Documentation/es/texidocs/manually-controlling-beam-positions.texidoc index 7c185a4a28..d23178c45b 100644 --- a/Documentation/es/texidocs/manually-controlling-beam-positions.texidoc +++ b/Documentation/es/texidocs/manually-controlling-beam-positions.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden controlar manualmente las posiciones de las barras de corchea, sobreescribiendo el valor del parámetro @code{positions} del diff --git a/Documentation/es/texidocs/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.texidoc b/Documentation/es/texidocs/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.texidoc index 9b0b144772..84497abb52 100644 --- a/Documentation/es/texidocs/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.texidoc +++ b/Documentation/es/texidocs/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Este ejemplo muestra cómo añadir aspas sobre las plicas. Marcamos el comienzo de una sección hablada con la palabra clave @code{\\speakOn}, diff --git a/Documentation/es/texidocs/markup-lines.texidoc b/Documentation/es/texidocs/markup-lines.texidoc index 21da3c45a3..e48525e327 100644 --- a/Documentation/es/texidocs/markup-lines.texidoc +++ b/Documentation/es/texidocs/markup-lines.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: 45dd19546e9b75b3e1e977732f0962f35dd3290e +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " El texto que ocupa más de una página se puede introducir con la -instrucción @code{\\markuplist}. +instrucción @code{\\markuplines}. " doctitlees = "Conjuntos de líneas de elementos de marcado" diff --git a/Documentation/es/texidocs/measure-counter.texidoc b/Documentation/es/texidocs/measure-counter.texidoc index 94e7d4fe04..37833a355c 100644 --- a/Documentation/es/texidocs/measure-counter.texidoc +++ b/Documentation/es/texidocs/measure-counter.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 6e4e9c4eacb94d68c11fd6b9062da4f724114860 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Este fragmento de código proporciona una solución alternativa a la producción de contadores de compás utilizando repeticiones diff --git a/Documentation/es/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc b/Documentation/es/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc index 484a6fa4ce..2419998210 100644 --- a/Documentation/es/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc +++ b/Documentation/es/texidocs/mensurstriche-layout-bar-lines-between-the-staves.texidoc @@ -1,10 +1,9 @@ -%% Translation of GIT committish: 6e4e9c4eacb94d68c11fd6b9062da4f724114860 +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " La disposición «mensurstriche» en que las líneas divisorias no están dibujadas sobre los pentagramas, sino entre ellos, se puede conseguir con un @code{StaffGroup} en vez de un @code{ChoirStaff}. -La línea divisoria sobre los pentagramas se borra estableciendo la -propiedad @code{transparent}. +La línea divisoria sobre los pentagramas se borra usando @code{\\hide}. " doctitlees = "Disposición Mensurstriche (líneas divisorias entre pentagramas)" diff --git a/Documentation/es/texidocs/merging-multi-measure-rests-in-a-polyphonic-part.texidoc b/Documentation/es/texidocs/merging-multi-measure-rests-in-a-polyphonic-part.texidoc index f68d343be5..129c496000 100644 --- a/Documentation/es/texidocs/merging-multi-measure-rests-in-a-polyphonic-part.texidoc +++ b/Documentation/es/texidocs/merging-multi-measure-rests-in-a-polyphonic-part.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: fddedd4b9a24eaa5f3c62947ddbe5b7b19bd7767 +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " Cuando se usan silencios multicompás en un pentagrama polifónico, los silencios se sitúan de forma diferente dependiendo de a qué voz diff --git a/Documentation/es/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc b/Documentation/es/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc index 0f0906a080..a5951cf4af 100644 --- a/Documentation/es/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc +++ b/Documentation/es/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Las abreviaturas se encuentran definidas dentro del archivo @file{ly/script-init.ly}, donde las variables @code{dashHat}, diff --git a/Documentation/es/texidocs/modifying-tuplet-bracket-length.texidoc b/Documentation/es/texidocs/modifying-tuplet-bracket-length.texidoc index c7ff811a46..9bde82fde6 100644 --- a/Documentation/es/texidocs/modifying-tuplet-bracket-length.texidoc +++ b/Documentation/es/texidocs/modifying-tuplet-bracket-length.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 703dca1fd6b202716cbfdc650c604dd835795b01 texidoces = " Se puede hacer que los corchetes de grupo de valoración especial, como los tresillos, comprendan música anterior al propio grupo o incluyan diff --git a/Documentation/es/texidocs/moving-dotted-notes-in-polyphony.texidoc b/Documentation/es/texidocs/moving-dotted-notes-in-polyphony.texidoc index 14da49b465..b01d52164b 100644 --- a/Documentation/es/texidocs/moving-dotted-notes-in-polyphony.texidoc +++ b/Documentation/es/texidocs/moving-dotted-notes-in-polyphony.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Cuando se puede una nota en la voz superior para evitar la colisión con una nota de otra voz, el comportamiento predeterminado es diff --git a/Documentation/es/texidocs/moving-slur-positions-vertically.texidoc b/Documentation/es/texidocs/moving-slur-positions-vertically.texidoc index 6cb69f0564..517a7a8919 100644 --- a/Documentation/es/texidocs/moving-slur-positions-vertically.texidoc +++ b/Documentation/es/texidocs/moving-slur-positions-vertically.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede ajustar la posición vertical de una ligadura de expresión utilizando la propiedad @code{positions} del objeto diff --git a/Documentation/es/texidocs/multi-measure-rest-markup.texidoc b/Documentation/es/texidocs/multi-measure-rest-markup.texidoc index 6f85ef4b8b..986004c5e0 100644 --- a/Documentation/es/texidocs/multi-measure-rest-markup.texidoc +++ b/Documentation/es/texidocs/multi-measure-rest-markup.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 0859431a3b2a6c36b2fee643563c6fd914fe9884 +%% Translation of GIT committish: 2ba2ca2073f389842aa87f85b6c740b8488f0125 texidoces = " Los elementos de marcado aplicados a un silencio multicompás se centran encima o debajo de éste. Los elementos de marcado extensos diff --git a/Documentation/es/texidocs/nesting-staves.texidoc b/Documentation/es/texidocs/nesting-staves.texidoc index 3692353f99..d106ac2517 100644 --- a/Documentation/es/texidocs/nesting-staves.texidoc +++ b/Documentation/es/texidocs/nesting-staves.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede utilizar la propiedad @code{systemStartDelimiterHierarchy} para crear grupos de diff --git a/Documentation/es/texidocs/non-default-tuplet-numbers.texidoc b/Documentation/es/texidocs/non-default-tuplet-numbers.texidoc index e0e114accb..2299fa015c 100644 --- a/Documentation/es/texidocs/non-default-tuplet-numbers.texidoc +++ b/Documentation/es/texidocs/non-default-tuplet-numbers.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " LilyPond también proporciona funciones de formato para imprimir números de grupo especial diferentes a la propia fracción, así diff --git a/Documentation/es/texidocs/non-traditional-key-signatures.texidoc b/Documentation/es/texidocs/non-traditional-key-signatures.texidoc index 8db72dccc8..27fffef419 100644 --- a/Documentation/es/texidocs/non-traditional-key-signatures.texidoc +++ b/Documentation/es/texidocs/non-traditional-key-signatures.texidoc @@ -1,21 +1,21 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 01cf27b0b2ef4625b7b7f023848df87bb1e4e382 doctitlees = "Armaduras de tonalidad no tradicionales" texidoces = " La muy utilizada instrucción @code{\\key} establece la propiedad -@code{keySignature} property, dentro del contexto @code{Staff}. +@code{keyAlterations} property, dentro del contexto @code{Staff}. Para crear armaduras de tonalidad no estándar, ajuste esta propiedad directamente. El formato de esta instrucción es una lista: -@code{\\set Staff.keySignature = #`(((octava . paso) . alteración) +@code{\\set Staff.keyAlterations = #`(((octava . paso) . alteración) ((octava . paso) . alteración) ...)} donde, para cada elemento dentro de la lista, @code{octava} especifica la octava (siendo@tie{}cero la octava desde el Do@tie{}central hasta el Si por encima), @code{paso} especifica la nota dentro de la octava (cero@tie{}significa@tie{}Do y 6@tie{}significa@tie{}Si), y @code{alteración} es @code{,SHARP ,FLAT ,DOUBLE-SHARP} -etc. (observe la coma precedente.) +etc. (observe la coma precedente). De forma alternativa, para cada elemento de la lista el uso del formato más conciso @code{(paso . alteración)} especifica que la diff --git a/Documentation/es/texidocs/numbering-groups-of-measures.texidoc b/Documentation/es/texidocs/numbering-groups-of-measures.texidoc index e9163147b8..cd7df8853e 100644 --- a/Documentation/es/texidocs/numbering-groups-of-measures.texidoc +++ b/Documentation/es/texidocs/numbering-groups-of-measures.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 4d9770a67176122b9779426cf540ad1694f07f61 +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " Este fragmento de código muestra el uso del grabador @code{Measure_counter_engraver} para numerar grupos de compases diff --git a/Documentation/es/texidocs/numbers-as-easy-note-heads.texidoc b/Documentation/es/texidocs/numbers-as-easy-note-heads.texidoc index 09c40b594f..5786573ce0 100644 --- a/Documentation/es/texidocs/numbers-as-easy-note-heads.texidoc +++ b/Documentation/es/texidocs/numbers-as-easy-note-heads.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 5c42908f1c8d0a5c1d88851a2d793ca55476612c +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " Las cabezas de nota de notación fácil utilizan la propiedad @code{note-names} del objeto @code{NoteHead} para determinar lo que diff --git a/Documentation/es/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc b/Documentation/es/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc index 3d0d4cabc3..1715beca27 100644 --- a/Documentation/es/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc +++ b/Documentation/es/texidocs/obtaining-2.12-lyrics-spacing-in-newer-versions.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 1f7e785d25b62afbf2ed3119a9874010e79b9b12 texidoces = " El motor de espaciado vertical cambió en la versión 2.14. Esto puede hacer que se altere el espaciado de la letra de las canciones. Es diff --git a/Documentation/es/texidocs/open-string-harmonics-in-tablature.texidoc b/Documentation/es/texidocs/open-string-harmonics-in-tablature.texidoc index 1797df5b5f..abe31c2731 100644 --- a/Documentation/es/texidocs/open-string-harmonics-in-tablature.texidoc +++ b/Documentation/es/texidocs/open-string-harmonics-in-tablature.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Referencia para armónicos sobre cuerdas al aire (armónicos naturales): diff --git a/Documentation/es/texidocs/orchestra,-choir-and-piano-template.texidoc b/Documentation/es/texidocs/orchestra,-choir-and-piano-template.texidoc index a6b65fe768..8589c8e28a 100644 --- a/Documentation/es/texidocs/orchestra,-choir-and-piano-template.texidoc +++ b/Documentation/es/texidocs/orchestra,-choir-and-piano-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 3f57efa0cde39bf0642fb6fb3672a19262ceda83 texidoces = " Esta plantilla muestra el uso de contextos @code{StaffGroup} y @code{GrandStaff} anidados para sub-agrupar instrumentos del mismo diff --git a/Documentation/es/texidocs/ottava-text.texidoc b/Documentation/es/texidocs/ottava-text.texidoc index a028cf57c9..6a5c1727f3 100644 --- a/Documentation/es/texidocs/ottava-text.texidoc +++ b/Documentation/es/texidocs/ottava-text.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Internamente, @code{\\ottava} establece las propiedades @code{ottavation} (por ejemplo, a @code{8va} o a @code{8vb}) y diff --git a/Documentation/es/texidocs/outputting-the-version-number.texidoc b/Documentation/es/texidocs/outputting-the-version-number.texidoc index a56afeddcb..98dbfd999f 100644 --- a/Documentation/es/texidocs/outputting-the-version-number.texidoc +++ b/Documentation/es/texidocs/outputting-the-version-number.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Introduciendo la salida de @code{lilypond-version} en la letra de una canción, es posible imprimir el número de versión de LilyPond dentro diff --git a/Documentation/es/texidocs/overriding-articulations-of-destinct-type.texidoc b/Documentation/es/texidocs/overriding-articulations-of-destinct-type.texidoc index 52b60b8ff9..0b66fd5303 100644 --- a/Documentation/es/texidocs/overriding-articulations-of-destinct-type.texidoc +++ b/Documentation/es/texidocs/overriding-articulations-of-destinct-type.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 98ac53591234404cd70c5eebd370a598ec74095b texidoces = " A veces queremos modificar un solo timpo de articulación. Aunque siempre es posible usar la instrucción @code{\\tweak}, podría hacerse diff --git a/Documentation/es/texidocs/page-label.texidoc b/Documentation/es/texidocs/page-label.texidoc index d78b093268..db44ef4a5d 100644 --- a/Documentation/es/texidocs/page-label.texidoc +++ b/Documentation/es/texidocs/page-label.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden situar etiquetas de página dentro de la música o en el nivel superior, y ser referenciadas desde otros elementos de marcado. diff --git a/Documentation/es/texidocs/partcombine-and-autobeamoff.texidoc b/Documentation/es/texidocs/partcombine-and-autobeamoff.texidoc index 79c01821da..fe6660d75b 100644 --- a/Documentation/es/texidocs/partcombine-and-autobeamoff.texidoc +++ b/Documentation/es/texidocs/partcombine-and-autobeamoff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Puede ser difícil comprender la función de @code{\\autoBeamOff} cuando se usa con @code{\\partcombine}. diff --git a/Documentation/es/texidocs/percent-repeat-count-visibility.texidoc b/Documentation/es/texidocs/percent-repeat-count-visibility.texidoc index 94294bb149..44b9c8660f 100644 --- a/Documentation/es/texidocs/percent-repeat-count-visibility.texidoc +++ b/Documentation/es/texidocs/percent-repeat-count-visibility.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden mostrar los contadores de las repeticiones del tipo porcentaje a intervalos regulares mediante el establecimiento de diff --git a/Documentation/es/texidocs/percent-repeat-counter.texidoc b/Documentation/es/texidocs/percent-repeat-counter.texidoc index fbcdb07f93..4629311ada 100644 --- a/Documentation/es/texidocs/percent-repeat-counter.texidoc +++ b/Documentation/es/texidocs/percent-repeat-counter.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Las repeticiones de compases completos de más de dos repeticiones pueden llevar un contador si se activa la propiedad adecuada, como se diff --git a/Documentation/es/texidocs/percussion-beaters.texidoc b/Documentation/es/texidocs/percussion-beaters.texidoc index 0b946ec64b..5337e63247 100644 --- a/Documentation/es/texidocs/percussion-beaters.texidoc +++ b/Documentation/es/texidocs/percussion-beaters.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " No están contemplados de forma nativa los símbolos gráficos para instrumentos de percusión; sin embargo es posible incluir dichos diff --git a/Documentation/es/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc b/Documentation/es/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc index 3e2a7fd48f..5e48a5a3dd 100644 --- a/Documentation/es/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc +++ b/Documentation/es/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 doctitlees = "Permitir saltos de línea dentro de grupos especiales con barra" texidoces = " Este ejemplo artificial muestra cómo se pueden permitir tanto los diff --git a/Documentation/es/texidocs/piano-template-simple.texidoc b/Documentation/es/texidocs/piano-template-simple.texidoc index 2e0f2479fd..bb27f7b217 100644 --- a/Documentation/es/texidocs/piano-template-simple.texidoc +++ b/Documentation/es/texidocs/piano-template-simple.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 3f57efa0cde39bf0642fb6fb3672a19262ceda83 texidoces = " Presentamos a continuación una plantilla de piano sencilla con algunas notas. diff --git a/Documentation/es/texidocs/piano-template-with-centered-lyrics.texidoc b/Documentation/es/texidocs/piano-template-with-centered-lyrics.texidoc index efa7ef6cea..85692efcb9 100644 --- a/Documentation/es/texidocs/piano-template-with-centered-lyrics.texidoc +++ b/Documentation/es/texidocs/piano-template-with-centered-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 1f7e785d25b62afbf2ed3119a9874010e79b9b12 texidoces = " En lugar de tener un pentagrama dedicado a la melodía y la letra, ésta se puede centrar entre los pentagramas de un sistema de piano. diff --git a/Documentation/es/texidocs/piano-template-with-melody-and-lyrics.texidoc b/Documentation/es/texidocs/piano-template-with-melody-and-lyrics.texidoc index 34a0246ee4..ec40bac35e 100644 --- a/Documentation/es/texidocs/piano-template-with-melody-and-lyrics.texidoc +++ b/Documentation/es/texidocs/piano-template-with-melody-and-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " He aquí el típico formato dde una canción: un pentagrama con la melodía y la letra, y el acompañamiento de piano por debajo. diff --git a/Documentation/es/texidocs/placement-of-right-hand-fingerings.texidoc b/Documentation/es/texidocs/placement-of-right-hand-fingerings.texidoc index 4c535013e2..73b7d71667 100644 --- a/Documentation/es/texidocs/placement-of-right-hand-fingerings.texidoc +++ b/Documentation/es/texidocs/placement-of-right-hand-fingerings.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Es posible ejercer un mayor control sobre la colocación de las digitaciones de la mano derecha estableciendo el valor de una diff --git a/Documentation/es/texidocs/polyphony-in-tablature.texidoc b/Documentation/es/texidocs/polyphony-in-tablature.texidoc index 8aaf3f90af..f3372a65db 100644 --- a/Documentation/es/texidocs/polyphony-in-tablature.texidoc +++ b/Documentation/es/texidocs/polyphony-in-tablature.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La polifonía se crea de la misma forma en un @code{TabStaff} que en una pauta normal. diff --git a/Documentation/es/texidocs/positioning-arpeggios.texidoc b/Documentation/es/texidocs/positioning-arpeggios.texidoc index e124ef4e18..1be4f2371d 100644 --- a/Documentation/es/texidocs/positioning-arpeggios.texidoc +++ b/Documentation/es/texidocs/positioning-arpeggios.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Si necesitamos alargar o acortar un símbolo de arpegio, podemos modificar independientemente los extremos superior e inferior. diff --git a/Documentation/es/texidocs/positioning-fingering-indications-precisely.texidoc b/Documentation/es/texidocs/positioning-fingering-indications-precisely.texidoc index 6d0bc79dbf..4fb5f76bc9 100644 --- a/Documentation/es/texidocs/positioning-fingering-indications-precisely.texidoc +++ b/Documentation/es/texidocs/positioning-fingering-indications-precisely.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " Generalmente, las opciones disponibles para la digitación de los acordes funciona bien de forma predeterminada, pero si una de las diff --git a/Documentation/es/texidocs/positioning-grace-note-beams-at-the-height-of-normal-note-beams.texidoc b/Documentation/es/texidocs/positioning-grace-note-beams-at-the-height-of-normal-note-beams.texidoc index ac46f0a724..cfd63e6891 100644 --- a/Documentation/es/texidocs/positioning-grace-note-beams-at-the-height-of-normal-note-beams.texidoc +++ b/Documentation/es/texidocs/positioning-grace-note-beams-at-the-height-of-normal-note-beams.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Cuando se colocan figuras sobre líneas adicionales, sus barras se sitúan generalmente en medio del pentagrama. La barra de las notas de diff --git a/Documentation/es/texidocs/positioning-grace-notes-with-floating-space.texidoc b/Documentation/es/texidocs/positioning-grace-notes-with-floating-space.texidoc index 2452c37b6e..95f113b127 100644 --- a/Documentation/es/texidocs/positioning-grace-notes-with-floating-space.texidoc +++ b/Documentation/es/texidocs/positioning-grace-notes-with-floating-space.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 45dd19546e9b75b3e1e977732f0962f35dd3290e +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Al establecer la propiedad @code{'strict-grace-spacing} hacemos que las columnas musicales para las notas de adorno sean @q{flotantes}, es diff --git a/Documentation/es/texidocs/positioning-multi-measure-rests.texidoc b/Documentation/es/texidocs/positioning-multi-measure-rests.texidoc index 4d2c6b9dbb..1e53adac57 100644 --- a/Documentation/es/texidocs/positioning-multi-measure-rests.texidoc +++ b/Documentation/es/texidocs/positioning-multi-measure-rests.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 7ed7602a82aa06a8387237c36ebd11f5a329078e +%% Translation of GIT committish: 2ba2ca2073f389842aa87f85b6c740b8488f0125 doctitlees = "Posicionar los silencios multicompás" texidoces = " A diferencia de los silencios normales, no existe una instrucción diff --git a/Documentation/es/texidocs/positioning-segno-and-coda-with-line-break.texidoc b/Documentation/es/texidocs/positioning-segno-and-coda-with-line-break.texidoc index 710f7e5e9d..08bbf914b6 100644 --- a/Documentation/es/texidocs/positioning-segno-and-coda-with-line-break.texidoc +++ b/Documentation/es/texidocs/positioning-segno-and-coda-with-line-break.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " Si queremos colocar un símbolo de segno de salida y añadir texto como @qq{D.S. al Coda} junto a él donde normalmente están las líneas del diff --git a/Documentation/es/texidocs/positioning-text-markups-inside-slurs.texidoc b/Documentation/es/texidocs/positioning-text-markups-inside-slurs.texidoc index d8801c94d0..6f14238308 100644 --- a/Documentation/es/texidocs/positioning-text-markups-inside-slurs.texidoc +++ b/Documentation/es/texidocs/positioning-text-markups-inside-slurs.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Los elementos de marcado de texto deben tener la propiedad @code{outside-staff-priority} establecida al valor falso para que se diff --git a/Documentation/es/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc b/Documentation/es/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc index f0848fa787..3928e88cd6 100644 --- a/Documentation/es/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc +++ b/Documentation/es/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: b319113e61dca137deead44f21280059fba35eca +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 doctitlees = "Evitar que se añadan becuadros adicionales automáticamente" texidoces = " Según las reglas tradicionales de composición tipográfica, se imprime diff --git a/Documentation/es/texidocs/preventing-final-mark-from-removing-final-tuplet.texidoc b/Documentation/es/texidocs/preventing-final-mark-from-removing-final-tuplet.texidoc index 68d0171fd5..92494d3542 100644 --- a/Documentation/es/texidocs/preventing-final-mark-from-removing-final-tuplet.texidoc +++ b/Documentation/es/texidocs/preventing-final-mark-from-removing-final-tuplet.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Al añadir una marca de ensayo @code{mark} al final puede ocurrir que se pierda una indicación de grupo especial colocado al final. Se diff --git a/Documentation/es/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc b/Documentation/es/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc index 21452f2d82..fcd7a44e7b 100644 --- a/Documentation/es/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc +++ b/Documentation/es/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 doctitlees = "Evitar que se impriman becuadros cuando cambia la armadura" texidoces = " Cuando cambia la armadura de la tonalidad, se imprimen becuadros diff --git a/Documentation/es/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc b/Documentation/es/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc deleted file mode 100644 index 27a2f7056d..0000000000 --- a/Documentation/es/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc +++ /dev/null @@ -1,7 +0,0 @@ -%% Translation of GIT committish: bc4b56a8dee39a1fa3f40ac329ab0754d46fc56f - texidoces = " -Se puede imprimir una línea divisoria de la forma @code{.|:} al -principio de la pieza, sobreescribiendo la propiedad correspondiente: - -" - doctitlees = "Imprimir puntos de repetición al prinicpio de la pieza" diff --git a/Documentation/es/texidocs/printing-bar-numbers-at-regular-intervals.texidoc b/Documentation/es/texidocs/printing-bar-numbers-at-regular-intervals.texidoc index e100d49dcd..b53813d45d 100644 --- a/Documentation/es/texidocs/printing-bar-numbers-at-regular-intervals.texidoc +++ b/Documentation/es/texidocs/printing-bar-numbers-at-regular-intervals.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden imprimir los números de compás a intervalos regulares mediante el establecimiento de la propiedad diff --git a/Documentation/es/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc b/Documentation/es/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc index 5fc46783f7..f78155c82f 100644 --- a/Documentation/es/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc +++ b/Documentation/es/texidocs/printing-bar-numbers-inside-boxes-or-circles.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Los números de compás también se pueden imprimir dentro de rectángulos o de circunferencias. diff --git a/Documentation/es/texidocs/printing-hairpins-in-various-styles.texidoc b/Documentation/es/texidocs/printing-hairpins-in-various-styles.texidoc index a46c60cae1..862075596a 100644 --- a/Documentation/es/texidocs/printing-hairpins-in-various-styles.texidoc +++ b/Documentation/es/texidocs/printing-hairpins-in-various-styles.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: fddedd4b9a24eaa5f3c62947ddbe5b7b19bd7767 +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " Los reguladores se pueden crear en una amplia variedad de estilos. diff --git a/Documentation/es/texidocs/printing-hairpins-using-al-niente-notation.texidoc b/Documentation/es/texidocs/printing-hairpins-using-al-niente-notation.texidoc index 7686f22644..57fc560022 100644 --- a/Documentation/es/texidocs/printing-hairpins-using-al-niente-notation.texidoc +++ b/Documentation/es/texidocs/printing-hairpins-using-al-niente-notation.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden imprimir reguladores con un círculo en la punta (notación «al niente») estableciendo la propiedad @code{circled-tip} del objeto diff --git a/Documentation/es/texidocs/printing-marks-at-the-end-of-a-line.texidoc b/Documentation/es/texidocs/printing-marks-at-the-end-of-a-line.texidoc index 53eb67bff3..70480bdc35 100644 --- a/Documentation/es/texidocs/printing-marks-at-the-end-of-a-line.texidoc +++ b/Documentation/es/texidocs/printing-marks-at-the-end-of-a-line.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden imprimir marcas al final de la línea actual, en vez de al principio de la línea siguiente. En estos casos, puede ser preferible diff --git a/Documentation/es/texidocs/printing-marks-on-every-staff.texidoc b/Documentation/es/texidocs/printing-marks-on-every-staff.texidoc index 159fbd3dd8..35b28c5996 100644 --- a/Documentation/es/texidocs/printing-marks-on-every-staff.texidoc +++ b/Documentation/es/texidocs/printing-marks-on-every-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Aunque normalmente las marcas de ensayo textuales sólo se imprimen sobre el pentagrama superior, también se pueden imprimir en otro diff --git a/Documentation/es/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc b/Documentation/es/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc index f60c8bcebe..e968651bbb 100644 --- a/Documentation/es/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc +++ b/Documentation/es/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " De forma predeterminada, las indicaciones metronómicas y las letras de ensayo se imprimen encima del pentagrama. Para diff --git a/Documentation/es/texidocs/printing-music-with-different-time-signatures.texidoc b/Documentation/es/texidocs/printing-music-with-different-time-signatures.texidoc index 370b2bddcc..43569218dd 100644 --- a/Documentation/es/texidocs/printing-music-with-different-time-signatures.texidoc +++ b/Documentation/es/texidocs/printing-music-with-different-time-signatures.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " En el siguiente fragmento de código, dos partes distintas tienen un compás completamente diferente y sin embargo se mantienen diff --git a/Documentation/es/texidocs/printing-note-names-with-and-without-an-octave-marker.texidoc b/Documentation/es/texidocs/printing-note-names-with-and-without-an-octave-marker.texidoc index ccddb7982e..2cce455162 100644 --- a/Documentation/es/texidocs/printing-note-names-with-and-without-an-octave-marker.texidoc +++ b/Documentation/es/texidocs/printing-note-names-with-and-without-an-octave-marker.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede usar el contexto @code{NoteNames} para imprimir el valor textual de las notas. La propiedad @code{printOctaveNames} activa o diff --git a/Documentation/es/texidocs/printing-text-from-right-to-left.texidoc b/Documentation/es/texidocs/printing-text-from-right-to-left.texidoc index 6e4c0bcd87..0033fbd0c6 100644 --- a/Documentation/es/texidocs/printing-text-from-right-to-left.texidoc +++ b/Documentation/es/texidocs/printing-text-from-right-to-left.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Es posible imprimir texto de derecha a izquierda en un elemento de marcado, como se muestra aquí. diff --git a/Documentation/es/texidocs/printing-the-bar-number-for-the-first-measure.texidoc b/Documentation/es/texidocs/printing-the-bar-number-for-the-first-measure.texidoc index d07e718194..9b8864c53b 100644 --- a/Documentation/es/texidocs/printing-the-bar-number-for-the-first-measure.texidoc +++ b/Documentation/es/texidocs/printing-the-bar-number-for-the-first-measure.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " De forma predeterminada se suprime el número del primer compás de una partitura si es menor o igual a @q{1}. Al establecer el valor de diff --git a/Documentation/es/texidocs/proportional-strict-notespacing.texidoc b/Documentation/es/texidocs/proportional-strict-notespacing.texidoc index 0d3c062501..4f1e6fc3d6 100644 --- a/Documentation/es/texidocs/proportional-strict-notespacing.texidoc +++ b/Documentation/es/texidocs/proportional-strict-notespacing.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 45dd19546e9b75b3e1e977732f0962f35dd3290e +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Si está establecido @code{strict-note-spacing}, el espaciado de las notas no queda influido por los compases o claves que pueda haber diff --git a/Documentation/es/texidocs/putting-lyrics-inside-the-staff.texidoc b/Documentation/es/texidocs/putting-lyrics-inside-the-staff.texidoc index ec09df61dc..55348c8ecc 100644 --- a/Documentation/es/texidocs/putting-lyrics-inside-the-staff.texidoc +++ b/Documentation/es/texidocs/putting-lyrics-inside-the-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden mover las líneas de letra verticalmente para imprimirlas dentro del pentagrama. Las letras se mueven con @code{\\override diff --git a/Documentation/es/texidocs/quoting-another-voice-with-transposition.texidoc b/Documentation/es/texidocs/quoting-another-voice-with-transposition.texidoc index 07ed74b66e..656cdd04fa 100644 --- a/Documentation/es/texidocs/quoting-another-voice-with-transposition.texidoc +++ b/Documentation/es/texidocs/quoting-another-voice-with-transposition.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 0ee650dd90daf9fe17d79fe91dfc816af02a86f1 +%% Translation of GIT committish: 3f57efa0cde39bf0642fb6fb3672a19262ceda83 texidoces = " Los pasajes citados tienen en cuenta la transposición de la fuente tanto como la del destino. En este ejemplo, todos los instrumentos diff --git a/Documentation/es/texidocs/quoting-another-voice.texidoc b/Documentation/es/texidocs/quoting-another-voice.texidoc index 1903429589..5aeb6d0ab8 100644 --- a/Documentation/es/texidocs/quoting-another-voice.texidoc +++ b/Documentation/es/texidocs/quoting-another-voice.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 3f57efa0cde39bf0642fb6fb3672a19262ceda83 texidoces = " La propiedad @code{quotedEventTypes} determina los tipos de eventos musicales que resultan citados. El valor predeterminado es diff --git a/Documentation/es/texidocs/recorder-fingering-chart.texidoc b/Documentation/es/texidocs/recorder-fingering-chart.texidoc index 4cc9c95e42..7cd025aebe 100644 --- a/Documentation/es/texidocs/recorder-fingering-chart.texidoc +++ b/Documentation/es/texidocs/recorder-fingering-chart.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 6e4e9c4eacb94d68c11fd6b9062da4f724114860 +%% Translation of GIT committish: c174139b36102ad0e0997bbcce20175dec772a71 texidoces = " El ejemplo siguiente muestra cómo se pueden realizar diagramas de digitación para instrumentos de viento. diff --git a/Documentation/es/texidocs/redefining-grace-note-global-defaults.texidoc b/Documentation/es/texidocs/redefining-grace-note-global-defaults.texidoc index 401637de9a..222e3e838f 100644 --- a/Documentation/es/texidocs/redefining-grace-note-global-defaults.texidoc +++ b/Documentation/es/texidocs/redefining-grace-note-global-defaults.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: bc4b56a8dee39a1fa3f40ac329ab0754d46fc56f +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " Los valores predeterminados para las notas de adorno están almacenados en los identificadores @code{startGraceMusic}, diff --git a/Documentation/es/texidocs/removing-bar-numbers-from-a-score.texidoc b/Documentation/es/texidocs/removing-bar-numbers-from-a-score.texidoc index 8ae1020d5f..2e8590707d 100644 --- a/Documentation/es/texidocs/removing-bar-numbers-from-a-score.texidoc +++ b/Documentation/es/texidocs/removing-bar-numbers-from-a-score.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden eliminar completamente los números de compás quitando el grabador @code{Bar_number_engraver} del contexto de @code{Score}. diff --git a/Documentation/es/texidocs/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.texidoc b/Documentation/es/texidocs/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.texidoc index 58e0ca366a..47ca3289db 100644 --- a/Documentation/es/texidocs/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.texidoc +++ b/Documentation/es/texidocs/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " De forma predeterminada, las líneas divisorias en los grupos StaffGroup, PianoStaff o GrandStaff se conectan entre los pentagramas. diff --git a/Documentation/es/texidocs/removing-the-first-empty-line.texidoc b/Documentation/es/texidocs/removing-the-first-empty-line.texidoc index 3d4171acf5..3cc4c5fa05 100644 --- a/Documentation/es/texidocs/removing-the-first-empty-line.texidoc +++ b/Documentation/es/texidocs/removing-the-first-empty-line.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " El primer pentagrama vacío también se puede suprimir de la partitura estableciendo la propiedad @code{remove-first} de diff --git a/Documentation/es/texidocs/rest-styles.texidoc b/Documentation/es/texidocs/rest-styles.texidoc index 2df64fce2c..25578fb280 100644 --- a/Documentation/es/texidocs/rest-styles.texidoc +++ b/Documentation/es/texidocs/rest-styles.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 3bd039bb1bb0ed2820458f957debbaa75511ca4e doctitlees = "Estilos de silencios" texidoces = " Los silencios se pueden imprimir en distintos estilos. diff --git a/Documentation/es/texidocs/reverting-default-beam-endings.texidoc b/Documentation/es/texidocs/reverting-default-beam-endings.texidoc index 4d08e187eb..310873bbdd 100644 --- a/Documentation/es/texidocs/reverting-default-beam-endings.texidoc +++ b/Documentation/es/texidocs/reverting-default-beam-endings.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 3ecc98aa5db8a47adcf9defc4ec9fc018c5cc47d texidoces = " Para tipografiar las barras agrupadas en la forma @code{3-4-3-2} sólo es necesario modificar la estructura de pulsos: diff --git a/Documentation/es/texidocs/rhythmic-slashes.texidoc b/Documentation/es/texidocs/rhythmic-slashes.texidoc index 88e947e3dc..f1c8ccb6ca 100644 --- a/Documentation/es/texidocs/rhythmic-slashes.texidoc +++ b/Documentation/es/texidocs/rhythmic-slashes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 98ac53591234404cd70c5eebd370a598ec74095b texidoces = " En las hojas guía de acordes o lead-sheets @qq{sencillas}, a veces no se imprime realmente ninguna nota, y en su lugar se hace una notación diff --git a/Documentation/es/texidocs/satb-choir-template---four-staves.texidoc b/Documentation/es/texidocs/satb-choir-template---four-staves.texidoc index 663f1d6895..b0abc169cf 100644 --- a/Documentation/es/texidocs/satb-choir-template---four-staves.texidoc +++ b/Documentation/es/texidocs/satb-choir-template---four-staves.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Plantilla de coro SATB (en cuatro pentagramas) diff --git a/Documentation/es/texidocs/score-for-diatonic-accordion.texidoc b/Documentation/es/texidocs/score-for-diatonic-accordion.texidoc index dc21c391c9..8396f2e6df 100644 --- a/Documentation/es/texidocs/score-for-diatonic-accordion.texidoc +++ b/Documentation/es/texidocs/score-for-diatonic-accordion.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 0df86f1528d4e85021fa52e5c302c2507df6a19c +%% Translation of GIT committish: e0808cc5f4890c5f8f03ed1be48fc911627afea4 texidoces = " Plantilla para escribir una partitura para acordeón diatónico. @@ -43,8 +43,5 @@ las partes de cerrar y cuáles las de abrir. 3. Para cada una de las partes de abrir o cerrar, transcriba las notas del piano a la representación de tablatura correspondiente. -Este fragmento de código incluye un útil macro opcional para el editor -de texto jEdit. - " doctitlees = "Partitura para acordeón diatónico" diff --git a/Documentation/es/texidocs/script-chart.texidoc b/Documentation/es/texidocs/script-chart.texidoc index 1444f6a8ec..a9d2f8699f 100644 --- a/Documentation/es/texidocs/script-chart.texidoc +++ b/Documentation/es/texidocs/script-chart.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 16e827736538b0e0c850112e522de52de0d350da +%% Translation of GIT committish: dcf8c371da140f17f6c5c004502a28c185e6895c %% Translation of Documentation/included/script-chart.ly texidoces = " He aquí un cuadro que muestra todas las articulaciones disponibles: diff --git a/Documentation/es/texidocs/separating-key-cancellations-from-key-signature-changes.texidoc b/Documentation/es/texidocs/separating-key-cancellations-from-key-signature-changes.texidoc index d118bf7414..b7ea83e98f 100644 --- a/Documentation/es/texidocs/separating-key-cancellations-from-key-signature-changes.texidoc +++ b/Documentation/es/texidocs/separating-key-cancellations-from-key-signature-changes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " De forma predeterminada, las alteraciones accidentales que se usan para las cancelaciones en las armaduras se colocan adyacentes a las diff --git a/Documentation/es/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc b/Documentation/es/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc index 3f3a40d2b9..2577013f46 100644 --- a/Documentation/es/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc +++ b/Documentation/es/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Si la nota que da fin a un regulador cae sobre la primera parte de un compás, el regulador se detiene en la línea divisoria diff --git a/Documentation/es/texidocs/setting-system-separators.texidoc b/Documentation/es/texidocs/setting-system-separators.texidoc index e75f8c37f0..0fd27fcb6c 100644 --- a/Documentation/es/texidocs/setting-system-separators.texidoc +++ b/Documentation/es/texidocs/setting-system-separators.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " Se pueden insertar separadores sistema entre los sistemas de una página. Se puede usar cualquier elemento de marcado, pero diff --git a/Documentation/es/texidocs/setting-the-double-repeat-default-for-volte.texidoc b/Documentation/es/texidocs/setting-the-double-repeat-default-for-volte.texidoc index 3f024c9db0..315ebee302 100644 --- a/Documentation/es/texidocs/setting-the-double-repeat-default-for-volte.texidoc +++ b/Documentation/es/texidocs/setting-the-double-repeat-default-for-volte.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Existen tres estilos distintos de repeticiones dobles para la primera y segunda vez, que se pueden ajustar utilizando diff --git a/Documentation/es/texidocs/setting-the-minimum-length-of-hairpins.texidoc b/Documentation/es/texidocs/setting-the-minimum-length-of-hairpins.texidoc index 7d29b10499..eb15526d53 100644 --- a/Documentation/es/texidocs/setting-the-minimum-length-of-hairpins.texidoc +++ b/Documentation/es/texidocs/setting-the-minimum-length-of-hairpins.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Si los reguladores son demasiado cortos, se pueden alargar modificando la propiedad @code{minimum-length} del objeto diff --git a/Documentation/es/texidocs/shortening-volta-brackets.texidoc b/Documentation/es/texidocs/shortening-volta-brackets.texidoc index db7abc6b7c..c40957d4ba 100644 --- a/Documentation/es/texidocs/shortening-volta-brackets.texidoc +++ b/Documentation/es/texidocs/shortening-volta-brackets.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " De forma predeterminada, los corchetes de primera y segunda vez se trazan encima de los finales alternativos completos, pero es posible diff --git a/Documentation/es/texidocs/showing-chords-at-changes.texidoc b/Documentation/es/texidocs/showing-chords-at-changes.texidoc index ca4092f76f..9e158f0cb3 100644 --- a/Documentation/es/texidocs/showing-chords-at-changes.texidoc +++ b/Documentation/es/texidocs/showing-chords-at-changes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se pueden imprimir los acordes exclusivamente al comienzo de las líneas y cuando cambia el acorde. diff --git a/Documentation/es/texidocs/showing-the-same-articulation-above-and-below-a-note-or-chord.texidoc b/Documentation/es/texidocs/showing-the-same-articulation-above-and-below-a-note-or-chord.texidoc index 7d4ec6de41..a4a4f6280a 100644 --- a/Documentation/es/texidocs/showing-the-same-articulation-above-and-below-a-note-or-chord.texidoc +++ b/Documentation/es/texidocs/showing-the-same-articulation-above-and-below-a-note-or-chord.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " De forma predeterminada, LilyPond no permite poner la misma articulación (p.ej., un acento, un calderón, un círculo de armónico, diff --git a/Documentation/es/texidocs/simple-lead-sheet.texidoc b/Documentation/es/texidocs/simple-lead-sheet.texidoc index 299530a38e..51f75c9d21 100644 --- a/Documentation/es/texidocs/simple-lead-sheet.texidoc +++ b/Documentation/es/texidocs/simple-lead-sheet.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Al juntar nombres de acorde en cifrado americano, melodía y letra, obtenemos una hoja guía de acordes o «lead sheet»: diff --git a/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc b/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc index b210b209e6..ad5257d1a8 100644 --- a/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc +++ b/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Esta plantilla facilita la preparación de una canción con melodía, letra y acordes. diff --git a/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-chords-and-frets.texidoc b/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-chords-and-frets.texidoc index cdc17f5704..1f5581a6f8 100644 --- a/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-chords-and-frets.texidoc +++ b/Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-chords-and-frets.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Presentamos a continuación un ejemplo de plantilla para una hoja guía de acordes con melodía, letra, acordes y diagramas de diff --git a/Documentation/es/texidocs/single-staff-template-with-notes-and-chords.texidoc b/Documentation/es/texidocs/single-staff-template-with-notes-and-chords.texidoc index 6a837d21e7..60a40abad4 100644 --- a/Documentation/es/texidocs/single-staff-template-with-notes-and-chords.texidoc +++ b/Documentation/es/texidocs/single-staff-template-with-notes-and-chords.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: b61b2fccd68e0023164edde737ba6927fc7aa2bf texidoces = " ¿Quiere preparar una hoja guía de acordes (o «lead sheet») con melodía y acordes? ¡No busque más! diff --git a/Documentation/es/texidocs/single-staff-template-with-notes-and-lyrics.texidoc b/Documentation/es/texidocs/single-staff-template-with-notes-and-lyrics.texidoc index ea644a1cc8..507a9cf9fe 100644 --- a/Documentation/es/texidocs/single-staff-template-with-notes-and-lyrics.texidoc +++ b/Documentation/es/texidocs/single-staff-template-with-notes-and-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Esta pequeña plantilla muestra una melodía sencilla con letra. Córtela y péguela, escriba las notas y luego la letra. Este ejemplo desactiva diff --git a/Documentation/es/texidocs/single-staff-template-with-only-notes.texidoc b/Documentation/es/texidocs/single-staff-template-with-only-notes.texidoc index 63c40f4b2e..3adc1340c5 100644 --- a/Documentation/es/texidocs/single-staff-template-with-only-notes.texidoc +++ b/Documentation/es/texidocs/single-staff-template-with-only-notes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Esta plantilla simple prepara un pentagrama con notas, adecuado para un instrumento solista o un fragmento melódico. Córtelo y péguelo en diff --git a/Documentation/es/texidocs/skips-in-lyric-mode-2.texidoc b/Documentation/es/texidocs/skips-in-lyric-mode-2.texidoc index 96a63b36f5..2abc7d4daf 100644 --- a/Documentation/es/texidocs/skips-in-lyric-mode-2.texidoc +++ b/Documentation/es/texidocs/skips-in-lyric-mode-2.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Aunque no se pueden usar los silencios de separación @code{s} dentro de @code{\\lyricmode} (se toman como una @qq{s}, literal, no como un diff --git a/Documentation/es/texidocs/skips-in-lyric-mode.texidoc b/Documentation/es/texidocs/skips-in-lyric-mode.texidoc index e367e88366..8a883cae59 100644 --- a/Documentation/es/texidocs/skips-in-lyric-mode.texidoc +++ b/Documentation/es/texidocs/skips-in-lyric-mode.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La sintaxis @code{s} para los silencios de desplazamiento solamente está disponible en los modos de nota y de acorde. En otras diff --git a/Documentation/es/texidocs/slides-in-tablature.texidoc b/Documentation/es/texidocs/slides-in-tablature.texidoc index 2972a1afed..3f394a86b6 100644 --- a/Documentation/es/texidocs/slides-in-tablature.texidoc +++ b/Documentation/es/texidocs/slides-in-tablature.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Los deslizamientos se pueden componer tipográficamente tanto en los contextos de @code{Staff} como en los de @code{TabStaff}: diff --git a/Documentation/es/texidocs/snap-pizzicato-or-bartok-pizzicato.texidoc b/Documentation/es/texidocs/snap-pizzicato-or-bartok-pizzicato.texidoc index 95ea005234..f1cced2b40 100644 --- a/Documentation/es/texidocs/snap-pizzicato-or-bartok-pizzicato.texidoc +++ b/Documentation/es/texidocs/snap-pizzicato-or-bartok-pizzicato.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " El @qq{snap-pizzicato} (pizzicato de pellizco, conocido también como @qq{pizzicato de Bartók}) es un @qq{pizzicato fuerte en el que la diff --git a/Documentation/es/texidocs/stand-alone-two-column-markup.texidoc b/Documentation/es/texidocs/stand-alone-two-column-markup.texidoc index 3ce79bdcb7..f1438fd080 100644 --- a/Documentation/es/texidocs/stand-alone-two-column-markup.texidoc +++ b/Documentation/es/texidocs/stand-alone-two-column-markup.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 6f88af063980030706a883f95b20b11cdc7d780b +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Los textos independientes se pueden disponer en varias columnas utilizando instrucciones @code{\\markup}: diff --git a/Documentation/es/texidocs/stem-and-beam-behavior-in-tablature.texidoc b/Documentation/es/texidocs/stem-and-beam-behavior-in-tablature.texidoc index 78d47fd000..94bd3d9940 100644 --- a/Documentation/es/texidocs/stem-and-beam-behavior-in-tablature.texidoc +++ b/Documentation/es/texidocs/stem-and-beam-behavior-in-tablature.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La dirección de las plicas se contola de la misma forma en la tablatura que en la notación tradicional. Las barras se pueden diff --git a/Documentation/es/texidocs/stemlets.texidoc b/Documentation/es/texidocs/stemlets.texidoc index ff96eb713a..3607b1fee9 100644 --- a/Documentation/es/texidocs/stemlets.texidoc +++ b/Documentation/es/texidocs/stemlets.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 6e4e9c4eacb94d68c11fd6b9062da4f724114860 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " En ciertas convenciones notacionales se permite que las barras se extiendan por encima de los silencios. Dependiendo de nuestras diff --git a/Documentation/es/texidocs/strict-beat-beaming.texidoc b/Documentation/es/texidocs/strict-beat-beaming.texidoc index 54cc82aec8..6c5ddcebeb 100644 --- a/Documentation/es/texidocs/strict-beat-beaming.texidoc +++ b/Documentation/es/texidocs/strict-beat-beaming.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 5c42908f1c8d0a5c1d88851a2d793ca55476612c +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " Se puede hacer que las barras secundarias apunten en la dirección del pulso o fracción a que pertenecen. La primera barra evita los diff --git a/Documentation/es/texidocs/string-number-extender-lines.texidoc b/Documentation/es/texidocs/string-number-extender-lines.texidoc index 33e308974b..19882becc5 100644 --- a/Documentation/es/texidocs/string-number-extender-lines.texidoc +++ b/Documentation/es/texidocs/string-number-extender-lines.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: bc4b56a8dee39a1fa3f40ac329ab0754d46fc56f +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " Hacemos una línea extensora para las indicaciones de número de cuerda, motrando que una serie de notas se han de tocar sobre la misma cuerda. diff --git a/Documentation/es/texidocs/string-quartet-template-simple.texidoc b/Documentation/es/texidocs/string-quartet-template-simple.texidoc index e3c1b10166..4ac87a44f4 100644 --- a/Documentation/es/texidocs/string-quartet-template-simple.texidoc +++ b/Documentation/es/texidocs/string-quartet-template-simple.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 3f57efa0cde39bf0642fb6fb3672a19262ceda83 texidoces = " Esta plantilla muestra un cuarteto de cuerda normal. También utiliza una sección @code{\\global} para el compás y la armadura diff --git a/Documentation/es/texidocs/string-quartet-template-with-separate-parts.texidoc b/Documentation/es/texidocs/string-quartet-template-with-separate-parts.texidoc index 05c39907d2..fb53f969a9 100644 --- a/Documentation/es/texidocs/string-quartet-template-with-separate-parts.texidoc +++ b/Documentation/es/texidocs/string-quartet-template-with-separate-parts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 3f57efa0cde39bf0642fb6fb3672a19262ceda83 texidoces = " El fragmento de código @qq{Plantilla de cuarteto de cuerda} produce un resultado satisfactorio para el cuarteto, pero ¿y si tenemos que diff --git a/Documentation/es/texidocs/subdividing-beams.texidoc b/Documentation/es/texidocs/subdividing-beams.texidoc index e8cafac2c7..c22346aa30 100644 --- a/Documentation/es/texidocs/subdividing-beams.texidoc +++ b/Documentation/es/texidocs/subdividing-beams.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: f91c9533a7217e9d19eccc3c192ea9222efdbfc4 texidoces = " Las barras de semicorchea, o de figuras más breves, no se subdividen de forma predeterminada. Esto es, las tres (o más) barras se amplían diff --git a/Documentation/es/texidocs/suppressing-warnings-for-clashing-note-columns.texidoc b/Documentation/es/texidocs/suppressing-warnings-for-clashing-note-columns.texidoc index 40b222fea0..01a21033aa 100644 --- a/Documentation/es/texidocs/suppressing-warnings-for-clashing-note-columns.texidoc +++ b/Documentation/es/texidocs/suppressing-warnings-for-clashing-note-columns.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: db22ad98af264b424e36b161c23fed43111b5c8a texidoces = " Si se colocan sobre la misma posición notas de dos voces distintas con las plicas en la misma dirección, y ninguna de las voces tiene un diff --git a/Documentation/es/texidocs/table-of-contents.texidoc b/Documentation/es/texidocs/table-of-contents.texidoc index 5d450f2857..4f2ac73eb6 100644 --- a/Documentation/es/texidocs/table-of-contents.texidoc +++ b/Documentation/es/texidocs/table-of-contents.texidoc @@ -1,7 +1,7 @@ -%% Translation of GIT committish: 45dd19546e9b75b3e1e977732f0962f35dd3290e +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede incluir un índice general (tabla de contenidos) mediante el -uso de @code{\\markuplist \\table-of-contents}. Los elementos de la +uso de @code{\\markuplines \\table-of-contents}. Los elementos de la TDC se añaden con la instrucción @code{\\tocItem}. " diff --git a/Documentation/es/texidocs/three-sided-box.texidoc b/Documentation/es/texidocs/three-sided-box.texidoc index 81f1c6d918..159a739129 100644 --- a/Documentation/es/texidocs/three-sided-box.texidoc +++ b/Documentation/es/texidocs/three-sided-box.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Este ejemplo muestra cómo añadir ina instrucción de marcado para obtener un rectángulo de tres segmentos visibles rodeando un elemento diff --git a/Documentation/es/texidocs/tick-bar-lines.texidoc b/Documentation/es/texidocs/tick-bar-lines.texidoc index ebf34908e7..695f68ef75 100644 --- a/Documentation/es/texidocs/tick-bar-lines.texidoc +++ b/Documentation/es/texidocs/tick-bar-lines.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Con frecuencia se usan barras de compás en forma de 'tick' o raya corta donde la línea divisoria se emplea solamente a efectos de diff --git a/Documentation/es/texidocs/time-signature-in-parentheses---method-3.texidoc b/Documentation/es/texidocs/time-signature-in-parentheses---method-3.texidoc index 2f54341bb0..e1fdc92d34 100644 --- a/Documentation/es/texidocs/time-signature-in-parentheses---method-3.texidoc +++ b/Documentation/es/texidocs/time-signature-in-parentheses---method-3.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Otra forma de poner la indicación de compás entre paréntesis. diff --git a/Documentation/es/texidocs/time-signature-in-parentheses.texidoc b/Documentation/es/texidocs/time-signature-in-parentheses.texidoc index 69f7ec0be7..9494cbb862 100644 --- a/Documentation/es/texidocs/time-signature-in-parentheses.texidoc +++ b/Documentation/es/texidocs/time-signature-in-parentheses.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La indicación de compás puede encerrarse entre paréntesis. diff --git a/Documentation/es/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc b/Documentation/es/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc index aca3ef0b06..0456d0b09a 100644 --- a/Documentation/es/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc +++ b/Documentation/es/texidocs/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " A veces, la indicación de compás no debe imprimir la fracción completa (p.ej. 7/4), sino sólo el numerador (7 en este caso). Esto se puede diff --git a/Documentation/es/texidocs/transcription-of-ancient-music-with-incipit.texidoc b/Documentation/es/texidocs/transcription-of-ancient-music-with-incipit.texidoc deleted file mode 100644 index 7d4c9cac90..0000000000 --- a/Documentation/es/texidocs/transcription-of-ancient-music-with-incipit.texidoc +++ /dev/null @@ -1,11 +0,0 @@ -%% Translation of GIT committish: 6e4e9c4eacb94d68c11fd6b9062da4f724114860 - texidoces = " -A modo de alternativa para obtener auténticos «incipit» -independientes de la partitura principal, se incluyen como -elemento de marcado en el campo que se usa normalmente para el -nombre del instrumento. Por el momento, la letra sólo se puede -añadir como marcado directo. Por desgracia, su espaciado no es -análogo al de la letra principal. - -" - doctitlees = "Transcripción de música antigua con incipit" diff --git a/Documentation/es/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc b/Documentation/es/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc index a26a8975fe..8d1e0643f6 100644 --- a/Documentation/es/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc +++ b/Documentation/es/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 6f88af063980030706a883f95b20b11cdc7d780b +%% Translation of GIT committish: ca342a542bee6a28662c88b497819c86f904fb40 doctitlees = "Transportar música con el menor número de alteraciones" texidoces = " Este ejemplo utiliza código de Scheme para forzar las diff --git a/Documentation/es/texidocs/tweaking-clef-properties.texidoc b/Documentation/es/texidocs/tweaking-clef-properties.texidoc index 7ad0ceafbf..21d12d7d07 100644 --- a/Documentation/es/texidocs/tweaking-clef-properties.texidoc +++ b/Documentation/es/texidocs/tweaking-clef-properties.texidoc @@ -1,34 +1,24 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: db22ad98af264b424e36b161c23fed43111b5c8a doctitlees = "Trucaje de las propiedades de clave" texidoces = " -La instrucción @code{\\clef \"treble_8\"} equivale a un ajuste de -@code{clefGlyph}, @code{clefPosition} (que controla la posición -vertical de la clave), @code{middleCPosition} y -@code{clefTransposition}. Se imprime una clave cada vez que se -modifica cualquiera de las propiedades excepto @code{middleCPosition}. +La modificación del glifo de la clave, su posición o su octavación, no +cambian 'per se' la posición de las siguientes notas del pentagrama. +Para conseguir armaduras de tonalidad sobre las líneas del pentagrama +adecuadas, también debe especificarse @code{middleCClefPosition}, con +valores positivos o negativos que mueven el @code{Do central} hacia +arriba o hacia abajo, respectivamente, en relación con la línea +central del pentagrama (usualmente la tercera). -Observe que la modificación del glifo, la posición de la clave o su -octavación, no cambian 'per se' la posición de las siguientes notas -del pentagrama: para hacer esto también se debe especificar la -posición del Do central. In order to get key signatures on the -correct staff lines, @code{middleCClefPosition} must also be set. Los -parámetros posicionales están en relación con la tercera línea del -pentagrama, los números positivos desplazan hacia arriba, contando una -unidad por cada línea y espacio. El valor de @code{clefTransposition} -se establecería normalmente a 7, -7, 15 or -15, pero son válidos otros -valores. - -Cuando se produce un cambio de clave en el salto de línea se imprime -la clave nueva tanto al final de la línea anterior como al principio -de la nueva, de forma predeterminada. Si no se necesita la clave de -advertencia al final de la línea anterior, se puede quitar -estableciendo el valor de la propiedad @code{explicitClefVisibility} -de @code{Staff}, a @code{end-of-line-invisible}. El comportamiento -predeterminado se puede recuperar con @code{\\unset -Staff.explicitClefVisibility}. +Por ejemplo, la instrucción @code{\\clef \"treble_8\"} equivale a un +ajuste de @code{clefGlyph}, @code{clefPosition} (que controla la +posición vertical de la clave sobre el pentagrama), +@code{middleCPosition} y @code{clefTransposition}. Se imprime una +clave cada vez que se modifica cualquiera de las propiedades excepto +@code{middleCPosition}. Los siguientes ejemplos muestran las posibilidades cuando se ajustan estas propiedades manualmente. En la primera línea, los cambios manuales preservan el posicionamiento relativo estándar de las claves y las notas, pero no lo hacen en la segunda línea. + " diff --git a/Documentation/es/texidocs/tweaking-grace-layout-within-music.texidoc b/Documentation/es/texidocs/tweaking-grace-layout-within-music.texidoc index 057a59de47..63ba968422 100644 --- a/Documentation/es/texidocs/tweaking-grace-layout-within-music.texidoc +++ b/Documentation/es/texidocs/tweaking-grace-layout-within-music.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 45dd19546e9b75b3e1e977732f0962f35dd3290e +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " La disposición de las expresiones de adorno se puede cambiar a lo largo de toda la música usando las funciones diff --git a/Documentation/es/texidocs/use-square-bracket-at-the-start-of-a-staff-group.texidoc b/Documentation/es/texidocs/use-square-bracket-at-the-start-of-a-staff-group.texidoc index 57dababf88..ba7d0c0515 100644 --- a/Documentation/es/texidocs/use-square-bracket-at-the-start-of-a-staff-group.texidoc +++ b/Documentation/es/texidocs/use-square-bracket-at-the-start-of-a-staff-group.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Se puede usar el delimitador de comienzo de un sistema @code{SystemStartSquare} estableciéndolo explícitamente dentro de diff --git a/Documentation/es/texidocs/using-a-tick-as-the-breath-mark-symbol.texidoc b/Documentation/es/texidocs/using-a-tick-as-the-breath-mark-symbol.texidoc index bd66a5a8da..049bf67b59 100644 --- a/Documentation/es/texidocs/using-a-tick-as-the-breath-mark-symbol.texidoc +++ b/Documentation/es/texidocs/using-a-tick-as-the-breath-mark-symbol.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: bc4b56a8dee39a1fa3f40ac329ab0754d46fc56f +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " La música vocal y de viento usa con frecuencia una raya corta como signo de respiración. Esto indica una repiración que quita un poco de diff --git a/Documentation/es/texidocs/using-alternative-flag-styles.texidoc b/Documentation/es/texidocs/using-alternative-flag-styles.texidoc index 82dc237268..d3cebee253 100644 --- a/Documentation/es/texidocs/using-alternative-flag-styles.texidoc +++ b/Documentation/es/texidocs/using-alternative-flag-styles.texidoc @@ -1,9 +1,10 @@ -%% Translation of GIT committish: bc4b56a8dee39a1fa3f40ac329ab0754d46fc56f +%% Translation of GIT committish: 1010f574a85b40fb70e0b31136e7eb788e4946be texidoces = " Se pueden imprimir estilos alternativos del corchete o gancho de las corcheas y figuras menores, mediante la sobreescritura de la propiedad @code{stencil} del objeto @code{Flag}. Son valores válidos -@code{modern-straight-flag} y @code{old-straight-flag}. +@code{modern-straight-flag} y @code{old-straight-flag} y +@code{flat-flag}. " doctitlees = "Uso de estilos alternativos para los corchetes" diff --git a/Documentation/es/texidocs/using-arpeggiobracket-to-make-divisi-more-visible.texidoc b/Documentation/es/texidocs/using-arpeggiobracket-to-make-divisi-more-visible.texidoc index 1d24976765..d1a62a87f6 100644 --- a/Documentation/es/texidocs/using-arpeggiobracket-to-make-divisi-more-visible.texidoc +++ b/Documentation/es/texidocs/using-arpeggiobracket-to-make-divisi-more-visible.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " El corchete de arpegios @code{arpeggioBracket} se puede usar para indicar la división de voces cuando no hay plicas que puedan ofrecer diff --git a/Documentation/es/texidocs/using-autochange-with-more-than-one-voice.texidoc b/Documentation/es/texidocs/using-autochange-with-more-than-one-voice.texidoc index 8bea7fd4d3..dd0074c5a9 100644 --- a/Documentation/es/texidocs/using-autochange-with-more-than-one-voice.texidoc +++ b/Documentation/es/texidocs/using-autochange-with-more-than-one-voice.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Utilización de @code{autochange} con más de una voz. diff --git a/Documentation/es/texidocs/using-double-slurs-for-legato-chords.texidoc b/Documentation/es/texidocs/using-double-slurs-for-legato-chords.texidoc index b9d8565295..9bdbcbabd0 100644 --- a/Documentation/es/texidocs/using-double-slurs-for-legato-chords.texidoc +++ b/Documentation/es/texidocs/using-double-slurs-for-legato-chords.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Algunos compositores escriben dos ligaduras cuando quieren acordes legato. Esto se puede conseguir estableciendo @code{doubleSlurs}. diff --git a/Documentation/es/texidocs/using-grace-note-slashes-with-normal-heads.texidoc b/Documentation/es/texidocs/using-grace-note-slashes-with-normal-heads.texidoc index d472fd3e55..e890bcb76b 100644 --- a/Documentation/es/texidocs/using-grace-note-slashes-with-normal-heads.texidoc +++ b/Documentation/es/texidocs/using-grace-note-slashes-with-normal-heads.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: bc4b56a8dee39a1fa3f40ac329ab0754d46fc56f +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " Es posible aplicar la barrita que cruza la barra de las acciaccaturas, en otras situaciones. diff --git a/Documentation/es/texidocs/using-ly-grob-object-to-access-grobs-with--tweak.texidoc b/Documentation/es/texidocs/using-ly-grob-object-to-access-grobs-with--tweak.texidoc index 2b539c21fe..7be0038904 100644 --- a/Documentation/es/texidocs/using-ly-grob-object-to-access-grobs-with--tweak.texidoc +++ b/Documentation/es/texidocs/using-ly-grob-object-to-access-grobs-with--tweak.texidoc @@ -1,10 +1,10 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " -Se puede acceder @qq{lateralmente} a algunos grobs desde dentro de la +Se puede acceder \"lateralmente\" a algunos grobs desde dentro de la función de callback de otro grob. Éstos se encuentran relacionados -normalmente como @qq{layout objects} (objetos de presentación) en la -sección @qq{Internal properties} (propiedades internas) de un -interface de grob. Se usa la función @code{ly:grob-object} para +normalmente como \"layout objects\" (objetos de presentación) en la +sección \"Internal properties\" (propiedades internas) de un +interface de grob. Se usa la función ly:grob-object para acceder a estos grobs. diff --git a/Documentation/es/texidocs/using-postscript-to-generate-special-note-head-shapes.texidoc b/Documentation/es/texidocs/using-postscript-to-generate-special-note-head-shapes.texidoc index 28d8928202..d2fa8425b5 100644 --- a/Documentation/es/texidocs/using-postscript-to-generate-special-note-head-shapes.texidoc +++ b/Documentation/es/texidocs/using-postscript-to-generate-special-note-head-shapes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Cuando la cabeza de una nota con una forma especial no se puede generar fácilmente mediante elementos de marcado gráfico, puede diff --git a/Documentation/es/texidocs/using-the--tweak-command-to-tweak-individual-grobs.texidoc b/Documentation/es/texidocs/using-the--tweak-command-to-tweak-individual-grobs.texidoc index 1aed3ad846..303886bf2b 100644 --- a/Documentation/es/texidocs/using-the--tweak-command-to-tweak-individual-grobs.texidoc +++ b/Documentation/es/texidocs/using-the--tweak-command-to-tweak-individual-grobs.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Con la instrucción de trucar @code{\\tweak} todos los objetos gráficos se pueden retocar directamente. Aquí presentamos ejemplos de los diff --git a/Documentation/es/texidocs/using-the-whiteout-property.texidoc b/Documentation/es/texidocs/using-the-whiteout-property.texidoc index 3ba0811207..b79272cd1d 100644 --- a/Documentation/es/texidocs/using-the-whiteout-property.texidoc +++ b/Documentation/es/texidocs/using-the-whiteout-property.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: f0c956e3cda548bde3c7b8ca01bcd081ee07feae texidoces = " Se puede imprimir cualquier objeto gráfico sobre un fondo blanco para enmascarar parte de los objetos que están por debajo. Esto puede ser diff --git a/Documentation/es/texidocs/using-ties-with-arpeggios.texidoc b/Documentation/es/texidocs/using-ties-with-arpeggios.texidoc index c06dc2ae4b..2729c2d032 100644 --- a/Documentation/es/texidocs/using-ties-with-arpeggios.texidoc +++ b/Documentation/es/texidocs/using-ties-with-arpeggios.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 doctitlees = "Uso de ligaduras en los arpegios" texidoces = " En ocasiones se usan ligaduras de unión para escribir los arpegios. diff --git a/Documentation/es/texidocs/utf-8.texidoc b/Documentation/es/texidocs/utf-8.texidoc index 1570f32ef3..ca0916df71 100644 --- a/Documentation/es/texidocs/utf-8.texidoc +++ b/Documentation/es/texidocs/utf-8.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 9c379d799d81429fff6392c639dffef526bd5db9 texidoces = " Se pueden usar varios sistemas de escritura para textos (como títulos o la letra de las canciones) si se introducen en la codificación diff --git a/Documentation/es/texidocs/vertical-aligned-staffgroups-without-connecting-systemstartbar.texidoc b/Documentation/es/texidocs/vertical-aligned-staffgroups-without-connecting-systemstartbar.texidoc index 177ad52a2b..74e377f00e 100644 --- a/Documentation/es/texidocs/vertical-aligned-staffgroups-without-connecting-systemstartbar.texidoc +++ b/Documentation/es/texidocs/vertical-aligned-staffgroups-without-connecting-systemstartbar.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 6e4e9c4eacb94d68c11fd6b9062da4f724114860 +%% Translation of GIT committish: ff9ca62acddb818b7788d7818a5c7eb0ddb6cdcb texidoces = " Este fragmento de código muestra cómo obtener grupos de pentagramas StaffGroups alineados verticalmente con una barra de inicio de sistema diff --git a/Documentation/es/texidocs/vertical-line-as-a-baroque-articulation-mark.texidoc b/Documentation/es/texidocs/vertical-line-as-a-baroque-articulation-mark.texidoc index 779577ad44..df7012b43b 100644 --- a/Documentation/es/texidocs/vertical-line-as-a-baroque-articulation-mark.texidoc +++ b/Documentation/es/texidocs/vertical-line-as-a-baroque-articulation-mark.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Esta línea corta vertical situada encima de la nota es de uso común en música barroca. Su significado varía, pero en general indica notas diff --git a/Documentation/es/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc b/Documentation/es/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc index 89914b4c3a..e94cc54b77 100644 --- a/Documentation/es/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc +++ b/Documentation/es/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: a2030063498b24f5b08e10b0e429a12a82abbf2d +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " Todos los objetos @code{DynamicLineSpanner} (reguladores e indicaciones dinámicas de texto) se sitúan con su línea de referencia a diff --git a/Documentation/es/texidocs/vertically-aligning-dynamics-across-multiple-notes.texidoc b/Documentation/es/texidocs/vertically-aligning-dynamics-across-multiple-notes.texidoc index ae2d5b58d2..a10379b226 100644 --- a/Documentation/es/texidocs/vertically-aligning-dynamics-across-multiple-notes.texidoc +++ b/Documentation/es/texidocs/vertically-aligning-dynamics-across-multiple-notes.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Las expresiones dinámicas que se comienzan, terminan o se producen en la misma nota se alinean verticalmente. Para asegurar que las diff --git a/Documentation/es/texidocs/vertically-aligning-ossias-and-lyrics.texidoc b/Documentation/es/texidocs/vertically-aligning-ossias-and-lyrics.texidoc index e4fe6bbc24..bd8308498c 100644 --- a/Documentation/es/texidocs/vertically-aligning-ossias-and-lyrics.texidoc +++ b/Documentation/es/texidocs/vertically-aligning-ossias-and-lyrics.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Este fragmento de código muestra el uso de las propiedades de contexto @code{alignBelowContext} y @code{alignAboveContext} para diff --git a/Documentation/es/texidocs/vertically-centered-common-lyrics.texidoc b/Documentation/es/texidocs/vertically-centered-common-lyrics.texidoc index d965f8e0a8..abc2681461 100644 --- a/Documentation/es/texidocs/vertically-centered-common-lyrics.texidoc +++ b/Documentation/es/texidocs/vertically-centered-common-lyrics.texidoc @@ -1,8 +1,8 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " En una pieza vocal en la que hay varias líneas de letra (dos, cuatro o -más), y hay letras comunes a todas las voces en algún punto, estas -letras comunes se pueden centrar verticalmente como se muestra en el +más) y hay letras comunes a todas las voces en algún punto, se puede +hacer que las letras comunes se centren verticalmente como se muestra en el siguiente ejemplo: " diff --git a/Documentation/es/texidocs/vertically-centering-paired-figured-bass-extenders.texidoc b/Documentation/es/texidocs/vertically-centering-paired-figured-bass-extenders.texidoc index f6e201fb4d..c3edc08e1e 100644 --- a/Documentation/es/texidocs/vertically-centering-paired-figured-bass-extenders.texidoc +++ b/Documentation/es/texidocs/vertically-centering-paired-figured-bass-extenders.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Allí donde se utilicen líneas extensoras para el bajo cifrado mediante el establecimiento de @code{useBassFigureExtenders} al valor diff --git a/Documentation/es/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc b/Documentation/es/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc index 682474ef7b..554db05b3c 100644 --- a/Documentation/es/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc +++ b/Documentation/es/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: db22ad98af264b424e36b161c23fed43111b5c8a texidoces = " Esta plantilla añade una reducción de piano automática a la partitura vocal SATB estándar que se mostró en la @qq{Plantilla de conjunto diff --git a/Documentation/es/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc b/Documentation/es/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc index 005ea1e2a8..164d9d34e2 100644 --- a/Documentation/es/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc +++ b/Documentation/es/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Esta plantilla es, básicamente, la misma que la sencilla plantilla @qq{Conjunto vocal}, excepto que aquí todas las líneas de letra se diff --git a/Documentation/es/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc b/Documentation/es/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc index 3c2fc6f6ef..fbad36311e 100644 --- a/Documentation/es/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc +++ b/Documentation/es/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Esta plantilla crea una partitura que comienza con una estrofa para solista y continúa con un estribillo a dos voces. también muestra el diff --git a/Documentation/es/texidocs/vocal-ensemble-template.texidoc b/Documentation/es/texidocs/vocal-ensemble-template.texidoc index bc28fd4187..f84f1fb803 100644 --- a/Documentation/es/texidocs/vocal-ensemble-template.texidoc +++ b/Documentation/es/texidocs/vocal-ensemble-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 56145dfed8f19bb34459d5b40cab388776d2ec49 +%% Translation of GIT committish: f5fdeccc43889b77f9907d6b80d334921ca89fbc texidoces = " He aquí una partitura vocal estándar para cuatro voces SATB. Con grupos mayores, suele ser útil incluir una sección que aparezca en diff --git a/Documentation/es/texidocs/volta-below-chords.texidoc b/Documentation/es/texidocs/volta-below-chords.texidoc index e4bfc08024..ef1bd92c3c 100644 --- a/Documentation/es/texidocs/volta-below-chords.texidoc +++ b/Documentation/es/texidocs/volta-below-chords.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Mediante la adición del grabador @code{Volta_engraver} al pentagrama pertinente, se pueden poner los corchetes de primera y diff --git a/Documentation/es/texidocs/volta-multi-staff.texidoc b/Documentation/es/texidocs/volta-multi-staff.texidoc index f68d437f65..f74758a3bd 100644 --- a/Documentation/es/texidocs/volta-multi-staff.texidoc +++ b/Documentation/es/texidocs/volta-multi-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Mediante la adición del grabador @code{Volta_engraver} al pentagrama adecuado, las casillas de primera y segunda vez se pueden poner sobre diff --git a/Documentation/es/texidocs/volta-text-markup-using-repeatcommands.texidoc b/Documentation/es/texidocs/volta-text-markup-using-repeatcommands.texidoc index ff6a11be50..4690d8731e 100644 --- a/Documentation/es/texidocs/volta-text-markup-using-repeatcommands.texidoc +++ b/Documentation/es/texidocs/volta-text-markup-using-repeatcommands.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " Aunque las casillas de repetición se especifican de forma óptima usando @code{\\repeat volta}, debe usarse la propiedad de contexto diff --git a/Documentation/es/texidocs/woodwind-diagrams-key-lists.texidoc b/Documentation/es/texidocs/woodwind-diagrams-key-lists.texidoc index 84a57bb334..25cd4bb1ed 100644 --- a/Documentation/es/texidocs/woodwind-diagrams-key-lists.texidoc +++ b/Documentation/es/texidocs/woodwind-diagrams-key-lists.texidoc @@ -1,9 +1,9 @@ -%% Translation of GIT committish: 5c42908f1c8d0a5c1d88851a2d793ca55476612c +%% Translation of GIT committish: 262abf17c7827e88e3d509100c43920c8e225bec texidoces = " El fragmento de código que aparece a continuación produce una lista de todas las llaves y disposiciones de llave posibles para los diagramas de posiciones de instrumentos de viento madera, tal y como están -definidos en @file{scm/define-woodwind-diagrams.scm}. La lista se +definidos en @code{scm/define-woodwind-diagrams.scm}. La lista se muestra en el archivo de registro, pero no en la música. Si desea una salida por la consola, omita el @code{(current-error-port)} de las instrucciones. diff --git a/Documentation/es/texidocs/woodwind-diagrams-listing.texidoc b/Documentation/es/texidocs/woodwind-diagrams-listing.texidoc index 9f2c15c3a8..e871ad446e 100644 --- a/Documentation/es/texidocs/woodwind-diagrams-listing.texidoc +++ b/Documentation/es/texidocs/woodwind-diagrams-listing.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 6f88af063980030706a883f95b20b11cdc7d780b +%% Translation of GIT committish: 8ffecf6be17c6ec2ff87cf31873121a8cce29b09 texidoces = " El fragmento de música que aparece a continuación presenta todos los diagramas de viento madera que se encuentran definidos en LilyPond por diff --git a/Documentation/es/translations.itexi b/Documentation/es/translations.itexi index ff5c71d56a..16fed501aa 100644 --- a/Documentation/es/translations.itexi +++ b/Documentation/es/translations.itexi @@ -16,42 +16,42 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Last updated Sun Nov 6 09:35:15 UTC 2016 +@emph{Actualizado en Sat Jun 24 12:50:41 UTC 2017 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @headitem Registro de cambios de LilyPond -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traductores +@tab Revisores +@tab Traducido +@tab Actualizado +@tab Más inf. @item -Section titles +Títulos de sección @* -2577 +2784 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -partially +sí @end html @end ifhtml @ifnothtml -partially +sí @end ifnothtml @tab pre-GDP @item @@ -64,21 +64,21 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @end multitable @@ -88,13 +88,13 @@ yes @headitem Ensayo sobre grabado musical automatizado -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traductores +@tab Revisores +@tab Traducido +@tab Actualizado +@tab Más inf. @item -Section titles +Títulos de sección @* 92 @tab Francisco Vila @@ -103,21 +103,21 @@ Section titles @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -130,21 +130,21 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -157,21 +157,21 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -184,21 +184,21 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @end multitable @@ -208,13 +208,13 @@ yes @headitem Extender LilyPond -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traductores +@tab Revisores +@tab Traducido +@tab Actualizado +@tab Más inf. @item -Section titles +Títulos de sección @* 107 @tab Francisco Vila @@ -223,21 +223,21 @@ Section titles @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -250,21 +250,21 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -277,21 +277,21 @@ A Tutorial de Scheme @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -partially +sí @end html @end ifhtml @ifnothtml -partially +sí @end ifnothtml @tab pre-GDP @item @@ -304,21 +304,21 @@ partially @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @end multitable @@ -328,13 +328,13 @@ yes @headitem Manual de aprendizaje de GNU LilyPond -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traductores +@tab Revisores +@tab Traducido +@tab Actualizado +@tab Más inf. @item -Section titles +Títulos de sección @* 124 @tab Francisco Vila @@ -343,21 +343,21 @@ Section titles @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -370,21 +370,21 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -397,75 +397,75 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item 2 Notación corriente @* -4402 +4421 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item 3 Conceptos fundamentales @* -11119 +11240 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -478,21 +478,21 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -505,21 +505,21 @@ A Plantillas @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @end multitable @@ -529,13 +529,13 @@ yes @headitem Referencia de la notación de GNU LilyPond -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traductores +@tab Revisores +@tab Traducido +@tab Actualizado +@tab Más inf. @item -Section titles +Títulos de sección @* 326 @tab Francisco Vila @@ -544,21 +544,21 @@ Section titles @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -571,21 +571,21 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -598,75 +598,75 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item 1.1 Alturas @* -5272 +5413 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -partially +sí @end html @end ifhtml @ifnothtml -partially +sí @end ifnothtml @tab pre-GDP @item 1.2 Duraciones @* -6822 +6853 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -partially +sí @end html @end ifhtml @ifnothtml -partially +sí @end ifnothtml @tab pre-GDP @item @@ -679,21 +679,21 @@ partially @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -partially +sí @end html @end ifhtml @ifnothtml -partially +sí @end ifnothtml @tab pre-GDP @item @@ -706,48 +706,48 @@ partially @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item 1.5 Notas simultáneas @* -2920 +2979 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -partially +parcialmente @end html @end ifhtml @ifnothtml -partially +parcialmente @end ifnothtml @tab post-GDP @item @@ -760,75 +760,75 @@ partially @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item 1.7 Anotaciones editoriales @* -1477 +1481 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -partially +sí @end html @end ifhtml @ifnothtml -partially +sí @end ifnothtml @tab pre-GDP @item 1.8 Texto @* -2755 +2754 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -partially +sí @end html @end ifhtml @ifnothtml -partially +sí @end ifnothtml @tab pre-GDP @item @@ -841,21 +841,21 @@ partially @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -868,21 +868,21 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -895,21 +895,21 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -922,21 +922,21 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -partially +sí @end html @end ifhtml @ifnothtml -partially +sí @end ifnothtml @tab pre-GDP @item @@ -949,21 +949,21 @@ partially @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -976,21 +976,21 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -1003,48 +1003,48 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item 2.7 Notación de acordes @* -1979 +1975 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -partially +sí @end html @end ifhtml @ifnothtml -partially +sí @end ifnothtml @tab pre-GDP @item @@ -1057,48 +1057,48 @@ partially @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item 2.9 Notación antigua @* -5516 +5518 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -1111,102 +1111,102 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item 3 Entrada y salida generales @* -12839 +12853 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -partially +sí @end html @end ifhtml @ifnothtml -partially +sí @end ifnothtml @tab pre-GDP @item 4 Problemas de espaciado @* -10911 +10982 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item 5 Cambiar los valores por omisión @* -15597 +17050 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -1219,21 +1219,21 @@ A Tablas del manual sobre notación @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -1246,21 +1246,21 @@ B Hoja de referencia rápida @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @end multitable @@ -1270,13 +1270,13 @@ yes @headitem LilyPond: manual de utilización del programa -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traductores +@tab Revisores +@tab Traducido +@tab Actualizado +@tab Más inf. @item -Section titles +Títulos de sección @* 135 @tab Francisco Vila @@ -1285,21 +1285,21 @@ Section titles @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -1312,75 +1312,75 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item 1 Ejecutar LilyPond @* -5440 +5469 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item 2 Actualizar ficheros con @command{convert-ly} @* -1866 +2097 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -1393,21 +1393,21 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -1420,21 +1420,21 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -1447,21 +1447,21 @@ yes @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @end multitable @@ -1471,13 +1471,13 @@ yes @headitem LilyPond: notación musical para todos -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traductores +@tab Revisores +@tab Traducido +@tab Actualizado +@tab Más inf. @item -Section titles +Títulos de sección @* 760 @tab Francisco Vila @@ -1486,21 +1486,21 @@ Section titles @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -partially +sí @end html @end ifhtml @ifnothtml -partially +sí @end ifnothtml @tab pre-GDP @item @@ -1513,48 +1513,48 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item Introducción @* -5814 +5793 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -1567,21 +1567,21 @@ Descarga @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item @@ -1594,48 +1594,48 @@ Manuales @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @item Comunidad @* -3524 +2449 @tab Francisco Vila @tab @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab @ifhtml @html -yes +sí @end html @end ifhtml @ifnothtml -yes +sí @end ifnothtml @tab pre-GDP @end multitable diff --git a/Documentation/es/usage/running.itely b/Documentation/es/usage/running.itely index 8f5b929fa6..6ff4bc61b1 100644 --- a/Documentation/es/usage/running.itely +++ b/Documentation/es/usage/running.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 0fa6f042cccacb643d46781dde23617c71a9753e + Translation of GIT committish: cd1ac38996d3de35770ea31f819b392fe686bf39 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -636,6 +636,10 @@ dentro del documento PDF generado. @tab Rellenar el borde izquierdo de la caja contenedora del EPS de salida en la cantidad dada (en mm). +@item @code{font-export-dir} +@tab @code{#f [dir]} +@tab Directorio para exportar las fuentes como archivos de Postscript. + @item @code{gs-load-fonts} @tab @code{#f} @tab Cargar las fuentes tipográficas a través de Ghostscript. @@ -644,6 +648,10 @@ en la cantidad dada (en mm). @tab @code{#f} @tab Cargar sólo las fuentes de LilyPond por medio de Ghostscript. +@item @code{gs-never-embed-fonts} +@tab @code{#f} +@tab Hacer que Ghostscript incruste solo las fuentes TrueType y no cualquier otro formato de fuente. + @item @code{gui} @tab @code{#f} @tab Se ejecuta silenciosamente y se redirige toda la salida a un archivo diff --git a/Documentation/es/usage/suggestions.itely b/Documentation/es/usage/suggestions.itely index 3024ff3453..bfe318c39e 100644 --- a/Documentation/es/usage/suggestions.itely +++ b/Documentation/es/usage/suggestions.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: d36171e34d236d890f5dc511b895037188c6c7cb + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a 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/es/usage/updating.itely b/Documentation/es/usage/updating.itely index 95d310efbc..0c99faeb97 100644 --- a/Documentation/es/usage/updating.itely +++ b/Documentation/es/usage/updating.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: bd8e8f0193000854fef9d3de3cc0a9f667ea8fb1 + Translation of GIT committish: 094be7d770e887169f70249804e1e96e04a44ca5 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -35,6 +35,7 @@ antiguos y que sigan la sintaxis nueva. * Opciones de la línea de órdenes para convert-ly:: * Problemas con convert-ly:: * Conversiones manuales:: +* Escritura de código que contemple varias versiones:: @end menu @@ -410,3 +411,48 @@ adecuadamente. \score{} ahora debe empezar con una expresión musical. Cualquier otra cosa (en particular, \header{}) debe ir después de la música. @end verbatim + +@node Escritura de código que contemple varias versiones +@section Escritura de código que contemple varias versiones +@translationof Writing code to support multiple versions + +En ciertos casos, especialmente al escribir código de +@emph{bibliotecas}, es deseable dar apoyo a más de una versión de +LilyPond, por encima de los cambios de sintaxis que rompen con la +práctica anterior. Para hacerlo, se pueden envolver porciones de +código alternativas dentro de expresiones condicionales que +dependen de la versión de LilyPond que se está ejecutando +actualmente. La función de Scheme @code{ly:version?} admite un +operador de comparación @var{op} y una versión de referencia +@var{ver} que se pasa como una lista de enteros con un máximo de +tres elementos. Se ignoran los elementos que faltan, de forma que +@code{'(2 20)} equivale a @emph{cualquier} versión de la línea de +2.20. Son posibles construcciones como las siguientes: + +@verbatim +#(cond + ((ly:version? > '(2 20)) + (ly:message "Esto es código para LilyPond posterior a 2.20")) + ((ly:version? = '(2 19 57)) + (ly:message "Esto solamente se ejecuta con LilyPond 2.19.57")) + (else (ly:message "Esto se ejecuta en cualquier otra versión"))) +@end verbatim + +Por lo general, esto se encontrará integrado dentro de funciones +de biblioteca que permitan usar más de un tipo de sintaxis +alternativas, pero también es posible usar la comparación +directamente dentro de la música como en el ejemplo siguiente: + +@verbatim +{ + c' d' e' f' + #(if (ly:version? = '(2 21)) + #{ \override NoteHead.color = #red #} + #{ \override NoteHead.color = #blue #}) + g' a' b' c'' +} +@end verbatim + +@strong{Nota:} Esta función fue introducida en LilyPond 2.19.57, +por lo que no es posible hacer la comparación con versiones +anteriores a esa. diff --git a/Documentation/es/web.texi b/Documentation/es/web.texi index dd324b3ac1..1b8d0b7d47 100644 --- a/Documentation/es/web.texi +++ b/Documentation/es/web.texi @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @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' @@ -138,13 +138,67 @@ LilyPond es software libre y forma parte del @divEnd -@divId{news} +@divId{homepage-main} + +@divClass{column-center-top} + +@subheading La belleza de las partituras + +@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 es una poderosa y flexible herramienta +para la edición de toda clase de partituras, +ya sean clásicas (como el ejemplo de J.S. Bach que aparece arriba) o +notación compleja, música antigua, música moderna, +tablaturas, música vocal, hojas-guía de acordes (lead sheets), +materiales didácticos, grandes proyectos orquestales, +salida personalizada e incluso gráficos de Schenker. + +@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 es una poderosa y flexible herramienta para la edición +de toda clase de partituras, ya sean +@uref{examples.html#Musica-Clasica, clásicas} +(como el ejemplo de J.S. Bach que aparece arriba), +@uref{examples.html#Notacion-compleja, notación compleja}, +@uref{examples.html#Musica-antigua, música antigua}, +@uref{examples.html#Musica-moderna, música moderna}, +@uref{examples.html#Tablatura, tablaturas}, +@uref{examples.html#Musica-vocal, música vocal}, +@uref{examples.html#Musica-pop, hojas-guía de acordes (lead sheets)}, +@uref{examples.html#Aplicaciones-para-la-educacion, materiales didácticos}, +@uref{examples.html#Proyectos-grandes, grandes proyectos orquestales}, +@uref{examples.html#Salida-personalizada, salida personalizada}, +e incluso +@uref{examples.html#Schenker-Graphs, gráficos de Schenker}. + +@end ifset + +¡Admire nuestra galería de @ref{Examples} e inspírese! + +@divEnd + +@divClass{column-center-middle-color2} +@subheading Noticias @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{Noticias antiguas}) @divEnd @divEnd @@ -155,7 +209,7 @@ LilyPond es software libre y forma parte del @end ifclear @ifset web_version @c make the side bar: -@divId{homePageSideBar} +@divId{homepage-sidebar} @subheading Versión estable @c TODO: javascript to detect OS and suggest download? @@ -322,8 +376,10 @@ de la lista o escribiendo directamente a través del @ifnothtml @macro contactUsAbout{topic} @cartouche -If you are aware of any other \topic\ which could be listed here, -please let us know by following the instructions on +Si tiene conocimiento de cualesquiera otros \topic\ que merezcan +aparecer relacionados aquí, +le rogamos que nos lo haga saber según se explica +en las instrucciones que aparecen en la sección @ref{Bug reports}. @end cartouche diff --git a/Documentation/es/web/community.itexi b/Documentation/es/web/community.itexi index 173b079097..96a575767f 100644 --- a/Documentation/es/web/community.itexi +++ b/Documentation/es/web/community.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 7f4a65db65f3a8eba89cc9d78101f3f7fd71a5e9 + Translation of GIT committish: 3f5d679ade0f797d5f907569656223d09b09d5db When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -9,6 +9,7 @@ @include included/acknowledge.itexi @include included/authors.itexi +@include included/gsoc.itexi @include included/helpus.itexi @node Comunidad @@ -74,11 +75,11 @@ LilyPond nosotros. @item -@ref{Noticias antiguas}: el archivo. +@ref{Noticias}: noticias procedentes del proyecto LilyPond. @item @ref{Desván}: anuncios y registros de cambios en versiones -antiguas. +anteriores, noticias antiguas, etc. @end itemize @divEnd @@ -97,7 +98,7 @@ antiguas. * Autores:: * Reconocimientos:: * Publicaciones:: -* Noticias antiguas:: +* Noticias:: * Desván:: @end menu @divEnd @@ -118,17 +119,17 @@ ayuda. @quotation @uref{http://lists.gnu.org/mailman/listinfo/lilypond-user, -suscripción e información sobre lilypond-user} +Suscripción e información sobre lilypond-user} @uref{http://lists.gnu.org/archive/html/lilypond-user/, -archivo 1 de la lista de usuarios} +Archivo 1 de la lista de usuarios} @uref{http://www.mail-archive.com/lilypond-user@@gnu.org/, -archivo 2} +Archivo 2} @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.general, -archivo 3} +Archivo 3} @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.general, -escribir a la lista lilypond-user a través de gmane} +Escribir a la lista lilypond-user a través de gmane} @end quotation @warning{Al formular preguntas, por favor, ¡utilice @@ -164,7 +165,7 @@ preferentemente enviarse a una de las listas de correo.
nombre de IRC: + @@ -187,16 +188,16 @@ preferentemente enviarse a una de las listas de correo. @quotation @uref{http://lists.gnu.org/mailman/listinfo/lilypond-es, -lista de correo en español} +Lista de correo en español} @uref{http://www.lilypondforum.de/, -foro alemán} +Foro alemán} @uref{http://groups.google.com/group/lilypond-brasil, -grupo de portugués} +Grupo de portugués} @uref{http://lists.gnu.org/mailman/listinfo/lilypond-user-fr, -lista de correo en francés} +Lista de correo en francés} @end quotation @divEnd @@ -217,14 +218,14 @@ bajo tráfico, que envía notificaciones de los últimos lanzamientos. @quotation @uref{http://lists.gnu.org/mailman/listinfo/info-lilypond, -suscripción e información sobre info-lilypond} +Suscripción e información sobre info-lilypond} @uref{http://lists.gnu.org/archive/html/info-lilypond/, -archivo 1 de la lista info} +Archivo 1 de la lista info} @uref{http://www.mail-archive.com/info-lilypond@@gnu.org/, -archivo 2} +Archivo 2} @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.announce, -archivo 3} +Archivo 3} @c don't include gmane posting here. -gp @end quotation @@ -243,17 +244,17 @@ parches se pueden también enviar aquí. @quotation @uref{http://lists.gnu.org/mailman/listinfo/lilypond-devel, -subscripción e información sobre lilypond-devel} +Suscripción e información sobre lilypond-devel} @uref{http://lists.gnu.org/archive/html/lilypond-devel/, -archivo 1 de la lista devel} +Archivo 1 de la lista devel} @uref{http://www.mail-archive.com/lilypond-devel@@gnu.org/, -archivo 2} +Archivo 2} @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.devel, -archivo 3} +Archivo 3} @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.devel, -escribir a la lista lilypond-devel a través de gmane} +Escribir a la lista lilypond-devel a través de gmane} @end quotation @@ -264,14 +265,14 @@ aquí. No envíe parches a esta lista. @quotation @uref{http://lists.gnu.org/mailman/listinfo/bug-lilypond, -subscripción e información sobre bug-lilypond} +Suscripción e información sobre bug-lilypond} @uref{http://lists.gnu.org/archive/html/bug-lilypond/, -archivo 1 de la lista bug} +Archivo 1 de la lista bug} @uref{http://www.mail-archive.com/bug-lilypond@@gnu.org/, -archivo 2} +Archivo 2} @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.bugs, -archivo 3} +Archivo 3} @c don't include gmane posting here. -gp @end quotation @@ -510,11 +511,12 @@ información. Se le avisará cuando el informe se añada al sistema de seguimiento de fallos. Déles un tiempo de unos 4 días, pues disponemos de un número limitado de voluntarios para esta tarea. -Una vez que el fallo se ha añadido al sistema de seguimiento, -puede comentarlo para añadirle más información. Puede marcar el -bug con una estrella de forma que reciba mensajes automáticamente -cuando se produce cualquier actividad sobre él. Ello requiere que -usted disponga de una cuenta en Google. +Cuando el fallo se ha añadido al sistema de seguimiento, puede +comentarlo para añadirle más información. In order to be +automatically notified about any activity on the tracker issue, +you may subscribe by clicking the envelope symbol next to the +issue title. Commenting and subscribing require being logged in +with a sourceforge account. @divEnd @divClass{column-center-bottom} @@ -619,11 +621,10 @@ la versión @versionDevel{}: Desarrolladores interesados: @table @asis -@item @email{dak@@gnu.org, David Kastrup} -Se necesitan donaciones para que yo pueda continuar mi actual -trabajo a tiempo completo sobre LilyPond. Me concentro en diseño -de interfaces de usuario y del programador, coherencia, -implementación, simplificación, documentación y depuración. +@item @email{lilypond-devel@@gnu.org, Lista de desarrolladores de LilyPond} +Puesto que no hay ningún desarrollador en la lista de interesados para el +desarrollo comercial, lo mejor que puede hacer es preguntar en la lista +de desarrolladores. @c Format @c @item @email{name@@adress.domain, Name} @@ -718,9 +719,9 @@ colaboradores. @docLinksBare{Guía del colaborador, contributor, @rcontribnamed{Top,Guía del colaborador}, - @manualDevelContributorSplit, - @manualDevelContributorBig, 500 kB, - @manualDevelContributorPdf, 2.8 MB} + @manualDevelContributorSplit-es, + @manualDevelContributorBig-es, 500 kB, + @manualDevelContributorPdf-es, 2.8 MB} @divEnd @@ -764,21 +765,21 @@ Las pruebas de lilypond-book de esta versión. @item @regtestDevelXml-es (@regtestDevelXmlPdf-es{}) -@item @regtestDevelAbc (@regtestDevelAbcPdf{}) +@item @regtestDevelAbc-es (@regtestDevelAbcPdf-es{}) -@item @regtestDevelLilypondBook (@regtestDevelLilypondBookPdf{}) +@item @regtestDevelLilypondBook-es (@regtestDevelLilypondBookPdf-es{}) @end itemize @subsubheading Versión estable @itemize -@item @regtestStable (@regtestStablePdf{}) +@item @regtestStable-es (@regtestStablePdf-es{}) -@item @regtestStableXml (@regtestStableXmlPdf{}) +@item @regtestStableXml-es (@regtestStableXmlPdf-es{}) -@item @regtestStableAbc (@regtestStableAbcPdf{}) +@item @regtestStableAbc-es (@regtestStableAbcPdf-es{}) -@item @regtestStableLilypondBook (@regtestStableLilypondBookPdf{}) +@item @regtestStableLilypondBook-es (@regtestStableLilypondBookPdf-es{}) @end itemize @end ifset @@ -865,12 +866,12 @@ más recientes están en @url{http://lilypond.org}} @tab @docLinkBig{Web,web,@manualDevelWebBig-es} @tab -@docLinkPdf{Web,web,@manualDevelWebPdf} +@docLinkPdf{Web,web,@manualDevelWebPdf-es} @item -@docLinkSplit{Cambios,changes,@manualDevelChangesSplit} +@docLinkSplit{Cambios,changes,@manualDevelChangesSplit-es} @tab -@docLinkBig{Cambios,changes,@manualDevelChangesBig} +@docLinkBig{Cambios,changes,@manualDevelChangesBig-es} @tab @docLinkPdf{Cambios,changes,@manualDevelChangesPdf-es} @@ -903,287 +904,13 @@ más recientes están en @url{http://lilypond.org}} @divEnd + + @node Google Summer of Code @unnumberedsec Google Summer of Code @translationof Google Summer of Code -@divClass{column-center-top} -@subheading ¿Qué es el Google Summer of Code (Verano del Código de Google)? - -@uref{https://developers.google.com/open-source/gsoc/, GSoC} es un -programa global que ofrece a estudiantes una ayuda para que -trabajen en proyectos de software de fuentes abiertas durante las -vacaciones de verano. Es una excelente oportunidad para que los -estudiantes obtengan experiencia en el desarrollo de software en -el mundo real y hagan contribuciones que beneficie a todos. Atrae -a colaboradores nuevos y anima a los estudiantes que ya participan -en el desarrollo de LilyPond a que se impliquen aún más. LilyPond -participa en el GSoC como parte del @uref{http://www.gnu.org/, -proyecto GNU}. - -Hemos tenido participantes en el GSoC en 2012 y 2015 y animamos a -los estudiantes a que envíen la solicitud para las futuras -ediciones. - -Si tiene alguna pregunta o le gustaría solicitar la participación, -envíenos un correo a la lista de desarrolladores (véase -@ref{Contacto}). - -@divEnd - -@divClass{column-center-bottom} -@subheading Lista de ideas del proyecto - -Más abajo aparece una lista de los proyectos sugeridos para el -GSoC o para cualquier persona interesada en ayudar a mejorar -LilyPond. (Última actualización: febrero de 2016) - -La disponibilidad de los mentores varía de proyecto en proyecto y -de un año a otro. Envíenos un correo electrónico sobre nuestra -lista de distribución de desarrolladores (véase @ref{Contacto}), y -trataremos de ayudarle a encontrar un mentor para un proyecto que -cubra sus intereses y capacidades. - -Si tiene alguna idea para un proyecto del GSoC que no aparece en -la relación siguiente, puede enviarnos un correo también. Existen -varias áreas en las que LilyPond puede mejorar, y nuestro equipo -de desarrollo está siempre dispuesto a servir de ayuda a aquellos -que deseen implicarse en un proyecto como los que aparecen -relacionados más abajo. - -Hay una lista completa de todas las incidencias abiertas -@uref{http://sourceforge.net/p/testlilyissues/issues/, aquí}. - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Mejora de la estructura interna de acordes - -La representación interna de los acordes de LilyPond no es lo -bastante potente como para captar la nomenclatura de los acordes -de jazz. Actualmente el acorde tiene una fundamental, un bajo y -una inversión. Sería bueno poder manejar acordes múltiples o -superpuestos, menor/mayor, etc. Para hacerlo, debe desarrollarse -una representación interna con la capacidad de capturar la esencia -de los acordes más complejos. Además, una vez que se haya -desarrollado la representación interna, el formato de salida de -los nombres de acorde puede mejorarse. - -@strong{Dificultad:} Fácil/intermedia -@strong{Requisitos:} Scheme (Guile), pero el nivel necesario puede -aprenderse fácilmente -@strong{Conocimientos recomendados:} Teoría y nomenclatura de los acordes -@strong{Mentor:} Carl Sorensen - -@divEnd - -@divClass{column-center-middle-color3} -@subheading ScholarLY - -ScholarLY es una biblioteca dentro de -@uref{https://openlilylib.org, openLilyLib} que provee -funcionalidades para la anotación de partituras, haciendo posible -gestionar flujos de trabajo académicos completamente en el -contexto del documento de la partitura. Hasta ahora es posible -introducir anotaciones de distintos tipos, producir mensajes que -se comportan como enlaces sobre la salida de consola y exportar a -texto y a archivos de LaTeX. - -Hay muchas solicitudes de funcionalidad para la conversión de esta -biblioteca en una herramienta mmás potente y completa aún. Por -ejemplo: inserción de ejemplos musicales, producción de notas al -pie de página, aplicación automárica de estilos al elemento -anotado (p. ej. trazar una ligadura en línea discontinua, poner -una alteración entre paréntesis), creando informes con elementos -sobre los que se puede apuntar y pulsar. Para ver una descripción -completa de esta sugerencia de proyecto, visite -@uref{https://github.com/openlilylib/scholarly/wiki/GSoC, esta página Wiki}. - -@strong{Dificultad:} media -@strong{Requisitos:} Scheme, posiblemente LaTeX, (opcionalmente -Python) -@strong{Conocimientos recomendados:} Experiencia con, o interés -en, la edición académica y flujos de trabajo colaborativos. -@strong{Mentor:} Urs Liska - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Añadir una variante especial de los glifos de fuente tipográfica - -@divClass{keep-bullets} -@itemize - -@item -Añadir variantes @q{sobre} y @q{entre} líneas del pentagrama. - -@item -Variantes más bajas y estrechas de ciertos glifos, como -alteraciones alccidentales. Otro ejemplo más específico sería una -cabeza de nota breve de la notación antigua en dos variantes, una -con un hueco pequeño dentro, y otra con un hueco grande. - -@end itemize -@divEnd - -@strong{Dificultad:} fácil -@strong{Requisitos:} MetaFont, C++, buen ojo para los detalles -@strong{Conocimientos recomendados:} conocimientos básicos de LilyPond -@strong{Mentor potencial:} Werner Lemberg - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Notas de adorno - -Arreglar problemas con la sincronización de las notas de adorno. -Las notas de adorno pueden interferir con la cuenta del tiempo de -LilyPond y causar efectos extraños, especialmente cuando se usan -varios pentagramas en los que algunos tienen notas de adorno y -otros no. Este es uno de los más antiguos y emarazosos -@uref{https://sourceforge.net/p/testlilyissues/issues/34/,bugs} de -LilyPond. - -@strong{Dificultad:} media -@strong{Requisitos:} C++, MIDI -@strong{Conocimientos recomendados:} familiaridad con el -funcionamiento interno de LilyPond -@strong{Mentores potenciales:} Mike Solomon (not available for GSoC 2016), -Carl Sorensen - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Mejora del posicionamiento de las barras de corchea (y figuras menores) - -Para barras de corchea normales, de pentagrama cruzado, -interrumpidas y en ángulo. El barrado debería depender del -contexto y de las notas vecinas (véase la sección 2.2 de -@uref{http://imslp.org/wiki/Repository_of_Music-Notation_Mistakes_%28Coulon%2C_Jean-Pierre%29, -este libro}). Si es posible, reducir el tiempo de cálculo del -barrado. - -@strong{Dificultad:} media -@strong{Requisitos:} C++, experiencia con heurística de la escritura -@strong{Conocimientos recomendados:} sentido estético -@strong{Mentores potenciales:} Mike Solomon (not available for GSoC 2016), Carl Sorensen - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Permitir objetos extensos entre voces distintas - -Actualmente, toda clase de objetos extensos (ligaduras de unión y -de expresión, matices dinámicos, textos extensos, trinos, etc.) -tienen que terminar en el mismo contexto en que empezaron. Sin -embargo, esto no refleja la realidad de la notación de la mayoría -de las configuraciones polifónicas. En la actualidad son -necesarios extraños rodeos con voces ocultas para conseguir -objetos de extensión entre voces distintas. - -Deberían explorarse nuevas formas de abordar este problema, por -ejemplo por medio de - -@divClass{keep-bullets} -@itemize - -@item la especificación de un "contexto de destino" en el que se espera que termine el objeto - -@item la especificación explícita del objeto que termina con un identificador - -@end itemize -@divEnd - -Esta funcionalidad resolvería muchos problemas presentes de manera -habitual con la música para piano y partes combinadas. - -@strong{Dificultad:} media (?) -@strong{Requisitos:} C++, Scheme -@strong{Mentor potencial:} Urs Liska -@divEnd - -@divClass{column-center-middle-color3} -@subheading Ayudar a mejorar el comportamiento de la compilación - -Las herramientas de análisis automático del código, como la -detección de filtraciones de memoria de Valgrind o el perfilador -de código Callgrind, proveen una información valiosa acerca de los -posibles problemas de nuestro código de C++. La limpieza de estas -advertencias nos permitiría rechazar automáticamente cualquier -parche que introdujese más advertencias de las que hay -actualmente. - -@strong{Dificultad:} media -@strong{Requisitos:} C++ -@strong{Mentores potenciales:} Reinhold Kainhofer (no disponible -para el GSoC 2016), Joe Neeman - -@divEnd - -@divClass{column-center-middle-color3} -@subheading MusicXML - -Mejora de las funciones de importación y exportación de MusicXML: - -@divClass{keep-bullets} -@itemize - -@item -Manejo de la exportación del contenido musical básico como la -exportación MIDI (es decir, uso de clases exportadoras dedicadas, -derivadas de la clase translator). - -@item -Construir el árbol XML del contenido musical básico, y una -conexión desde el evento musical a la etiqueta XML. - -@item -Hacer que todos los grabadores de LilyPond hagan su trabajo. - -@item -Enlazar cada objeto de presentación (es decir, cada sello o grupo -de sellos) a la causa musical (así como a la etiqueta XML dentro -del árbol XML). - -@item -Añadir un @q{back-end} de salida XML, que puede después añadir -información de disposición para cada uno de los objetos de salida -a las etiquetas del XML. - -@end itemize -@divEnd - -Existen varias posibilidades para este pryecto, entre ellas la -construcción encima del proyecto de exportación de MusicXML del -GSoC 2015. - -@strong{Dificultad:} media -@strong{Requisitos:} MusicXML, Python, Scheme, conocimiento básico de LilyPond -@strong{Mentores potenciales:} Reinhold Kainhofer, Mike Solomon -(ninguno de ellos disponible para el GSoC 2016) - -Sería un buen tanto a su favor la familiaridad con otros editores -de partituras para poder hacer pruebas cruzadas. - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Mejora de las ligaduras de unión y de expresión - -Con frecuencia, las calidad gráfica de las ligaduras de unión y de -expresión no es satisfactoria. No se manejan bien las ligaduras -@q{interrumpidas} por cambios de clave o de pentagrama. El -proyecto podría incluir y organizar ejemplos de mala salida, -decidir sobre la salida perseguida y escibir código para -mejorarla. - -@strong{Dificultad:} alta -@strong{Requisitos:} C++, experiencia con heurística de la escritura -@strong{Conocimientos recomendados:} LilyPond, sentido estético -@strong{Mentor potencial:} Mike Solomon, Janek Warchoł (ninguno de -ellos disponible para el GSoC 2016) - -@divEnd +@gsocCurrent @node Autores @@ -1223,7 +950,7 @@ ellos disponible para el GSoC 2016) @docCurrent -@subsubheading Bug squad +@subsubheading Escuadrón de fallos (Bug squad) @bugsquadCurrent @@ -1310,19 +1037,17 @@ ellos disponible para el GSoC 2016) @contactUsAbout{artículos académicos} -@node Noticias antiguas -@unnumberedsec Noticias antiguas +@node Noticias +@unnumberedsec Noticias @translationof News -@divClass{heading-center} -@warning{Hay muchos anuncios y registros de cambio antiguos en el -@ref{Desván}} -@divEnd - -@include web/news-front.itexi - -@include web/news.itexi +@include web/news-new.itexi +@divClass{column-center-bottom} +@subheading Noticias antiguas +Las noticias anteriores están en el @ref{Desván} junto a muchos +anuncios y registros de cambio antiguos. +@divEnd @node Desván @unnumberedsec Desván @@ -1362,8 +1087,8 @@ Lista descriptiva de los cambios por versión: @divEnd -@divClass{column-center-bottom} -@subheading Thanks +@divClass{column-center-middle-color3} +@subheading Agradecimientos Gracias a los desarrolladores, colaboradores, cazadores de fallos y aportadores de sugerencias por @@ -1380,7 +1105,7 @@ y aportadores de sugerencias por @divEnd -@divClass{column-center-bottom} +@divClass{column-center-middle-color3} @subheading Registros de cambios Registros de cambios de los desarrolladores, por versión: @@ -1398,3 +1123,16 @@ Registros de cambios de los desarrolladores, por versión: @miscLink{CHANGES-0.0,v0.0} @divEnd + +@divClass{column-center-middle-color2 bigger-subsubheadings} +@gsocInactive +@divEnd + +@divClass{column-center-middle-color2} +@subheading Noticias antiguas + +Las noticias más antiguas datan de julio de 2003. Las noticias +más actuales están en la página de @ref{Noticias}. +@divEnd + +@include web/news-old.itexi diff --git a/Documentation/es/web/introduction.itexi b/Documentation/es/web/introduction.itexi index c75e85971e..dd2917f09a 100644 --- a/Documentation/es/web/introduction.itexi +++ b/Documentation/es/web/introduction.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: d4756c74976a991bd80cf757f774e5525d0830cb + Translation of GIT committish: d1c9544af1b810d0eb4075106f9576347224a1b4 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -323,8 +323,7 @@ infórmese de nuestra @ref{Entrada de texto}. @translationof Examples @divClass{column-center-top} - -@subheading Beautiful examples +@subheading Bellos ejemplos LilyPond es una herramienta potente y flexible para tareas de grabado musical de todo tipo. Explore libremente nuestra galería @@ -332,6 +331,7 @@ de ejemplos e ¡inspírese! @divEnd + @divClass{column-center-middle-color2} @subheading Música Clásica @@ -341,6 +341,7 @@ de grabado con LilyPond. @exampleImage{bach-bwv610} @divEnd + @divClass{column-center-middle-color2} @subheading Notación compleja @@ -352,6 +353,7 @@ pentagrama cruzado y líneas de seguimiento de voces. @exampleImage{granados} @divEnd + @divClass{column-center-middle-color2} @subheading Música antigua @@ -361,6 +363,7 @@ como este pasaje de canto gregoriano. @exampleImage{ancient-headword} @divEnd + @divClass{column-center-middle-color2} @subheading Música moderna @@ -390,6 +393,7 @@ para piano y voz, y una particella de violín. @divEnd + @divClass{column-center-middle-color2} @subheading Tablatura @@ -401,27 +405,6 @@ partir de las notas que se escriben para el pentagrama normal. @exampleImage{tab-example} @divEnd -@divClass{column-center-middle-color2} -@subheading Gráficos de Schenker - -La salida estándar se puede modificar de forma muy profunda. He -aquí un impresionante análisis schenkeriano creado por Kris -Schaffer, para un artículo de la revista -@uref{http://www.linuxjournal.com/article/8364 , Linux Journal}. -Se han añadido algunos colores para mejorar la visibilidad. - -@exampleImage{bach-schenker} -@divEnd - -@divClass{column-center-middle-color2} -@subheading Customized Output - -Un pequeño fragmento de la @emph{Klavierstück II} de Stockhausen, -para demostrar la capacidad de LilyPond de ofrecer una salida -personalizada. - -@exampleImage{Stockhausen_Klavierstueck2} -@divEnd @divClass{column-center-middle-color2} @subheading Música vocal @@ -439,19 +422,11 @@ por encima de ciertos grupos de notas. @exampleImage{aucun-snippet} @divEnd -@divClass{column-center-middle-color2} -@subheading Aplicaciones para la educación - -LilyPond está muy indicado también para aplicaciones educativas. -He aquí un ejemplo de un sencillo ejercicio de contrapunto. - -@exampleImage{theory} -@divEnd @divClass{column-center-middle-color2} @subheading Música pop -Es sencillo crear hojas guía de acordes en cifrado americano para +Es sencillo crear hojas guía de acordes (leadsheets) en cifrado americano para música pop con melodía, letra, nombres de acordes y diagramas de posiciones de acorde. En este ejemplo vemos algunos de los diagramas de posiciones predefinidas, pero se pueden personalizar @@ -460,6 +435,17 @@ profundamente para cumplir con casi cualquier situación. @exampleImage{chart} @divEnd + +@divClass{column-center-middle-color2} +@subheading Aplicaciones para la educación + +LilyPond está muy indicado también para aplicaciones educativas. +He aquí un ejemplo de un sencillo ejercicio de contrapunto. + +@exampleImage{theory} +@divEnd + + @divClass{column-center-middle-color2} @subheading Proyectos grandes @@ -471,6 +457,31 @@ aportado por Hu Haipeng, un compositor ciego). @exampleImage{orchestra} @divEnd + +@divClass{column-center-middle-color2} +@subheading Salida personalizada + +Un pequeño fragmento de la @emph{Klavierstück II} de Stockhausen, +para demostrar la capacidad de LilyPond de ofrecer una salida +personalizada. + +@exampleImage{Stockhausen_Klavierstueck2} +@divEnd + + +@divClass{column-center-middle-color2} +@subheading Gráficos de Schenker + +La salida estándar se puede modificar de forma muy profunda. He +aquí un impresionante análisis schenkeriano creado por Kris +Schaffer, para un artículo de la revista +@uref{http://www.linuxjournal.com/article/8364 , Linux Journal}. +Se han añadido algunos colores para mejorar la visibilidad. + +@exampleImage{bach-schenker} +@divEnd + + @divClass{column-center-bottom} @subheading ¿Ahora qué? @@ -1363,13 +1374,6 @@ desde el programa. Un editor de LilyPond basado en web, donde uno puede crear sus partituras directamente online sin necesidad de instalar LilyPond. -@subsubheading Tunefl -@uref{http://www.tunefl.com} - -Con tunefl, puede componer tipográficamente sus minipartituras sin -tener que instalar LilyPond localmente. Permite probar todas las -funcionalidades del programa usando una práctica interfaz web. - @divEnd @divClass{column-center-top} @@ -1382,13 +1386,11 @@ funcionalidades del programa usando una práctica interfaz web. @sourceimage{logo-macosx,,,} @sourceimage{logo-windows,,,} -@uref{http://elysium.thsoft.hu} +@uref{https://github.com/thSoft/elysium} -Elysium es un entorno integrado de desarrollo para Ecplipse, con -una vista integrada frente a frente para la fuente y la partitura. -Include realimentación visual rápida e intuitiva sin tener que -alternar entre contextos, y trae muchas plantillas conducidas por -asistentes. +Un completo entorno para la edición de partituras con LilyPond +dentro de Eclipse, que ofrece un rico conjunto de herramientas +para una práctica gestión del trabajo con LilyPond. @divEnd @@ -1431,7 +1433,7 @@ Hay más información sobre la configuración de Vim en @sourceimage{logo-macosx,,,} @subsubheading TeXShop -@uref{http://www.uoregon.edu/~koch/texshop} +@uref{http://pages.uoregon.edu/koch/texshop/} El editor TeXShop para MacOS@tie{}X se puede extender para que ejecute LilyPond, @command{lilypond-book} y @command{convert-ly} @@ -1519,8 +1521,8 @@ trasladada al lenguaje C++. @item @uref{http://strasheela.sourceforge.net/strasheela/doc/index.html,Strasheela}, -un entorno construido sobre el lenguaje de restricciones -@uref{http://www.mozart-oz.org/, Mozart/Oz}. +un entorno construido sobre +@uref{http://mozart.github.io/, el sistema de programación Mozart}. @end itemize @@ -1556,7 +1558,7 @@ para su descarga en @item @uref{https://sourceforge.net/projects/noteedit.berlios/,NoteEdit}, -que importaba @uref{http://www.makemusic.com/musicxml,MusicXML}, +que importaba @uref{http://www.musicxml.com/,MusicXML}, se ha ramificado en la forma de @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd} y @uref{http://canorus.org,Canorus}. @@ -1573,6 +1575,12 @@ still work with. @uref{https://launchpad.net/rumor/,Rumor}, un convertidor monofónico de MIDI a LilyPond en tiempo real. +@item +@uref{https://github.com/tiredpixel/tunefl,tunefl} compone +tipográficamente sus minipartituras directamente en línea sin +tener que instalar LilyPond localmente. Permite probar todas las +funcionalidades del programa usando una práctica interfaz web. + @item @uref{http://sourceforge.net/projects/tuxguitar/,TuxGuitar}, un editor y reproductor multipista de tablatura, incluye un visor de diff --git a/Documentation/es/web/manuals.itexi b/Documentation/es/web/manuals.itexi index 80640c4e34..0af92ed938 100644 --- a/Documentation/es/web/manuals.itexi +++ b/Documentation/es/web/manuals.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore - Translation of GIT committish: 0ea80a5e850c6114d1ba7dc4cfd81d5a45d9604a + Translation of GIT committish: e47e01d5b2ed58ed0843751e3ab6a2aa84888afa When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -136,10 +136,10 @@ estado del proceso de traducción para los lectores no anglófonos. ejemplos, consejos y trucos creados por los usuarios. @item -@uref{http://benlemon.me/blog/music/lilypond/operation-lilypond/,Video -Tutorials}: Ben Lemon, usuario de LilyPond, ha creado y publicado -cierto número de tutoriales de vídeo en su blog que están -indicados para nuevos usuarios. +@uref{http://bit.ly/LilyPondBeginners,Tutoriales de vídeo}: +Ben Lemon, usuario de LilyPond, ha creado y publicado cierto +número de tutoriales de vídeo en su blog que están indicados para +nuevos usuarios. @item @ref{Desarrollo}: @@ -439,7 +439,7 @@ informar de los fallos, y desarrollo. @ref{Arriba,Web}, @manualDevelWebSplit-es, @manualDevelWebBig-es, 2.5 MB, - @manualDevelWebPdf, 3.5 MB} + @manualDevelWebPdf-es, 3.5 MB} @divEnd diff --git a/Documentation/es/web/news-front.itexi b/Documentation/es/web/news-front.itexi deleted file mode 100644 index 6db036faff..0000000000 --- a/Documentation/es/web/news-front.itexi +++ /dev/null @@ -1,277 +0,0 @@ -@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- -@ignore - Translation of GIT committish: be7ca7a201a8ae07323adf04f29ce48c407e8d0a - - 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 This file is part of lilypond-web.texi and community.itexi - -@c when you add a new item, consider moving the lowest item(s) -@c into news.itexi. - -@c Translators: Francisco Vila -@c keep two blank lines between news entries - -@c used for news about the upcoming release; see CG 10.2 - -@newsItem -@subheading Lanzado LilyPond 2.19.39 @emph{27 de marzo de 2016} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.39. Esta -versión contiene algunas mejoras y funcionalidades en proceso de -desarrollo. Podrá acceder a las últimas características, pero -algunas de ellas podrían estar incompletas, lo que podría llevarle -a encontrar fallos e interrupciones abruptas. Si necesita una -versión estable de LilyPond, le recomendamos que use la versión -2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.18.2 @emph{23 de marzo de 2014} - -Nos llena de orgullo anunciar el lanzamiento de GNU LilyPond 2.18.2. -LilyPond es un programa de tipografía musical para editar partituras, -consagrado a la producción de música impresa de la mayor calidad -posible. Lleva al ordenador la estética de la música grabada de la -forma tradicional. - -Esta versión ofrece cierta cantidad de actualizaciones sobre la -versión 2.18.0 además de unos manuales actualizados. Nuestro -consejo para todos los usuarios es que actualicen a esta versión. - -@newsEnd - - -@newsItem -@subheading Dos proyectos de LilyPond en el "Google Summer of Code" 2016 @emph{23 de abril de 2016} - -Nos complace comunicar que dos estudiantes, Nathan Chou y Jeffery -Shivers, están trabajando en LilyPond como participantes en el -"Summer of Code" (el verano del código) de Google este año. Les -deseamos una producción llena de magníficos resultados y que -permanezcan dentro de la comunidad de desarrolladores después del -evento. - -Nathan se las verá con una fastidiosa limitación, concretamente la -incapacidad de los objetos de extensión para cruzar voces. Su -trabajo hará obsoletos ciertos tipos de rodeos poco elegantes. -Jeffery llevará al nivel de calidad para la producción al paquete -ScholarLY[1] y le añadirá un paquete de LaTeX, haciendo posible la -creación de bellos informes críticos a partir de los datos -codificados directamente dentro de la partitura de LilyPond. - -[1] @uref{https://github.com/openlilylib/scholarly}@* - -@newsEnd - - -@newsItem -@subheading Lanzado LilyPond 2.18.0 @emph{29 de diciembre de 2013} - -Nos llena de orgullo anunciar el lanzamiento de GNU LilyPond -2.18.0. LilyPond es un programa de tipografía musical para editar -partituras, consagrado a la producción de música impresa de la -mayor calidad posible. Lleva al ordenador la estética de la -música grabada de la forma tradicional. - -Entre las numerosas mejoras y cambios, relacionamos a continuación -los que son más visibles: - -@itemize @bullet -@item -Ahora se recolocan muchos elementos utilizando su perfil real en -lugar de una@tie{}caja circundante rectangular. Esta mejora -reduce enormemente la posibilidad de que aparezcan espacios vacíos -grandes. - -@item -Los ajustes y sobreescrituras pueden usar ahora la sintaxis -@example -\override Voice.TextSpanner.bound-details.left.text = "rit." -@end example -en lugar de la anterior, que era -@example -\override Voice.TextSpanner #'(bound-details left text) = "rit." -@end example - -@item -Los tresillos con una longitud total dada se pueden escribir ahora -como -@example -\tuplet 3/2 4 @{ c8 c c c c c @} -@end example -en lugar de -@example -\times 2/3 @{ c8 c c @} \times 2/3 @{ c8 c c @} -@end example -@end itemize - -Existe una lista todas las nuevas funcionalidades destacables, en - -@example -@uref{http://lilypond.org/doc/v2.18/Documentation/changes/index.html} -@end example - -Estamos muy agradecidos al elevado número de entusiastas de -LilyPond cuyo apoyo financiero ha hecho posible que un -desarrollador central, David Kastrup, pueda centrarse -exclusivamente en LilyPond durante todo el ciclo de desarrollo. - -LilyPond 2.18 llega hasta usted por parte de - -@table @asis -@item Desarrolladores principales: -Bertrand Bordage, Trevor Daniels, Colin Hall, Phil Holmes, Ian -Hulin, Reinhold Kainhofer, David Kastrup, Jonathan Kulp, Werner -Lemberg, John Mandereau, Patrick McCarty, Joe Neeman, Han-Wen -Nienhuys, Jan Nieuwenhuizen, Graham Percival, Mark Polesky, Neil -Puttock, Mike Solomon, Carl Sorensen, Francisco Vila, Valentin -Villenave, Janek Warchoł - -@item Núcleo de colaboradores: -Aleksandr Andreev, Frédéric Bron, Torsten Hämmerle, Marc Hohl, -James Lowe, Andrew Main, Thomas Morley, David Nalesnik, Keith -OHara, Benkő Pál, Anders Pilegaard, Julien Rioux, Johannes Rohrer, -Adam Spiers, Heikki Tauriainen - -@item Redactores de la documentación: -Frédéric Bron, Federico Bruni, Colin Campbell, Urs Liska, James -Lowe, Thomas Morley, Jean-Charles Malahieude, Guy Stalnaker, -Martin Tarenskeen, Arnold Theresius, Rodolfo Zitellini - -@item Escuadrón de fallos: -Colin Campbell, Eluze, Marc Hohl, Phil Holmes, Marek Klein, Ralph -Palmer - -@item Equipo de apoyo: -Colin Campbell, Eluze, Marc Hohl, Marek Klein, Kieren MacMillan, -Urs Liska, Ralph Palmer - -@item Traductores: -Federico Bruni, Luca Rossetto Casel, Felipe Castro, Pavel Fric, -Jean-Charles Malahieude, Till Paala, Yoshiki Sawada - -@end table -y muchos otros colaboradores. - -@newsEnd - -@newsItem -@subheading El blog de LilyPond. @emph{2 de junio de 2013} - -Janek Warchoł ha creado un blog de LilyPond. ¡Se encuentra alojado -en @uref{http://lilypondblog.org/, lilypondblog.org}! - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.16.2! @emph{4 de enero 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.16.2. Este -lanzamiento se realiza principalmente para corregir un problema -con lilypond-book en Windows. Recomendamos que actualicen a esta -versión solamente aquellos que necesiten esta funcionalidad. - -@newsEnd - -@newsItem -@subheading El Informe LilyPond, número 28. @emph{12 de noviembre de 2012} - -La @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-28, edición -de octubre del @emph{Informe LilyPond}} se centra en el -@uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?LilyPond-meeting-in-Waltrop, -encuentro de usuarios y desarrolladores de LilyPond} en Waltrop -(Alemania), el mes de agosto pasado. Por supuesto que también hay -noticias de LilyPond producidas a raíz del lanzamiento de las -versiones 2.16.0 y 2.17.0 que se produjeron en dicho lugar. - -También incluyen dos informes financieros mensuales por parte de -David Kastrup cuyo trabajo en LilyPond está -@uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-24#an_urgent_request_for_funding, -exclusivamente pagado} por las donaciones de otros desarrolladores -y usuarios (¡gracias!), y un informe acerca de las experiencias -con @uref{http://scorio.com, un servicio web de tipografía -musical} que utiliza LilyPond internamente. - -Acérquese y @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-28, -lea ya el Informe LilyPond número 28}; ¡todos los comentarios y -aportaciones serán calurosamente bien recibidos! -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.16.1! @emph{9 de noviembre de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.16.1. Contiene -cierto número de actualizaciones sobre la anterior versión -estable, y no debería causar problemas. Recomendamos a todos que -actualicen a esta versión. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.16.0! @emph{24 de agosto de 2012} - -Nos llena de orgullo anunciar el lanzamiento de GNU LilyPond 2.16.0. -LilyPond es un programa de tipografía musical para editar partituras, -consagrado a la producción de música impresa de la mayor calidad -posible. Lleva al ordenador la estética de la música grabada de la -forma tradicional. - -Durante el último año y a partir de la principal versión estable -anterior, se han realizado multitud de mejoras. Algunas de las -mejoras fundamentales son: - -@itemize -@item -Soporte para la notación cuadrada del canto kievano -@item -Se han mejorado espectacularmente las interfaces de programación y del usuario -@item -Las funciones musicales son ahora mucho más versátiles -@end itemize - -Hay una lista completa de todas las funcionalidades nuevas en - -@example -@uref{http://lilypond.org/doc/v2.16/Documentation/changes/} -@end example - -¡Que tenga una feliz tipografía musical! LilyPond 2.16 ha sido hecho para usted por... - -El equipo principal de desarrollo: - -Bertrand Bordage, Trevor Daniels, Colin Hall, Phil Holmes, Ian Hulin, -Reinhold Kainhofer, David Kastrup, Jonathan Kulp, Werner Lemberg, -John Mandereau, Patrick McCarty, Joe Neeman, Han-Wen Nienhuys, -Jan Nieuwenhuizen, Graham Percival, Mark Polesky, Neil Puttock, -Mike Solomon, Carl Sorensen, Francisco Vila, Valentin Villenave, -Jan Warchoł - -Colaboradores de programación: - -Aleksandr Andreev, Sven Axelsson, Peter Chubb, Karin Hoethker, -Marc Hohl, David Nalesnik, Justin Ohmie, Benkő Pál, Julien Rioux, Patrick Schmidt, -Adam Spiers, Heikki Taurainen, Piers Titus van der Torren, -Jan-Peter Voigt, Janek Warchol - -Colaboradores de documentación: - -James Lowe, Pavel Roskin, Alberto Simoes, Stefan Weil - -Escuadrón de caza de fallos: - -Colin Campbell, Eluze, Phil Holmes, Marek Klein, Ralph Palmer, -James Lowe - -Apoyo: - -Colin Campbell, Christian Hitz, Phil Holmes - -Colaboradores de traducciones: - -Jean-Charles Malahieude, Till Paala, Yoshiki Sawada - -@newsEnd diff --git a/Documentation/es/web/news.itexi b/Documentation/es/web/news.itexi deleted file mode 100644 index 61d5b8d891..0000000000 --- a/Documentation/es/web/news.itexi +++ /dev/null @@ -1,6331 +0,0 @@ -@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- -@ignore - Translation of GIT committish: 0e943e447b6c105b3ab178cad32e0dad33b9353d - - 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 - -@ignore - -(I'd rather have the below in the CG. -gp) -NOTE: - - * avoid "HERE" as name for links, use descriptive link names like - @uref{,Download LilyPond 2.5.16} - - * avoid putting links in running text. They make text harder to read. - Preferably: (@uref{,...}, etc. ) - - * use a descriptive title in @subheading - - * writing date in "Month DD, YYYY" format is required for - generating the RSS feed; in case the message (and thus the date) - is not in English, you must write a well-formed date in English - like above in a comment between the closing brace of @emph and the - following line - (see "Japanese translation" below for an example). - - * Split news items in small chunks. It's OK to have more than 1 item - on one day. - - * don't duplicate entries from news-front.itexi -@end ignore - -@newsItem -@subheading Lanzado LilyPond 2.19.39 @emph{27 de marzo de 2016} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.39. Esta -versión contiene algunas mejoras y funcionalidades en proceso de -desarrollo. Podrá acceder a las últimas características, pero -algunas de ellas podrían estar incompletas, lo que podría llevarle -a encontrar fallos e interrupciones abruptas. Si necesita una -versión estable de LilyPond, le recomendamos que use la versión -2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.38 @emph{13 de marzo de 2016} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.38. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.37 @emph{28 de febrero de 2016} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.37. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.36 @emph{31 de enero de 2016} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.36. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.35 @emph{2 de enero de 2016} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.35. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.34 @emph{22 de diciembre de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.34. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.33 @emph{6 de diciembre de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.33. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.32 @emph{22 de noviembre de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.32. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.31 @emph{8 de noviembre de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.31. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.30 @emph{25 de octubre de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.30. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.29 @emph{18 de octubre de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.29. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.28 @emph{27 de septiembre de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.28. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.27 @emph{12 de septiembre de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.27. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.26 @emph{27 de agosto de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.26. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.25 @emph{9 de agosto de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.25. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.24 @emph{26 de julio de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.24. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.23 @emph{12 de julio de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.23. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.22 @emph{28 de junio de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.22. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.21 @emph{24 de mayo de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.21. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.20 @emph{10 de mayo de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.20. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.19 @emph{26 de abril de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.19. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.18 @emph{5 de abril de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.18. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.17 @emph{15 de marzo de 2015} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.17. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.16 @emph{28 de febrero de 2015} - -Por fin, después de un largo período, nos complace mucho anunciar -el lanzamiento de LilyPond 2.19.16. Esta versión contiene el -conjunto habitual de correcciones de fallos y ampliación de las -funcionalidades, y contiene trabajos en desarrollo. Tendrá acceso -a las últimas posibilidades, pero algunas podrían estar -incompletas, y podría encontrar fallos y finalizaciones abruptas. -Si necesita una versión estable de LilyPond, nuestro consejo es -que utilice la versión 2.18. - -Nuestro reconocimiento y agradecimiento a Masamichi Hosoda por -hacer posible este lanzamiento con su trabajo sobre la -actualización del GUB, la herramienta de construcción del -programa. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.15 @emph{28 de septiembre de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.15. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.14 @emph{14 de septiembre de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.14. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.13 @emph{31 de agosto de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.13. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.12 @emph{17 de agosto de, 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.12. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.11 @emph{3 de agosto de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.11. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.10 @emph{13 de julio de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.10. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.9 @emph{29 de junio de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.9. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.8 @emph{15 de junio de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.8. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.7 @emph{25 de mayo de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.7. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.6 @emph{11 de mayo de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.6. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.5 @emph{20 de abril de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.5. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.4 @emph{6 de abril de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.4. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Una producción hecha con LilyPond, premio a la mejor edición 2014 @emph{11 de marzo de 2014} - -Con gran emoción nos complace anunciar que la edición completa de -las canciones de Oskar Fried (1871-1941), recientemente publicadas -por nuestros compañeros y colaboradores Urs Liska y Janek Warchoł -[1], han recibido el premio "Musikeditionspreis BEST EDITION 2014" -de la asociación de editores de música alemanes [2]. La ceremonia -tuvo lugar en la Musikmesse de Frankfurt. - -Felicitamos a Janek y a Urs por haber obtenido tan alto -reconocimiento público a la excelencia editorial y tipográfica de -su trabajo. También es un placer informar de su intención de -poner la obra a disposición bajo una licencia libre tan pronto -como se cubran los gastos de la editorial. Apoye esta iniciativa -adquiriendo el volumen impreso directamente de la editorial [3]. - -[1] @uref{http://lilypondblog.org/category/fried-songs}@* -[2] @uref{http://www.best-edition.de}@* -[3] @uref{http://www.sound-rel.de}@* - -@newsEnd - - -@newsItem -@subheading Lanzado LilyPond 2.19.3 @emph{2 de marzo de, 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.3. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading LilyPond 2.18.1 @emph{16 de febrero de 2014} - -Hemos lanzado los manuales actualizados para la versión estable de -LilyPond, 2.18. Los manuales corresponden ahora a la versión -2.18.1 y llevan una cierta cantidad de actualizaciones y mejoras -sobre 2.18.0. Se producirá otro lanzamiento de 2.18 más tarde -(2.18.2), que incluirá las actualizaciones de los manuales así -como ciertas mejoras de menor importancia a la funcionalidad del -núcleo de LilyPond. - -Como resumen de la situación actual, puede decirse que la versión -estable del programa LilyPond es la 2.18.0; los manuales estables -de LilyPond son la versión 2.18.1; y las versiones de desarrollo -para ambos tienen el número de versión 2.19.2. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.2 @emph{2 de febrero de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.2. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.1 @emph{19 de enero de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.1. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.19.0 @emph{5 de enero de 2014} - -Nos complace anunciar el lanzamiento de LilyPond 2.19.0. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.18. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.17.97 @emph{8 de diciembre de 2013} - -Nos llena de entusiasmo anunciar el lanzamiento de -LilyPond@tie{}2.17.97 como una versión beta, potencialmente -definitiva, de la próxima versión estable@tie{}2.18. Los -desarrolladores están convencidos de que el conjunto de -funcionalidades es coherente, que la documentación es correcta y -que no se ha pasado por alto ningún problema importante. Para la -actualización de la sintaxis de sus archivos de entrada a la -última versión, consulte -@uref{http://www.lilypond.org/doc/v2.17/Documentation/usage/updating-files-with-convert_002dly, -Updating files with convert-ly}. Le rogamos que pruebe esta -versión y nos informe de cualquier problema, véase -@uref{http://www.lilypond.org/website/bug-reports.html, Informes -de fallo}. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.17.96 @emph{24 de noviembre de 2013} - -Nos llena de entusiasmo anunciar el lanzamiento de -LilyPond@tie{}2.17.96 como otra versión beta de la próxima versión -estable@tie{}2.18. Los desarrolladores están convencidos de que -el conjunto de funcionalidades es coherente, que la documentación -es correcta y que no se ha pasado por alto ningún problema -importante. Para la actualización de la sintaxis de sus archivos -de entrada a la última versión, consulte -@uref{http://www.lilypond.org/doc/v2.17/Documentation/usage/updating-files-with-convert_002dly, -Updating files with convert-ly}. Le rogamos que pruebe esta -versión y nos informe de cualquier problema, véase -@uref{http://www.lilypond.org/website/bug-reports.html, Informes -de fallo}. - -@newsEnd - -@newsItem -@subheading Lanzado LilyPond 2.17.95 @emph{3 de noviembre de 2013} - -Nos llena de entusiasmo anunciar el lanzamiento de -LilyPond@tie{}2.17.95 como beta de la próxima versión -estable@tie{}2.18. Los desarrolladores están convencidos de que -el conjunto de funcionalidades es coherente, que la documentación -es correcta y que no se ha pasado por alto ningún problema -importante. Para la actualización de la sintaxis de sus archivos -de entrada a la última versión, consulte -@uref{http://www.lilypond.org/doc/v2.17/Documentation/usage/updating-files-with-convert_002dly, -Updating files with convert-ly}. Le rogamos que pruebe esta -versión y nos informe de cualquier problema, véase -@uref{http://www.lilypond.org/website/bug-reports.html, Informes -de fallo}. - - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.29! @emph{20 de octubre de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.29. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.28! @emph{6 de octubre de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.28. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.27! @emph{26 de septiembre de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.27. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.26! @emph{8 de septiembre de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.26. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.25! @emph{25 de agosto de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.25. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.24! @emph{11 de agosto de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.24. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.23! @emph{28 de julio de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.23. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.22! @emph{14 de julio de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.22. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -Esta actualización soluciona el problema con la version de Windows -que finalizaba de forma abrupta con un problema en el posicionamiento del texto. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.21! @emph{30 de junio de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.21. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.20! @emph{9 de junio de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.20. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.19! @emph{26 de mayo de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.19. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.18! @emph{11 de mayo de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.18. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.17! @emph{27 de abril de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.17. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.16! @emph{13 de abril de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.16. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.15! @emph{30 de marzo de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.15. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.14! @emph{10 de marzo de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.14. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.13! @emph{23 de febrero de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.13. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.12! @emph{8 de febrero de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.12. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.11! @emph{26 de enero de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.11. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.10! @emph{12 de enero de 2013} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.10. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.9! @emph{15 de diciembre de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.9. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de las funcionalidades, y contiene trabajos en -desarrollo. Tendrá acceso a las últimas posibilidades, pero -algunas podrían estar incompletas, y podría encontrar fallos y -finalizaciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.8! @emph{1 de diciembre de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.8. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de funcionalidades, y puede contener trabajos en curso. -Podrá acceder a las funcionalidades más recientes, pero algunas -podrían estar incompletas, y podrían aparecer fallos e -interrupciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.7! @emph{17 de noviembre de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.7. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de funcionalidades, y puede contener trabajos en curso. -Podrá acceder a las funcionalidades más recientes, pero algunas -podrían estar incompletas, y podrían aparecer fallos e -interrupciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.16.1! @emph{9 de noviembre de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.16.1. Esta -versión contiene cierto número de actualizaciones sobre la -anterior versión estable, y no debería causar ningún -problema. Recomendamos a todos que actualicen a esta versión. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.6! @emph{3 de noviembre de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.6. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de funcionalidades, y puede contener trabajos en curso. -Podrá acceder a las funcionalidades más recientes, pero algunas -podrían estar incompletas, y podrían aparecer fallos e -interrupciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.5! @emph{20 de octubre de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.5. Esta -versión contiene el conjunto habitual de correcciones de fallos y -ampliación de funcionalidades, y puede contener trabajos en curso. -Podrá acceder a las funcionalidades más recientes, pero algunas -podrían estar incompletas, y podrían aparecer fallos e -interrupciones abruptas. Si necesita una versión estable de -LilyPond, nuestro consejo es que utilice la versión 2.16. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.4! @emph{6 de octubre de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.4. Esta -versión contiene el conjunto habitual de correcciones de fallos. -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.16 estable en su lugar. - - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.3! @emph{23 de septiembre de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.3. Esta -versión contiene el conjunto habitual de correcciones de fallos. -Se recomienda enérgicamente a los usuarios normales que -@strong{no} utilicen esta versión, sino la 2.16 estable en su -lugar. - - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.2! @emph{10 de septiembre de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.2. Esta -versión contiene el conjunto habitual de correcciones de fallos. -Se recomienda enérgicamente a los usuarios normales que -@strong{no} utilicen esta versión, sino la 2.16 estable en su -lugar. - - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.1! @emph{28 de agosto de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.1. Esta -versión contiene el conjunto habitual de correcciones de fallos. -Se recomienda enérgicamente a los usuarios normales que -@strong{no} utilicen esta versión, sino la 2.16 estable en su -lugar. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.17.0! @emph{26 de agosto de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.17.0. Esta -versión contiene el conjunto habitual de correcciones de fallos. -Se recomienda enérgicamente a los usuarios normales que -@strong{no} utilicen esta versión, sino la 2.16 estable en su -lugar. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.16.0! @emph{24 de agosto de 2012} - -Nos llena de orgullo anunciar el lanzamiento de GNU LilyPond 2.16.0. -LilyPond es un programa de tipografía musical para editar partituras, -consagrado a la producción de música impresa de la mayor calidad -posible. Lleva al ordenador la estética de la música grabada de la -forma tradicional. - -Durante el último año y a partir de la principal versión estable -anterior, se han realizado multitud de mejoras. Algunas de las -mejoras fundamentales son: - -@itemize -@item -Soporte para la notación cuadrada del canto kievano -@item -Se han mejorado espectacularmente las interfaces de programación y del usuario -@item -Las funciones musicales son ahora mucho más versátiles -@end itemize - -Hay una lista completa de todas las funcionalidades nuevas en - -@example -@uref{http://lilypond.org/doc/v2.16/Documentation/changes/} -@end example - -¡Que tenga una feliz tipografía musical! LilyPond 2.16 ha sido hecho para usted por... - -El equipo principal de desarrollo: - -Bertrand Bordage, Trevor Daniels, Colin Hall, Phil Holmes, Ian Hulin, -Reinhold Kainhofer, David Kastrup, Jonathan Kulp, Werner Lemberg, -John Mandereau, Patrick McCarty, Joe Neeman, Han-Wen Nienhuys, -Jan Nieuwenhuizen, Graham Percival, Mark Polesky, Neil Puttock, -Mike Solomon, Carl Sorensen, Francisco Vila, Valentin Villenave, -Jan Warchoł - -Colaboradores de programación: - -Aleksandr Andreev, Sven Axelsson, Peter Chubb, Karin Hoethker, -Marc Hohl, David Nalesnik, Justin Ohmie, Benkő Pál, Julien Rioux, Patrick Schmidt, -Adam Spiers, Heikki Taurainen, Piers Titus van der Torren, -Jan-Peter Voigt, Janek Warchol - -Colaboradores de documentación: - -James Lowe, Pavel Roskin, Alberto Simoes, Stefan Weil - -Escuadrón de caza de fallos: - -Colin Campbell, Eluze, Phil Holmes, Marek Klein, Ralph Palmer, -James Lowe - -Apoyo: - -Colin Campbell, Christian Hitz, Phil Holmes - -Colaboradores de traducciones: - -Jean-Charles Malahieude, Till Paala, Yoshiki Sawada - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.95! @emph{11 de agosto de 2012} - -Estamos encantados de anunciar el lanzamiento de LilyPond 2.15.95. -Con esta edición, se congela el desarrollo sobre la versión 2.15 para -la inminente versión estable 2.16 y queda abierta solamente a -correcciones de fallos. - -Urgimos a todos los usuarios a que prueben esta versión para asegurar -la máxima calidad de la próxima versión estable. Si descubre -cualquier problema, le rogamos nos envíe @ref{Informes de fallos}. - -Las funcionaliades nuevas desde la versión 2.14.2 están relacionadas -en el manual de @qq{Cambios} en la sección de la página web sobre -@ref{Desarrollo}. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.42! @emph{2 de agosto de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.42. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading El Informe LilyPond, número 27. @emph{2 de agosto 2012} - -Vuelve @emph{El informe LilyPond}, con una interesante incursión en -las funcionalidades relacionadas con Scheme añadidas recientemente por -el único desarrollador remunerado de nuestra comunidad, David Kastrup -(gracias a sus @uref{http://lilypond.org/sponsoring.html, donaciones -continuas}). En esta edición también se encuentra una panorámica -sobre ciertos proyectos poco conocidos colaterales a LilyPond, y -algunas otras noticias más ligeras. - -Acérquese y @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-27, -lea ya el Informe LilyPond número 27}; ¡todos los comentarios y -aportaciones serán calurosamente bien recibidos! - -@newsEnd - - -@newsItem -@subheading Retirada de la versión candidata al lanzamiento @emph{11 de julio de 2012} - -Hemos descubierto una regresión desde la versión 2.14.2, de manera que -lilypond 2.15.41 ya no es candidata al lanzamiento de 2.16.0. Sin -embargo, les rogamos que continúen probándola: nos gustaría descubrir -(¡y corregir!) cualquier otra regresión lo antes posible. Si descubre -cualquier problema, envíenos @ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading Octava candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.41! @emph{4 de julio de 2012} - -Ha salido LilyPond 2.15.41; ésta es la octava versión candidata al -lanzamiento de la inminente versión estable 2.16. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existen problemas críticos conocidos en esta edición. Si no se -encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá -el 18 de julio de 2012. Si descubre algún problema, le rogamos que -nos envíe @ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.40! @emph{5 de junio de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.40. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading Retirada de la versión candidata al lanzamiento @emph{1 de junio de 2012} - -Hemos decubierto una regresión desde la versión 2.14.2, de manera que -lilypond 2.15.39 ya no es candidata para el lanzamiento de la versión -2.16.0. Sin embargo, continúen probándola: nos gustaría descubrir (y -corregir) cualquier regresión adicional tan pronto como sea posible. -Si descubre algún problema, le rogamos que nos envíe -@ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading Séptima candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.39! @emph{22 de mayo de 2012} - -Ha salido LilyPond 2.15.38; ésta es la séptima versión candidata al -lanzamiento de la inminente versión estable 2.16. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existen problemas críticos conocidos en esta edición. Si no se -encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá -el 5 de junio de 2012. Si descubre algún problema, le rogamos que nos -envíe @ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading El Informe LilyPond, número 26. @emph{22 de mayo de 2012} - -Vuelve el @emph{Informe LilyPond}, con un nuevo editor a bordo: Pavel -Roskin, que nos cuenta algo de sus aventuras en las extrañas tierras -de los fallos de los compiladores. También hay un informe detallado -sobre el estado de desarrollo actual, y un análisis de muestras de -salida de LilyPond; vea por sí mismo cuán cerca (¿o cuán lejos?) -estamos de igualar la calidad de las partituras grabadas a mano. - -Acérquese y @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-26, -lea ya el Informe LilyPond número 26}; ¡todos los comentarios y -aportaciones serán calurosamente bien recibidos! - -@newsEnd - - -@newsItem -@subheading Sexta candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.38! @emph{3 de mayo de 2012} - -Ha salido LilyPond 2.15.38; ésta es la sexta versión candidata al -lanzamiento de la inminente versión estable 2.16. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -@strong{Actualización:} A causa de algunos fallos críticos, será -necesaria otra versión candidata al lanzamiento. - -@newsEnd - - -@newsItem -@subheading ¡LilyPond participa en Google Summer of Code 2012! @emph{25 de abril de 2012} - -Como parte del @uref{http://www.gnu.org/, proyecto GNU}, participamos -en el programa -@uref{http://www.google-melange.com/gsoc/homepage/google/gsoc2012, El -verano del código} de Google, que ofrece a estudiantes una paga por -trabajar en software de fuentes abiertas. - -Nuestro colaborador Janek Warchoł ha sido aceptado para la edición de -2012 del GSoC. Va a trabajar en el posicionamiento avanzado de las -letras de canción en LilyPond. - -@newsEnd - - -@newsItem -@subheading Quinta versión candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.37! @emph{19 de abril de 2012} - -Ha salido LilyPond 2.15.37; ésta es la quinta versión candidata al -lanzamiento de la inminente versión estable 2.16. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existen problemas críticos conocidos en esta edición. Si no se -encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá -el 3 de mayo de 2012. Si descubre algún problema, le rogamos que nos -envíe @ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading Cuarta versión candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.36! @emph{6 de abril de 2012} - -Ha salido LilyPond 2.15.36; ésta es la cuarta versión candidata al -lanzamiento de la inminente versión estable 2.16. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existen problemas críticos conocidos en esta edición. Si no se -encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá -el 20 de abril de 2012. Si descubre algún problema, le rogamos que -nos envíe @ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading El Informe LilyPond, número 25. @emph{1 de abril de 2012} - -¡Vuelve @emph{El Informe LilyPond}, con una edición bastante poco -habitual de la que destacamos a nuestro joven colaborador polaco Janek -Warchoł! También incluimos en esta edición algunos elementos -inesperados, entre ellos (y no solamente)… ¡una receta de cocina! - -Acérquese al @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-25, -Informe LilyPond 25} y léalo ahora mismo; ¡animamos calurosamente a -todos a que hagan sus comentarios y contribuciones! - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.35! @emph{28 de marzo de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.35. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.34! @emph{19 de marzo de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.34. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.33! @emph{8 de marzo de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.33. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading El Informe LilyPond, número 24. @emph{5 de marzo de 2012} - -Ya está disponible una nueva edición del @emph{Informe LilyPond}; -entre los temas tratados se encuentra una solicitud de financiación, -un artítulo sobre unas nuevas e tineresantes posibilidades de la -gramática de LilyPond, y una panorámica de las aplicaciones de web -basadas en LilyPond. - -Acérquese al @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-24, -Informe LilyPond 24} y léalo ahora mismo; ¡animamos calurosamente a -todos a que hagan sus comentarios y contribuciones! - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.32! @emph{3 de marzo de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.32. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.31! @emph{29 de febrero de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.31. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading Tercera versión candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.30! @emph{17 de febrero de 2012} - -Ha salido LilyPond 2.15.30; ésta es la tercera versión candidata al -lanzamiento de la inminente versión estable 2.16. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existen problemas críticos conocidos en esta edición. Si no se -encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá -el 2 de marzo de 2012. Si descubre algún problema, le rogamos que -nos envíe @ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.29! @emph{9 de febrero de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.29. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.28! @emph{3 de febrero de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.28. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.27! @emph{24 de enero de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.27. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading El Informe LilyPond, número 23. @emph{20 de enero de 2012} - -¡Vuelve el @emph{Informe LilyPond}, con el desarrollador David Kastrup -como nuevo editor! Esta edición inclute una panorámica de algunas de -las nuevas y útiles instrucciones añadidas recientemente a LilyPond, -así como una entrevista con el colaborador de LilyPond y compositor -Mike Solomon. - -Acérquese al @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-23, -Informe LilyPond 23} y léalo ahora mismo; ¡animamos calurosamente a -todos a que hagan sus comentarios y contribuciones! - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.26! @emph{16 de enero de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.26. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -La versión 2.15.25 se ha saltado debido a problemas de construcción. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.24! @emph{7 de enero de 2012} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.24. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.23! @emph{21 de diciembre de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.23. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.22! @emph{15 de diciembre de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.22. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.21! @emph{6 de diciembre de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.21. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.20! @emph{24 de noviembre de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.20. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.19! @emph{18 de noviembre de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.19. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.18! @emph{12 de noviembre de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.18. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.17! @emph{10 de noviembre de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.17. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.16! @emph{28 de octubre de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.16. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.15! @emph{24 de octubre de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.15. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.14! @emph{7 de octubre de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.14. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.13! @emph{27 de septiembre de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.13. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading Se cancela la segunda versión candidata al lanzamiento @emph{23 de septiembre de 2011} - -La cuenta atrás del lanzamiento se cancela a causa del descubrimiento -de una regresión crítica. - -@newsEnd - - -@newsItem -@subheading Segunda versión candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.12! @emph{20 de septiembre de 2011} - -Ha salido LilyPond 2.15.12; ésta es la segunda versión candidata al -lanzamiento de la inminente versión estable 2.16. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existen problemas críticos conocidos en esta edición. Si no se -encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá -el 27 de septiembre 2011. Si descubre algún problema, le rogamos que -nos envíe @ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.11! @emph{11 de septiembre de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.11. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.10! @emph{6 de septiembre de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.10. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.9! @emph{30 de agosto de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.9. Esta versión -contiene el conjunto habitual de correcciones de fallos y contempla -también MacOS X 10.7. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. Tenga en -cuenta que a causa de algunos bugs críticos, esta versión no es -candidata al lanzamiento de la próxima versión estable. - -@newsEnd - - -@newsItem -@subheading Primera versión candidata al lanzamiento de 2.16: ¡Lanzado LilyPond 2.15.8! @emph{1 de agosto de 2011} - -Ha salido LilyPond 2.15.8; ésta es la primera versión candidata al -lanzamiento de la inminente versión estable 2.16. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.14.2 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existen problemas críticos conocidos en esta edición. Si no se -encuentra ningún bug crítico, la edición oficial 2.16.0 se producirá -el 8 de agosto de 2011. Si descubre algún problema, le rogamos que -nos envíe @ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.7! @emph{29 de julio de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.7. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.6! @emph{26 de julio de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.6. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.14.2! @emph{25 de julio de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.14.2. Esta versión -corrige algunos fallos de poca importancia en la versión estable, y no -debería causar problemas. Recomendamos a todos que actualicen a esta -versión. - -@newsEnd - - - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.5! @emph{12 de julio de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.5. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.4! @emph{4 de julio de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.4. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.3! @emph{27 de junio de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.3. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.2! @emph{18 de junio de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.2. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.14.1! @emph{12 de junio de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.14.1. Esta versión -corrige algunos fallos de poca importancia en la versión estable, y no -debería causar problemas. Recomendamos a todos que actualicen a esta -versión. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.1! @emph{11 de junio de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.1. Esta versión -contiene el conjunto habitual de correcciones de fallos. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.15.0! @emph{7 de junio de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.15.0. Marca el -comienzo de un nuevo esfuerzo de desarrollo no estable, y añade el -número de errores acostumbrado. - -Se recomienda enérgicamente a los usuarios normales que @strong{no} -utilicen esta versión, sino la 2.14 estable en su lugar. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.14.0! @emph{6 de junio de 2011} - -Nos llena de orgullo anunciar el lanzamiento de GNU LilyPond 2.14. -LilyPond es un programa de grabado musical (edición de partituras) -dedicado a la producción de música impresa de la más alta calidad -posible. Lleva a la impresión por ordenador la estética de las -partituras tipografiadas al estilo tradicional. - -Durante los últimos dos años y medio son muchas las mejoras que se han -producido a partir de la anterior versión principal estable. Algunas -de las más importantes son: - -@itemize -@item -LilyPond se licencia ahora bajo la GNU GPL v3 o posterior. - -@item -Se ha modificado drásticamente el motor de espaciado vertical, -haciéndolo mucho más flexible y fácil de controlar. - -@item -Ahora la aplicación automática de barras de corchea es más flexible y -se evitan las colisiones de barras. - -@end itemize - -Se da una lista completa de las funcionalidades nuevas en: - -@example -@uref{http://lilypond.org/doc/v2.13/Documentation/changes/index.html} -@end example - -¡Feliz edición de partituras! LilyPond 2.14 llega a usted de la mano de... - -El equipo principal de desarrollo: - -Trevor Daniels, Reinhold Kainhofer, David Kastrup, Jonathan Kulp, -Werner Lemberg, John Mandereau, Patrick McCarty, Joe Neeman, -Han-Wen Nienhuys, Jan Nieuwenhuizen, Graham Percival, Mark -Polesky, Neil Puttock, Mike Solomon, Carl Sorensen, Francisco -Vila, Valentin Villenave. - -Colaboradores de programación: - -Sven Axelsson, Pál Benkő, Bertrand Bordage, Frédéric Bron, Peter Chubb, Hajo Dezelski, Richard -Gay, Keith OHara, Andrew Hawryluk, Christian Hitz, Marc Hohl, -Henning Hraban Ramm, Ian Hulin, Michael Käppler, Marek Klein, -Kieren MacMillan, Thomas Morgan, Benjamin Peterson, Nathan Reed, -Julien Rioux, Boris Shingarov, Patrick Schmidt, Owen Tuz, Jan Warchoł, Andrew -Wilson, Rodolfo Zitellini. - -Colaboradores de fuenteas tipográficas: - -Keith OHara, Marc Hohl, Alexander Kobel, Carsten Steger. - -Colaboradores de documentación: - -Colin Campbell, Andrew Hawryluk, James Lowe, Mike Moral, Ralph -Palmer, David Pounder, Patrick Schmidt. - -Escuadrón de caza de bugs: - -James E. Bailey, Colin Campbell, Phil Holmes, Urs Liska, Ralph -Palmer, Kieren MacMillan, Dmytro O. Redchuk. - -Colaboradores de los archivos binarios: - -Christian Hitz. - -Colaboradores de traducción: - -Federico Bruni, Dénes Harmath, Jean-Charles Malahieude, Tineke de -Munnik, Till Paala, Ralf Wildenhues, Yoshiki Sawada. - -@newsEnd - - - -@newsItem -@subheading Séptima versión candidata al lanzamiento de 2.14: ¡Lanzado LilyPond 2.13.63! @emph{30 de mayo de 2011} - -Ha salido LilyPond 2.13.63; ésta es la sexta versión candidata al -lanzamiento de la inminente versión estable 2.14. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.12.3 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existe ningún problema conocido calificado como crítico en esta -versión. Si no se encuentra ningún bug crítico, el lanzamiento de la -versión oficial 2.14.0 se producirá el 6 de junio de 2011. Si -descubre algún problema, le rogamos que nos envíe -@ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.62! @emph{24 de mayo de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.62. Esta -versión contiene el conjunto habitual de correcciones de fallos. - -Tenga en cuenta que esta @strong{no} es la siguiente versión candidata -al lanzamiento estable, debido a que aún permanecen unos cuantos -fallos críticos. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.61! @emph{1 de mayo de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.61. Esta -versión contiene el conjunto habitual de correcciones de fallos. - -Tenga en cuenta que esta @strong{no} es la siguiente versión candidata -al lanzamiento estable, debido a que aún permanecen unos cuantos -fallos críticos. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.60! @emph{16 de abril de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.60. Esta -versión contiene el conjunto habitual de correcciones de fallos. - -Tenga en cuenta que esta @strong{no} es la siguiente versión candidata -al lanzamiento estable, debido a que aún permanecen unos cuantos -fallos críticos. - -@newsEnd - - -@newsItem -@subheading Artículo en la revista Linux Journal Magazine (@emph{abril de 2011}) - -La revista @uref{http://www.linux-magazine.com,Linux Magazine} publica -un artículo en su edición de mayo de 2011 bajo el título -@uref{http://www.linux-magazine.com/content/download/61706/482546/version/1/file/088-090_projects.pdf, -Projects on the Move}. Es una introducción a MuseScore, LilyPond y -Chordii. La autora Carla Schroder dice que @qq{LilyPond se maneja a -partir de la línea de órdenes, pero que no le asuste la falta de una -interfaz gráfica; LilyPond es amigable para el usuario y fácil de -aprender}, y aporta un ejemplo práctico. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.59! @emph{10 de abril de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.59. Esta -versión contiene el conjunto habitual de correcciones de fallos. - -Tenga en cuenta que esta @strong{no} es la siguiente versión candidata -al lanzamiento estable, debido a que aún permanecen unos cuantos -fallos críticos. - -@newsEnd - - -@newsItem -@subheading Sexta versión candidata al lanzamiento de 2.14: ¡Lanzado LilyPond 2.13.58! @emph{7 de abril de 2011} - -Ha salido LilyPond 2.13.58; ésta es la quinta versión candidata al -lanzamiento de la inminente versión estable 2.14. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.12.3 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existe ningún problema conocido calificado como crítico en esta -versión. Si no se encuentra ningún bug crítico, el lanzamiento de la -versión oficial 2.14.0 se producirá el 14 de abril de 2011. Si -descubre algún problema, le rogamos que nos envíe -@ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading Quinta versión candidata al lanzamiento de 2.14: ¡Lanzado LilyPond 2.13.57! @emph{3 de abril de 2011} - -Ha salido LilyPond 2.13.57; ésta es la quinta versión candidata al -lanzamiento de la inminente versión estable 2.14. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.12.3 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existe ningún problema conocido calificado como crítico en esta -versión. Si no se encuentra ningún bug crítico, el lanzamiento de la -versión oficial 2.14.0 se producirá el 10 de abril de 2011. Si -descubre algún problema, le rogamos que nos envíe -@ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading Cuarta versión candidata al lanzamiento de 2.14: ¡Lanzado LilyPond 2.13.56! @emph{29 de marzo de 2011} - -Ha salido LilyPond 2.13.56; ésta es la cuarta versión candidata al -lanzamiento de la inminente versión estable 2.14. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.12.3 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existe ningún problema conocido calificado como crítico en esta -versión. Si no se encuentra ningún bug crítico, el lanzamiento de la -versión oficial 2.14.0 se producirá el 5 de abril de 2011. Si -descubre algún problema, le rogamos que nos envíe -@ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.55! @emph{22 de marzo de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.55. Esta -versión contiene el conjunto habitual de correcciones de fallos. - -Tenga en cuenta que esta @strong{no} es la tercera versión candidata -al lanzamiento estable, debido a que aún permanecen unos cuantos -fallos críticos. - -@newsEnd - - -@newsItem -@subheading Retirada de la tercera versión candidata al lanzamiento @emph{15 de marzo de 2011} - -Hemos decubierto una regresión desde la versión 2.12.3, de manera que -lilypond 2.13.54 ya no es candidata para el lanzamiento de la versión -2.14.0. Sin embargo, continúen probándola: nos gustaría descubrir (y -corregir) cualquier regresión adicional tan pronto como sea posible. -Si descubre algún problema, le rogamos que nos envíe -@ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading Tercera versión candidata al lanzamiento de 2.14: ¡Lanzado LilyPond 2.13.54! @emph{13 de marzo de 2011} - -Ha salido LilyPond 2.13.54; ésta es la tercera versión candidata al -lanzamiento de la inminente versión estable 2.14. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.12.3 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existe ningún problema conocido calificado como crítico en esta -versión. Si no se encuentra ningún bug crítico, el lanzamiento de la -versión oficial 2.14.0 se producirá el 27 de marzo de 2011. Si -descubre algún problema, le rogamos que nos envíe -@ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.53! @emph{6 de marzo de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.53. Esta -versión contiene el conjunto habitual de correcciones de fallos. - -Tenga en cuenta que esta @strong{no} es la tercera versión candidata -al lanzamiento estable, debido a que aún permanecen unos cuantos -fallos críticos. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.52! @emph{1 de marzo de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.52. Esta -versión contiene el conjunto habitual de correcciones de fallos. - -Tenga en cuenta que esta @strong{no} es la tercera versión candidata -al lanzamiento estable, debido a que aún permanecen unos cuantos -fallos críticos. - -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.51! @emph{22 de febrero de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.51. Esta -versión contiene el conjunto habitual de correcciones de fallos. - -Tenga en cuenta que esta @strong{no} es la tercera versión candidata -al lanzamiento estable, debido a que aún permanecen unos cuantos -fallos críticos. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.50! @emph{13 de febrero de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.50. Esta -versión contiene el conjunto habitual de correcciones de fallos. - -Tenga en cuenta que esta @strong{no} es la tercera versión candidata -al lanzamiento estable, debido a que aún permanecen unos cuantos -fallos críticos. -@newsEnd - - -@newsItem -@subheading ¡Nuevas traducciones de la página web al checo y al chino! @emph{11 de febrero de 2011} - -Se han añadido dos idiomas nuevos a nuestra página web: el chino, obra -de Ben Luo, y el checo, por Pavel Fric. Es un trabajo que está en -desarrollo pero estas páginas son completamente funcionales. ¡Con -esto ya son diez idiomas para elegir! - -@newsEnd - - - -@newsItem -@subheading Segunda versión candidata al lanzamiento de 2.14: ¡Lanzado LilyPond 2.13.49! @emph{9 de febrero de 2011} - -Ha salido LilyPond 2.13.49; ésta es la segunda versión candidata al -lanzamiento de la inminente versión estable 2.14. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.12.3 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existe ningún problema conocido calificado como crítico en esta -versión. Si no se encuentra ningún bug crítico, el lanzamiento de la -versión oficial 2.14.0 se producirá el 23 de febrero de 2011. Si -descubre algún problema, le rogamos que nos envíe -@ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.48! @emph{5 de febrero de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.48. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -@newsEnd - - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.47! @emph{28 de enero de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.47. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -@newsEnd - - - -@newsItem -@subheading Retirada de la versión candidata al lanzamiento @emph{13 de enero de 2011} - -Hemos decubierto una regresión desde la versión 2.12.3, de manera que -lilypond 2.13.46 ya no es candidata para el lanzamiento de la versión -2.14.0. Sin embargo, continúen probándola: nos gustaría descubrir (y -corregir) cualquier regresión adicional tan pronto como sea posible. -Si descubre algún problema, le rogamos que nos envíe -@ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading Primera versión candidata al lanzamiento de 2.14: ¡Lanzado LilyPond 2.13.46! @emph{12 de enero de 2011} - -Ha salido LilyPond 2.13.46; ésta es la primera versión candidata al -lanzamiento de la inminente versión estable 2.14. Se invita a los -usuarios a que hagan experimentos con esta versión. Las -funcionalidades nuevas desde 2.12.3 están relacionadas en el manual de -@qq{Cambios} dentro de la sección @ref{Desarrollo} de estas páginas. - -No existe ningún problema conocido calificado como crítico en esta -versión. Si no se encuentra ningún bug crítico, el lanzamiento de la -versión oficial 2.14.0 se producirá el 26 de enero de 2011. Si -descubre algún problema, le rogamos que nos envíe -@ref{Informes de fallos}. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.45! @emph{3 de enero de 2011} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.45. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -@newsEnd - - - - -@newsItem -@subheading Tercera versión de pruebas Beta de 2.14: ¡Lanzado LilyPond 2.13.44! @emph{25 de diciembre de 2010} - -Ha salido LilyPond 2.13.44; ésta es la primera versión beta de la -inminente versión estable 2.14. Se invita a los usuarios a que hagan -experimentos con esta versión. Las funcionalidades nuevas desde -2.12.3 están relacionadas en el manual de @qq{Cambios} dentro de la -sección @ref{Desarrollo} de estas páginas. - -Aún queda un problema calificado como Crítico en esta versión: existe -un caso en que el espaciado vertical está excesivamente comprimido. -Si se decide a probar esta versión, no se sorprenda al descubrir -problemas; tan sólo envíenos @ref{Informes de fallos} educados. - -@newsEnd - - -@newsItem -@subheading Segunda versión de pruebas Beta de 2.14: ¡Lanzado LilyPond 2.13.43! @emph{14 de diciembre de 2010} - -Ha salido LilyPond 2.13.43; ésta es la primera versión beta de la -inminente versión estable 2.14. Se invita a los usuarios a que hagan -experimentos con esta versión. Las funcionalidades nuevas desde -2.12.3 están relacionadas en el manual de @qq{Cambios} dentro de la -sección @ref{Desarrollo} de estas páginas. - -Aún queda un problema calificado como Crítico en esta versión: existe -un caso en que el espaciado vertical está excesivamente comprimido. -Si se decide a probar esta versión, no se sorprenda al descubrir -problemas; tan sólo envíenos @ref{Informes de fallos} educados. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.42! @emph{8 de diciembre de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.42. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -Tenga en cuenta que ésta @strong{no} es la segunda versión de pruebas -beta. A causa de la aparición de algunos cambios en nuestro proceso -de construcción del programa que no se han probado, no podemos estar -completamente seguros de la calidad de esta versión. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.41! @emph{4 de diciembre de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.41. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -Tenga en cuenta que ésta @strong{no} es la segunda versión de pruebas -beta. A causa de la aparición de algunos cambios en nuestro proceso -de construcción del programa que no se han probado, no podemos estar -completamente seguros de la calidad de esta versión. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.40! @emph{21 de noviembre de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.40. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -Tenga en cuenta que ésta @strong{no} es la segunda versión de pruebas -beta. A causa de la aparición de algunos cambios en nuestro proceso -de construcción del programa que no se han probado, no podemos estar -completamente seguros de la calidad de esta versión. - -@newsEnd - - -@newsItem -@subheading Primera versión de pruebas Beta de 2.14: ¡Lanzado LilyPond 2.13.39! @emph{15 de noviembre de 2010} - -Ha salido LilyPond 2.13.39; ésta es la primera versión beta de la -inminente versión estable 2.14. Se invita a los usuarios a que hagan -experimentos con esta versión. Las funcionalidades nuevas desde -2.12.3 están relacionadas en el manual de @qq{Cambios} dentro de la -sección @ref{Desarrollo} de estas páginas. - -Aún permanecen algunos problemas calificados como Críticos -en esta versión: el espaciado vertical sorprende en -dos casos, y lilypond puede salir de manera abrupta frente -a algunos códigos de entrada extraños. Si se decide a probar -2.13.39, no se sorprenda al descubrir problemas; tan sólo -envíenos @ref{Informes de fallos} educados. - -@newsEnd - - - - -@newsItem -@subheading El Informe LilyPond, número 22. @emph{3 de noviembre de 2010} - -¡Vuelve el @emph{Informe LilyPond}, con algunas sorpresas y noticias -interesantes para toda la comunidad de LilyPond! -Podrá encontrarse en esta edición una lista completa y actualizada -de todas las listas de distribución de correo y foros de LilyPond -de todo el mundo. También, por primera vez nuestro invitado especial -es el co-fundador y desarrollador principal de LilyPond -@strong{Jan Nieuwenhuizen}, que ha estado muy ocupado los últimos meses: -¡dispóngase a leer en qué! - -Acérquese al @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-22, -Informe LilyPond 22} y léalo ahora mismo; ¡animamos calurosamente a -todos a que hagan sus comentarios y contribuciones! - -@newsEnd - - -@newsItem -@subheading Cuarta versión de pruebas Alfa de 2.14: ¡Lanzado LilyPond 2.13.38! @emph{31 de octubre de 2010} - -Ha salido LilyPond 2.13.38; ésta es la cuarta versión alfa de la -inminente versión estable 2.14. Se invita a los usuarios a que hagan -experimentos con esta versión. Las funcionalidades nuevas desde -2.12.3 están relacionadas en el manual de @qq{Cambios} dentro de la -sección @ref{Desarrollo} de estas páginas. - -Aún permanecen algunos problemas calificados como Críticos -en esta versión: el espaciado vertical sorprende en -dos casos, y lilypond puede salir de manera abrupta frente -a algunos códigos de entrada extraños. Si se decide a probar -2.13.38, no se sorprenda al descubrir problemas; tan sólo -envíenos @ref{Informes de fallos} educados. - -@newsEnd - - -@newsItem -@subheading Tercera versión de pruebas Alfa de 2.14: ¡Lanzado LilyPond 2.13.37! @emph{25 de octubre de 2010} - -Ha salido LilyPond 2.13.37; ésta es la tercera versión alfa de la -inminente versión estable 2.14. Se invita a los usuarios a que hagan -experimentos con esta versión. Las funcionalidades nuevas desde -2.12.3 están relacionadas en el manual de @qq{Cambios} dentro de la -sección @ref{Desarrollo} de estas páginas. - -Aún permanecen algunos problemas calificados como Críticos -en esta versión: el espaciado vertical sorprende en -dos casos, y lilypond puede salir de manera abrupta frente -a algunos códigos de entrada extraños. Si se decide a probar -2.13.37, no se sorprenda al descubrir problemas; tan sólo -envíenos @ref{Informes de fallos} educados. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.36! @emph{19 de octubre de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.36. -Esta versión contiene el conjunto habitual de correcciones de fallos. -Sin embargo, aún permanecen un cierto número de problemas críticos, -por lo que está orientada solamente a los desarrolladores. - -Tenga en cuenta que ésta @strong{no} es la tercera versión -de pruebas alfa. A causa de la aparición de algunos cambios en nuestro -proceso de construcción del programa que no se han probado, -no podemos estar completamente seguros de la calidad -de esta versión. - -@newsEnd - -@newsItem -@subheading El Informe LilyPond, número 21. @emph{3 de octubre de 2010} - -¡Vuelve el @emph{Informe LilyPond}, con sus dos editores: @qq{gruñón} -y @qq{blandito}! Esta edición se ocupa principalmente de la notación -microtonal en LilyPond, pero también incluye un tutorial sobre la -forma de ejecutar LilyPond a partir de una memoria USB, sin olvidar -las acostumbradas notas de lanzamientos, el fragmento de código del -día y las noticias que nos llegan de la charca de las ranas. - -Acérquese al @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-21, -Informe LilyPond 21} y léalo ahora mismo; ¡animamos calurosamente a -todos a que hagan sus comentarios y contribuciones! - -@newsEnd - - -@newsItem -@subheading Segunda versión de pruebas Alfa de 2.14: ¡Lanzado LilyPond 2.13.35! @emph{29 de septiembre de 2010} - -Ha salido LilyPond 2.13.35; ésta es la segunda versión alfa de la -inminente versión estable 2.14. Se invita a los usuarios a que hagan -experimentos con esta versión. Las funcionalidades nuevas desde -2.12.3 están relacionadas en el manual de @qq{Cambios} dentro de la -sección @ref{Desarrollo} de estas páginas. - -Aún existen tres regresiones conocidas contra 2.12.3: -@uref{http://code.google.com/p/lilypond/issues/detail?id=1173, -Problema número 1173 - No se pueden alinear las MetronomeMarks sobre -una nota si existe un silencio multicompás en otra voz}, y dos fallos -de espaciado: -@uref{http://code.google.com/p/lilypond/issues/detail?id=1240, -Problema 1240} y -@uref{http://code.google.com/p/lilypond/issues/detail?id=1252, -Problema 1252} pero esperamos encontrar más. Si se decide a probar -2.13.35, no se sorprenda al encontrar problemas; tan sólo envíenos -@ref{Informes de fallos} educados. - -@newsEnd - - -@newsItem -@subheading Versión de pruebas Alfa de 2.14: ¡Lanzado LilyPond 2.13.34! @emph{21 de septiembre de 2010} - -Ha salido LilyPond 2.13.34; ésta es la primera versión alfa de la -inminente versión estable 2.14. Se invita a los usuarios a que hagan -experimentos con esta versión. Las funcionalidades nuevas desde -2.12.3 están relacionadas en el manual de @qq{Cambios} dentro de la -sección @ref{Desarrollo} de estas páginas. - -Aún existe una regresión conocida contra 2.12.3: -@uref{http://code.google.com/p/lilypond/issues/detail?id=1173, -Problema número 1173 - No se pueden alinear las MetronomeMarks sobre una -nota si existe un silencio multicompás en otra voz}, pero esperamos -encontrar más. Si se decide a probar 2.13.34, no se sorprenda al -encontrar problemas; tan sólo envíenos @ref{Informes de fallos} -educados. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.33! @emph{10 de septiembre de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.33. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -@newsEnd - - - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.32! @emph{3 de septiembre de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.32. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -@newsEnd - - -@newsItem -@subheading El Informe LilyPond, número 20. @emph{2 de septiembre de 2010} - -¡Vuelve el @emph{Informe LilyPond}, con sus dos editores: @qq{gruñón} -y @qq{blandito}! Esta edición contiene la revisión de un editor de -notación en línea que utiliza lilypond, además de las acostumbradas -notas de lanzamientos, el fragmento de código del día, noticias desde -la charca de las ranas y el informe de fallos del día. - -Acérquese al @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-20, -Informe LilyPond 20} y léalo ahora mismo; ¡animamos calurosamente a -todos a que hagan sus comentarios y contribuciones! -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.31! @emph{24 de agosto de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.31. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.30! @emph{13 de agosto de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.30. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -@newsEnd - - -@newsItem -@subheading El Informe LilyPond, número 19. @emph{9 de agosto de 2010} - -¡Vuelve el @emph{Informe LilyPond}, con sus dos editores: @qq{gruñón} -y @qq{blandito}! Esta edición contiene noticias sobre conferencias, -además de las acostumbradas notas sobre lanzamientos, el fragmento de -código del día, noticias desde la charca de las ranas, y el informe de -fallo del día. - -Acérquese al @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-19, -Informe LilyPond 19} y léalo ahora mismo; ¡animamos calurosamente a -todos a que hagan sus comentarios y contribuciones! -@newsEnd - - - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.29! @emph{4 de agosto de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.29. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -Esta versión cambia radicalmente las reglas del barrado automático, -por lo que debe emplear un cuidado especial y estar preparado para -algún resultado inesperado. -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.28! @emph{13 de julio de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.28. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -Esta edición incluye ciertos cambios importantes, no suficientemente -probados, en el editor lilypad para Windows. Los usuarios de Windows -no deben utilizar esta versión porque está orientada solamente a los -desarrolladores, pero si quiere ignorar nuestra advertencia y probarla -de todas formas, tenga especial cuidado. -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.27! @emph{5 de julio de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.27. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. -@newsEnd - - -@newsItem -@subheading ¡Probando nuestra nueva página! @emph{29 de junio de 2010} - -¡Estamos probando nuestras nuevas páginas! Durante las próximas -24 horas, las páginas predeterminadas serán las de nuestro nuevo sitio; -después, cambiaremos de nuevo al sitio antiguo mientras -examinamos el retorno de los usuarios y efectuamos algunas -mejoras a las nuevas páginas. - -Envíe sus comentarios a @code{lilypond-user}; encontrará -más información en nuestra página de @ref{Contacto}. - -@warning{Existen algunos problemas conocidos con las traducciones. -Si no domina el inglés, quizá prefiera ver el sitio web anterior -de LilyPond en: @uref{http://lilypond.org/web/}} - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.26! @emph{26 de junio de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.26. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.25! @emph{20 de junio de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.25. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.24! @emph{14 de junio de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.24. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.23! @emph{3 de junio de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.23. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.22! @emph{27 de mayo de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.22. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.21! @emph{12 de mayo de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.21. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -Esta versión debiera ser de especial interés -para los mantenedores de paquetes: hemos hecho algunos -cambios en el guión de configuración y en las bibliotecas -requeridas. Aparte de algún posible informe urgente de fallo, -éstos son el sistema de montaje y las bibliotecas que se van -a utilizar en la próxima edición estable. -@newsEnd - - -@newsItem -@subheading El Informe LilyPond, número 18. @emph{11 de mayo de 2010} - -¡Vuelve el @emph{Informe LilyPond}, con sus dos editores: @qq{gruñón} -y @qq{blandito}! Esta edición está repleta de emoción e interés, -bolsas de papel y pentagramas terminados en zigzag, además de las -secciones habituales Ranas y Bichos. - -Acérquese al @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-18, -Informe LilyPond 18} y léalo ahora mismo; ¡animamos calurosamente a -todos a que hagan sus comentarios y contribuciones! -@newsEnd - - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.20! @emph{5 de mayo de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.20. Esta -versión contiene el conjunto habitual de correcciones de fallos. Sin -embargo, aún quedan algunos problemas críticos, por lo que esta -versión está orientada solamente a los desarrolladores. - -Hay un pequeño cambio de sintaxis: las instrucciones no documentadas -@code{\cresc} y @code{\decresc} han cambiado. Además, el bloque de -[opciones] para el modo LaTeX de @code{lilypond-book} viene ahora -después del @code{@{lilypond@}}, según la práctica normal de LaTeX. -Como siempre, consulte el documento Cambios para ver más información. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.19! @emph{24 de abril de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.19. Esta -edición contiene unas cuantas correcciones de fallos, como es usual. -Sin embargo, aún quedan 11 fallos críticos, por lo que esta versión -está orientada solamente a los desarrolladores. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.18! @emph{16 de abril de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.18. Esta -edición contiene el número usual de correcciones de fallos, junto a -unas traducciones de la página web mejoradas. Sin embargo, aún quedan -14 fallos críticos, por lo que esta versión está orientada solamente a -los desarrolladores. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.17! @emph{2 de abril de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.17. Esta -versión incluye la corrección de 4 fallos críticos. Sin embargo, aún -permanecen 15 fallos críticos, por lo que esta versión está orientada -solamente a los desarrolladores. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.16! @emph{15 de marzo de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.16. Está -orientado solamente a los desarrolladores, e incluye la ronda usual de -corrección de fallos. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.15! @emph{4 de marzo de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.15. Está -orientado solamente a los desarrolladores, e incluye algunas -actualizaciones del proceso de construcción del binario además de la -ronda usual de corrección de fallos. -@newsEnd - - -@newsItem -@subheading El Informe LilyPond, número 17. @emph{1 de marzo de 2010} - -¡Viva, vuelve el Informe, con un equipo nuevo! Dicen que dos cabezas -es mejor que una: ¿valdrá también para los diarios? Léalo y ¡díganos -qué le parece! En esta edición hablaremos de páginas web y poesía, -ranas y bichos, ¡por no mencionar una extensa reseña del editor -Frescobaldi! - -¿A qué espera? Acérquese y -¡@uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-17, lea el Informe -LilyPond número 17} (en inglés) ahora mismo! -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.14! @emph{27 de febrero de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.14. Esta -versión está orientada solamente a los desarrolladores, e incluye una -amplia actualización de las traducciones, además de la ronda usual de -correcciones de fallos. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.13! @emph{13 de febrero de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.13. Esta -versión está orientada solamente a los desarrolladores, y arregla -diversos problemas con el sistema de construcción de la documentación, -así como la adición de un marco de vista previa para el back-end de -salida SVG. Además, los archivos binarios instalables son ahora unos -6 Mb más pequeños. -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.12! @emph{2 de febrero de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.12. Esta -versión está orientada solamente a los desarrolladores, y aporta más -estabilidad y menos bugs al sistema de construcción y a la guía del -colaborador. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.11! @emph{16 de enero de 2010} - -Nos complace anunciar el lanzamiento de LilyPond 2.13.11. Esta -edición está orientada solamente a los dearrolladores, y trae algunas -mejoras en el sistema de construcción, al guía del colaborador, y -arregla cuatro regresiones críticas contra versiones anteriores. -@newsEnd - -@newsItem -@subheading ¡Lanzado LilyPond 2.13.10! @emph{31 de diciembre de 2009} - -We are happy to announce the release of LilyPond 2.13.10. This -release is intended for developers only, and brings a number of -improvements such as predictable regression test output filenames -and English names for feta filenames. - -@newsEnd - - -@newsItem -@subheading ¡Lanzado LilyPond 2.12.3! @emph{20 de diciembre de 2009} - -We are happy to announce the release of LilyPond 2.12.3. This -version contains the long-awaited fix for our GUI on MacOS X 10.5 -and 10.6. In addition to the GUI fixes, this version contains -dozens of bugfixes backported from the unstable development -version. - -We recommend that all users upgrade to this version. This is the -last planned release in the 2.12 stable series; development now -shifts towards the upcoming 2.14 series. - -@newsEnd - - -@newsItem -@subheading LilyPond 2.13.9 lanzado! @emph{December 12, 2009} - -LilyPond 2.13.9 is now out. From 2.13.9 onwards, LilyPond is -licensed under the GNU GPL v3+ for code, and the GNU FDL 1.3+ for -documentation. In addition to the usual round of bugfixes, this -release adds a shortcut for repeated chords. - -Please note that 2.13 is an @strong{unstable development} branch; -normal users should continue to use 2.12. - -@newsEnd - -@newsItem -@subheading New Website! @emph{October 3, 2009} - -As you can see, we have a new website design. Many thanks to -texi2html and CSS for being so flexible! - -@newsEnd - - -@newsItem -@subheading LilyPond Report #16. @emph{September 6, 2009} - -The LilyPond Report is back! This short, informal opinion column is -about the LilyPond project: its team, its world, its community. -Read @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-16, issue 16} -now! - -@newsEnd - - -@newsItem -@subheading LilyPond 2.13.3. @emph{July 2, 2009} - -This unstable release contains working menus in OSX 10.5; many -thanks to Christian Hitz for fixing this long-standing problem! -This release also contains numerous other bugfixes and features -such as ties with variable thickness, partially dashed slurs, and -eyeglasses.@* -We are planning another 2.12 release in the next week or two, -which will include the menu fixes for OSX 10.5. Normal users may -wish to wait for this release rather than using an unstable -release.@* -@ref{Cambios}, -@ref{Desarrollo}. -@newsEnd - - -@newsItem -@subheading A LilyPond weboldala magyarul. @emph{May 22, 2009} - -Elkészült a lilypond.org nagy részének magyar fordítása a LilyPond -honosítási projekt első lépéseként. A projekt célja a LilyPond -szabad kottaszedő szoftver minél széleskörűbben elérhetővé tétele -a magyar felhasználók számára a teljes weboldal és dokumentáció -lefordítása révén. A teljes dokumentáció lefordításához -közreműködőket keresünk. Ha részt vennél a honosításban, küldj egy -e-mailt a @code{harmathdenes AT gmail.com} címre!@* -Harmath Dénes, a LilyPond honosítási projekt -vezetője -@newsEnd - - -@newsItem -@subheading The LilyPond Report #15. @emph{May 18, 2009} - -The @emph{LilyPond Report} is a short, informal opinion column about the LilyPond project: -its team, its world, its community. -Follow @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-15,this link} -to read the full issue... -@newsEnd - - -@newsItem -@subheading The LilyPond Report #14. @emph{April 13, 2009} - -The @emph{LilyPond Report} is back, on a new website! -This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community. -Follow @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/?The-LilyPond-Report-14,this link} to read the full issue... -@newsEnd - - -@newsItem -@subheading LilyPond 2.12.2 and 2.13.0 — @emph{March 21, 2009} - -As a very belated announcement, the stable version of LilyPond is -now 2.12.2, and the next development version has begun with -2.13.0. -@newsEnd - - -@newsItem -@subheading LilyPond 2.12.0 @qq{Rune} — @emph{December 27, 2008} - -A new stable release of LilyPond is available. -@* -@miscLink{announce-v2.12,Announcement}, -@ref{Cambios}, -@ref{Descarga}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.65 — Release Candidate. @emph{December 2, 2008} - -This release has improvements to MusicXML import, contributed by -Reinhold Kainhofer, and adds support for splitting a book in several -book parts, contributed by Nicolas Sceaux. -Nested contexts of the same type are now allowed with any depth, and -overriding nested properties can be done with list syntax, thanks to -Neil Puttock. -This is hopefully the last Release Candidate before stable release 2.12, -so you are welcome to test this release if you can to report new -issues.@* -@bugfixes{2_11_65,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.64. @emph{November 18, 2008} - -LilyPond 2.11.64 is available. MusicXML import has been improved, -including church modes support, and a few bugs in the compilation -and documentation building processes are fixed. The three -documentation manuals are now fully translated in Spanish, thanks -to Francisco Vila. The font cache problem in Windows binaries -which used to cause excessive slowness should be fixed. -@* -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.63. @emph{October 29, 2008} - -LilyPond 2.11.63 is available. This release has lots of updates to the -documentation and translations. -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.62 -- Release Candidate. @emph{October 11, 2008} - -LilyPond 2.11.62 is available. This is is one of the last releases -before 2.12, so testing it is encouraged. In addition to a bugfix -in @code{\tempo} command, this release has lot of updates -to Spanish and German documentation translations, and the -stylesheet for HTML documentation has been improved. -@* -@bugfixes{2_11_62,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.61 available. @emph{October 1, 2008} - -LilyPond 2.11.61 has been released. It has updates to -documentation translations, and a new automatic accidentals style -(teaching) has been added. -@* -@bugfixes{2_11_61,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.60 available. @emph{September 25, 2008} - -LilyPond 2.11.60 has been released. A new style of double repeat -bar line has been added, and @code{printallheaders} variable in -score block has been renamed to @code{print-all-headers}. -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.59 available. @emph{September 20, 2008} - -Release 2.11.59 is out. LilyPond now uses 64 bit integers for -rational numbers, which allows typesetting more complex polymetric -music. This release also has updates to German and Spanish -translations of the documentation. -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.58 available. @emph{September 13, 2008} - -LilyPond 2.11.58 is a beta release, which means the next stable -release is expected in a few weeks. This release is also special, -as it includes code which supports more flexible automatic -accidentals rules, written several months ago by Rune Zedeler, -deceased since then. All the development team express their -condolences to his family and his friends. Besides this, -automatic beaming has been improved by Carl Sorensen, support -for creating stem flags in a new style has been contributed by -Reinhold Kainhofer, and a few bugs have been fixed. -@* -@bugfixes{2_11_58,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.57 available. @emph{August 27, 2008} - -LilyPond 2.11.57 is out. This release adds support for harp pedal -diagrams, contributed by Reinhold Kainhofer, and some changes in -markup command names have been made. -@* -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.56 available. @emph{August 17, 2008} - -LilyPond 2.11.56 is out. This release features transposable fret -diagrams, contributed by Carl Sorensen. Translations status pages -are now available from the documentation start page. Two -predefined commands @code{\pointAndClickOn}, -@code{\pointAndClickOff} have also been added. -@* -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.55 available. @emph{August 6, 2008} - -LilyPond 2.11.55 is out. This release fixes several bugs, and for octavation brackets -@code{set-octavation} has been replaced by a more user-friendly command, @code{\ottava}. -@* -@bugfixes{2_11_55,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.54 available. @emph{July 30, 2008} - -LilyPond 2.11.54 is out. This release fixes a bug in tie formatting -following a line break, and changes the behavior of @code{short-indent} -so that short instrument names are no longer indented in the margin. -@* -@bugfixes{2_11_54,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.53 available. @emph{July 23, 2008} - -LilyPond 2.11.53 is out. This release fixes a lot of bugs. -@* -@bugfixes{2_11_53,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.52 available. @emph{July 14, 2008} - -Release 2.11.52 fixes wrong offset of a bar number when it follows -a breath mark, and syntax changes made in recent development -releases are now fully listed on the News page. -@* -@bugfixes{2_11_52,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.51 available. @emph{July 8, 2008} - -Release 2.11.51 has a couple of bugfixes, and a lot of changes in -predefined command names. Fret diagrams formatting has been -improved by Carl Sorensen, it is now controlled -by @code{fret-diagram-details} property. -@* -@bugfixes{2_11_51,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.50 available. @emph{July 2, 2008} - -Release 2.11.50 adds support for metronome marks with text, and -backslashed numbers for figured bass, contributed by -Reinhold Kainhofer. -@* -@bugfixes{2_11_50,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading The LilyPond Report #13. @emph{June 23, 2008} - -This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community. -Follow @uref{http://web.archive.org/web/20120220123759/http://news.lilynet.net/?The-LilyPond-Report-13,this link} to read the full issue... -@newsEnd - - -@newsItem -@subheading The LilyPond Report #12. @emph{June 16, 2008} - -This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community. -Follow @uref{http://web.archive.org/web/20120220123754/http://news.lilynet.net/?The-LilyPond-Report-12,this link} to read the full issue... -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.49 released. @emph{June 12, 2008} - -LilyPond 2.11.49 is out. It fixes a number of bugs, including bugs in beams formatting. -@* -@bugfixes{2_11_49,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.48 released. @emph{June 9, 2008} - -LilyPond 2.11.48 is out. This release fixes a few bugs, and -@code{\compressMusic} has been renamed -to @code{\scaleDurations}. -@* -@bugfixes{2_11_48,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading The LilyPond Report #11. @emph{June 9, 2008} - -This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community. -Follow @uref{http://web.archive.org/web/20120220123750/http://news.lilynet.net/?The-LilyPond-Report-11,this link} to read the full issue... -@newsEnd - - -@newsItem -@subheading The LilyPond Report #10. @emph{June 2, 2008} - -Welcome to this special tenth issue of the @emph{LilyPond Report}, entirely dedicated to Algorithmic Composition systems.@* -Follow @uref{http://web.archive.org/web/20120220123743/http://news.lilynet.net/?The-LilyPond-Report-10,this link} to read the full issue... -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.47 released. @emph{May 28, 2008} - -LilyPond now allows all text context properties to be markups, -except in @code{\lyricmode}. This release also fixes -regression tests maintenance for developers. -@* -@bugfixes{2_11_47,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.46 available. @emph{May 22, 2008} - -Release 2.11.46 fixes a lot of bugs and includes a rewrite of -dynamics engravers. Support for slur-shaped arpeggios has been added. -@* -@bugfixes{2_11_46,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading RSS feed - @emph{May 21, 2008} - -A RSS feed is now available on lilypond.org. It contains all -news announced on the web site start page: releases, LilyPond -report, new translations of the site and publications. -@uref{http://lilypond.org/web/lilypond-rss-feed.xml,Feed URL}. -The info mailing list (see @ref{Contacto}) is still used to -announce releases and special events. -@newsEnd - - -@newsItem -@subheading The LilyPond Report #9. @emph{May 05, 2008} - -Welcome to this ninth issue of the @emph{LilyPond Report}!@* -This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community. -Follow @uref{http://web.archive.org/web/20120220123946/http://news.lilynet.net/?The-LilyPond-Report-9,this link} to read the full issue... -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.45 available. @emph{April 26, 2008} - -Release 2.11.45 fixes a couple of bugs in the formatting -engine. @code{lilypond-book} has been improved, with better -performance, a bugfix about included files, and more flexibility -for preprocessing documents with LaTeX variants. Support for -enclosing text in a rounded box has been contributed by Valentin -Villenave. -@* -@bugfixes{2_11_45,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.44 available. @emph{April 14, 2008} - -Release 2.11.44 is available. Support for figured bass and chord -names has been added to the MusicXML -converter. -@* -@bugfixes{2_11_44,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading lilypond.org日本語訳 (lilypond.org Japanese translation). @emph{2008å¹´4月8日 (April 4, 2008)} - -lilypond.orgのいくつかのページの日本語訳が出来ました。 -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.43 available. @emph{March 31, 2008} - -Release 2.11.43 has been available since March 27. It fixes a -couple of formatting bugs, and the font cache problem with -MS-Windows binaries which caused excessive slowness has been -fixed. -@* -@bugfixes{2_11_43,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.42 available. @emph{March 9, 2008} - -Release 2.11.42 is out. It fixes some formatting and spacing -bugs. -@* -@bugfixes{2_11_42,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading Comparison of music engraving with Finale and LilyPond. @emph{February 25, 2008} - -In three articles, Andrew Hawryluk compares Finale and LilyPond in -general terms, and evaluates in detail engraving capabilities of -both pieces of software. The second article is an instructive -analysis of Rachmaninoff's Piano Prelude 6 engraving, including -comparisons with a reference hand-engraved edition. -@uref{http://www.musicbyandrew.ca/finale-lilypond-1.html,Read -the articles}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.41 available. @emph{February 25, 2008} - -Release 2.11.41 is available. It has a few bugfixes, updated -program messages in French, German, Spanish and Vietnamese, and -updates to the MusicXML converter. -@* -@bugfixes{2_11_41,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.37 available. @emph{January 3, 2008} - -Release 2.11.37 is available. It has a few bugfixes, and -documentation changes. (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.36 available. @emph{December 13, 2007} - -Release 2.11.36 is now available. It has many bugfixes, updates -for MusicXML import, and it includes major documentation changes from -Grand Documentation Project. -@* -@bugfixes{2_11_36,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.33 and 2.11.33 available. @emph{September 20, 2007} - -Release 2.11.33 is now available. -@* -@bugfixes{2_10_33,2.10}, -@bugfixes{2_11_33,2.11}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.32 available. @emph{September 2, 2007} - -Release 2.11.32 is now available. -@* -@bugfixes{2_11_32,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.31 available. @emph{August 31, 2007} - -Release 2.11.31 is now available. It has more bugfixes, updates -for MusicXML import and lots of updates for the translations. -@* -@bugfixes{2_11_31,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.30 available. @emph{August 20, 2007} - -Release 2.11.30 is now available. It has various bugfixes among -others in the new spacing code, MusicXML import and lots of updates -for the translations. -@* -@bugfixes{2_11_30,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.29 and 2.11.29 available. @emph{August 11, 2007} - -Release 2.11.29 is now available. 2.10.29 has a few small fixes. -2.11.29 has several bugfixes, among others in the new spacing code, -and lots of updates for the translations. -@* -@bugfixes{2_10_29,2.10}, -@bugfixes{2_11_29,2.11}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.28 for FreeBSD x86_64. @emph{August 10, 2007} - -Release 2.11.28 is now available as a binary installer for -FreeBSD x86_64. Download -@uref{http://lilypond.org/downloads/binaries/freebsd-64/,the installer} and -do @emph{sh lilypond-2.11.28-1.freebsd-64.sh} in a command window. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.28 available - @emph{July 25, 2007} -Release 2.11.28 has several updates to the manual and its -translations, an plethora of bugfixes and a complete cleanup of the -spacing engine code. -@* -@bugfixes{2_11_28,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.26 available - @emph{June 8, 2007} - -Release 2.11.26 supports page markers, eg. for use in -tables-of-contents. In addition, it fixes a number of bugs. Enjoy! -@* -@bugfixes{2_11_26,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.25 and 2.11.25 available - @emph{May 20, 2007} - -Release 2.11.25 has support for toplevel page breaking commands, -and page breaking as a whole has been sped up significantly. Enjoy! -@* -@bugfixes{2_10_25,2.10}, -@bugfixes{2_11_25,2.11}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.23 and 2.11.23 available - @emph{May 1, 2007} -This has lots of bugfixes. -@* -@bugfixes{2_10_23,2.10}, -@bugfixes{2_11_23,2.11}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading Übersetzung der Dokumentation - @emph{10. April 2007} -Die Kapitel 1-5 (der Abschnitt für Anfänger) des LilyPond-Benutzerhandbuchs -sind auf deutsch übersetzt --- sie sind erhältlich für die @ref{Cambios} -online und @ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.22 available - @emph{April 10, 2007} -This release has updates of the dot collision code. -@* -@bugfixes{2_11_22,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.21 available - @emph{March 24, 2007} -This release has some documentation updates. -@* -@bugfixes{2_11_21,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading Traduction de la documentation en français - @emph{25 février 2007} -Les chapitres 1 à 4 et 6 du manuel de l'utilisateur sont désormais traduits, et -disponibles en ligne --- -@uref{http://lilypond.org/doc/v2.10/Documentation/user/lilypond/index.fr.html,version 2.10}, -@uref{http://lilypond.org/doc/v2.11/Documentation/user/lilypond/index.fr.html,version 2.11}. -Les traductions sont également incluses dans la -@uref{install,documentation téléchargeable}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.20 and 2.11.20 available - @emph{February 25, 2007} -This release fixes many bugs. -@* -@bugfixes{2_10_20,2.10}, -@bugfixes{2_11_20,2.11}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.19 and 2.11.19 available - @emph{February 18, 2007} -This release fixes many bugs. -@* -@bugfixes{2_10_19,2.10}, -@bugfixes{2_11_19,2.11}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.18 available - @emph{February 12, 2007} -This release fixes still more bugs, and included -singing support through festival contributed by Milan Zamazal. -@* -@bugfixes{2_11_18,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.17 available - @emph{February 9, 2007} -This release fixes still more bugs. -@* -@bugfixes{2_11_17,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.16 and 2.11.16 available - @emph{February 4, 2007} -This release fixes many bugs. -(@bugfixes{2_10_16,2.10}, -@bugfixes{2_11_16,2.11}, -@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.15 and 2.11.15 available - @emph{February 1, 2007} -This release will stretch piano staves on a -system-by-system basis and add a few glyphs: a black harmonic note -head and the slashed mirrored flat. -@* -@bugfixes{2_10_15,2.10}, -@bugfixes{2_11_15,2.11}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.14 and 2.11.14 available - @emph{January 26, 2007} -This release has a rewrite of the line-spanner code, responsible for -among other glissandi and text-crescendos, making them more flexible. -@* -@bugfixes{2_11_14,}, -@ref{Cambios}, -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.13 and 2.11.13 available - @emph{January 17, 2007} -This release fixes a few minor but irritating bugs. In addition, the -2.11 release has updates of the tutorial. -@* -@bugfixes{2_11_13,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.12 available - @emph{January 17, 2007} -This release fixes lots of bugs. In particular, the tie formatting has -been further improved, and memory usage has been improved enormously. -@* -@bugfixes{2_11_12,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.12 available - @emph{January 17, 2007} -This release mirrors 2.11.12. Notably, it has the same memory -usage improvements. -@* -@bugfixes{2_10_12,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.11 available - @emph{January 12, 2007} -This release mostly has the same fixes as 2.11.11. -@* -@bugfixes{2_10_11,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.11 available - @emph{January 11, 2007} -This release has further fixes for popular bugs. Timing of the MIDI -output won't get confused by tuplets and grace notes anymore. Some fat -has also been trimmed of the skyline code performance. -@* -@bugfixes{2_11_11,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.10 available - @emph{January 8, 2007} -LilyPond 2.11.10 has further review of the test-suite, performance and -code coverage. This brought to light several problems that were -fixed. Notably, 2.11.10 fixes lots of regressions in optical -correction spacing and MIDI dynamics. Also, this version is 20 to 50 -% faster than previous 2.11 releases. -@* -@bugfixes{2_11_10,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.10 available - @emph{January 8, 2007} -This release fixes several popular bugs, among others: MIDI files -that go silent after (de)crescendi, and tuplets problems with quoting -and part-combining. -@* -@bugfixes{2_10_10,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.9 and 2.10.9 available - @emph{January 3, 2007} -This release has a couple of bugfixes, and ---in 2.11.9--- -further improvements in the regression test suite -@* -@bugfixes{2_11_9,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.8 and 2.10.8 available - @emph{January 3, 2007} -New! Improved! With even more bugfixes! -@* -@bugfixes{2_11_8,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading @code{lilypond.org} auf deutsch - @emph{31. Dezember 2006} -Die LilyPond-Webseiten sind jetzt auch auf deutsch übersetzt! -@newsEnd - - -@newsItem -@subheading @code{lilypond.org} en español - @emph{December 29, 2006} -¡Ya está disponible la versión en español del sitio web de LilyPond! -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.7 and 2.10.7 available - @emph{January 1, 2007} -New! Improved! With even more bugfixes! -@* -@bugfixes{2_11_7,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.6 available - @emph{December 30, 2006} -This release supports arbitrary fractional alterations, allowing -music with different microtonal conventions to be typeset. -@* -@bugfixes{2_11_6,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.6 available - @emph{December 30, 2006} -New! Improved! With even more bugfixes! -@* -@bugfixes{2_10_6,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.5 available - @emph{December 24, 2006} -These releases complete the translation infrastructure for -Documentation. -@* -@bugfixes{2_11_5,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.5 available - @emph{December 24, 2006} -New! Improved! With even more bugfixes! -@* -@bugfixes{2_10_5,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.4 available - @emph{December 21, 2006} -The vertical spacing improvements that were introduced in 2.11.0 now work -within a system as well as between systems. -@* -@bugfixes{2_11_4,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.3 available - @emph{December 19, 2006} -This release has @uref{http://lilypond.org/doc/v2.11/compare-v2.10.3/index.html,graphical -test results} and several website build improvements. -@* -@bugfixes{2_11_3,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.3 available - @emph{December 19, 2006} -This release fixes several bugs. -@* -@bugfixes{2_10_3,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LinuxPPC binaries available! - @emph{December 19, 2006} -From now on, our GUB binary builds include support for Linux/PPC. (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading Traduction du tutoriel en français. @emph{December 13, 2006} -Fruit du travail d'une équipe de traducteurs, le tutoriel en français est -maintenant disponible en ligne. -@uref{http://lilypond.org/doc/v2.10/Documentation/user/lilypond/Tutorial.fr.html,Version 2.10}, -@uref{http://lilypond.org/doc/v2.11/Documentation/user/lilypond/Tutorial.fr.html,Version 2.11}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.2 available - @emph{December 12, 2006} -This release supports glissandi and harmonics in tablature. -@* -@bugfixes{2_11_2,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.2 available - @emph{December 12, 2006} -A new stable release of LilyPond is available. -@* -@bugfixes{2_10_2,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.1 available - @emph{December 4, 2006} -This release has improved support for horizontal spacing. -@* -@bugfixes{2_11_1,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.1 available - @emph{December 3, 2006} -A new stable release of LilyPond is available. -@* -@bugfixes{2_10_1,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.11.0 available - @emph{November 27, 2006} -This release has improved support for vertical spacing. (@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.10.0 available - @emph{November 11, 2006} -A new stable release of LilyPond is available. -(@miscLink{announce-v2.10,Announcement}, @ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading GIT repository online - @emph{November 11, 2006} -LilyPond development has moved over its source code to @uref{http://git.or.cz,GIT}, the fast version control -system. Check out our repository at @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git;a=summary,gnu.org}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.29 available - @emph{November 5, 2006} -This release has many more bugfixes. -@* -@bugfixes{2_9_29,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.28 available - @emph{November 3, 2006} -This release has many more bugfixes. -@* -@bugfixes{2_9_28,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.27 available - @emph{October 28, 2006} -This release has a new @code{FretBoards} context, and some further -bugfixes. -@* -@bugfixes{2_9_27,}, -@ref{Cambios}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading Music streams thesis available - @emph{October 21, 2006} -The last months, Erik Sandberg has been overhauling the internals of -Lily. This change introduces a new intermediate format, Music Streams, -which will make it easier get music data out of LilyPond. A copy of -the thesis is now available from lilypond.org -(@ref{Publicaciones}). -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.26 available - @emph{October 20, 2006} -This release has further bugfixes. -@* -@bugfixes{2_9_26,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.25 available - @emph{October 18, 2006} -This release has more bugfixes; from now on, binaries are also -available for x86/64. -@* -@bugfixes{2_9_25,}, -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.24 available - @emph{October 15, 2006} -This release has support for right hand guitar fingerings, and offers -some bugfixes. (@ref{Cambios}, -@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed2924&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.23 available - @emph{October 12, 2006} -This release cuts fragments of EPS directly from your finished score, -and makes it easier to insert ties into lyrics. (@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.22 available - @emph{October 9, 2006} -Test this release candidate for LilyPond 2.10! (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.21 available - @emph{October 4, 2006} -Test this release candidate for LilyPond 2.10! (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.20 available - @emph{October 3, 2006} -Test this release candidate for LilyPond 2.10! (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.17 available - @emph{September 2, 2006} -This release fixes many bugs. Among others, MacOS X QuickTime now -honors tempo changes are in the MIDI output. (@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.16 available - @emph{August 25, 2006} -In this release, chords may be partially tied and lyric extenders have -tunable padding. Moreover, many bugs were fixed -(@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.15 available - @emph{August 20, 2006} -This releases fixes many bugs in the 2.9.14 release. (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.8.6 available - @emph{August 8, 2006} -This release contains a few minor bugfixes; the source tarball is also -available. (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.14 available - @emph{August 4, 2006} -This release supports instrument name changes, dotted barlines and -better spacing for floating grace notes. In addition, it contains -ongoing work by Erik Sandberg to extend the interpretation phase with -stream support. (@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.13 available - @emph{July 23, 2006} -This release supports doits and falls, and more tuning options for -grace note spacing and tuplet brackets. (@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.12 available - @emph{July 18, 2006} -This release supports pdftex for lilypond-book, and uses PdfTeX for -generating manuals, so page numbers and references are now clickable. -(@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.11 available - @emph{July 12, 2006} -This release wraps improvements of the last two weeks. As a new -feature, it supports tunable tuplet number formatting for nested -tuplets. (@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.10 available - @emph{June 15, 2006} -This releases fixes a couple of bugs in 2.9.9. -(@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.9 available - @emph{June 15, 2006} -This releases fixes many bugs in 2.9.8 and earlier. -(@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.8 available - @emph{June 6, 2006} -2.9.8 has support for different spacing sections within a single -score, and better infrastructure for automated regression testing. -(@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.8.4 available - @emph{June 4, 2006} -2.8.4 fixes some minor bugs, and includes a backport of the -infrastructure for automated regression testing. -(@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading First test results available - @emph{June 4, 2006} -After a week of frantic tweaking, the first automated testing results -are available. You can now see @uref{http://lilypond.org/doc/v2.9/compare-v2.8.4/index.html,in full -glory} what features are broken in the development release -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.7 available - @emph{May 30, 2006} -2.9.7 has improvements in the formatting for figured bass, and -includes a new framework for detecting bugs earlier, which will make -the development releases even better -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.6 available - @emph{May 24, 2006} -This -release has new features in beam formatting: beams may now be put on -single stems, and obey the @code{beatGrouping} property. MusicXML -converter. (@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading New essay pages! - @emph{May 22, 2006} -The @emph{Automated Engraving} essay has been updated with material -from the @uref{http://fisl.softwarelivre.org,FISL} talk, with -pages on @uref{about/automated-engraving/problem-statement,modeling -notation} and @uref{about/automated-engraving/scoring-esthetics,algorithms for -esthetics}. Happy reading! -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.5 available - @emph{May 17, 2006} -This release supports object rotation, hairpins with circled tips, -hairpins that run to barlines before notes and improvements in the -MusicXML converter. -(@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.4 available - @emph{May 12, 2006} -This release has support for feathered beaming, and note head styles in -the markup @code{\note} command. In addition, it has a lot of updates -of the manual and a clean up of the spring spacer. -(@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.8.2 available - @emph{May 12, 2006} -This release has fixes for minor bugs and compilation issues. -(@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.3 is out! - @emph{May 7, 2006} -This new release has lots of updates of the manual, courtesy Graham -and the contributors of the mailing. It handles formatting for ties in -arpegiated chords better (feature sponsored by -Steve Doonan), it has al niente hairpins, courtesy of Erlend Aasland, -and some cleanups of the PostScript output, courtesy David Feuer. (@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading FISL7.0 slides available - @emph{April 22, 2006} -The slides for Han-Wen's talk at -@uref{http://fisl.softwarelivre.org,FISL 7} are now online. -(@ref{Publicaciones}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.8.1 is out! - @emph{April 3, 2006} -Important bugfixes include CJK font handling and a Darwin/x86 port. -(@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.9.1 is out! - @emph{April 3, 2006} -It's mostly a bugfix release, and it's almoste the same as 2.8.1. This -release mainly fixes problems with CJK font loading. -(@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond on MacOS X/Intel - @emph{March 31, 2006} -LilyPond now also runs on Intel based macs, offering a 400% -speedup over the emulated PowerPC binaries. (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.8.0 is out! - @emph{March 22, 2006} -Version 2.8 is here! Read the @miscLink{announce-v2.8,release -announcement}. (@ref{Cambios}, @ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.39 is out - @emph{March 17, 2006} -This release has even more bug fixes. Please test before 2.8 is -released. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.38 is out - @emph{March 12, 2006} -This is likely to be the last release candidate before we release 2.8, -so report any bugs that you might find. New attractions include: -lilypond postscript files now work with GSView, cut & pasting lily -code from PDF files should now work, and spacing fixes for -multi-measure rests. -(@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.37 is out - @emph{March 4, 2006} -This release has more bug fixes. Please help us by testing it! -(@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.36 is out - @emph{February 24, 2006} -This is another release candidate for 2.8. It has lots of bug fixes -and polishes to the documentation. It also contains support for -creating ties that are only on their right side connected to note -heads, which is handy for repeats (feature sponsored by Steve Doonan). -The documentation suite can now be downloaded as a separate tarball -from lilypond.org. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.35 is out - @emph{February 19, 2006} -This release has lots of bugs fixes. The plan is to release 2.8 at the -end of this month, so bug reports are @strong{very} welcome. By -definition a bug is release critical if it wasn't present in version -2.6. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.34 is out - @emph{February 16, 2006} -This release has a bunch of bugfixes, and new features. Newly created -contexts may also be named with @code{\new Voice = -"alto"}. Thicknesses of tie and slurs may be tuned separately for -the endings and the middle -part. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.33 is out - @emph{February 10, 2006} -Items directly connected with a music input element may be -parenthesized, for example, -@verbatim -{ - c4 -\parenthesize -. - -} -@end verbatim - -This feature was sponsored by Ramana Kumar. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.32 is out - @emph{February 7, 2006} -This release contains some syntax changes: words inside the \paper and -\layout block are henceforth written with dashes, for instance: - -@verbatim -{ - \layout { - ragged-right = ##t - } -} -@end verbatim - -Furthermore, in this release, we have dropped some legacy code from -our library. Now, lily uses standard C++ strings and the STL -vector. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.31 is out - @emph{February 2, 2006} -This release fixes a load of bugs, and has some internal -cleanups. Exported C++ members are now named -ly:class-name::function-name in Scheme instead of -Class_name::function_name. We are now using C++ vectors and strings -instead of our own. The Linux/FreeBSD builds now include wrappers for -Python scripts too, so you can run convert-ly and midi2ly. -(@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.30 is out - @emph{January 30, 2006} -This release has a few bug fixes, like the solfa note head shape and -collisions, the \epsfile command, and in getting No. ligature in -normal words. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.29 is out - @emph{January 27, 2006} -This release has the following new features. Alignments of staves may -be tuned per system (feature sponsored by Trevor Baca), individual -systems may be positioned manually (feature sponsored by Trevor Baca -and Nicolas Sceaux), a linebreaking configuration can now be saved as -a `.ly' file automatically. This allows vertical alignments to be -stretched to fit pages in a second formatting run (feature sponsored -by Trevor Baca and Nicolas -Sceaux). (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.28 is out - @emph{January 22, 2006} -This release contains numerous small fixes that were already in our -GUB binaries. In addition, it has further polish for formatting of -tied chords. Theses improvements were sponsored by Steve -Doonan. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.27, release 4 - @emph{January 13, 2006} - -The fourth release of our Grand Unified Binary for 2.7.27 is -available. This release uses Pango 1.11.1, which has support for -ligatures and kerning. Enjoy! (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.27, release 3 - @emph{January 12, 2006} -The third release of our Grand Unified Binaries is available. This -release fixes external font-support, the decompression flag for -Linux. Also, we have support for @strong{FreeBSD} as well! Jump -to the @ref{Descargas antiguas} get them! -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.27 binaries are out - @emph{January 7, 2006} -Starting with 2.7.26, the development team has been working on the -installers. We're proud to announce another version of these: they are -now available for -@uref{http://lilypond.org/downloads/binaries/linux-x86/, -Linux/x86}, -@uref{http://lilypond.org/downloads/binaries/darwin-ppc/, -MacOS X} and -@uref{http://lilypond.org/downloads/binaries/mingw/, -Windows}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.27 is out - @emph{January 7, 2006} -This release allows you to switch staff lines on and off individually -(feature sponsored by Andrea -Valle). (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading Linux Journal article - @emph{January 2006} -Linux Journal publishes an article on -@uref{http://www.linuxjournal.com/article/8364,@emph{Make -Stunning Schenker Graphs with GNU LilyPond}}. It is a -in-depth but hands-on feature article with crisp LilyPond -graphics. -@* -Author Kris Shaffer remarks -“GNU LilyPond generates beautiful graphics that make commercial -alternatives seem second-rate.” -This article is now available @uref{http://www.linuxjournal.com/article/8583,on-line}. -@newsEnd - - -@newsItem -@subheading New binaries for LilyPond 2.7.26 - @emph{January 4, 2006} -The Development team has been working around the clock to improve -to fix the first wave bugs reported by you. The new results for MacOS -and Windows are up on the @ref{Descargas antiguas} -page. Let us know how you fare! -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.26 is out - @emph{December 31, 2005} -This release has an improvement in the MusicXML importer (feature -sponsored by Mark vd Borre's Music Academy): now, staves and voices -are also setup, so you can readily run LilyPond on the .ly output. -The important occasion for this release is our new build -environment: we have completely revamped it, which means that binaries -for all platforms (including MacOS, Windows, Linux/x86, but probably -FreeBSD too) will be more quickly available for download. -A happy 2006 from the LilyPond Development Team! -(@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.25 is out - @emph{December 24, 2005} -This release has various bugfixes. Also, stems on the center line now -have their directions interpolated to minimize the number of direction -changes (feature sponsored by Basil Crow and Mike -Rolish). (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.24 is out - @emph{December 20, 2005} -This release fixes a couple of bugs, but more importantly, slurs now -avoid TupletNumbers, and tuplet numbers may enter the staff (feature -sponsored by Trent Johnston), tuplet brackets and numbers are -implemented as separate grobs, TupletBracket and TupletNumber (rewrite -sponsored by Trent Johnston), string arguments for music functions may -be specified without # marks. This allows syntactical constructs (like -\clef and \bar) to be expressed in generic music -functions. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.23 is out - @emph{December 19, 2005} -This release has the following new features: -@itemize -@item -Ties in chords are also formatted using score based -formatting. This reduces the number of collisions for ties in chords -(feature sponsored by Steve Doonan). -@item -With the \tweak music function, layout objects that are directly -connected to input may be tuned easily (feature sponsored by Sean Reed -and Bertalan Fodor). -@item -Generic music functions may now also be used on -articulations and chord elements (feature sponsored by Sean Reed and -Bertalan Fodor). -@item -Better support for MusicXML, more options for spacing Lyrics; -it is now possible to separately specify minimum distances for normal -and hyphenated syllables (features sponsored by Mark van den Borre and -Bertalan Fodor. -@end itemize -(@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.22 is out - @emph{December 9, 2005} -This release has better support for MusicXML: it also supports ties, -beams and editorial accidentals. It also has more options for spacing -Lyrics; it is now possible to separately specify minimum distances for -normal and hyphenated syllables. These features were sponsored by Mark -van den Borre and Bertalan -Fodor. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.21 is out - @emph{December 5, 2005} -Saint Nicholas brings you ... a @uref{http://www.musicxml.org/,MusicXML} convertor for LilyPond! -The convertor is basic, but working. Check out the @uref{http://www.lilypond-design.com/sponsor/open-features.html#inputfilter, -LilyPond Software Design} pages for MusicXML features that can be -sponsored. -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.20 is out - @emph{December 2, 2005} -This release contains the following improvements: Texts set in a -TrueType font are now kerned. Using the TeX no longer requires linking -or dynamically opening the kpathsea library, making the backend more -easily usable on various systems (feature sponsored by Christian Ebert -of Black Trash -Productions). (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.6.5 is out - @emph{December 1, 2005} -This release updates the bugreporting address and reorganizes the -documentation tree. (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.19 is out - @emph{November 26, 2005} -This version contains a few bugfixes, and now allows the type of -brackets in system start bracket hierarchies to be specified. Also, -the horizontal alignment of rehearsal marks may be changed: marks can -be put on key signatures, clefs, time signatures, -etc. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.18 is out - @emph{November 21, 2005} -This version features nestable system start delimiters, like bracket, -brace. It also adds "square" line bracket (feature sponsored by Trevor -Baca). It also has refactored routines for tie formatting. This will -make it easier to get better tie formatting for chords (feature -sponsored by Steve Doonan). It also has a few bug -fixes. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.17 is out - @emph{November 17, 2005} -This version has refactored routines for tie formatting. This will -make it easier to get better tie formatting for chords (feature -sponsored by Steve Doonan). It also has a few bug -fixes. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.16 is out - @emph{November 11, 2005} -This release fixes a large number of bugs. Please upgrade before -reporting bugs in the 2.7 series. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.15 is out - @emph{November 3, 2005} -This release has another massive cleanup of the backend. Each grob -property may also be a "grob closure". This means that it is possible -to combine functions. Calculation of extent and offset of grob is now -controlled via the `X-extent', `Y-extent', `X-offset' and `Y-offset' -properties. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.14 is out - @emph{October 23, 2005} -This release has more cleanup in the layout-engine. Now, -properties that have Procedure values are thought to be procedures -that compute said property, i.e. -@verbatim - -\override Beam #'direction = #(lambda (grob) -(if (> (random 10) 5) UP DOWN)) - -@end verbatim -will set a random direction for beams. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.13 is out - @emph{October 18, 2005} -This release features slashed numerals, plus signs and interruptible -extender lines for figured bass. Merging of Figured bass lines has -been made switchable with the figuredBassCenterContinuations -property. For each grob, a subproperty in `callbacks' property defines -the procedure which computes it. This is major internal cleanup, which -also provides advanced tweakability for power -users. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.6.4 is out - @emph{October 11, 2005} -This release fixes a few minor problems with the stable -series. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.12 is out - @emph{October 07, 2005} -It features more annotations for the page layout engine and some more -sponsored features. Beamlets may stick out of the side of beams -(feature sponsored by Trevor Baca); new support for figured bass with -support for continuation lines and tuning of figures, brackets, and -alignments (feature sponsored by Trent Johnston); vertical alignments -of staves can now be tuned easily for individual systems (feature -sponsored by Nicolas -Sceaux). (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.11 is out - @emph{October 02, 2005} -Vertical spacing for page layout can now be tuned for each system -individually (feature sponsored by Trevor Baca and Nicolas -Sceaux). The slope of a stem-tremolo may be set manually (feature -sponsored by Sven Axelsson). There are a number of cleanups in the -handling and representation of systems, among other features and bug -fixes. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.10 is out - @emph{September 13, 2005} -This version adds proper support for "laissez vibrer ties", just enter -\laissezVibrer after a chord. This feature was sponsored by Henrik -Frisk. It also has a couple of minor -bugfixes. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.9 is out - @emph{September 5, 2005} -This is mainly a bugfix -release. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading Traduction française du site - @emph{September 03, 2005} -Grâce à @uref{about/thanks#website,l'équipe des traducteurs}, -de nombreuses pages du site sont maintenant disponibles en français, -notamment l'@uref{about/automated-engraving/index.fr.html,essai sur -la gravure musicale}. -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.8 is out - @emph{August 29, 2005} -This release has support for right-to-left text formatting in markup -commands (sponsored by Aaron Mehl). In addition, it fixes a great -number of bugs, among others, support for writing MIDI files. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading Article in `De Standaard' - @emph{August 20, 2005} -The Belgian newspaper @emph{De Standaard} investigates what drives -Free Software authors in an article titled @emph{Delen van KENNIS -zonder WINSTBEJAG} (Non-profit sharing of -knowlegde) using LilyPond as an example. This marks -LilyPond's first appearance in mainstream printed press. -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.7 is out - @emph{August 22, 2005} -This release has a rewriting of tie formatting which was sponsored by -Bertalan Fodor, Jay Hamilton, Kieren MacMillan, Steve Doonan, Trevor -Baca, and Vicente Solsona Dellá. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.6 is out - @emph{August 19, 2005} -This release adds support for numbered percent repeats, a feature -sponsored by Yoshinobu Ishizaki. It also has bugfixes for clashes -between slurs and symbols, like fingers dynamic -signs. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.5 is out - @emph{August 16, 2005} -Lily 2.7.5 has a large number of bugfixes, among others, in slur -formatting, spacing, rest collisions and tuplet bracket -formatting. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.4 is out - @emph{August 7, 2005} -LilyPond 2.7.4 has support for proportional notation, where the space -for a note is proportional to the time it -takes. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.6.3 is out - @emph{August 4, 2005} -This release fixes a memory corruption bug that was triggered by -\override'ing Beam settings. (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.6.2 is out - @emph{August 2, 2005} -This release has a few bugfixes, among them: the autopackage will run -in more platforms, LilyPond will be much quicker for large -lilypond-book documents, and the up and down Fa note heads for shaped -heads have been -swapped. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.3 is out - @emph{July 25, 2005} -LilyPond 2.7.3 has improvements in performance which should result in -faster operations (15 to 20 percent). It also contains the new -"\displayLilyMusic" function. -(@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.2 is out - @emph{July 21, 2005} -LilyPond 2.7.2 has support for suggested accidentals for musica -ficta notation, easy entry for lyric melismata and improvements for -quicker entry of scores. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.6 released - @emph{June 27, 2005} -Version 2.6 is the latest stable release of LilyPond. -It now -installs in a snap on Windows, MacOS X, and any version of Linux (x86). -@strong{Get up and running in minutes!} Pango text formatting lets you -print @strong{Unicode } lyrics in your favorite script and font. Create -@strong{SVG} files, and edit them in Inkscape. -(@miscLink{announce-v2.6,Announcement}, @ref{Descargas antiguas}, @ref{Cambios}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7.1 is out - @emph{July 20, 2005} -LilyPond 2.7.1 has no user-visible changes. However, due to -restructuring @qq{under the hood}, this version will be 10 to -20 % faster. (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.6.1 is out - @emph{July 11, 2005} -This version fixes a few minor bugs found in -2.6.0, and also works on DOS-based Windows versions. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading LilyPond 2.7 is out - @emph{July 9, 2005} -LilyPond 2.7.0 is out. It has support for paragraph text and -pitched trill notation. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading 2.5.31 released - @emph{June 22, 2005} -LilyPond 2.5.32 is now available for download (binaries for Fedora + -MacOS only). It has a few very minor bugfixes, and a rewrite of the -TTF embedding code, which should be a lot more robust now. -(@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading Traduction du site de LilyPond - @emph{15 juin 2005} -@uref{about/thanks#website,L'équipe des traducteurs} vous présente -le site de LilyPond en français. Nous travaillons sur la traduction des -pages encore non traduites. Bon surf ! -@newsEnd - - -@newsItem -@subheading 2.5.31 for Windows and MacOS - @emph{June 15, 2005} -2.5.31 is now available for both Windows and MacOS X. The Windows -version should now work with embedding TTF fonts, and the MacOS X has -better help functionality. -(@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading 2.5.31 released - @emph{June 15, 2005} -This release has a few bugfixes. In the MacOS X version, ClickEdit has -been renamed to LilyPond, and you can now upgrade your files and -compile them directly from -LilyPond. (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading 2.5.30 released - @emph{June 10, 2005} -This is (hopefully) the last Release Candidate before 2.6. Give it a -good shake to find those last bugs! (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading 2.5.29 released - @emph{June 7, 2005} -In this release the documentation also has pictures. In addition, the -Mac version can also read native mac fonts (.dfonts and fonts in -resource forks). (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading 2.5.27 released - @emph{May 31, 2005} -It has a big bunch of minor bugfixes. This is another release -candidate for version 2.6, which should be released within the next 2 -weeks. Please send a bug report if you find a critical problem with this -release. (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading Windows and MacOS installers available - @emph{May 26, 2005} -There are now a native, standalone installers for Windows and -MacOS. They also support PDF point & click. (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading 2.5.26 released - @emph{May 26, 2005} -This release has a couple of small bugfixes. -@newsEnd - - -@newsItem -@subheading 2.5.25 released - @emph{May 20, 2005} -This release has many small bugfixes and updates to the -documentation. (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading 2.5.24 released - @emph{May 12, 2005} -2.5.24 fixes a bunch of bugs; in particular, chord symbols (such as -slashed o) should now work on all platforms. This release has a new -feature: it is now possible to make staves appear in a different order -from the order that they were defined. (@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading 2.5.23 released - @emph{May 6, 2005} -This release has a couple of small bugfixes, and a new feature. It is -now possible to start and stop the @code{StaffSymbol}, during a piece of -music, by doing @code{\stopStaff \startStaff}. This can be used to -produce Ossia staves. (@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading 2.5.22 released - @emph{May 3, 2005} -2.5.22 is a bugfix -release. The most visible improvement is in the PDF : this release -will produce smaller PDF files, with symbols that look better on -screen. -(@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading April 25, 2005 - 2.5.21 released! -2.5.21 has more bugfixes. It also has support for "grid -lines", bar like vertical line, which are aligned with the notes. The -auto-beam engraver was rewritten, so it also works with irregular time -signatures like 5/8. -(@ref{Cambios}, -@ref{Descargas antiguas}) -@newsEnd - - -@newsItem -@subheading April 18, 2005 -LilyPond 2.5.20 has lots of bugfixes, in particular, MIDI files of -multi-movement pieces don't overwrite each other. Version 2.5.20 also -supports putting arrows on lines, such as glissandi. -More details are in the -the @ref{Cambios} -file, or go straight to @ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading April 15, 2005 -LilyPond 2.5.19 was released. The command `\epsfile' allows inclusion -of EPS graphics into markup texts and the music function -`\musicDisplay' will display a music expression as indented -Scheme code. Take a look at -the @ref{Cambios} -file and @ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading April 6, 2005 -2.5.18 is a bugfix release. It has many small cleanups in the -web-based documentation, and many small cleanups all over the -place. @ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading March 31, 2005 -2.5.17 is out. This release features many small bugfixes. In addition, -it has support for string number notation for guitar. This feature was -sponsored by Gunther Strube. @ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading March 20, 2005 -LilyPond 2.5.16 is out. This release fixes a few minor but irritating -errors. A Fedora Core 3 binary is also available. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading March 14, 2005 -LilyPond 2.5.15 is out. This release has clean ups in the SVG output, -and now uses the LilyPond number font for time signatures. It is -now possible to add text before and after music. This can be used to -add verses after a music. Take a look at the @ref{Cambios} -file and @ref{Descargas antiguas}! -@newsEnd - - -@newsItem -@subheading March 7, 2005 -LilyPond 2.5.14 is out. It is now possible (and in fact, encouraged), -to build LilyPond either without the Kpathsea TeX library or with the -Kpathsea dynamically loaded, but only for the -btex backend. This -means that packages do not have to depend on TeX anymore. With this, -the Windows download size will go down significantly. Take a look at -the @ref{Cambios} -file and download @ref{Descargas antiguas}! -@newsEnd - - -@newsItem -@subheading March 7, 2005 -LilyPond 2.4.5 is out. This release backports the tieWaitForNote -feature and has support for tetex-3.0. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading February 28, 2005 -LilyPond 2.5.13 is available for Fedora Core 3. You need to install -Ghostscript 8.15rc3. Unfortunately, this version of Ghostscript -lacks the IJS dynamic library, which means that it will conflict with -the gimp-print package. You may install it with --nodeps. Use at your -own risk. -@newsEnd - - -@newsItem -@subheading February 28, 2005 -LilyPond 2.5.13 is out. This release has Point and click support for -PDF output. You can read more about it @uref{http://lilypond.org/doc/v2.5/Documentation/user/out-www/lilypond/Point-and-click.html,here}. -Take a look at the @ref{Cambios} -file and download @ref{Descargas antiguas}! -@newsEnd - - -@newsItem -@subheading February 26, 2005 -The @uref{http://lsr.di.unimi.it/,LilyPond Snippet -Repository (LSR)} is a searchable database of LilyPond code -snippets. You can add snippets too, so join the LSR project, and -contribute creative ideas for using LilyPond. -@newsEnd - - -@newsItem -@subheading February 21, 2005 -LilyPond 2.5.12 is out. The big news is that this release supports -TrueType fonts. This means that it is now possible to use @strong{all} -fonts available via FontConfig. Also, arpeggios may be written out -using ties and individual objects may have colors! Take a look at -the @ref{Cambios} -file and @ref{Descargas antiguas}! -@newsEnd - - -@newsItem -@subheading February 4, 2005 -LilyPond 2.5.11 is out. In this -release, foreign character sets are now supported in lilypond-book -too, and it is possible to put system separators between systems. -@ref{Descargas antiguas}! -@newsEnd - - -@newsItem -@subheading January 31, 2005 -LilyPond 2.5.10 is out. This release -sports as new EPS backend, based on the PS backend. This backend is -used in the new and improved lilypond-book script. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading January 26, 2005 -LilyPond 2.5.9 is out. This release fixes a couple of annoying -bugs in the direct PS output for piano braces. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading January 16, 2005 -LilyPond 2.5.8 is out. This -release has many internal code cleanups. In addition, -accuracy of error reporting has been improved. -See the -@uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1, -change log -} and @ref{Descargas antiguas}! -@newsEnd - - -@newsItem -@subheading January 11, 2005 -LilyPond 2.5.7 is out. This release has a completely usable -Pango integration for the PS backend. The default font is -Century Schoolbook from the PS font suite. It also has -small updates to the tablature settings by Erlend Aasland, -assorted manual updates by Graham, and an overhaul of the -font code by Werner. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading January 02, 2005 -LilyPond 2.5.6 was released. This is a "technology preview" -release, which means that it has all kinds of nifty -features, but is not actually usable for producing nicely -printed scores. For this reason, an RPM of this release was -not produced. The PS backend is now completely switched over -to Pango/FontConfig: for -f ps, LilyPond only accepts UTF8 -input, all text fonts are loaded through Pango, the TeX -backend now offloads all metric computations to LaTeX, the -SVG and GNOME backends are broken, most probably. -@ref{Descargas antiguas} -and check out the -changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading December 28, 2004 -LilyPond 2.5.5 is out. It is the first one to link against -FontConfig and Pango, although it is only available in the "-f -ps" output. The default output format has been changed back TeX -while we stabilize the Pango/FontConfig integration. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading December 20, 2004 -LilyPond 2.5.4 is out. This release has some major -brainsurgery in the font handling. As of now, LilyPond loads -the music fonts in OpenType font format using FreeType. -This has made a lot of things simpler, including font -handling for the GNOME backend and SVG backend. -@ref{Descargas antiguas} -and check out the -changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading December 3, 2004 -LilyPond 2.5.3 was released. A new script, `\espressivo' has -been added, for a combination of crescendo and decrescendo -on a single note. In markups, expressions stacked with -`\column', `\center-align', etc, are not grouped with `< ... ->' anymore, but with `@{ ... @}'. LilyPond will now avoid line -breaks that cause long texts to stick outside of the page -staff. Grace notes following a main note, used to be entered -by letting the grace notes follow a skip in a parallel -expression. -@ref{Descargas antiguas} -and -check out the changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading November 26, 2004 -LilyPond 2.5.2 was released. It has several goodies, -including solfa-notation (shaped noteheads), and an easier -mechanism for customizing title, footer and header -layout. Don't forget to rebuild the fonts, as they have been -changed to accomodate the solfa-notation. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading November 20, 2004 -LilyPond 2.5.1 is out. This is an experimental release, -containing some proof-of-concept code for our graphical -layout editor. You can add and remove things from the file, -and the tweaks will still work, as long as the tweaked notes -remain in the place (ie. start at the same time-wise and be -part of the same context). Further attractions are: the -gnome backend now also draws beams and slurs, updates to the -SVG backend, support for the lmodern font set for TeX, -various bugfixes. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading November 12, 2004 -The LilyPond development is OPEN once again! The first -release of the 2.5 series has the following new Features: -Positioning of slurs can now be adjusted manually, Grace -notes are correctly quoted and formatted when using cue -notes, Cue notes can now be created with -@verbatim - -\cueDuring #VOICE-NAME #DIRECTION { MUSIC } - -@end verbatim -Stemlets (short stems over beamed rests) have been added. -In addition, Jan hacked together some highly experimental -code where you can use the mouse to drag and drop objects in -the -f gnome backend. These tweaks can be saved and are -applied to the PS and TeX output as well. -@ref{Descargas antiguas} -and check out -the changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading November 11, 2004 -LilyPond 2.4.2 is out. This release fixes a number of security -problems with --safe, and adds a lot of polishing fixes. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading November 4, 2004 -LilyPond 2.4.1 is out. This release includes a number of small -fixes that were made to 2.4.0 last week. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading October 31, 2004 -LilyPond 2.4.0 was just @miscLink{announce-v2.4,released!} -This new stable version has support for page-layout, -completely rewritten slur formatting and many other -improvements. Read about them in the @ref{Cambios} -file. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading October 29, 2004 -LilyPond 2.3.26 is out. This is another 2.4 release -candidate. This release fixes a number of minor bugs, and -some problems with the conversion scripts. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading October 29, 2004 -2.3.25 is the final release candidate for LilyPond 2.4. -Werner has been overhauling the TeX macros and -lilypond-book. In addition, this release contains an -important fix for raggedbottom page-layout. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading October 27, 2004 -LilyPond 2.3.24 is a further polished 2.4 release candidate. -This release has more improvements by Werner for the TeX -backend, and a bunch of other small fixes. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading October 24, 2004 -LilyPond 2.3.23 has bugfixes in the documentation, lilypond-book and ---preview output. This release can be considered as a release -candidate for LilyPond 2.4. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading October 10, 2004 -LilyPond 2.3.22 fixes a bunch more bugs, to make 2.4 a really -stable release. In addition, it renames the \paper@{@} block to -\layout@{@}. The \bookpaper@{@} block is now called -\paper@{@}. -@ref{Descargas antiguas} -and -check out the changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading October 09, 2004 -LilyPond 2.3.21 is out. It is a serious release candidate for -the next stable release LilyPond. This version has a cleanup -and some small formatting improvements of the slur -code. -@ref{Descargas antiguas} -and check -out the changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading October 02, 2004 -LilyPond 2.3.20 was released. It fixes the biggest problems -with encoding and the TeX backend. As a result, latin1 -characters (like the german SS) show up correctly in the -output once again. Also it has the usual bugfixes and updates -in the documentation. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading September 29, 2004 -The LilyPond development team will be present at the @uref{https://web.archive.org/web/20040811160307/http://www.nluug.nl/events/sane2004/bazaar/index.html,Free -Software Bazaar} of the NLUUG SANE 2004 conference today. If you -are in the neighborhood, drop by for live contact with the Team or -just a friendly chat. Registration is not required to attend. -@newsEnd - - -@newsItem -@subheading September 26, 2004 -LilyPond 2.3.19 is out. It's mainly a bugfix release. -@ref{Descargas antiguas} -and check out the changes -in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading September 20, 2004 -LilyPond 2.3.18 was released. It has further improvements in -the slur formatting, and a small syntax change: the mode -changing commands (`\chords', `\lyrics', etc.) have been -renamed to `\chordmode', `\lyricmode', etc. The command -`\chords' is an abbreviation for \new ChordNames \chordmode -... `\drums', `\lyrics', `\chords', `\figures' function -similarly. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading September 11, 2004 -LilyPond 2.3.16 was released. It fixes a couple of annoying -bugs, and has an important addition in the slur-formatter. Slurs that -pass note heads much closer than the average distance get an extra -penalty. This fixes a lot of difficult slurring cases. See -input/regression/new-slur for some examples. -Please consider this release as a 3.0 pre-release so try to find as -many bugs as possible. A report including a small .ly example -can be filed at bug-lilypond@@gnu.org -In this case, a bug is defined as something that the current 2.3 does -worse than the latest 2.2 release. We want to be sure that no output -will get uglier by upgrading to 3.0, so that once 3.0 is out, nothing -will hold users back in switching. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading September 10, 2004 -LilyPond 2.3.15 was released. It fixes for some gaffes with -the new vertical spacing engine, has lots of documentation -updates, and has support for landscape output in the direct -postscript output. Also, the types of events quoted with -`\quote' can now be tuned with `quotedEventTypes'. By default, -only notes and rests end up in quotes. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading September 6, 2004 -LilyPond 2.3.14 was released and has exciting features! -LilyPond will try to keep staves at the same distances across a -page, but it will stretch distances to prevent collisions; key -signature cancellations are now printed before the bar line; -different voices that all use "\quote" can now refer to each -other. -@ref{Descargas antiguas} -and check out -the changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading August 29, 2004 -LilyPond now has a Documentation -Editor, Graham Percival. From now on, he will oversee that -useful information flows from the mailiing list into the -manual. Also, if there are unclear sections in the manual, -let him know via one of the mailing lists. -As a start of his career, he worked to transform the -"Templates" section of the website into a readable and comprehensive -chapter of the user manual. -A lot of cheers for Graham! -@newsEnd - - -@newsItem -@subheading August 29, 2004 -LilyPond 2.3.13 was released. The new slur code was -improved, scripts can be made to avoid slurs, by setting -inside-slur to #f. It is no longer necessary to instantiate -"up" and "down" staves separately when using -\autochange. Jurgen Reuter refreshed the logic around -mensural flags, so they are adjusted for staff lines once -again. -@ref{Descargas antiguas} -and -check out the changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading August 24, 2004 -LilyPond 2.2.6 fixes a few minor issues, among others, the -disappearing metronome mark. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading August 23, 2004 -LilyPond 2.3.12 is out. This release has a lot of fixes and -a new feature: there is now support for putting two slurs on -chords, both above and below. This is switched on with the -`doubleSlurs' property. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading August 3, 2004 -LilyPond 2.3.11 is out. This release basically is 2.3.10 with a few -annoying bugs fixed. -@ref{Descargas antiguas} -and check out -the changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading August 1, 2004 -LilyPond 2.3.10 is out. This release has a major clean-up of the -input/test/ directory. Many examples have been moved to the regression -test or manual, and the superfluous or outdated ones have been -removed. The directory has gone from 146 examples to 72 examples. That -means that we're halfway cleaning it out. Incidentally, the manual -has gone from 200 to 220 pages. New features: -@itemize -@item -Running trills now have their own spanner and event. They are -started and stopped with \startTrillSpan and \stopTrillSpan -@item -There is a new markup command `\postscript' that takes a string -that is dumped as verbatim PostScript -@end itemize - -@ref{Descargas antiguas} -and check out -the changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading July 30, 2004 -LilyPond 2.3.9 is out. The important change is that lilypond -now once-again directly runs the binary. The old wrapper script has -been renamed to lilypond-latex.py, and should only be used for legacy -projects. The recommended route is either using lilypond directly -(with \book, you can have multiple movements within one document), or -to run lilypond-book with a LaTeX wrapper file. -This release also fixes a bunch of small errors. I now consider -LilyPond feature complete for a 3.0 release. Next on the TODO list is -updating the manual, and after that's done we can release 3.0. The -projected date for this to happen is in about a month. -@ref{Descargas antiguas} -and check out -the changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading July 23, 2004 -LilyPond 2.3.8 fixes a few minor bugs in the new slur code, -and has rewritten support for ledger lines. Now, in tight -situations, ledger lines will be shortened so they stay -separate. This also required a cleanup of the Ambitus -implementation. -@ref{Descargas antiguas} -and check out the changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading July 19, 2004 -LilyPond 2.3.7 was released and has new exciting features! -The slur formatting has been rewritten. The new slur code -works similar to the Beam formatter: scores are assigned for -all esthetic components of a slur. A large number of -combinations for begin and end points is then tried out. -Slurs will now also take into account collisions with staff -lines, scripts (like staccato and accent) and accidentals. In -the LilyPond emacs mode, the `|' will now display the current -beat within the measure. -@ref{Descargas antiguas} -and check out the changes in -the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading July 15, 2004 -LilyPond 2.2.5 was released. It has a few bug fixes from -2.3.x. -@ref{Descargas antiguas} -and check -out the changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading July 11, 2004 -An introductory article on LilyPond appeared on @uref{http://www.linuxjournal.com/article.php?sid=7657&mode=thread&order=0,Linux -Journal}. -@newsEnd - - -@newsItem -@subheading July 5, 2004 -LilyPond 2.3.6 was released. This release has more updates -for the Fret diagram code (thanks, Carl!), fixes a bunch of -bugs, including a serious one that trashed a lot of beam -formatting, and was also present in the 2.2 series. -@ref{Descargas antiguas} -and check out the changes -in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading July 5, 2004 -LilyPond 2.2.4 was released. It is mainly a bug fix -release. -@ref{Descargas antiguas} -and -check out the changes in the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog}. -@newsEnd - - -@newsItem -@subheading June 25, 2004 -LilyPond 2.3.5 has numerous small bugfixes and cleanups, and -features more work in the experimental GNOME output -module. Adventurous hackers can check the instructions at -scm/output-gnome.scm and try to run -buildscripts/guile-gnome.sh to see what the fuss is all about. -Carl Sorensen also provided us with more patches to the -fret-diagram output. Check out the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog} -and -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading June 20, 2004 -LilyPond 2.2.3 has a turkish translation and fixes a few minor -bugs that were reported over the past month. Check out the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog} for a full description and -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading June 13, 2004 -LilyPond 2.3.4 further improves the output backends. As a -result, manual page-breaks, multiple output formats and putting -@code{\score} into markups now works. Check out the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog} -and -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading May 31, 2004 -LilyPond 2.3.3 has many internal changes relating to the output -backend (PostScript) and page-layout. In addition, it contains a few -bugfixes for recently reported problems. Check out the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog} -and -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading May 31, 2004 -LilyPond 2.2.2 is out. It has a number of small bugfixes, so upgrade -if any of these errors concern you. Check out the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd3c36946e4c341b0abb0f1c6bbdbc12883c1,ChangeLog} -or head straight to the -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading May 26, 2004 -LilyPond 2.3.2 is out. This release has a lot of internal -changes relating to page layout, but also sports experimental -fret-diagram code. Check out the @ref{Cambios} or head straight to the -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading May 9, 2004 -LilyPond 2.3.1 is out. This release has many new and cool -features. Check out the @ref{Cambios} or head straight to the -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading May 4, 2004 -Help LilyPond get better, and join in on LilyPond -development! This -@uref{devel/participating/call-for-help.html,call for -help} was posted on the mailing list a month ago, and we -are still looking for a Release Meister, Code Janitor, -Newsletter editor and a Writer for implementation -Documentation. Of course, any other help is also welcome! -@newsEnd - - -@newsItem -@subheading May 3, 2004 -LilyPond 2.2.1 has been released. It fixes a handful of bugs. -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading April 17, 2004 -LilyPond 2.2.0 is now available -on Windows, and should find its way to the Cygwin mirrors -soon. -@newsEnd - - -@newsItem -@subheading April 12, 2004 -LilyPond 2.3.0 is the first release -in the 2.3 cycle. The focus for 2.3 is page layout, so -instrumentalists can force parts to have page breaks at sane turning -points. This release is @emph{experimental}; expect things to break! -More info in the @ref{Cambios}. -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading April 8, 2004 -A French article on the new LilyPond -release appeared on @uref{http://linuxfr.org/2004/04/08/15968.html,linuxfr.org}. -@newsEnd - - -@newsItem -@subheading April 8, 2004 -Binaries for LilyPond 2.2.0 are available for -MacOS X, Slackware, Mandrake and Debian Woody. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading April 1, 2004 -LilyPond 2.2.0 is out! This new stable version has -completely revamped support for for orchestral score -formatting, cue notes, font size management, lyric formatting, -drum notation/playback and document integration. Read about it in -the @uref{announce-v2.2.html,announcement} or skip to the -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading March 31, 2004 -LilyPond 2.1.37 has build fixes for Cygwin and SUSE, -bugfixes for part-combining and chord tremolos and even more -documentation polish. This should be the final release -candidate; expect only regression bugs to be fixed before -2.2. -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading March 30, 2004 -LilyPond 2.1.36 has many fixes in -the user manual. -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading March 28, 2004 -LilyPond 2.1..35 fixes a slew of -bugs, and has the @code{raggedlast} option, which causes -paragraph like line breaking for scores. More info in the -@ref{Cambios}. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading March 22, 2004 -LilyPond 2.1.34 fixes minor bugs, and has more rewriting. -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading March 21, 2004 -LilyPond 2.1.33 fixes a serious bug, and a few other -irritations. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading March 20, 2004 -LilyPond 2.1.32 has more rewriting -in the user manual. There is also an experimental -implementation of optimal page breaking (Postscript backend -only). -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading March 15, 2004 -LilyPond 2.1.31 is out. It has fixes the alignment of bass -figures and spurious dynamic warnings in MIDI. New -attractions include rewritten font-selection routines. See -the -@ref{Cambios} and -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading March 14, 2004 -The -@uref{http://linuxmusician.com/index.php?option=articles&task=viewarticle&artid=10,linuxmusician.com interview} made the -@uref{http://slashdot.org/article.pl?sid=04/03/13/2054227&mode=thread&tid=141&tid=188,slashdot -frontpage!}. -@newsEnd - - -@newsItem -@subheading March 11, 2004 -@uref{http://linuxmusician.com,linuxmusician.com} is -running an -@uref{http://linuxmusician.com/index.php?option=articles&task=viewarticle&artid=10,interview} -with Han-Wen Nienhuys and Jan Nieuwenhuizen, the main -authors of LilyPond. -@newsEnd - - -@newsItem -@subheading March 11, 2004 -LilyPond 2.1.30 has editorial fixes for the manual, and -experimental support for page layout in the PostScript -backend. See the -@ref{Cambios} and -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading March 9, 2004 -LilyPond 2.1.29 fixes a couple of MIDI bugs, and has -experimental support for producing titles with -@code{markup}. -@newsEnd - - -@newsItem -@subheading February 29, 2004 -In LilyPond 2.1.28 Scheme property functions may be used -argument to @code{set!}. In addition, parts of the manual -have been proofread and corrected in this release. See the -@ref{Cambios} and -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading February 24, 2004 -LilyPond 2.1.27 takes into account instrument transpositions -when quoting other voices. This release also fixes a number -of lyrics related bugs. See the -@ref{Cambios} and -@ref{Descargas antiguas}. -@newsEnd - - -@newsItem -@subheading February 23, 2004 -LilyPond 2.1.26 has a new, experimental feature for quoting -other voices in instrumental parts. This can be used to -produce cue notes. More information in the -@ref{Cambios}. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading February 18, 2004 -LilyPond 2.1.25 fixes many bugs, and changes the conventions -for altering accidental rules. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading February 16, 2004 -LilyPond 2.1.24 has a big -internal rewrite. One of its practical consequences is that -@code{\with} now also works with @code{Score} -contexts. Further 2.1.23, which was not announced here, -fixes a few bugs caused by the change of @code{\property} -syntax and has updates in the Program Reference document. -More information in the -@ref{Cambios}. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading February 13, 2004 -LilyPond 2.1.22 has a -simplification of the @code{\property} syntax: it is -shorter and more consistent now. More information in the -@ref{Cambios}. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading February 12, 2004 -In LilyPond 2.1.21, output -tweaks can be done at multiple levels of the context -hierarchy. In addition, it has a bunch of bugfixes, -improvements in the documentation. More information in the -@ref{Cambios}. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading February 9, 2004 -LilyPond 2.1.20 has MIDI -output for drums. It also sports a completely rewritten -lilypond-book script, which is cleaner, shorter, and faster. -It also has a large number of bugfixes. -More information in the -@ref{Cambios}. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading February 5, 2004 -LilyPond 2.1.19 has rewritten -support for drum notation. This release also makes some -long-standing cleanups: the removal of @code{Thread} (all -functionality is now moved into @code{Voice}) and Lyrics -(functionality moved to @code{LyricsVoice}) context. -More information in the -@ref{Cambios}. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading February 4, 2004 -LilyPond 2.1.18 is out. This -release has the new part-combiner installed by default, and a -similar implementation of @code{autochange}. More information -in the -@ref{Cambios}. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading February 2, 2004 -LilyPond 2.1.17 is out. It adds texts -(solo, a due) for the part combiner. It also reinstates the -@option{--safe} option which prevents havoc by Scheme exploits. More -information in the -@ref{Cambios}. -@newsEnd - - -@newsItem -@subheading January 28, 2004 -LilyPond 2.1.16 is out; its main feature -is that it fixes the autobeams gaffe of 2.1.15. The part-combiner -has been tested successfully on larger pieces. In the near future, -expect more part-combining eye-candy. -More information in -the -@ref{Cambios}. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading January 26, 2004 -LilyPond 2.1.15 further improves the part-combiner, and fixes many -bugs, among others in pedal brackets and finger positioning. -More information in -the -@ref{Cambios}. @ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading January 21, 2004 -LilyPond 2.1.14 -has the first release of the new part combiner. If you have scores that -use part-combining, please consider giving it a test-run. In addition -many bugs relating to mixed staff sizes have been fixed. -More information in -the -@ref{Cambios}. @ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading January 20, 2004 -The lilypond.org domain has been moved to a new server. This -will result in better connectivity and more bandwidth. Due -to security concerns, the new server does not offer FTP -access, but only HTTP downloads. -@newsEnd - - -@newsItem -@subheading January 20, 2004 -LilyPond 2.1.13 fixes a small but -nasty bug in side-positioning placement, and some bugs in -tuplet, tie and accidental formatting. This release contains -rudimentary work on a new part-combiner. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading January 19, 2004 -LilyPond 2.1.12 fixes many bugs -and improves formatting of ottava brackets. More information in -the -@ref{Cambios}. @ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading January 18, 2004 -LilyPond 2.1.11 is now also -available for Windows! For downloading, go -@uref{https://web.archive.org/web/20040204191423/http://www.inf.bme.hu/~berti/lilypond/,here}. -@newsEnd - - -@newsItem -@subheading January 17, 2004 -In 2.1.11, the mechanism for -setting staff size and page is much simplified. In addition -there are improvements in the notehead shape, and there is -balloon help! -More information in the -@ref{Cambios}. @ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading January 16, 2004 -LilyPond 2.1.10 has a load of -bugfixes and a shorter syntax for octave checks. More -information in the -@ref{Cambios}. @ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading January 13, 2004 -LilyPond 2.1.9 has a new mechanism -for adding lyrics to melodies. It is now possible to have -different melismatic variations for each stanza. More -information in the -@ref{Cambios}. @ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading January 9, 2004 -LilyPond 2.1.8 has an important new -feature: it is now possible to use @code{\property} to tune -the appearance of spanning objects like @code{StaffSymbol} and -@code{SystemStartBrace}. In addition, contexts may be -modified with @code{\remove} and @code{\consists} for -individual music expressions. -More information in the -@ref{Cambios}. @ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading January 7, 2004 -An update to the stable branch, -version 2.0.2, was released today. It contains a couple of -minor bugfixes. @ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading January 6, 2004 -LilyPond 2.1.7 continues to -improve the layout of the Schubert test piece; this release -focuses on dot placement and multi measure rests centering. -More information in the -@ref{Cambios} and download @uref{install/#2.1,here}. -@newsEnd - - -@newsItem -@subheading January 4, 2004 -LilyPond 2.1.6 continues to improve the layout of lyrics. More -information in the -@uref{http://lilypond.org/doc/v2.1/Documentation/topdocs/out-www/NEWS.html,release -notes} and download @uref{install/#2.1,here}. -@newsEnd - - -@newsItem -@subheading January 2, 2004 -In LilyPond 2.1.5, the lyric alignment is completely revamped, -and now matches my Edition Peters version of the Schubert song -Sängers Morgen. More information in the @ref{Cambios} and -download @uref{install/#2.1,here}. -@newsEnd - - -@newsItem -@subheading December 30, 2003 -LilyPond 2.1.4 is released. Font shapes and linethickness -are now truly different for different staff sizes, thus lending -an engraved look to scores printed in smaller type too. See the -@ref{Cambios} and download @uref{install/#2.1,here}. -@newsEnd - - -@newsItem -@subheading December 23, 2003 -LilyPond 2.1.3 released. -Interpreting and formatting is now done while parsing the -file. This allows for Scheme manipulation of music, and could -be used to implement experimental MusicXML output (volunteers -to implement this are welcome!) See the -@ref{Cambios} and download @uref{install/#2.1,here}. -@newsEnd - - -@newsItem -@subheading December 17, 2003 -LilyPond 2.1.2 released. This -release has a new mechanism for setting font sizes, which -combines different font design sizes and continuous font -scaling. See the -@ref{Cambios} and download @uref{install/#2.1,here}. -@newsEnd - - -@newsItem -@subheading December 16, 2003 -LilyPond 2.1.1 released. This -release wraps together all the small fixes made during -Han-Wen's absence. See the -@ref{Cambios} and download @uref{install/#2.1,here}. -@newsEnd - - -@newsItem -@subheading October 11, 2003 -LilyPond 2.1.0 released. See the -@ref{Cambios} and -download @uref{install/#2.1,here}. -@newsEnd - - -@newsItem -@subheading October 11, 2003 -LilyPond 2.0.1 binaries for Mandrake 9.1 -available from -@uref{https://web.archive.org/web/20031006165051/http://rpm.nyvalls.se/sound9.1.html,here} -thanks to Heikki Junes. -@newsEnd - - -@newsItem -@subheading October 9, 2003 -LilyPond 2.0.1 binaries for Slackware 9 -available from @uref{install/#2.0,here}, -thanks to Ricardo Hoffman. -@newsEnd - - -@newsItem -@subheading October 5, 2003 -LilyPond 2.0.1 binaries are available for Macos X, many thanks to -Matthias Neeracher. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading October 4, 2003 -LilyPond 2.0.1 binaries are available for Windows (Cygwin -version 1.5). -@ref{Descargas antiguas}. Thanks to Bertalan -Fodor, our new Cygwin maintainer! -@newsEnd - - -@newsItem -@subheading September 29, 2003 -LilyPond 2.0.1 is released. It -contains minor bugfixes. -See the @ref{Cambios} -or download @uref{install/#2.0,here} directly. -@newsEnd - - -@newsItem -@subheading September 27, 2003 -PlanetCCRMA has been updated to include LilyPond 2.0. Go -@uref{http://ccrma.stanford.edu/planetccrma/software/soundapps.html#SECTION000621700000000000000, -here} to download. Thanks to Fernando Pablo -Lopez-Lezcano! -@newsEnd - - -@newsItem -@subheading September 24, 2003 -LilyPond 2.0.0 is released. The -focus of this release is cleanups of the syntax: entering music is -now much easier and more efficient. Read the announcement -@uref{announce-v2.0.html,here}, or go to the -@uref{install/#2.0,download page} directly. -@newsEnd - - -@newsItem -@subheading September 24, 2003 -LilyPond 1.9.10 is released. This is -the final LilyPond 2.0 release candidate. Check -the @ref{Cambios} and -download @uref{install/,here}. -@newsEnd - - -@newsItem -@subheading September 23, 2003 -LilyPond 1.9.9 is released. This is -the second LilyPond 2.0 prerelease. Check -the @ref{Cambios} and -download @uref{install/,here}. -@newsEnd - - -@newsItem -@subheading September 19, 2003 -LilyPond 1.9.8 is released. This is -the first LilyPond 2.0 prerelease. Check -the @ref{Cambios} and -download @uref{install/,here}. -@newsEnd - - -@newsItem -@subheading September 17, 2003 -LilyPond 1.9.7 is released. LilyPond -now has support for quarter tone accidentals! -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading September 16, 2003 -LilyPond 1.9.6 is released. -It has a lot of minor fixes and updates. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading September 10, 2003 -LilyPond 1.9.5 is released. -With this release, the 1.9 branch is feature -complete. After some stabilization and documentation work, 2.0 -will be available in a few weeks. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading September 9, 2003 -LilyPond 1.8.2 is released. This -release fixes a couple of minor bugs. -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading September 7, 2003 -LilyPond 1.8 binaries are available -for Windows (Cygwin version 1.5). -@ref{Descargas antiguas} -@newsEnd - - -@newsItem -@subheading August 31, 2003 -LilyPond 1.9.4 is released. -@emph{This is an experimental release}: read the -@uref{http://lists.gnu.org/archive/html/lilypond-devel/2003-08/msg00133.html,announcement} -before trying. -@newsEnd - - -@newsItem -@subheading August 31, 2003 -LilyPond 1.8 binaries for slackware -available. Get them @uref{install/,here}. -@newsEnd - - -@newsItem -@subheading August 31, 2003 -LilyPond 1.9.3 is released. This -release supports tagging for music version control, and has better -fingering placement flexibility. Read the -@ref{Cambios} and get it @uref{download#1.9,here}. -@newsEnd - - -@newsItem -@subheading August 28, 2003 -LilyPond 1.9.2 is released. Read the -@ref{Cambios} and get it -@uref{download#1.9,here}. -@newsEnd - - -@newsItem -@subheading August 26, 2003 -LilyPond 1.9.1 is released. Read the -@ref{Cambios} and get it -@uref{download#1.9,here}. -@newsEnd - - -@newsItem -@subheading August 25, 2003 -The LilyPond 1.9 development release is available. Read the -@ref{Cambios} and get it -@uref{download#1.9,here}. -@newsEnd - - -@newsItem -@subheading August 25, 2003 -Mandrake 9.1 RPMS available, get them -@uref{https://web.archive.org/web/20031006165051/http://rpm.nyvalls.se/sound9.1.html,here}. -@newsEnd - - -@newsItem -@subheading August 21, 2003 -LilyPond 1.8.1 was released. Get it @uref{install/,here}, or -read the @ref{Cambios}. -@newsEnd - - -@newsItem -@subheading August 18, 2003 -PlanetCCRMA (eg. RedHat 8 and 9) -has been updated to 1.8. -Download @uref{http://ccrma.stanford.edu/planetccrma/software/soundapps.html#SECTION000621700000000000000,here.} -@newsEnd - - -@newsItem -@subheading August 7, 2003 -LilyPond 1.8 is released. Read -@ref{Cambios} and get it @uref{install/,here}. -@newsEnd - - -@newsItem -@subheading August 7, 2003 -New website went live! -@newsEnd - - -@newsItem -@subheading August 6, 2003 -Announced new website. -@newsEnd - - -@newsItem -@subheading August 1, 2003 -LilyPond 1.7.30 released. -@newsEnd - - -@newsItem -@subheading July 30, 2003 -Website: present @uref{about/automated-engraving/index.html,treatise} -about music engraving, music printing software, and LilyPond's -unique faculties. -@newsEnd - - -@newsItem -@subheading July 29, 2003 -1.7.29 - release candidate 4 has been released. Packages for -Red Hat, Debian, Cygwin are @uref{install/,available}. -@newsEnd diff --git a/Documentation/fr/changes.tely b/Documentation/fr/changes.tely new file mode 100644 index 0000000000..9556de5585 --- /dev/null +++ b/Documentation/fr/changes.tely @@ -0,0 +1,1038 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- +@ignore + Translation of GIT committish: 8e2eaf4959bec63a1128a444591a540f4f1e2937 + + 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 Translators: Jean-Charles Malahieude +@c Translation checkers: + +@setfilename lilypond-changes.info +@settitle LilyPond Changes + +@include macros.itexi + +@ifhtml +@macro inputfileref{DIR,NAME} +@uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c +@end macro +@macro usermanref{NAME} +@inforef{\NAME\,,../user/lilypond/lilypond}@c +@end macro +@end ifhtml + +@ifnothtml +@macro inputfileref{DIR,NAME} +@file{\DIR\/\NAME\}@c +@end macro +@macro usermanref{NAME} +Voir le manuel d'utilisation, \NAME\ +@end macro +@end ifnothtml + +@macro textanchor{NAME} +@html + +@end html +@end macro + + +@documentencoding UTF-8 +@documentlanguage fr +@afourpaper + +@finalout + +@node Top +@top Nouvelles fonctionnalités de la version 2.20 (depuis 2.18) + +@allowcodebreaks false + +@itemize + +@ignore + +HINTS + +* add new items at the top + +* only show verbatim input for syntax/input changes + +* try to be as brief possible in those cases + +* don't try to provide real-world examples, they often get too big, +which scares away people. + +* Write complete sentences. + +* only show user-visible changes. + +@end ignore + +@item +Il est désormais possible de déplacer des systèmes relativement à +leur positionnement actuel, à l'aide de la sous-propriété +@code{extra-offset} de +@code{NonMusicalPaperColumn.line-break-system-details}, que ce soit sur +l'axe horizontal ou vertical. Cette fonctionnalité s'avère très utile +pour effectuer un léger ajustement dans le positionnement vertical par +défaut d'un système particulier. Voir +@ruser{Positionnement explicite des portées et systèmes} pour de plus +amples explications. + +@item +Il est désormais possible d'ajouter du texte à un crochet d'analyse, +grâce à l'objet @code{HorizontalBracketText}. + +@lilypond[quote,verbatim] +\layout { + \context { + \Voice + \consists "Horizontal_bracket_engraver" + } +} + +{ + \once \override HorizontalBracketText.text = "a" + c''\startGroup d''\stopGroup + e''-\tweak HorizontalBracketText.text "a'" \startGroup d''\stopGroup +} +@end lilypond + +@item +Les règles en matière d'altération peuvent désormais se définir au +niveau d'un contexte @code{ChoirStaff}. Deux nouvelles règles -- +@code{choral} et @code{choral-cautionary} -- sont disponibles. Elles +combinent les caractéristiques de @code{modern-voice} et @code{piano} ou +leurs équivalents avec altérations de précaution. + +@item +La fonction musicale @code{\unfoldRepeats} peut maintenant prendre en +argument optionnel une liste spécifiant le ou les types de musique à +répéter dans le développement. Sont disponibles les arguments +@code{percent}, @code{tremolo} et @code{volta}. En l'absence de liste +optionnelle d'arguments, sera utilisé @code{repeated-music} et tout sera +développé. + +@item +La propriété d'objet graphique @code{output-attributes} remplace, dans +les sorties SVG, la propriété de @emph{grob} @code{id}. Ceci permet de +définir, à l'aide d'une liste associative, de multiples attributs. Par +exemple, @code{#'((id . 123) (class . foo) (data-whatever . @qq{bar}))} +produira dans un fichier SVG le groupe de balise : @code{ @dots{} }. + +@item +Liaisons d'articulation ou de phrasé peuvent dorénavant débuter sur une +note particulière d'un accord. Des liaisons simultanées dans un même +contexte @code{Voice} devront se distinguer par l'attribution d'un +@code{spanner-id}. + +@item +La propriété musicale et d'objet graphique @code{spanner-id}, qui permet +de distinguer des liaisons d'articulation ou de phrasé simultanées, +prend en argument une « clé » -- entrier positif ou symbole -- au lieu +d'une chaîne. + +@item +Le nouvelle commande @code{\=} permet de spécifier le @code{spanner-id} +(identificateur d'extension) pour des liaisons d'articulation ou de +phrasé simultanées. +@lilypond[verbatim,quote] +\fixed c' { + 2 +} +@end lilypond + +@item +Les blocs introduits par @code{\header} peuvent être stockés dans des +variables et utilisés en argument à la musique ou à des fonctions Scheme +ainsi que dans le corps de constructions @code{#@{@dots{}#@}}. Ils sont +représentés en tant que module Guile. + +Les blocs @code{\book}, @code{\bookpart}, @code{\score}, @code{\with}, +@code{\layout}, @code{\midi} et @code{\paper} peuvent être passés de +façon similaire, mais sont représentés par des types de donnée différents. + +@item +Les listes de symboles séparés par des points, à l'instar de +@code{FretBoard.stencil} sont pris en charge depuis la version 2.18. +Elles peuvent désormais contenir des entiers non signés, et leurs +membres être séparés par des virgules. Ceci permet des libellés tels que +@lilypond[quote,verbatim] +{ \time 2,2,1 5/8 g'8 8 8 8 8 } +@end lilypond +ou +@example +\tagGroup violin,oboe,bassoon +@end example + +@item +De telles listes peuvent aussi apparaître au sein d'expressions aux fins +d'assignation, de définition ou de dérogation. Ceci permet des libellés +tels que +@lilypond[quote,verbatim] +{ \unset Timing.beamExceptions + \set Timing.beatStructure = 1,2,1 + g'8 8 8 8 8 8 8 8 } +@end lilypond + +@item +Les éléments d'une liste associative pouvaient déjà se voir attribuer +des valeurs individuellement, comme par exemple +@code{system-system-spacing.basic-distance} pour les variables +concernant le papier. Ils peuvent désormais être référencés de la même +manière, comme ici +@example +\paper @{ + \void \displayScheme \system-system-spacing.basic-distance +@} +@end example + +Par extension à ces modifications, il est dorénavant possible de définir +et faire référence à des pseudovariables telles que @code{violon.1}. + +@item +Les fichiers sources LilyPond peuvent désormais être empaquetés dans les +fichiers PDF générés. Cette fonctionnalité est pour l'instant désactivée +par défaut car susceptible d'être considérée comme peu sure dans la +mesure où des documents PDF comportant des fichiers cachés peuvent +présenter des risques en matière de sécurité. Attention cependant : +les lecteurs de PDF ne sont pas tous capables de gérer les fichiers +joints ; si tel est le cas, le rendu PDF apparaîtra normalement mais les +fichiers joints seront invisibles. Cette fonctionnalité n'est +opérationnelle qu'avec le moteur PDF. + +@item +Les noms de note en français sont maintenant définis spécifiquement, +plutôt qu'en alias de l'italien. En plus de la syntaxe dérivée de +l'italien, la hauteur @var{d} peut se saisir @var{ré}, et un +double-dièse par le suffice @var{-x}. + +@item +Dans le cadre des tablatures pour luth sont désormais disponibles les +cordes de basse additionnelles. +@lilypond[quote,verbatim] +m = { f'4 d' a f d a, g, fis, e, d, c, \bar "|." } + +\score { + \new TabStaff \m + \layout { + \context { + \Score + tablatureFormat = #fret-letter-tablature-format + } + \context { + \TabStaff + stringTunings = \stringTuning + additionalBassStrings = \stringTuning + fretLabels = #'("a" "b" "r" "d" "e" "f" "g" "h" "i" "k") + } + } +} +@end lilypond + +@item +La commande @code{\table}, pour gérer des listes de @emph{markups} est +disponible. Chaque colonne peut disposer de son propre alignement. +@lilypond[quote,verbatim] +\markuplist { + \override #'(padding . 2) + \table + #'(0 1 0 -1) + { + \underline { center-aligned right-aligned center-aligned left-aligned } + one "1" thousandth "0.001" + eleven "11" hundredth "0.01" + twenty "20" tenth "0.1" + thousand "1000" one "1.0" + } +} +@end lilypond + +@item +Une nouvelle commande de @emph{markup}, @code{\with-dimensions-from}, +rend plus aisée l'utilisation de @code{\with-dimensions} en adoptant les +dimensions d'un objet @emph{markup} fourni en premier argument. +@lilypond[quote,verbatim] +\markup { + \pattern #5 #Y #0 "x" + \pattern #5 #Y #0 \with-dimensions-from "x" "f" + \pattern #5 #Y #0 \with-dimensions-from "x" "g" + \override #'(baseline-skip . 2) + \column { + \pattern #5 #X #0 "n" + \pattern #5 #X #0 \with-dimensions-from "n" "m" + \pattern #5 #X #0 \with-dimensions-from "n" "!" + } +} +@end lilypond + +@item +Deux nouvelles fonctions permettent de gérer les sauts de page. +@code{ly:one-page-breaking} ajuste automatiquement la hauteur de la page +de telle sorte que toute la musique tienne sur une seule page. +@code{ly:one-line-auto-height-breaking} fonctionne comme +@code{ly:one-line-breaking} mais, en plus de placer la musique sur une +seule ligne et d'adapter la largeur de la page en conséquence, elle +adapte la hauteur de la page automatiquement. + +@item +La nouvelle commande de @emph{markup} @code{\draw-squiggle-line} permet +de tracer des lignes ondulées. Sont adaptables l'épaisseur du trait +(@code{thickness}), l'amplitude (@code{angularity}), la hauteur +(@code{height}) et l'orientation (@code{orientation}). +@lilypond[quote,verbatim] +\markup + \overlay { + \draw-squiggle-line #0.5 #'(3 . 3) ##t + + \translate #'(3 . 3) + \override #'(thickness . 4) + \draw-squiggle-line #0.5 #'(3 . -3) ##t + + \translate #'(6 . 0) + \override #'(angularity . -5) + \draw-squiggle-line #0.5 #'(-3 . -3) ##t + + \translate #'(3 . -3) + \override #'(angularity . 2) + \override #'(height . 0.3) + \override #'(orientation . -1) + \draw-squiggle-line #0.2 #'(-3 . 3) ##t + } +@end lilypond + +@item +La nouvelle commande @code{\RemoveAllEmptyStaves} agit exactement comme +@code{\RemoveEmptyStaves}, à ceci près qu'elle supprime aussi les lignes +du premier système de la partition. + +@item +Deux commandes de @emph{markup} font leur apparition : @code{\undertie} +et @code{\overtie}, ainsi qu'une version générique @code{\tie}. +@lilypond[quote,verbatim] +\markup { + \undertie "undertied" + \overtie "overtied" +} + +m = { + c''1 \prall -\tweak text \markup \tie "131" -1 +} + +{ \voiceOne \m \voiceTwo \m } +@end lilypond + +@item +Les microaltérations peuvent désormais s'imprimer aussi sur des +@code{TabStaff}, notamment pour indiquer des @emph{bends}. +@lilypond[quote,verbatim] +\layout { + \context { + \Score + supportNonIntegerFret = ##t + } +} + +mus = \relative { c'4 cih d dih } + +<< + \new Staff << \clef "G_8" \mus >> + \new TabStaff \mus +>> +@end lilypond + +@item +Deux nouveaux styles de contours à blanc sont disponibles. Le style +@code{outline} agit un peu comme un ombrage des glyphes, son galbe étant +le résultat de multiples copies du glyphe. Le style @code{rounded-box} +produit un rectangle aux coins arrondis. Pour tous les styles, y +compris le style par défaut @code{box}, l'épaisseur (@code{thickness}) +du contour, mesuré en épaisseur de ligne de portée, est adaptable. + +@lilypond[verbatim,quote] +\markup { + \combine + \filled-box #'(-1 . 15) #'(-3 . 4) #1 + \override #'(thickness . 3) + \whiteout whiteout-box +} +\markup { + \combine + \filled-box #'(-1 . 24) #'(-3 . 4) #1 + \override #'(style . rounded-box) + \override #'(thickness . 3) + \whiteout whiteout-rounded-box +} +\markup { + \combine + \filled-box #'(-1 . 18) #'(-3 . 4) #1 + \override #'(style . outline) + \override #'(thickness . 3) + \whiteout whiteout-outline +} +\relative { + \override Staff.Clef.whiteout-style = #'outline + \override Staff.Clef.whiteout = 3 + g'1 +} +@end lilypond + +@item +Les différentes instructions @code{\override}, @code{\revert}, +@code{\set} et @code{\unset} acceptent désormais le préfixe @code{\once} +qui en réduit les effets à un seule occurrence. +@lilypond[quote,verbatim] +\relative { + c'4 d + \override NoteHead.color = #red + e4 f | + \once \override NoteHead.color = #green + g4 a + \once \revert NoteHead.color + b c | + \revert NoteHead.color + f2 c | +} +@end lilypond + +@item +Lorsqu'il génère un fichier MIDI, LilyPond enregistre désormais le +@code{title} défini dans le bloc @code{\header} d'une partition en tant +que nom de la séquence MIDI du fichier MIDI. En l'absence de +@code{title} au niveau @code{\score}, sera retenue la première +définition trouvée dans l'ordre suivant : @code{\bookpart}, @code{\book} +et enfin @code{\header} de premier niveau. De manière optionnelle, le +nom de la séquence MIDI peut se définir à l'aide du nouveau champ de +@code{\header} @code{midititle} indépendamment au cas où le champ +@code{title} contiendrait du code @emph{markup} qui ne serait pas rendu +correctement en texte plat. + +@item +Les fonctions, qu'elles soient musicales, Scheme ou fantômes, ainsi que +les commandes de @emph{markup} pour lesquelles le paramètre final est +l'objet de dérogations en chaîne peuvent se définir en remplaçant +l'expression à laquelle elle s'appliquera par @code{\etc}. Il en va de +même pour les appels à une fonction ou une commande de @emph{markup}. + +@lilypond[verbatim,quote] +bold-red-markup = \markup \bold \with-color #red \etc +highlight = \tweak font-size 3 \tweak color #red \etc + +\markup \bold-red "text" +\markuplist \column-lines \bold-red { One Two } + +{ c' \highlight d' e'2-\highlight -! } +@end lilypond + +@item +Les fonctions LilyPond définies à l'aide de +@code{define-music-function}, @code{define-event-function}, +@code{define-scheme-function} et @code{define-void-function} peuvent +désormais être appelées directement à partir de Scheme, comme s'il +s'agissait de pures procédures Scheme. Le contrôle et la correspondance +des arguments seront réalisés de manière identique à ce qui se passe +lorsque la fonction est appelée au fil du code LilyPond. Ceci inclut +l'insertion de valeurs par défaut pour des arguments optionnels qui ne +correspondraient pas à leur prédicat. Dans la liste des arguments, il +est possible d'utiliser @code{*unspecified*} au lieu de @code{\default} +pour omettre explicitement une séquence d'argument optionnels. + +@item +Les données @code{location} pour la saisie courante et @code{parser} +sont désormais gérées directement dans les flux GUILE ; elles peuvent +donc être référencées par des appels de fonction@code{(*location*)} +et @code{(*parser*)}. Par voie de conséquence, nombre de fonctions ont +vu disparaître leur argument @code{parser} explicite. + +Les fonctions définies par @code{define-music-function}, +@code{define-event-function}, @code{define-scheme-function} et +@code{define-void-function} n'ont désormais nul besoin d'argument +@code{parser} ou @code{location}. + +Avec ces définitions particulières, LilyPond tentera de reconnaître +l'utilisation héritée des arguments @code{parser} et @code{location}, +fournissant ainsi une compatibilité ascendante de la sémantique pour un +certain temps. + +@item +Dans la langue de notes @code{english}, le nom développé des notes +altérées comprend désormais un trait d'union, pour une meilleure +lisibilité. Il faut donc maintenant saisir +@example +\key a-flat \major +@end example +au lieu de +@example +\key aflat \major +@end example + +Les altérations doubles ne prennent pas de trait d'union +supplémentaire ; le @code{cisis} batave s'écrit @code{c-sharpsharp} en +anglais développé. + +@item +Le style visuel des traits de tremolo (allure, style et pente) est +maintenant plus finement contrôlé. +@lilypond[quote,relative=2] + a8:32 b: c: d: + \override StemTremolo.shape = #'beam-like + a: b: c: d: + \override StemTremolo.style = #'constant + a: b: c: d: + g,2 +@end lilypond + + +@item +Les silences multimesures ont une longueur dépendant de leur durée +totale, sous contrôle de @code{MultiMeasureRest.space-increment}. +@lilypond[quote] +{ \compressFullBarRests + \override Staff.MultiMeasureRest.space-increment = 3.0 + R1*2 R1*12 R1*64 } +@end lilypond + +@item +Les numéros de page peuvent désormais s'imprimer en chiffres romains, en +ajustant la variable de papier @code{page-number-type}. + +@item +Il est désormais possible d'utiliser @code{\time} et @code{\partial} de +concert pour modifier une métrique en cours de mesure. + +@lilypond[verbatim,quote,relative=1] +\override Score.BarNumber.break-visibility = #end-of-line-invisible +\partial 4 \time 3/4 f4 | 2 4 | 2 \bar "||" +\time 9/8 \partial 4. f8 8 8 | 2. 8 8 8 | +@end lilypond + +@item +Il est désormais possible de modifier la propriété @code{text} des noms +d'accord. + +@lilypond[verbatim,fragment,quote] +<< +\new ChordNames \chordmode { + a' b c:7 + \once \override ChordName.text = #"foo" + d +} +>> +@end lilypond + +@item +Amélioration de l'alignement horizontal lors de l'utilisation de +@code{TextScript}, à l'aide de @code{DynamicText} ou @code{LyricText}. + +@item +Ajout d'une nouvelle commande @code{\magnifyStaff}, qui échelonne de +façon globale, au niveau d'un contexte @code{Staff}, sa taille, les +lignes de portée, les barres de mesure, les hampes et l'espacement +horizontal. Les lignes de la portée considérée ne seront toutefois pas +plus fines que la taille par défaut dans la mesure où l'épaisseur des +hampes, liaisons et autres est basée sur l'épaisseur des lignes de +portée. + +@item +@code{InstrumentName} prend désormais en charge la +@code{text-interface}. + +@item +Il est désormais possible de contrôler le « niveau d'expression » des +canaux MIDI à l'aide de la propriété de contexte +@code{Staff.midiExpression}. Ceci permet d'altérer le volume perçu y +compris des notes tenues, bien que légèrement. L'ajustement prend une +valeur entre @code{0.0} et @code{1.0}. + +@example +\score @{ + \new Staff \with @{ + midiExpression = #0.6 + midiInstrument = #"clarinet" + @} + << + @{ a'1~ a'1 @} + @{ + \set Staff.midiExpression = #0.7 s4\f\< + \set Staff.midiExpression = #0.8 s4 + \set Staff.midiExpression = #0.9 s4 + \set Staff.midiExpression = #1.0 s4 + + \set Staff.midiExpression = #0.9 s4\> + \set Staff.midiExpression = #0.8 s4 + \set Staff.midiExpression = #0.7 s4 + \set Staff.midiExpression = #0.6 s4\! + @} + >> + \midi @{ @} +@} +@end example + +@item +La prise en charge de fontes musicales alternative, autrement dit autres +que Emmentaler, est facilitée. Voir +@uref{http://fonts.openlilylib.org/} pour de plus amples informations. + +@item +Les objets graphiques et leurs parents peuvent désormais s'aligner de +manière indépendante, ce qui permet une flexibilité accrue dans le +positionnement des @emph{grobs}. Par exemple, le bord « gauche » d'un +objet peut désormais s'aligner sur le « centre » de son parent. + +@item +La commande @code{\partial} a connu des améliorations notables afin +d'éviter les problèmes en cas de contextes multiples et parallèles. + +@item +@code{\chordmode} prend désormais en charge les constructions @code{< >} +et @code{<< >>}. + +@item +La nouvelle commande @code{\tagGroup} vient en complément des commandes +@code{\keepWithTag} et @code{\removeWithTag} déjà existantes. Par exemple, + +@example +\tagGroup #'(violinI violinII viola cello) +@end example + +déclare une liste de balises appartenant à un unique « groupe de +balises ». + +@example +\keepWithTag #'violinI +@end example + +n'est maintenant plus concerné que par les balises du groupe auquel +« violinI » appartient. + +Tout élément balisé par une ou plusieurs balises du groupe, à +l'exception de @var{violinI}, sera ignoré. + +@item +La fonction @code{\addlyrics} est désormais fonctionnelle avec n'importe +quel contexte arbitraire, y compris @code{Staff}. + +@item +Les numéros de cordes peuvent désormais s'imprimer en chiffres romains, +pour les instruments à cordes non frettées par exemple. +@lilypond[verbatim,quote,relative=2] +c2\2 +\romanStringNumbers +c\2 +\arabicStringNumbers +c1\3 +@end lilypond + +@item +La propriété @code{thin-kern} du @emph{grob} @code{BarLine} est renommée +en @code{segno-kern}. + +@item +Les objets @code{KeyCancellation} ignorent désormais les clefs de +citation, à l'instar des objets @code{KeySignature}. + +@item +Prise en charge de @code{\once@tie{}\unset} + +@item +Dans le cadre de l'utilisation de la commande de @emph{markup} +@code{\fret-diagram-verbose}, il est désormais possible de coloriser +individuellement les points et les parenthèses des diagrammes de fret. + +@lilypond[verbatim,quote,relative=1] +\new Voice { + c1^\markup { + \override #'(fret-diagram-details . ( + (finger-code . in-dot))) { + \fret-diagram-verbose #'((mute 6) + (place-fret 5 3 1 red) + (place-fret 4 5 2 inverted) + (place-fret 3 5 3 green) + (place-fret 2 5 4 blue inverted) + (place-fret 1 3 1 violet) + (barre 5 1 3 )) + } + } + c1^\markup { + \override #'(fret-diagram-details . ( + (finger-code . below-string))) { + \fret-diagram-verbose #'((mute 6) + (place-fret 5 3 1 red parenthesized) + (place-fret 4 5 2 yellow + default-paren-color + parenthesized) + (place-fret 3 5 3 green) + (place-fret 2 5 4 blue ) + (place-fret 1 3 1) + (barre 5 1 3)) + } + } +} +@end lilypond + +@item +Deux propriétés sont ajoutées à @code{fret-diagram-details} pour une +utilisation avec la commande de @emph{markup} +@code{\fret-diagram-verbose} : @code{fret-label-horizontal-offset} +affecte le @code{fret-label-indication}, et @code{paren-padding} +contrôle l'espacement entre le point et les parenthèses qui l'entourent. + +@lilypond[verbatim,quote,relative=1] +\new Voice { + c1^\markup { + \fret-diagram-verbose #'((mute 6) + (place-fret 5 3 1) + (place-fret 4 5 2) + (place-fret 3 5 3) + (place-fret 1 6 4 parenthesized) + (place-fret 2 3 1) + (barre 5 2 3)) + } + c1^\markup { + \override #'(fret-diagram-details . ( + (fret-label-horizontal-offset . 2) + (paren-padding . 0.25))) { + \fret-diagram-verbose #'((mute 6) + (place-fret 5 3 1) + (place-fret 4 5 2) + (place-fret 3 5 3) + (place-fret 1 6 4 parenthesized) + (place-fret 2 3 1) + (barre 5 2 3)) + } + } +} +@end lilypond + +@item +Ajout de la commande de @emph{markup} @code{\justify-line}. Cette +fonction est comparable à @code{\fill-line}, à ceci près qu'au lieu de +répartir les @emph{mots} en colonnes, la commande @code{\justify-line} +répartit les vides de telle sorte qu'en présence de trois @emph{mots} ou +plus, ces blancs soient d'égale longueur. + +@lilypond[quote,verbatim,papersize=a6] +\markup \fill-line {oooooo oooooo oooooo oooooo} +\markup \fill-line {ooooooooo oooooooo oo ooo} +@end lilypond + +@lilypond[quote,verbatim,papersize=a6] +\markup \justify-line {oooooo oooooo oooooo oooooo} +\markup \justify-line {ooooooooo oooooooo oo ooo} +@end lilypond + +@item +La nouvelle commande @code{\magnifyMusic} permet de modifier la +taille de la musique sans changer la taille de la portée, tout en +ajustant automatiquement les hampes, ligatures et l'espacement +horizontal. + +@lilypond[verbatim,quote] +\new Staff << + \new Voice \relative { + \voiceOne + 4 8. 16 8 4 r8 + } + \new Voice \relative { + \voiceTwo + \magnifyMusic 0.63 { + \override Score.SpacingSpanner.spacing-increment = #(* 1.2 0.63) + r32 c'' a c a c a c r c a c a c a c + r c a c a c a c a c a c a c a c + } + } +>> +@end lilypond + +@item +Création d'un gabarit flexible dans le domaine de la musique chorale. +Il s'utilise pour de la musique chorale simple, avec ou sans +accompagnement de piano, sur deux ou quatre portées. Contrairement aux +autres gabarits, celui-ci est directement intégré à LilyPond ; il n'est +donc pas besoin d'être recopié et édité, mais simplement appelé à l'aide +d'un @code{\include} dans le fichier source. Pour de plus amples +détails, voir @rlearning{Gabarits préprogrammés}. + +@item +Amélioration significative du positionnement du nombre des n-olets dans +le cas de ligatures coudées. Jusqu'à présent, ce nombre était placé +selon la position du crochet même lorsque ce dernier n'était pas +imprimé, ce qui pouvait amener à un positionnement disgracieux. Le +nombre est désormais positionné plus près du coude en présence d'un +tronçon de ligature approprié à son placement et en l'absence de +crochet. + +De plus, la détection de collision ajoutée décalera horizontalement le +nombre s'il était trop proche d'un empilement adjacent, tout en +préservant son écartement de la ligature. Dans le cas où ce nombre +serait trop large pour tenir dans l'espace disponible, LilyPond +reviendra au positionnement basé sur le crochet. Dans le cas d'une +collision avec, par exemple, une altération accidentelle, le nombre sera +plutôt écarté verticalement. + +@lilypond[verbatim,fragment,quote,relative=1] +\time 3/4 +\override Beam.auto-knee-gap = 3 +\tuplet 3/2 4 { + g8 c'' e, + c'8 g,, e'' + g,,8 e''' c,, +} +@end lilypond + +@noindent +L'ancien comportement des n-olets en présence de ligature coudée reste +disponible au moyen d'un @code{\override} sur la nouvelle propriété +@code{knee-to-beam}. + +@lilypond[verbatim,fragment,quote,relative=1] +\time 3/4 +\override Beam.auto-knee-gap = 3 +\override TupletNumber.knee-to-beam = ##f +\tuplet 3/2 4 { + g8 c'' e, + c'8 g,, e'' + g,,8 e''' c,, +} +@end lilypond + +@item +@code{\lyricsto} et @code{\addLyrics} ont été « harmonisés ». Tous deux +acceptent désormais la même sorte de liste délimitée d'arguments, à +l'instar de @code{\lyrics} et @code{\chords}. Une rétrocompatibilité a +été ajoutée, de sorte à accepter des identificateurs musicaux (tel +@code{\mus}) en tant qu'arguments. Une règle a été ajoutée à +@code{convert-ly} visant à supprimer les utilisations redondantes de +@code{\lyricmode} et réarranger les combinaisons avec les déclencheurs +de contexte afin d'appliquer @code{\lyricsto} généralement en dernier +(comme le ferait @code{\lyricmode}). + +@item +Les définitions et identificateurs Scheme peuvent désormais s'utiliser +en tant que définition de sortie. + +@item +Les expressions Scheme peuvent désormais s'utiliser en tant que +constituants d'un accord. + +@item +Amélioration de l'espacement visuel du « MI », tant à taille réduite que +normale, dans les styles Funk et Walker, de telle sorte qu'il ait la +même taille que les autres têtes de note profilées. Les « SOL » sont +aussi améliorés dans les styles Aiken et Harpe sacrée normaux ou leur +variantes fines. + +@item +@code{LeftEdge} dispose désormais d'un @code{Y-extent} (extension +verticale) définissable. Voir @rinternals{LeftEdge}. + +@item +Une nouvelle fonction -- @code{make-path-stencil} -- supporte toutes les +commandes @code{path}, tant relatives qu'absolues : + +@code{lineto}, @code{rlineto}, @code{curveto}, @code{rcurveto}, +@code{moveto}, @code{rmoveto}, @code{closepath}. La fonction prend +aussi en charge la syntaxe « lettre unique » utilisée dans les commandes +de chemin du standard SVG : + +@code{L}, @code{l}, @code{C}, @code{c}, @code{M}, @code{m}, @code{Z} et +@code{z}. Cette nouvelle commande est rétrocompatible avec la fonction +originale @code{make-connected-path-stencil}. Voir aussi le fichier +@file{scm/stencil.scm}. + +@item +Les propriétés de contexte nommées dans la propriété +@samp{alternativeRestores} sont restaurées à la valeur qu'elles avaient +juste avant la @b{première} alternative, ce pour toutes les suivantes. + +Pour l'instant, le jeu par défaut restaure la « métrique courante » : + +@lilypond[verbatim,fragment,quote,relative=2] +\time 3/4 +\repeat volta 2 { c2 e4 | } +\alternative { + { \time 4/4 f2 d | } + { f2 d4 | } +} +g2. | +@end lilypond + +@noindent +la « position dans la mesure » : + +@lilypond[verbatim,fragment,quote,relative=2] +\time 3/4 +\repeat volta 2 { c2 e4 | } +\alternative { + { \time 4/4 + \set Timing.measurePosition = #(ly:make-moment -1/2) + f2 | } + { f2 d4 | } +} +g2. | +@end lilypond + +@noindent +et les « changements d'accord »: + +@lilypond[verbatim,fragment,quote] +<< + \new ChordNames { + \set chordChanges = ##t + \chordmode { c1:m d:m c:m d:m } + } + \new Staff { + \repeat volta 2 { \chordmode { c1:m } } + \alternative { + { \chordmode { d:m } } + { \chordmode { c:m } } + } + \chordmode { d:m } +} +>> +@end lilypond + +@item +Amélioration du rendu MIDI des respirations. Après une note liée, la +respiration prend son temps uniquement sur la dernière note de la +prolongation. Autrement dit, @code{@{ c4~ c8 \breathe @}} s'entendra +comme @code{@{ c4~ c16 r @}} au lieu de @code{@{ c4 r8 @}}. Ceci est +plus cohérent en matière d'articulation et avec la manière dont un +instrumentiste interprète une respiration après une note prolongée par +une liaison. Ceci permet aussi d'aligner plus facilement une +respiration simultanée à plusieurs parties dont les notes différent dans +leur durée. + +@item +Ajout d'un nouveau style de tête de note pour les tablature : +@code{TabNoteHead.style = #'slash}. + +@item +Quatre nouveaux glyphes de clef, ainsi que leur tessiture respective, +sont désormais disponibles : @emph{Double G}, @emph{Tenor G}, +@emph{Varpercussion} et @emph{varC}. + +@lilypond[verbatim,quote,fragment] + \override Staff.Clef.full-size-change = ##t + + \clef "GG" c c c c + \clef "tenorG" c c c c + \clef "varC" c c c c + \clef "altovarC" c c c c + \clef "tenorvarC" c c c c + \clef "baritonevarC" c c c c + \clef "varpercussion" c c c c + + \break + \override Staff.Clef.full-size-change = ##f + + \clef "GG" c c c c + \clef "tenorG" c c c c + \clef "varC" c c c c + \clef "altovarC" c c c c + \clef "tenorvarC" c c c c + \clef "baritonevarC" c c c c + \clef "varpercussion" c c c c +@end lilypond + +@item +Des durées isolées dans une séquence musicale sont désormais considérées +comme des notes sans hauteur. Ceci peut s'avérer utile pour affecter +des rythmes à de la musique ou dans une fonction Scheme. Dans la +partition finale, les hauteurs sont déterminées à partir de la note ou +de l'accord qui précède. Les deux exemples suivant ont un code tout à +fait lisible : + +@lilypond[verbatim,quote] +\new DrumStaff \with { \override StaffSymbol.line-count = 1 } +\drummode { + \time 3/4 + tambourine 8 \tuplet 3/2 { 16 16 16 } + 8 \tuplet 3/2 { 16 16 16 } 8 8 | +} +@end lilypond + +@lilypond[verbatim,quote] +\new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | } +@end lilypond + +@item +@code{\displayLilyMusic} et ses fonctions Scheme sous-jacentes +n'omettent plus les durées de note redondantes. Il est désormais plus +facile et sûr de reconnaître et formater les durées isolées dans des +expressions telles que + +@example +@{ c4 d4 8 @} +@end example + +@item +Les exceptions en matière de ligature peuvent désormais se libeller à +l'aide de la fonction Scheme @code{\beamExceptions}. Il suffit d'écrire + +@lilypond[verbatim,quote,relative=1] +\time #'(2 1) 3/16 +\set Timing.beamExceptions = + \beamExceptions { 32[ 32] 32[ 32] 32[ 32] } +c16 c c | +\repeat unfold 6 { c32 } | +@end lilypond + +@noindent +tout en séparant les exceptions par un @code{|} (contrôle de barre de +mesure) -- l'absence de hauteur dans les motifs d'exception n'est pas +obligatoire. Auparavant, une telle règle d'exception devait se définir +ainsi : + +@example +\set Timing.beamExceptions = +#'( ;début de la liste associative + (end . ;entrée pour la terminaison des ligatures + ( ;début de la liste des terminaisons + ((1 . 32) . (2 2 2)) ;règle pour les triples croches -- groupées à la double + ))) +@end example + +@item +La plupart des articulations communes sont réflétées dans le rendu MIDI. +Accent et marcato donnent des notes plus fortes ; staccato, +staccatissimo et portato abrègent les notes. Une marque de respiration +raccourcit la note qui précède. + +Ce comportement est ajustable au travers des propriétés +@code{midiLength} et @code{midiExtraVelocity} affectées à +@code{ArticulationEvent}. Voir le fichier @file{script-init.ly} pour +des exemples. + +@item +La fonctionnalité PostScript d'ajustement des traits ne s'applique plus +de manière automatique ; elle est désormais laissée à l'appréciation du +périphérique PostScript -- Ghostscript l'utilise par défaut pour des +résolutions inférieures à 150 dpi lorsqu'il génère des images +@emph{raster}. Lorsqu'elle est activée, un algorithme de dessin plus +complexe tirant profit des ajustements de trait servira notamment pour +les ligatures et barres de mesure. + +L'ajustement des traits peut se forcer, en ligne de commande, à l'aide +de l'option @samp{-dstrokeadjust}. En ce qui concerne la génération de +fichiers @code{PDF}, ceci améliorera nettement la prévisualisation, au +détriment cependant de la taille du fichier. La qualité d'impression à +haute résolution n'est pas affectée. + +@end itemize + +@ifhtml +Pour des annonces plus anciennes, rendez-vouz aux pages +@uref{http://lilypond.org/doc/v2.18/Documentation/changes/}, +@uref{http://lilypond.org/doc/v2.16/Documentation/changes/}, +ou @uref{../,remontez} à l'index de la documentation. + + +@end ifhtml + +@bye diff --git a/Documentation/fr/learning/common-notation.itely b/Documentation/fr/learning/common-notation.itely index 78c550746c..04854a940b 100644 --- a/Documentation/fr/learning/common-notation.itely +++ b/Documentation/fr/learning/common-notation.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582 + Translation of GIT committish: 8e2eaf4959bec63a1128a444591a540f4f1e2937 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -1449,9 +1449,9 @@ barA = { \tripletA \tripletA \tripletA \tripletA } Il est possible d'utiliser des variables de types variés. Par exemple, @example -largeur = 4.5\cm -nom = "Wendy" -aFivePaper = \paper @{ paperheight = 21.0 \cm @} +maLargeur = 60 % un nombre transmis à une variable \paper (unité = millimètre) +monNom = "Wendy" % une chaîne transmise à un markup +aCinqPapier = \paper @{ #(set-paper-size "a5") @} @end example En fonction de son contenu, un identificateur peut être utilisé à @@ -1461,11 +1461,11 @@ ci-dessus. @example \paper @{ \aFivePaper - line-width = \largeur + line-width = \maLargeur @} @{ - c4^\nom + c4^\monNom @} @end example diff --git a/Documentation/fr/learning/fundamental.itely b/Documentation/fr/learning/fundamental.itely index 87bcfe5bae..f16ba4005b 100644 --- a/Documentation/fr/learning/fundamental.itely +++ b/Documentation/fr/learning/fundamental.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582 + Translation of GIT committish: db449e3935bc8b765979e1d4a4ab3018908cbbd8 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -708,12 +708,30 @@ automatiquement. \new Staff \relative { % Main voice c'16 d e f - % Voice = "1" Voice = "2" Voice = "3" + % Voice = "1" Voice = "2" Voice = "3" << { g4 f e } \\ { r8 e4 d c8~ } >> | << { d2 e } \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> | } @end lilypond +@funindex \voices +Les voix peuvent se saisir dans un ordre différent, comme par exemple du +haut vers le bas, auquel cas leurs numéros respectifs seront spécifiés +dès avant la construction @code{<< @dots{} >>} à l'aide de la commande +@code{\voices} comme ici : + +@lilypond[quote,verbatim] +\new Staff \relative { + % Main voice + c'16 d e f + % Voice = "1" Voice = "2" + << { g4 f e } \\ { r8 e4 d c8~ } >> | + \voices 1,3,2 + % Voice = "1" Voice = "3" Voice = "2" + << { d2 e } \\ { s4 b c2 } \\ { c8 b16 a b8 g~ 2 } >> | +} +@end lilypond + Ces voix sont séparées de la voix principale, laquelle contient les notes en dehors de la construction @code{<< @dots{} >>} -- que nous appellerons @emph{construction simultanée}. Les liaisons, de @@ -822,6 +840,7 @@ les voix -- ce qui est plus compliqué sera décortiqué plus tard. @lilypond[quote,ragged-right] \new Staff \relative { \key aes \major + \voices 1,2,4 % No voice three << % Voice one { c''2 aes4. bes8 } \\ % Voice two @@ -832,7 +851,6 @@ les voix -- ce qui est plus compliqué sera décortiqué plus tard. \once \override NoteColumn.force-hshift = #0.5 des2 } - \\ % No voice three \\ % Voice four { \override NoteColumn.force-hshift = #0 @@ -867,6 +885,7 @@ que vous ne comprendriez pas. @lilypond[quote,ragged-right] \new Staff \relative { \key aes \major + \voices 1,2,4 % No Voice three (we want stems down) << { % Voice one \voiceOneStyle @@ -880,7 +899,6 @@ que vous ne comprendriez pas. \once \override NoteColumn.force-hshift = #0.5 des2 } - \\ % No Voice three (we want stems down) \\ % Voice four { \voiceThreeStyle \override NoteColumn.force-hshift = #0 @@ -918,16 +936,19 @@ impaires portent des hampes vers le haut, les voix paires des hampes vers le bas. Les hampes des voix 1 et 2 sont orientées comme il faut mais celles de la voix 3 devraient, dans le cas qui nous occupe, aller vers le bas. Nous pouvons corriger cela en sautant la voix 3 et en -plaçant la musique dans la voix 4 grâce à un @code{\\} supplémentaire : +plaçant la musique dans la voix 4. Ceci pourrait s'obtenir à l'aide +d'un @code{\\} supplémentaire, mais nous utiliserons plutôt la commande +@code{\voices} qui, par ailleurs, nous permettrait de saisir les voix +dans un autre ordre selon notre convenance : @lilypond[quote,verbatim,ragged-right] \new Staff \relative { \key aes \major + \voices 1,2,4 % Omit Voice three << % Voice one { c''2 aes4. bes8 } \\ % Voice two { 2 des } - \\ % Omit Voice three \\ % Voice four { aes'2 f4 fes } >> | @@ -1049,7 +1070,7 @@ annotations, liaisons de prolongation ou de phrasé, et sur les nuances. } @end lilypond -Voyons à présent trois différentes façons d'exprimer un passage +Voyons à présent quatre différentes façons d'exprimer un passage polyphonique, à partir d'un exemple de la section précédente. Chacune d'elles aura ses avantages selon les circonstances. @@ -1087,6 +1108,36 @@ liaison de phrasé à l'ensemble. } @end lilypond +@cindex voix, continuation +@funindex \voices + +La commande @code{\voices} peut aussi servir à maintenir une voix +principale dans une construction simultanée : + +@lilypond[quote,ragged-right,verbatim] +\new Staff \relative { + \new Voice = "main" { + \voiceOneStyle + % This section is homophonic + c'16^( d e f + % Start simultaneous section of three voices + \voices "main",2,3 + << + % Continue the main voice in parallel + { g4 f e | d2 e) | } + % Initiate second voice + \\ + % Set stems, etc., down + { r8 e4 d c8~ | 8 b16 a b8 g~ 2 | } + \\ + % Initiate third voice + % Set stems, etc, up + { s2. | s4 b c2 | } + >> + } +} +@end lilypond + @cindex imbrication d'expressions musicales @cindex imbrication de constructions simultanées @cindex voix temporaires @@ -1481,8 +1532,9 @@ Il en va des contextes comme de toute hiérarchie : il faut un sommet -- le contexte @code{Score} en l'occurrence. La commande @code{\score} est chargée de le créer, mais pour des partitions simples, il le sera automatiquement. Le bloc @code{\score} contient donc une expression -musicale unique ainsi que la définition des supports à produire -- -@code{\layout} pour du visuel ou @code{\midi} pour de l'acoustique. +musicale unique ainsi que, éventuellement, la définition des supports à +produire -- @code{\layout} pour du visuel, @code{\midi} pour de +l'acoustique, ou bien les deux. Lorsqu'une partition ne comporte qu'une voix et une seule portée, vous pouvez laisser LilyPond créer automatiquement les contextes @code{Voice} @@ -1758,32 +1810,33 @@ Avant de déterminer l'une de ces propriétés, nous devons savoir dans quel contexte elle intervient. Si cela est bien souvent évident, il peut arriver que cela tourne au cauchemar. Lorsque vous ne spécifiez pas le bon contexte, aucun message d'erreur ne s'affiche et l'effet -attendu n'est pas au rendez-vous. Par exemple, le @code{instrumentName} -est de manière incontestable membre du contexte @code{Staff}, puisque -c'est bien la portée que l'on va nommer. -Dans l'exemple suivant, la première portée affiche effectivement un nom, -alors que ce n'est pas le cas pour la deuxième dans la mesure où le -contexte n'a pas été spécifié. +attendu n'est pas au rendez-vous. Par exemple, le @code{clefGlyph} est +de manière incontestable membre du contexte @code{Staff}, puisque c'est +bien le glyphe de clef de la portée qui doit être changé. +Dans l'exemple suivant, la première portée affiche effectivement la +bonne clef, alors que ce n'est pas le cas pour la deuxième -- qui porte +la clef de sol par défaut au lieu d'une clef de basse (clef de fa) -- +dans la mesure où le contexte n'a pas été spécifié. @lilypond[quote,verbatim,ragged-right] << \new Staff \relative { - \set Staff.instrumentName = #"Soprano" + \set Staff.clefGlyph = "clefs.C" c''4 c } \new Staff \relative { - \set instrumentName = #"Alto" % Wrong! + \set clefGlyph = "clefs.F" % Wrong! d'4 d } >> @end lilypond Dans la mesure où le nom de contexte par défaut est @code{Voice}, la -deuxième commande @code{\set} a défini @qq{Alto} comme propriété -@code{instrumentName} du contexte de voix. Puisque LilyPond n'ira pas -chercher une telle propriété dans le contexte @code{Voice}, celle-ci ne -sera pas interprétée. Il ne s'agit pas d'une erreur, aucun message -d'erreur ne sera ni émis ni enregistré. +deuxième commande @code{\set} a défini la propriété @code{clefGlyph} +dans le contexte de voix. Puisque LilyPond n'ira pas chercher une telle +propriété dans le contexte @code{Voice}, celle-ci ne sera pas +interprétée. Il ne s'agit pas d'une erreur, aucun message d'erreur ne +sera ni émis ni enregistré. De la même manière, une faute d'orthographe dans le nom de la propriété ne générera aucun message d'erreur et l'action escomptée ne se produira @@ -1800,7 +1853,7 @@ recommandons de vérifier le nom des propriétés que vous manipulez dans la Référence des propriétés internes -- voir @rinternals{Tunable context properties}, ou @rinternals{Contexts}. -La propriété @code{instrumentName} ne sera prise en compte que si elle +La propriété @code{clefGlyph} ne sera prise en compte que si elle est définie dans un contexte @code{Staff} ; d'autres propriétés peuvent par contre être définies dans plusieurs contextes différents. C'est le cas de la propriété @code{extraNatural} qui est définie par @@ -2452,8 +2505,9 @@ lower = \relative { \score { << % combine ChoirStaff and PianoStaff in parallel \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" + \new Staff = "sopranos" + \with { instrumentName = #"Soprano" } + << \new Voice = "sopranos" { \global \sopranoMusic @@ -2462,24 +2516,31 @@ lower = \relative { \new Lyrics \lyricsto "sopranos" { \sopranoWords } - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" + \new Staff = "altos" + \with { instrumentName = #"Alto" } + << \new Voice = "altos" { \global \altoMusic } >> - \new Lyrics \lyricsto "altos" { \altoWords } - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" + \new Lyrics \lyricsto "altos" { + \altoWords + } + \new Staff = "tenors" + \with { instrumentName = #"Tenor" } + << \new Voice = "tenors" { \global \tenorMusic } >> - \new Lyrics \lyricsto "tenors" { \tenorWords } - \new Staff = "basses" << - \set Staff.instrumentName = #"Bass" + \new Lyrics \lyricsto "tenors" { + \tenorWords + } + \new Staff = "basses" + \with { instrumentName = #"Bass" } + << \new Voice = "basses" { \global \bassMusic @@ -2489,8 +2550,8 @@ lower = \relative { \bassWords } >> % end ChoirStaff - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" + \new PianoStaff \with { instrumentName = #"Piano" } + << \new Staff = "upper" \upper \new Staff = "lower" \lower >> @@ -2530,47 +2591,51 @@ Une fois tout ceci accompli, voici notre @code{ChoirStaff} : @example \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" + \new Staff = "sopranos" + \with @{ instrumentName = #"Soprano" @} + << \new Voice = "sopranos" @{ \global - \sopranoMusique + \sopranoMusic @} >> \new Lyrics \lyricsto "sopranos" @{ - \sopranoParoles + \sopranoWords @} - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" + \new Staff = "altos" + \with @{ instrumentName = #"Alto" @} + << \new Voice = "altos" @{ \global - \altoMusique + \altoMusic @} >> \new Lyrics \lyricsto "altos" @{ - \altoParoles + \altoWords @} - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" + \new Staff = "tenors" + \with @{ instrumentName = #"Tenor" @} + << \new Voice = "tenors" @{ \global - \tenorMusique + \tenorMusic @} >> \new Lyrics \lyricsto "tenors" @{ - \tenorParoles + \tenorWords @} - \new Staff = "basses" << - \set Staff.instrumentName = #"Bass" + \new Staff = "basses" + \with @{ instrumentName = #"Bass" @} + << \new Voice = "basses" @{ \global - \bassMusique + \bassMusic @} >> \new Lyrics \lyricsto "basses" @{ - \bassParoles + \bassWords @} ->> % fin du ChoirStaff +>> % end ChoirStaff @end example Il nous faut maintenant nous occuper de la partie de piano. Nous allons @@ -2578,8 +2643,8 @@ nous contenter de récupérer la partie de piano du modèle @qq{Solo piano} : @example -\new PianoStaff << - \set PianoStaff.instrumentName = #"Piano " +\new PianoStaff \with @{ instrumentName = #"Piano" @} +<< \new Staff = "upper" \superieur \new Staff = "lower" \inferieur >> @@ -2592,52 +2657,52 @@ Les systèmes pour chœur et pour piano doivent être combinés à l'aide de doubles chevrons gauche/droite puisqu'ils doivent s'empiler : @example -<< % combine ChoirStaff et PianoStaff l'un au-dessus de l'autre +<< % combine ChoirStaff and PianoStaff one above the other \new ChoirStaff << \new Staff = "sopranos" << \new Voice = "sopranos" @{ \global - \sopranoMusique + \sopranoMusic @} >> \new Lyrics \lyricsto "sopranos" @{ - \sopranoParoles + \sopranoWords @} \new Staff = "altos" << \new Voice = "altos" @{ \global - \altoMusique + \altoMusic @} >> \new Lyrics \lyricsto "altos" @{ - \altoParoles + \altoWords @} \new Staff = "tenors" << \clef "G_8" % tenor clef \new Voice = "tenors" @{ \global - \tenorMusique + \tenorMusic @} >> \new Lyrics \lyricsto "tenors" @{ - \tenorParoles + \tenorWords @} \new Staff = "basses" << \clef "bass" \new Voice = "basses" @{ \global - \bassMusique + \bassMusic @} >> \new Lyrics \lyricsto "basses" @{ - \bassParoles + \bassWords @} - >> % fin du ChoirStaff + >> % end ChoirStaff - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" - \new Staff = "upper" \superieur - \new Staff = "lower" \inferieur + \new PianoStaff \with @{ instrumentName = #"Piano" @} + << + \new Staff = "upper" \upper + \new Staff = "lower" \lower >> >> @end example @@ -2687,8 +2752,9 @@ lower = \relative { \score { << % combine ChoirStaff and PianoStaff in parallel \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" + \new Staff = "sopranos" + \with { instrumentName = #"Soprano" } + << \new Voice = "sopranos" { \global \sopranoMusic @@ -2697,8 +2763,9 @@ lower = \relative { \new Lyrics \lyricsto "sopranos" { \sopranoWords } - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" + \new Staff = "altos" + \with { instrumentName = #"Alto" } + << \new Voice = "altos" { \global \altoMusic @@ -2707,8 +2774,9 @@ lower = \relative { \new Lyrics \lyricsto "altos" { \altoWords } - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" + \new Staff = "tenors" + \with { instrumentName = #"Tenor" } + << \new Voice = "tenors" { \global \tenorMusic @@ -2717,8 +2785,9 @@ lower = \relative { \new Lyrics \lyricsto "tenors" { \tenorWords } - \new Staff = "basses" << - \set Staff.instrumentName = #"Bass" + \new Staff = "basses" + \with { instrumentName = #"Bass" } + << \new Voice = "basses" { \global \bassMusic @@ -2729,8 +2798,9 @@ lower = \relative { } >> % end ChoirStaff - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano " + \new PianoStaff + \with { instrumentName = #"Piano " } + << \new Staff = "upper" \upper \new Staff = "lower" \lower >> diff --git a/Documentation/fr/macros.itexi b/Documentation/fr/macros.itexi index 31bb17fe03..226b5e083e 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: 0628cc44250b21d422b21890a7f266cd4b5ca584 + Translation of GIT committish: 6a4f1fed7b1be26f0ae29bc500eed7d29bd7659a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -120,7 +120,7 @@ Pour connaître la place qu'occupe ce manuel dans la documentation, consultez la page @rweb{Manuels}. Si vous ne disposez pas de certains manuels, la documentation complète -se trouve sur @w{@uref{http://@/www@/.lilypond@/.org/}}. +se trouve sur @w{@uref{http://@/lilypond@/.org/}}. @end cartouche @end macro diff --git a/Documentation/fr/notation/ancient.itely b/Documentation/fr/notation/ancient.itely index a21092a714..8f03990d3f 100644 --- a/Documentation/fr/notation/ancient.itely +++ b/Documentation/fr/notation/ancient.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 + Translation of GIT committish: 1e5c6b0f54079eb3285dcc4c7e53f17d8bb03933 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -2594,7 +2594,7 @@ Glossaire musicologique : Manuel de notation : @ref{Altérations}, @ref{Altérations accidentelles automatiques}, -@ref{La fonte Feta} +@ref{La fonte Emmentaler}. @node Barre de mesure kiévienne @@ -2612,8 +2612,10 @@ d'un @code{\bar "k"}. @end lilypond @seealso +Manuel de notation : @ref{Barres de mesure}, -@ref{La fonte Feta} +@ref{La fonte Emmentaler}. + @node Mélismes kiéviens @unnumberedsubsubsec Mélismes kiéviens diff --git a/Documentation/fr/notation/changing-defaults.itely b/Documentation/fr/notation/changing-defaults.itely index 977c7a4ca2..2687ceb5c2 100644 --- a/Documentation/fr/notation/changing-defaults.itely +++ b/Documentation/fr/notation/changing-defaults.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a + Translation of GIT committish: c377d85f06e524599d20e9edf102ae186ede5e77 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -1065,6 +1065,24 @@ la commande @code{\new} @var{type-de-contexte}. @} @end example +De la même manière, si la musique est saisie à la suite d'une commande +abrégée, telle que @code{\chords} au lieu de @code{\chordmode}, +l'instruction @code{\with} viendra se placer juste après la commande +spécifiant le mode : + +@example +\chords \with @{ [réglages pour ce contexte (implicite) pris individuellement] @} +@{ + @dots{} +@} +@end example + +@noindent +puisque c'est le contexte implicite alors créé qui devra être modifié. +Cette manière de procéder s'applique à toutes les autres formes abrégées +de spécification du mode de saisie (@code{\drums}, @code{\figures}) -- +voir @ref{Modes de saisie}. + Dans la mesure où une telle « modification de contexte » est spécifiée au sein même de la musique, ses effets toucheront @b{toutes} les sorties (imprimable @b{et} Midi), contrairement à ce qui se passe lorsque les @@ -1146,6 +1164,10 @@ en définissant directement une propriété de contexte : @end itemize +@seealso +Manuel de notation : +@ref{Modes de saisie}. + @node Ordre de préséance @unnumberedsubsubsec Ordre de préséance @@ -1926,6 +1948,7 @@ qu'est-ce qui est propre à LilyPond ? * La commande de dérogation (override):: * La commande d'affinage (tweak):: * set ou override:: +* La commande de décalage (offset):: * Modification de listes associatives:: @end menu @@ -2641,11 +2664,345 @@ ordinaires -- elles commencent par une minuscule -- se manipulent avec Les instructions spéciales @code{\tweak} et @code{\overrideProperty} modifient les propriétés de @emph{grob} en court-circuitant totalement les propriétés de contexte. En fait, elles capturent les @emph{grobs} -au moment de leur création pour y injecter directement des propriétés soit -émanant d'un événement musical retouché par un @code{\tweak}, soit +au moment de leur création pour y injecter directement des propriétés +soit émanant d'un événement musical retouché par un @code{\tweak}, soit lorsqu'ils sont d'une qualité particulière (un @code{\overrideProperty}). +@node La commande de décalage (offset) +@subsection La commande de décalage @code{\offset} +@translationof The offset command + +@funindex \offset +@cindex décalage +@cindex offset (décalage) + +Bien qu'il soit possible d'affecter de nouvelles valeurs aux propriétés +d'un objet graphique à l'aide des commandes @code{\override}, +@code{\tweak} ou @code{\overrideProperty}, il est souvent plus pratique +de modifier de telles propriétés par rapport à une valeur par défaut. +Ceci est la raison d'être de la commande @code{\offset}. + +La commande @code{\offset} répond à la syntaxe suivante : + +@example +[-]\offset @var{propriété} @var{décalages} @var{élément} +@end example + +La commande @code{\offset} agit par addition du contenu de +@var{décalage} au réglage par défaut de la propriété @var{propriété} de +l'objet graphique indiqué par @var{élément}. + +Selon la manière dont la commande est formulée, @code{\offset} agira +tantôt comme un @code{\tweak}, tantôt comme un @code{\override}. Les +différences entre ces utilisations seront abordées après avoir recensé +les propriétés qui peuvent être soumises à un @code{\offset}. + +@subsubsubheading Propriétés acceptant des décalages +@c VO Properties which may be offset + +Bon nombre de propriétés d'objet graphique, mais pas toutes, peuvent +faire l'objet d'un décalage. Si d'aventure @var{propriété} ne peut être +affectée, l'objet restera inchangé et sera émis un message +d'avertissement. En pareil cas, l'objet doit être modifié par un +@code{\override} ou un @code{\tweak}. + +Il est toujours possible de procéder à tâtons et laisser les +avertissement indiquer si tel objet peut ou ne peut pas être soumis à +@code{\offset}. Néanmoins, une approche plus systématique est possible. + +Les critères énoncés ci-après déterminent l'égibilité d'une propriété à +être modifiée par la commande @code{\offset}. + +@itemize + +@item +La propriété possède un « réglage par défaut » au niveau de la +définition de l'objet graphique. Les propriétés en question sont +listées, pour chacun des @emph{grobs}, dans +@rinternalsnamed{All layout objects, Tous les objets de rendu} -- on les +trouvera aussi dans le fichier @file{scm/define-grobs.scm}. + +@item +La propriété prend une valeur numérique. Les valeurs numériques +comprennent @code{number}, liste de @code{number}s, @code{number-pair} +et @code{number-pair-list}. Les pages de +@rinternalsnamed{All layout objects, Tous les objets de rendu} +répertorient le type de donnée propre à chaque propriété. Peu importe +que le réglage par défaut soit une fonction. + +@item +La propriété ne saurait constituer une « sous-propriété » -- une +propriété résidant au sein d'une autre propriété. + +@item +Les propriétés réglées sur des valeurs infinies ne peuvent faire l'objet +d'un décalage. Il n'y a aucun moyen d'influencer l'infini, qu'il soit +positif ou négatif. +@end itemize + +Les exemples qui suivent s'arrêtent sur plusieurs propriétés d'objet +graphique au regard des critères énoncés ci-dessus. + +@itemize + +@item Propriétés qui peuvent être décalées + +@table @asis + +@item @code{Hairpin.height} +Cette propriété n'est pas une sous-propriété, et est référencée à +@rinternalsnamed{Hairpin, Soufflet}. En tant que valeur, elle prend une +« dimension, exprimée en espace de portée » réglée à @code{0.6666} -- +clairement une valeur @code{number} non infini. + +@item @code{Arpeggio.positions} +La page @rinternalsnamed{Arpeggio, Arpeggio} référence une propriété +@code{positions} qui accepte une « paire de nombres ». Sa valeur par +défaut est @code{ly:arpeggio::positions} -- une fonction de rappel qui +sera évaluée au cours de la phase de typographie pour donner une paire +de nombres pour tout objet @code{Arpeggio}. + +@end table + +@item Propriétés qui ne peuvent être décalées + +@table @asis + +@item @code{Hairpin.color} +Aucune référence à @code{color} n'est mentionnée dans +@rinternalsnamed{Hairpin, Soufflet}. + +@item @code{Hairpin.circled-tip} +La référence à @code{Hairpin.circled-tip} dans +@rinternalsnamed{Hairpin, Soufflet} indique que cette propriété prend une +valeur @code{boolean}. Les boléens ne sont pas des nombres. + +@item @code{Stem.details.lengths} +Bien que mentionnée dans @rinternalsnamed{Stem, Hampe} et ayant par +défaut une liste de @code{number}s, il s'agit d'une « sous-propriété ». +Il n'existe à ce jour aucune prise en charge des « propriétés +imbriquées ». + +@end table + +@end itemize + + +@subsubsubheading @code{\offset} en tant que dérogation +@c VO \offset as an override + +Lorsque @var{élément} est un nom d'objet graphique comme @code{Arpeggio} +ou @code{Staff.OttavaBracket}, le comportement de la commande +@code{\offset} est assimilable à un @code{\override} sur le type d'objet +spécifié. + +@example +\offset @var{propriété} @var{décalages} [@var{contexte}.]@var{NomGrob} +@end example + +Notez bien qu'il n'y a jamais de tiret avant un comportement +« dérogatoire », tout comme il n'y en a jamais avec la commande +@code{\override} elle-même. + +L'exemple suivant utilise la forme « dérogation » pour allonger les +arpeggios affichés dans la première mesure, jusqu'à couvrir l'accord +dans son intégralité. Les arpeggios sont étirés d'un demi espace de +portée à leur sommet ainsi qu'à leur base. Est aussi indiquée la même +opération sur le premier accord à l'aide d'une simple dérogation +appliquée à la propriété @code{positions}. Cette méthode n'est pas la +plus illustrative pour « étirer d'un demi espace de portée » dans la +mesure où les extrémités doivent être spécifiées en coordonnées absolues +plutôt que relatives. De plus, des dérogations individuelles seraient +nécessaires pour les autres accords en raison de leurs différentes +amplitude et position. + +@lilypond[quote,verbatim] +arpeggioMusic = { + \arpeggio \arpeggio + \arpeggio \arpeggio +} + +{ + \arpeggioMusic + \bar "||" + \offset positions #'(-0.5 . 0.5) Arpeggio + \arpeggioMusic + \bar "||" + \once \override Arpeggio.positions = #'(-3.5 . -0.5) + 1\arpeggio + \bar "||" +} +@end lilypond + +Dans cette utilisation d'@emph{override}, @code{\offset} peut se +préfixer de @code{\once} ou @code{\temporary} et être annulé à l'aide +d'un @code{\revert} suivi de @var{propriété}. Ceci tient au fait que +@code{\offset} crée effectivement un @code{\override} de +@var{propriété}. + +@lilypond[quote,verbatim] +music = { c'8\< d' e' f'\! } + +{ + \music + \offset height 1 Hairpin + \music + \music + \revert Hairpin.height + \music + \bar "||" + \once \offset height 1 Hairpin + \music \music + \bar "||" + \override Hairpin.height = 0.2 + \music + \temporary \offset height 2 Hairpin + \music + \music + \revert Hairpin.height + \music + \bar "||" +} +@end lilypond + +Tout comme @code{\override}, la forme « dérogation » de @code{\offset} +peut s'utiliser avec @code{\undo} et @code{\single}. + +@lilypond[quote,verbatim] +longStem = \offset length 6 Stem + +{ + \longStem c'4 c''' c' c'' + \bar "||" + \undo \longStem c'4 c''' c' c'' + \bar "||" + \single \longStem c'4 c''' c' c'' + \bar "||" +} +@end lilypond + +@subsubsubheading @code{\offset} en tant qu'affinage +@c VO offset as a tweak + +Lorsque @var{élément} est une expression musicale, comme @code{(} ou +@code{\arpeggio}, le résultat sera la même expression musicale à +laquelle aura été appliqué un affinage. +@c closing ) + +@example +[-]\offset [@var{NomGrob}.]@var{propriété} @var{décalages} @var{expression-musicale} +@end example + +La syntaxe de @code{\offset} dans sa forme « affinage » est en tout +point analogue à la commande @code{\tweak}, autant dans l'ordre des +arguments que dans la présence ou non du tiret l'introduisant. + +L'exemple suivant utilise la forme « affinage » pour ajuster le +positionnement vertical de l'objet @code{BreathingSign}. Les effets de +la simple commande @code{\tweak} sont présent à titre de comparaison. +Leur syntaxe est équivalente. Néanmoins, le résultat de @code{\tweak} +est moins intuitif dans la mesure où @code{BreathingSign.Y-offset} est +calculé en référence à la ligne médiane. Il n'est pas nécessaire de +savoir comment se calcule @code{Y-offset} dans le cas d'un +@code{\offset}. + +@lilypond[quote,verbatim] +{ + c''4 + \breathe + c''4 + \offset Y-offset 2 \breathe + c''2 + \tweak Y-offset 3 \breathe +} +@end lilypond + +Dans cet exemple, les objets affinés étaient créés directement à partir +du code saisi : la commande @code{\breathe} était une instruction +explicite pour renvoyer un objet @code{BreathingSign}. Puisque la cible +de la commande était sans ambiguïté, point n'était besoin de spécifier +le nom de l'objet. Cependant, lorsqu'un objet est créé +@emph{indirectement}, mention du nom de l'objet devient requise. Il en +va de même pour la commende @code{\tweak}. + +Dans l'exemple qui suit, l'objet @code{Beam} est abaissé de deux espaces +de portée par application de @code{\offset} à la propriété +@code{positions}. + +La première application de @code{\offset} requiert mention du nom de +l'objet puisque rien dans le code ne crée explicitement de ligature. +Dans la seconde application, la ligature est explicitement créée par +l'expression musicale @code{[}, ce qui dispense de mentionner le nom de +l'objet. Cette deuxième application comporte par ailleurs un +raccourci : un unique @code{number} s'appliquera aux deux membres d'un +@code{number-pair}. +@c close ] + +@lilypond[quote,verbatim] +{ + c''8 g'' e'' d'' + \offset Beam.positions #'(-2 . -2) + c''8 g'' e'' d'' + c''8 g'' e'' d'' + c''8-\offset positions #-2 [ g'' e'' d''] +} +@end lilypond + +@subsubsubheading @code{\offset} et les bandeaux avec rupture +@c VO offset with broken spanners + +Il est aussi possible de modifier indépendamment les segments d'un objet +étendu rencontrant des sauts de ligne. Dans ce cas, @var{décalages} est +consitué d'une liste de valeurs pour le type de donnée requis par la +propriété. + +Utilisée de telle manière, la commande @code{\offset} est similaire à la +commande @code{\alterBroken} -- voir +@ref{Modification de bandeaux avec rupture}. Cependant, et +contrairement à la commande @code{\alterBroken}, les valeurs fournies à +@code{\offset} sont relatives. + +Dans l'exemple suivant est déplacé l'objet « segmenté » +@code{OttavaBracket} au travers de sa propriété @code{staff-padding}. +Puisque cette propriété est affectée d'un @code{number}, @var{décalages} +est alimenté d'une liste de @code{number}s afin de prendre en compte les +deux segments créés par le saut de ligne. La portion de crochet de la +première ligne n'est en fait pas touchée puisque @code{0} est ajouté à +la valeur par défaut de @code{staff-padding}. Le segment de la deuxième +ligne est haussé de trois espaces de portée par rapport à sa hauteur par +défaut. La hauteur par défaut est de @code{2}, bien qu'il ne soit pas +nécessaire de le savoir. + +@lilypond[quote,verbatim] +{ + \offset staff-padding #'(0 3) Staff.OttavaBracket + \ottava #1 + c'''2 c''' + \break + c'''2 c''' +} +@end lilypond + +L'exemple ci-dessous reproduit les effets de la commande @code{\shape} +en décalant la propriété @code{control-points} de l'objet @code{Slur}. +Ici, @var{décalages} est constitué d'une liste de +@code{number-pair-list}s, une pour chaque segment de la liaison. Cet +exemple produit un résultat identique à ce qui est illustré dans +@ref{Modification de l'allure des éléments}. + +@lilypond[quote,verbatim] +{ + c'4-\offset control-points #'( + ((0 . 0) (0 . 0) (0 . 0) (0 . 1)) + ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5)) + ) ( f'4 g' c'' + \break + d'4 c'' f' c') +} +@end lilypond + + @node Modification de listes associatives @subsection Modification de listes associatives @translationof Modifying alists @@ -2790,46 +3147,70 @@ qu'au travers d'une complète redéfinition de leur liste associative.} @translationof Input modes La manière dont sera interprétée la notation contenue dans un fichier -source dépend du mode affecté à la saisie. +source dépend du mode affecté à la saisie. Il existe, en règle +générale, deux façons de spécifier le mode : une forme développée -- par +exemple @code{\chordmode} -- et une forme abrégée -- par exemple +@code{\chords}. La forme développée s'utilise particulièrement lorsque +la saisie fait l'objet d'une variable ou se trouve dans un contexte +explicitement créé. La forme abrégée crée implicitement un contexte du +type adéquate à la saisie et la lui transmet directement. Cette forme +abrégée est tout à fait indiquée aux situations simples pour lesquelles +nul n'est besoin de créer explicitement le contexte qui prendra en +charge la saisie. + @subsubsubheading Mode accords @c VO Chord mode Ce mode, activé par la commande @code{\chordmode}, permet d'interpréter les saisies comme étant des accords, qui seront imprimés sous forme de -notes sur une portée -- voir @ref{Notation des accords}. +notes sur une portée -- voir @ref{Notation des accords}. La musique +entrée en mode accords est rendue soit sous forme d'accords sur une +portée pour un contexte @code{Staff}, soit sous forme de noms d'accord +pour un contexte @code{ChordNames} ou sous forme de diagrammes pour un +contexte @code{FretBoards}. Le mode accords s'active aussi par la commande @code{\chords}, qui -créera un contexte @code{ChordNames}. Les saisies, interprétées comme -étant des accords, seront alors rendues sous forme nominale dans ce +créera implicitement un nouveau contexte @code{ChordNames}. Le code +saisi selon la syntaxe dévolue aux accords, sera interprété comme étant +des accords nommés et sera alors rendu sous forme nominale dans ce contexte @code{ChordNames} -- voir @ref{Impression des noms d'accord}. + @subsubsubheading Mode percussions @c VO Drum mode Ce mode, activé par la commande @code{\drummode}, permet d'interpréter les saisies comme étant de la notation pour percussions -- voir -@ref{Notation de base pour percussions}. +-@ref{Notation de base pour percussions}. Lorsqu'elle est entrée en +mode percussions, la musique est rendue dans un contexte +@code{DrumStaff}. Le mode percussions s'active aussi par la commande @code{\drums}, qui -créera un contexte @code{DrumStaff}. Les saisies, interprétées comme -étant de la notation pour percussions, seront alors rendues sous forme +créera implicitement un nouveau contexte @code{DrumStaff}. Le code +saisi selon la syntaxe dévolue aux percussions, sera interprété comme +étant de la notation pour percussions et alors rendu sous forme symbolique sur une portée de percussions -- voir @ref{Notation de base pour percussions}. + @subsubsubheading Mode figures @c VO Figure mode Ce mode, activé par la commande @code{\figuremode}, permet d'interpréter les saisies comme étant de la basse chiffrée (ou figurée) -- voir -@ref{Saisie de la basse chiffrée}. +@ref{Saisie de la basse chiffrée}. Lorsqu'elle est entrée en mode +figures, la musique est rendue sous forme de basse figurée dans un +contexte @code{FiguredBass} ou dans un contexte @code{Staff}. Le mode figures s'active aussi par la commande @code{\figures}, qui -créera un contexte @code{FiguredBass}. Les saisies interprétées comme -étant de la basse chiffrée, seront alors rendues sous forme symbolique -dans le contexte @code{FiguredBass} -- voir +créera implicitement un nouveau contexte @code{FiguredBass}. Le code, +saisi selon la syntaxe dévolue à la basse chiffrée, sera interprété +comme étant des indication de basse chiffrée et sera alors rendu sous +forme symbolique dans le contexte @code{FiguredBass} -- voir @ref{Introduction à la basse chiffrée}. + @subsubsubheading Mode frets et tablatures @c VO Fret and tab modes @@ -2840,11 +3221,13 @@ Notes ou accords saisis en mode note puis affectés à un contexte @code{TabStaff} seront rendus sous forme de diagramme de tablature -- voir @ref{Tablatures par défaut}. -Deux options différentes permettent d'obtenir des diagrammes de fret en -surplomb d'une portée : directement à l'aide d'un contexte -@code{FretBoards} -- voir @ref{Tablatures automatiques} -- ou en -attachant aux notes des @emph{markups} créés par la commande -@code{\fret-diagram} -- voir @ref{Tablatures sous forme d'étiquette}. +Des diagrammes de fret viendront se positionner en surplomb d'une portée +dès lors que les notes ou accords auront été saisis en mode note ou +accord puis rendus dans un contexte @code{FretBoards} -- voir +@ref{Tablatures automatiques}. Ils peuvent aussi se gérer sous forme de +@emph{markups} créés par la commande @code{\fret-diagram} -- voir +@ref{Tablatures sous forme d'étiquette}. + @subsubsubheading Mode paroles @c VO Lyrics mode @@ -2852,11 +3235,19 @@ attachant aux notes des @emph{markups} créés par la commande Ce mode, activé par la commande @code{\lyricmode}, permet d'interpréter les saisies comme étant des syllabes, ayant éventuellement une durée, et des indications habituelles aux paroles -- voir @ref{Musique vocale}. +Lorsqu'il est entré en mode paroles, le texte est rendu sous forme de +syllabes dans un contexte @code{Lyrics}. + +Le mode paroles s'active aussi par la commande @code{\lyrics}, qui +créera implicitement un nouveau contexte @code{Lyrics}. Le code saisi +sera interprété comme étant des paroles et sera alors rendu sous forme +de syllabes dans le contexte @code{Lyrics}. Le mode paroles s'active aussi par la commande @code{\addlyrics}, qui créera un contexte @code{Lyrics} et ajoutera implicitement une commande @code{\lyricsto} afin d'associer les paroles qui suivent à la musique -précédemment saisie. +précédemment saisie -- voir @ref{Durée automatique des syllabes}. + @subsubsubheading Mode @emph{markup} @c VO Markup mode @@ -4465,9 +4856,9 @@ XinO = { } @end lilypond -Tous les glyphes de la fonte Feta sont accessibles à l'aide de la -commande de @emph{markup} @code{\musicglyph} -- voir -@ref{La fonte Feta}. +Tous les glyphes @code{Feta} de la fonte Emmentaler sont +accessibles à l'aide de la commande de @emph{markup} @code{\musicglyph} +-- voir @ref{La fonte Emmentaler}. L'insertion de fichier @file{EPS} ou d'instructions Postscript sont accessibles par les commandes de @emph{markup} @code{\epsfile} et @@ -4479,7 +4870,7 @@ Manuel de notation : @ref{Commandes pour markup}, @ref{Éléments graphiques dans du texte formaté}, @rusernamed{Graphic, Graphisme}, -@ref{La fonte Feta}, +@ref{La fonte Emmentaler}, @ref{Mise en forme du texte}. diff --git a/Documentation/fr/notation/chords.itely b/Documentation/fr/notation/chords.itely index 89b7015f1d..fecf83096e 100644 --- a/Documentation/fr/notation/chords.itely +++ b/Documentation/fr/notation/chords.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: db92af51a444062c8edaef3afa36f57375b8feeb + Translation of GIT committish: 553410afdd9496f7d9f1498e755ea18de8e70596 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -472,7 +472,7 @@ l'impression d'un @emph{markup} @code{noChordSymbol}. @funindex \chords @code{\chords @{ @dots{} @}} est un raccourci de -@code{\new ChordNames @{ \chordmode @{ @dots{} @} @}}. +@code{\new ChordNames \chordmode @{ @dots{} @}}. @lilypond[verbatim,quote,ragged-right] \chords { @@ -829,7 +829,7 @@ de gérer les objets @code{BassFigure}. La basse chiffrée pourra être attachée à un contexte @code{Staff}. L'expression @code{\figures@{ @dots{} @}} constitue une raccourci à -@code{\new FiguredBass @{ \figuremode @{ @dots{} @} @}}. +@code{\new FiguredBass \figuremode @{ @dots{} @}}. Bien que la gestion de la basse chiffrée ressemble beaucoup à celle des accords, elle est beaucoup plus simpliste. Le mode diff --git a/Documentation/fr/notation/editorial.itely b/Documentation/fr/notation/editorial.itely index 24ecee56f5..92aa1711e8 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: 39912f861693f1c24b8833e6e9e6ba82eb3e6746 + Translation of GIT committish: b7fff49e6e45ba9d3e3b48df76fe36d60dab518c When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -528,12 +528,14 @@ elle revient à la couleur par défaut, le noir. Le problème ressort de façon évidente au vu de la partition finale. @lilypond[verbatim,quote] -\relative c'' { - \override Staff.StaffSymbol.color = #(x11-color 'SlateBlue2) - \set Staff.instrumentName = \markup { - \with-color #(x11-color 'navy) "Clarinet" +\new Staff \with { + instrumentName = \markup { + \with-color #(x11-color 'red) "Clarinet" + } } + \relative c'' { + \override Staff.StaffSymbol.color = #(x11-color 'SlateBlue2) gis8 a \override Beam.color = #(x11-color "medium turquoise") gis a @@ -561,12 +563,12 @@ les composantes de la couleur exacte au format rouge-vert-bleu l'exemple suivant correspond à 128). @lilypond[verbatim,quote] -\relative c'' { - \override Staff.StaffSymbol.color = #(x11-color 'SlateBlue2) - \set Staff.instrumentName = \markup { - \with-color #(x11-color 'navy) "Clarinet" +\new Staff \with { + instrumentName = \markup { + \with-color #(x11-color 'red) "Clarinet" + } } - + \relative c'' { \override Stem.color = #(rgb-color 0 0 0) gis8 a \override Stem.color = #(rgb-color 1 1 1) @@ -912,12 +914,20 @@ Les crochets d'analyses sont susceptibles d'être imbriqués : } @end lilypond -@seealso -Morceaux choisis : -@rlsrnamed{Editorial annotations,Annotations éditoriales}. +@snippets + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{analysis-brackets-above-the-staff.ly} +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{analysis-brackets-with-labels.ly} + + +@seealso Référence des propriétés internes : @rinternals{Horizontal_bracket_engraver}, @rinternals{HorizontalBracket}, @rinternals{horizontal-bracket-interface}, +@rinternals{HorizontalBracketText}, +@rinternals{horizontal-bracket-text-interface}, @rinternals{Staff}. diff --git a/Documentation/fr/notation/expressive.itely b/Documentation/fr/notation/expressive.itely index 9972b47c17..856b0da1c4 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: 39912f861693f1c24b8833e6e9e6ba82eb3e6746 + Translation of GIT committish: f2c5cd5aba42472996a33b463ed39abe23353484 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -459,6 +459,9 @@ avec ou sans extenseur, ainsi que les indications de pédale. @lilypondfile[verbatim,quote,texidoc,doctitle] {setting-the-minimum-length-of-hairpins.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{moving-the-ends-of-hairpins.ly} + @cindex al niente @cindex niente, al diff --git a/Documentation/fr/notation/input.itely b/Documentation/fr/notation/input.itely index 50d2d72ccc..52d555e6a7 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: 181db07b2627d98fb77564c45fad23a96e7ee54c + Translation of GIT committish: 1e5c6b0f54079eb3285dcc4c7e53f17d8bb03933 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -2949,8 +2949,9 @@ commande avec l'option @i{ad hoc} -- voir @subsection Changement des fontes musicales @translationof Replacing the notation font -Gonville est une alternative à la fonte Feta que LilyPond utilise par -défaut. Vous pouvez la télécharger à partir de +Gonville est une alternative au jeu de glyphes @emph{Feta} inclus dans +la fonte Emmentaler que LilyPond utilise par défaut. Vous pouvez la +télécharger à partir de @example @uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/} @end example @@ -2961,7 +2962,7 @@ Voici quelques mesures utilisant la police Gonville : @c for the font comparison. -gp @sourceimage{Gonville_after,15cm,,} -Et ces même mesures avec la police de LilyPond, Feta : +Et ces même mesures avec les glyphes @emph{Feta} de LilyPond : @sourceimage{Gonville_before,15cm,,} @@ -2974,12 +2975,16 @@ Téléchargez puis décompressez l'archive zip. Recopiez le répertoire @rlearning{Autres sources de documentation} à ce sujet. Renommez le répertoire @code{fonts} qui s'y trouve en @code{fonts_orig}, puis le répertoire @code{lilyfonts} en @code{fonts}. Il vous suffira, pour -retrouver la fonte Feta, de renommer @code{fonts_orig} en @code{fonts}. +retrouver la fonte Emmentaler, de renommer @code{fonts_orig} en +@code{fonts}. @seealso Manuel d'initiation : @rlearning{Autres sources de documentation}. +Manuel de notation : +@ref{La fonte Emmentaler}. + @knownissues Gonville ne permet pas de générer de la notation ancienne, et certains glyphes ajoutés depuis lors aux jeux de caractères en soient absent. diff --git a/Documentation/fr/notation/notation-appendices.itely b/Documentation/fr/notation/notation-appendices.itely index c0b513a25a..9ea74cd8ef 100644 --- a/Documentation/fr/notation/notation-appendices.itely +++ b/Documentation/fr/notation/notation-appendices.itely @@ -1,11 +1,11 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 + Translation of GIT committish: 1e5c6b0f54079eb3285dcc4c7e53f17d8bb03933 - 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.. + 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 \version "2.19.28" @@ -24,7 +24,7 @@ * Formats de papier prédéfinis:: * Instruments MIDI:: * Liste des couleurs:: -* La fonte Feta:: +* La fonte Emmentaler:: * Styles de tête de note:: * Styles de clef:: * Commandes pour markup:: @@ -962,19 +962,39 @@ greyN où @var{N} est compris entre 0 et 100. -@node La fonte Feta -@appendixsec La fonte Feta -@translationof The Feta font +@node La fonte Emmentaler +@appendixsec La fonte Emmentaler +@translationof The Emmentaler font -@cindex Feta, fonte -@cindex fonte Feta +@cindex Emmentaler fonte +@cindex Fonte, Emmentaler +@cindex Feta, glyphes +@cindex Glyphes Feta +@cindex Parmesan, glyphes +@cindex Glyphes Parmesan -Voici, regroupés par type, les différents symboles de la fonte -Emmentaler qui peuvent s'inclure directement dans un objet -@emph{markup}. Pour ce faire, il suffit d'employer le nom du glyphe, -comme dans @code{g^\markup @{\musicglyph #"scripts.segno" @}} ou -@code{\markup @{\musicglyph #"five"@}}. Pour de plus amples -informations, reportez-vous au chapitre @ref{Mise en forme du texte}. +La fonte Emmentaler est constituée de deux @emph{jeux} de glyphes : +« Feta » est utilisé pour la notation classique, et « Parmesan » pour la +notation ancienne. + + +Les différents symboles -- ou glyphes -- de la fonte Emmentaler peuvent +s'inclure directement dans un objet @emph{markup}. Pour ce faire, il +suffit d'employer le nom du glyphe (voir les tables ci-après) comme ceci : + +@example +g^\markup @{ \musicglyph #"scripts.segno" @} +@end example + +@noindent +ou + +@example +\markup @{ \musicglyph #"five" @} +@end example + +Pour de plus amples informations, reportez-vous au chapitre +@ref{Mise en forme du texte}. @menu * Glyphes de clef:: @@ -1569,8 +1589,8 @@ décoller de l'encadrement. @appendixsec Liste des signes d'articulation @translationof List of articulations -Les listes qui suivent recensent les symboles prédéfinis dans la -fonte Feta que vous pouvez attacher à une note (par ex. @code{f\accent} +Les listes qui suivent recensent les symboles prédéfinis dans le +glyphe Feta que vous pouvez attacher à une note (par ex. @code{f\accent} ou @code{f->}). Chaque exemple illustre les trois positionnements : en surplomb (@emph{up}), en dessous (@emph{down}) et à l'appréciation de LilyPond (@emph{neutral}). diff --git a/Documentation/fr/notation/percussion.itely b/Documentation/fr/notation/percussion.itely index 9ba0160954..0d714700fa 100644 --- a/Documentation/fr/notation/percussion.itely +++ b/Documentation/fr/notation/percussion.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 + Translation of GIT committish: 64c8064154e24ff2a07e553ecdbda409f1726487 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -91,11 +91,9 @@ contexte spécifique : Il s'agit en fait d'un raccourci pour @lilypond[quote,verbatim] -\new DrumStaff { - \drummode { - hihat4 hh bassdrum bd +\new DrumStaff \drummode { + hihat4 hh bassdrum bd } -} @end lilypond Chaque instrument de percussion peut avoir, dans le fichier LilyPond, un @@ -528,27 +526,20 @@ sujet la rubrique @ref{Symbole de la portée}. Un tambourin, saisi avec un @qq{tamb} : -@lilypond[quote,verbatim] +@lilypond[verbatim,quote] #(define mydrums '((tambourine default #t 0))) -tambustaff = { - \override Staff.StaffSymbol.line-positions = #'( 0 ) - \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \set DrumStaff.instrumentName = #"Tambourine" -} +\new DrumStaff \with { instrumentName = #"Tambourine" } -\new DrumStaff { - \tambustaff +\drummode { \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) - \drummode { - \time 6/8 - tamb8. 16 8 8 8 8 | - tamb4. 8 8 8 | - % the trick with the scaled duration and the shorter rest - % is neccessary for the correct ending of the trill-span! - tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan | - } + \time 6/8 + tamb8. 16 8 8 8 8 | + tamb4. 8 8 8 | + % the trick with the scaled duration and the shorter rest + % is neccessary for the correct ending of the trill-span! + tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan | } @end lilypond @@ -557,19 +548,14 @@ Un peu de tam tam, abrégé @qq{tt} : @lilypond[quote,verbatim] #(define mydrums '((tamtam default #t 0))) -tamtamstaff = { - \override Staff.StaffSymbol.line-positions = #'( 0 ) - \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \set DrumStaff.instrumentName = #"Tamtam" -} +\new DrumStaff \with { instrumentName = #"Tamtam" } -\new DrumStaff { - \tamtamstaff - \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) +\drummode { +\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) +\override Staff.StaffSymbol.line-positions = #'( 0 ) +\override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \drummode { - tt 1 \pp \laissezVibrer - } + tt 1 \pp \laissezVibrer } @end lilypond @@ -580,20 +566,16 @@ cloche de quart -- @qq{rb} pour @emph{ridebell} : #(define mydrums '((ridebell default #t 3) (cowbell default #t -2))) -bellstaff = { - \override DrumStaff.StaffSymbol.line-positions = #'(-2 3) +\new DrumStaff \with { instrumentName = #"Different Bells" } + +\drummode { \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) - \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \set DrumStaff.instrumentName = #"Different Bells" -} + \override DrumStaff.StaffSymbol.line-positions = #'(-2 3) + \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) -\new DrumStaff { - \bellstaff - \drummode { - \time 2/4 - rb8 8 cb 16 rb-> ~ | - 16 8 16 cb8 8 | - } + \time 2/4 + rb8 8 cb8 16 rb16-> ~ | + 16 8 16 cb8 8 | } @end lilypond @@ -639,22 +621,23 @@ drumsB = { \score { \new StaffGroup << - \new DrumStaff { - \set DrumStaff.instrumentName = \markup { + \new DrumStaff \with { + instrumentName = \markup { \column { "Tambourine" "et" "caisse claire s. timbre" } } - \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + drumStyleTable = #(alist->hash-table mydrums) + } \drumsA - } - \new DrumStaff { - \set DrumStaff.instrumentName = #"Grosse Caisse" - \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) - \drumsB } + \new DrumStaff \with { + instrumentName = #"Grosse Caisse" + drumStyleTable = #(alist->hash-table mydrums) + } + \drumsB >> } @end lilypond diff --git a/Documentation/fr/notation/pitches.itely b/Documentation/fr/notation/pitches.itely index 80975c0ded..1888031678 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: 39912f861693f1c24b8833e6e9e6ba82eb3e6746 + Translation of GIT committish: 64c8064154e24ff2a07e553ecdbda409f1726487 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -309,6 +309,24 @@ et la quinte diminuée de seulement six demi-tons. } @end lilypond +Dans certaines situation complexes, il peut être souhaitable de revenir +à une hauteur déterminée sans tenir compte de ce qui se passait +auparavant, à l'aide d'un @code{\resetRelativeOctave} : + +@lilypond[verbatim,quote] +\relative { + << + { c''2 d } + \\ + { e,,2 f } + >> + \resetRelativeOctave c'' + c2 +} +@end lilypond + +@funindex \resetRelativeOctave + @seealso Glossaire musicologique : @rglosnamed{fifth,quinte}, @@ -1498,26 +1516,24 @@ conducteur. Les deux instruments sont à l'unisson. @lilypond[verbatim,quote] \new GrandStaff << - \new Staff = "violin" { - \relative c'' { - \set Staff.instrumentName = #"Vln" - \set Staff.midiInstrument = #"violin" - % not strictly necessary, but a good reminder - \transposition c' - - \key c \major - g4( c8) r c r c4 - } + \new Staff = "violin" \with { + instrumentName = #"Vln" + midiInstrument = #"violin" + } + \relative c'' { + % not strictly necessary, but a good reminder + \transposition c' + \key c \major + g4( c8) r c r c4 } - \new Staff = "clarinet" { - \relative c'' { - \set Staff.instrumentName = \markup { Cl (B\flat) } - \set Staff.midiInstrument = #"clarinet" - \transposition bes - - \key d \major - a4( d8) r d r d4 - } + \new Staff = "clarinet" \with { + instrumentName = \markup { Cl (B\flat) } + midiInstrument = #"clarinet" + } + \relative c'' { + \transposition bes + \key d \major + a4( d8) r d r d4 } >> @end lilypond @@ -2179,6 +2195,125 @@ musicB = { } @end lilypond +@item choral + +@cindex altérations style @emph{choral} +@cindex @emph{choral}, style d'altérations +@cindex chorale et altérations + +@funindex choral + +Cette règle est une combinaison des styles @code{modern-voice} et +@code{piano}. Les altérations accidentelles sont indiquées aussi bien +pour un chanteur qui suit seulement sa voix, que pour un lecteur suivant +toutes les voix d'un @code{ChoirStaff}. + +Ce style d'altération s'applique, par défaut, au @code{ChoirStaff} en +cours. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new ChoirStaff { + << + \context Staff = "up" { + \accidentalStyle choral + \musicA + } + \context Staff = "down" { + \musicB + } + >> +} +@end lilypond + +@item choral-cautionary + +@cindex @emph{choral cautionary}, style d'altérations +@cindex altérations style @emph{choral cautionary} +@cindex chorale et altérations + +@funindex choral-cautionary + +Identique au style @code{choral}, mais les altérations de précaution sont +imprimées différemment. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new ChoirStaff { + << + \context Staff = "up" { + \accidentalStyle choral-cautionary + \musicA + } + \context Staff = "down" { + \musicB + } + >> +} +@end lilypond + @item neo-modern @cindex @emph{neo-modern}, style d'altérations diff --git a/Documentation/fr/notation/rhythms.itely b/Documentation/fr/notation/rhythms.itely index 92f80d150a..f4b65326f5 100644 --- a/Documentation/fr/notation/rhythms.itely +++ b/Documentation/fr/notation/rhythms.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a + Translation of GIT committish: 1e5c6b0f54079eb3285dcc4c7e53f17d8bb03933 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -99,7 +99,7 @@ de la notation ancienne. Pour plus de détails, voir Si la durée d'une note n'est pas précisée, elle est alors assimilée à la durée de la note précédente. La valeur par défaut pour la première note -est la noire (@code{4}). +est la noire (@code{4}). @lilypond[quote,verbatim] \relative { a' a a2 a a4 a a1 a } @@ -134,7 +134,7 @@ la même façon. @end lilypond Certaines durées ne peuvent s'obtenir à partir de chiffres et de points, -mais uniquement en @qq{liant} deux ou plusieurs notes entre elles. Voir +mais uniquement en « liant » deux ou plusieurs notes entre elles. Voir @ref{Liaisons de prolongation} à ce sujet. Quant à la manière de spécifier la durée des syllabes ou bien d'aligner @@ -151,7 +151,7 @@ cette forme de notation, reportez vous à @ref{Notation proportionnelle}. Les points sont normalement haussés pour éviter les lignes de portée, sauf dans certaines polyphonies. Des commandes prédéfinies permettent -de manuellement forcer une orientation particulière, comme indiqué au +de manuellement forcer un positionnemenet particulièr, comme indiqué au chapitre @ref{Direction et positionnement}. @predefined @@ -466,7 +466,7 @@ longues doivent s'aligner sur les subdivisions de la mesure, comme ici : @c KEEP LY @lilypond[verbatim,quote] \relative { - r8^"oui" c'8~ 2 r4 | + r8 c'4.~ 4 r4 | r8^"non" c2~ 8 r4 } @end lilypond @@ -1981,6 +1981,24 @@ grille d'accords : >> @end lilypond +Une musique comportant des accords peut s'utiliser dans un +@code{RhythmicStaff}, et avec le@code{Pitch_squash_engraver}, dès +lors que les accords sont auparavant réduits en notes uniques à +l'aide de la fonction musicale @code{\reduceChords} : + +@lilypond[quote,verbatim] +\new RhythmicStaff { + \time 4/4 + \reduceChords { + 2 + 2 + 2 + 4 + 4 + } +} +@end lilypond + @predefined @code{\improvisationOn}, @code{\improvisationOff}. @@ -3348,9 +3366,9 @@ est modifié pour imprimer un repère encadré. @end lilypond Le fichier @file{scm/translation-functions.scm} comporte les -définitions de @code{format-mark-numbers} (comportement par défaut), -@code{format-mark-box-numbers}, @code{format-mark-letters} et -@code{format-mark-box-letters}. Vous pouvez vous en inspirer pour +définitions de @code{format-mark-letters} (comportement par défaut), +@code{format-mark-box-letters}, @code{format-mark-numbers} et +@code{format-mark-box-numbers}. Vous pouvez vous en inspirer pour d'autres fonctions de formatage. @code{format-mark-barnumbers}, @code{format-mark-box-barnumbers} et @@ -3393,7 +3411,7 @@ Un @code{\mark} peut contenir un glyphe musical tel que le signe @noindent Pour connaître les différents symboles accessibles par -@code{\musicglyph}, consultez @ref{La fonte Feta}. +@code{\musicglyph}, consultez @ref{La fonte Emmentaler}. Pour affiner le positionnement des repères, veuillez vous référer à @ref{Mise en forme du texte}, et tout particulièrement ce qui concerne @@ -3408,7 +3426,7 @@ formatage. @seealso Manuel de notation : @ref{Alignement des objets}, -@ref{La fonte Feta}, +@ref{La fonte Emmentaler}, @ref{Mise en forme du texte}. Fichiers d'initialisation : diff --git a/Documentation/fr/notation/simultaneous.itely b/Documentation/fr/notation/simultaneous.itely index 1ef48714bd..3f8c3be77a 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: 39912f861693f1c24b8833e6e9e6ba82eb3e6746 + Translation of GIT committish: be622e24546dff283da6810c798bb4155c95242a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -421,6 +421,7 @@ portées. * Polyphonie sur une portée:: * Styles de voix:: * Résolution des collisions:: +* Fusion de silences:: * Regroupement automatique de parties:: * Saisie de musique en parallèle:: @end menu @@ -602,6 +603,26 @@ vont vers le haut, celles des voix paires vers le bas : >> @end lilypond +@funindex \voices +La commande @code{\voices} permet de gérer l'ordre de saisie des voix : + +@lilypond[quote,verbatim] +\new Staff \voices 1,3,5,6,4,2 << + \time 2/4 + { f''2 } % 1: highest + \\ + { d''2 } % 3: second-highest + \\ + { b'2 } % 5: third-highest + \\ + { g'2 } % 6: third-lowest + \\ + { e'2 } % 4: second-lowest + \\ + { c'2 } % 2: lowest +>> +@end lilypond + @warning{Paroles et objets étendus (liaisons, soufflets, etc.) ne peuvent passer d'une voix à l'autre.} @@ -932,6 +953,43 @@ are at the same time differently dotted are not clear. @end ignore +@node Fusion de silences +@unnumberedsubsubsec Fusion de silences +@translationof Merging rests + +Il est d'usage, lorsque plusieurs voix cohabitent, de fusionner les +silences qui apparaissent simultanément dans différentes parties. Ceci +peut s'obtenir à l'aide du @code{Merge_rests_engraver}. + +@lilypond[quote,verbatim] +voiceA = \relative { d''4 r d2 | R1 | } +voiceB = \relative { fis'4 r g2 | R1 | } +\score { + << + \new Staff \with { + instrumentName = "unmerged" + } + << + \new Voice { \voiceOne \voiceA } + \new Voice { \voiceTwo \voiceB } + >> + \new Staff \with { + instrumentName = "merged" + \consists #Merge_rests_engraver + } + << + \new Voice { \voiceOne \voiceA } + \new Voice { \voiceTwo \voiceB } + >> + >> +} +@end lilypond + +La propriété de contexte @code{suspendRestMerging}, lorsque activée par +un @code{##t}, permet de suspendre temporairement la fusion des +silences. + + @node Regroupement automatique de parties @unnumberedsubsubsec Regroupement automatique de parties @translationof Automatic part combining diff --git a/Documentation/fr/notation/spacing.itely b/Documentation/fr/notation/spacing.itely index 210be80f32..4724d25ebd 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: 6b8cabe379e8b4b945797a4e55759c56117223d4 + Translation of GIT committish: 8e2eaf4959bec63a1128a444591a540f4f1e2937 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -1467,12 +1467,12 @@ traditionnelle. @subheading Relation automatique entre fonte et taille @c VO Automatic font weight at different sizes -La fonte Feta fournit les symboles musicaux dans huit tailles -différentes. Chaque fonte correspond à une hauteur particulière de -portée ; les petites tailles comportent des symboles plus épais -pour être cohérent avec l'épaisseur relativement plus importante des -lignes de la portée. Le tableau suivant répertorie les différentes -tailles de police. +La fonte Ementaler fournit le jeu de symboles musicaux @emph{Feta} dans +huit tailles différentes. Chaque fonte correspond à une hauteur +particulière de portée ; les petites tailles comportent des symboles +plus épais pour être cohérent avec l'épaisseur relativement plus +importante des lignes de la portée. Le tableau suivant répertorie les +différentes tailles de police. @multitable @columnfractions .15 .2 .22 .2 @@ -1490,7 +1490,8 @@ tailles de police. @seealso Manuel de notation : -@ref{Indication de la taille de fonte musicale}. +@ref{Indication de la taille de fonte musicale}, +@ref{La fonte Emmentaler}. Morceaux choisis : @rlsrnamed{Spacing,Espacements}. @@ -2602,11 +2603,12 @@ Une autre approche de l'espacement vertical est le recours à positionnement vertical absolu sur la page. @code{NonMusicalPaperColumn.line-break-system-details} prend en charge -une liste associative de trois mises au point : +une liste associative de quatre mises au point : @itemize @item @code{X-offset} @item @code{Y-offset} +@item @code{extra-offset} @item @code{alignment-distances} @end itemize @@ -2722,6 +2724,41 @@ comporter un certain nombre. Vous aurez aussi noté que la propriété @code{Y-offset} détermine ici le point de départ de chacun des systèmes de la page. +Contrairement au positionnement absolu accessible par @code{Y-offset} et +@code{X-offset}, il est possible d'opter pour un positionnement relatif +à l'aide de la propriété @code{extra-offset} des +@code{line-break-system-details}. Le placement sera relatif à la mise en +forme par défaut ou au positionnement absolu géré par @code{X-offset} et +@code{Y-offset}. La propriété @code{extra-offset} prend en argument une +@code{paire} constituée des déplacements sur les axes horizontal et +vertical. + +@lilypond[verbatim,quote,staffsize=16] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((extra-offset . (0 . 10))) + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((extra-offset . (0 . 10))) + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new Staff { + \repeat unfold 15 { d'4 d' d' d' } + } + >> + } +} +@end lilypond + Maintenant que chaque système est explicitement positionné, nous pouvons jouer sur la distance séparant les portées de chacun des systèmes, grâce à la sous-propriété @code{alignment-distances} de @@ -2808,10 +2845,11 @@ Lorsque vous utilisez @code{alignment-distances}, les paroles et autres lignes de non-portée ne comptent pas pour une portée. @item -Les nombres fournis à @code{X-offset}, @code{Y-offset} et -@code{alignment-distances} sont considérés comme des multiples de la -distance entre des portées adjacentes. Des valeurs positives remontent -les portées et paroles, des valeurs négatives les descendent. +Les nombres fournis à @code{X-offset}, @code{Y-offset}, +@code{extra-offset} et @code{alignment-distances} sont considérés comme +des multiples de la distance entre des portées adjacentes. Des valeurs +positives remontent les portées et paroles, des valeurs négatives les +descendent. @item Dans la mesure où @code{NonMusicalPaperColumn.line-break-system-details} diff --git a/Documentation/fr/notation/staff.itely b/Documentation/fr/notation/staff.itely index 072d696a33..ba86260571 100644 --- a/Documentation/fr/notation/staff.itely +++ b/Documentation/fr/notation/staff.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 + Translation of GIT committish: 64c8064154e24ff2a07e553ecdbda409f1726487 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -231,8 +231,8 @@ qu'il gère automatiquement l'affichage du nom d'instrument -- voir @ref{Noms d'instrument} pour plus de détails. @lilypond[verbatim,quote] -\new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" +\new PianoStaff \with { instrumentName = #"Piano" } + << \new Staff \relative { c''1 c } \new Staff \relative { \clef bass c1 c } >> @@ -992,20 +992,14 @@ nouvel instrument. Notez cependant que la valeur de @lilypond[verbatim,quote,ragged-right] prepPiccolo = <>^\markup \italic { muta in Piccolo } +prepFlute = <>^\markup \italic { muta in Flauto } + setPiccolo = { - \set Staff.instrumentName = #"Piccolo" - \set Staff.shortInstrumentName = #"Picc." - \set Staff.midiInstrument = #"piccolo" <>^\markup \bold { Piccolo } \transposition c'' } -prepFlute = <>^\markup \italic { muta in Flauto } - setFlute = { - \set Staff.instrumentName = #"Flute" - \set Staff.shortInstrumentName = #"Flt." - \set Staff.midiInstrument = #"flute" <>^\markup \bold { Flute } \transposition c' } @@ -1013,14 +1007,17 @@ setFlute = { \new Staff \with { instrumentName = #"Flute" shortInstrumentName = #"Flt." - midiInstrument = #"flute" } \relative { g'1 g g g \break g1 g \prepPiccolo R R \break + \set Staff.instrumentName = #"Piccolo" + \set Staff.shortInstrumentName = #"Picc." \setPiccolo g1 g g g \break g1 g \prepFlute R R \break + \set Staff.instrumentName = #"Flute" + \set Staff.shortInstrumentName = #"Flt." \setFlute g1 g g g } @@ -1109,10 +1106,10 @@ oboeNotes = \relative { >> } @end lilypond -Lorsqu'une commande @code{\unfoldRepeat} est requise dans une expression -musicale de telle sorte que la musique soit réimprimée par +Lorsqu'une commande @code{\unfoldRepeats} est requise dans une +expression musicale de telle sorte que la musique soit réimprimée par @code{\quoteDuring}, l'instruction @code{\addQuote} doit elle-mêeme -contenir la commande @code{\unfoldRepeat} : +contenir la commande @code{\unfoldRepeats} : @lilypond[verbatim,quote] fluteNotes = \relative { diff --git a/Documentation/fr/notation/text.itely b/Documentation/fr/notation/text.itely index 87bb956de3..345543a585 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: 39912f861693f1c24b8833e6e9e6ba82eb3e6746 + Translation of GIT committish: 1e5c6b0f54079eb3285dcc4c7e53f17d8bb03933 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -318,7 +318,7 @@ de la ligne suivante. @seealso Manuel de notation : @ref{Indications de repère}, -@ref{La fonte Feta}, +@ref{La fonte Emmentaler}, @ref{Mise en forme du texte}, @ref{Notation musicale dans du texte formaté}. @@ -1229,7 +1229,7 @@ notation : En règle générale, tout symbole musical peut être inclus dans un @emph{markup}, comme le montre l'exemple qui suit. Ces différents -symboles sont répertoriés dans l'annexe @ref{La fonte Feta}. +symboles sont répertoriés dans l'annexe @ref{La fonte Emmentaler}. @lilypond[quote,verbatim] \relative { @@ -1299,7 +1299,7 @@ sont répertoriées à l'annexe @ref{Music}. @seealso Manuel de notation : -@ref{La fonte Feta}, +@ref{La fonte Emmentaler}, @rusernamed{Music,Musique}, @ref{Tout savoir sur les fontes}. @@ -1413,13 +1413,13 @@ partition. La gestion des fontes est assurée par plusieurs bibliothèques : FontConfig se charge de répertorier les différentes fontes installées -sur votre système ; quant à Pango, elle se charge plus -particulièrement de leur rendu. +sur votre système ; quant à Pango, elle se charge plus particulièrement +de leur rendu. Les fontes musicales peuvent se décrire comme un jeu de glyphes spécifiques regroupés dans plusieurs familles. L'exemple qui suit montre la syntaxe à utiliser pour accéder, en mode @emph{markup}, aux -différentes fontes @code{feta} non textuelles de LilyPond. +différents glyphes @code{Feta} non textuels de LilyPond. @lilypond[quote,verbatim,fragment] a'1^\markup { @@ -1440,16 +1440,16 @@ Tous ces glyphes, à l'exception des accolades qui sont regroupées dans @ref{Notation musicale dans du texte formaté}. Une remarque s'impose au sujet des glyphes contenus dans -@code{fetaBraces} : chacun d'eux est formé du mot @emph{brace} -auquel est accolé un numéro d'ordre. Lorsque vous désirez imprimer une +@code{fetaBraces} : chacun d'eux est formé du mot @emph{brace} auquel +est accolé un numéro d'ordre. Lorsque vous désirez imprimer une accolade, vous devez la @qq{chercher} par son numéro d'ordre -- d'où la fonction @code{\lookup} de l'exemple ci-dessus --, tout en sachant qu'il est compris entre @code{0} (la plus petite) et @code{575} (la plus grande). Vous serez souvent amené à procéder par tâtonnement pour -arriver au résultat optimal. Par ailleurs, @code{fetaBraces} ne -comporte que des accolades ouvrantes. Pour obtenir une accolade -fermante, il suffit d'appliquer une rotation au glyphe sélectionné, -comme indiqué à la rubrique @ref{Rotation des objets}. +arriver au résultat optimal. Par ailleurs, @code{fetaBraces} ne comporte +que des accolades ouvrantes. Pour obtenir une accolade fermante, il +suffit d'appliquer une rotation au glyphe sélectionné, comme indiqué à +la rubrique @ref{Rotation des objets}. Vous disposez de trois familles de fontes textuelles : @itemize @@ -1515,7 +1515,7 @@ et @ref{Choix des fontes par défaut}. @seealso Manuel de notation : -@ref{La fonte Feta}, +@ref{La fonte Emmentaler}, @ref{Notation musicale dans du texte formaté}, @ref{Rotation des objets}, @ref{Sélection de la fonte et de la taille}, diff --git a/Documentation/fr/texidocs/adding-drum-parts.texidoc b/Documentation/fr/texidocs/adding-drum-parts.texidoc index a4bc8e6564..4516d59526 100644 --- a/Documentation/fr/texidocs/adding-drum-parts.texidoc +++ b/Documentation/fr/texidocs/adding-drum-parts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 08c1ead90d9f49e66ce54208639fb9ef48ca52a6 +%% Translation of GIT committish: de694eef021e3c38119b08370f79809bffc52a9b texidocfr = " Grâce à la puissance des outils préconfigurés tels que la fonction @code{\\drummode} et le contexte @code{DrumStaff}, la saisie de parties diff --git a/Documentation/fr/texidocs/aligning-and-centering-instrument-names.texidoc b/Documentation/fr/texidocs/aligning-and-centering-instrument-names.texidoc index 9ecfd5105a..265dcd8c51 100644 --- a/Documentation/fr/texidocs/aligning-and-centering-instrument-names.texidoc +++ b/Documentation/fr/texidocs/aligning-and-centering-instrument-names.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 8eae9a75fb3ec1d0b6633103c8a652608c8fa630 +%% Translation of GIT committish: de694eef021e3c38119b08370f79809bffc52a9b texidocfr = " L'alignement horizontal des noms d'instrument se gère à l'aide de la propriété @code{Staff.InstrumentName.self-alignment-X}. Les variables diff --git a/Documentation/fr/texidocs/analysis-brackets-with-labels.texidoc b/Documentation/fr/texidocs/analysis-brackets-with-labels.texidoc new file mode 100644 index 0000000000..3f361cfdeb --- /dev/null +++ b/Documentation/fr/texidocs/analysis-brackets-with-labels.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: 77267b700c377fd170abcbf4863728937038eb5e + texidocfr = " +Du texte peut venir s'ajouter aux crochets d'analyse grâce à la +propriété @code{texte} de l'objet graphique +@code{HorizontalBracketText}. Plusieurs crochets présents en un même +moment requièrent d'utiliser la commande @code{\\tweak}. Le texte +ajouté sera répété, entre parenthèse, après un saut de ligne. + +" + doctitlefr = "Crochet d'analyse avec texte" diff --git a/Documentation/fr/texidocs/clip-systems.texidoc b/Documentation/fr/texidocs/clip-systems.texidoc index 1e1f89220b..eb174d9781 100644 --- a/Documentation/fr/texidocs/clip-systems.texidoc +++ b/Documentation/fr/texidocs/clip-systems.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: f7a3d8cf31367398a1955c50d3c42216d8940989 +%% Translation of GIT committish: de694eef021e3c38119b08370f79809bffc52a9b texidocfr = " Le code ci-dessous permet de réaliser des découpes à l'emporte pièce, autrement dit d'extraire des fragments, au sein d'une partition. diff --git a/Documentation/fr/texidocs/combining-two-parts-on-the-same-staff.texidoc b/Documentation/fr/texidocs/combining-two-parts-on-the-same-staff.texidoc index 95d73dd7b8..4ef78b9f55 100644 --- a/Documentation/fr/texidocs/combining-two-parts-on-the-same-staff.texidoc +++ b/Documentation/fr/texidocs/combining-two-parts-on-the-same-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 8eae9a75fb3ec1d0b6633103c8a652608c8fa630 +%% Translation of GIT committish: de694eef021e3c38119b08370f79809bffc52a9b texidocfr = " L'outil de combinaison de parties (la commande @code{\\partcombine}) permet d'avoir deux parties différentes sur une même portée. LilyPond diff --git a/Documentation/fr/texidocs/heavily-customized-polymetric-time-signatures.texidoc b/Documentation/fr/texidocs/heavily-customized-polymetric-time-signatures.texidoc index e265670884..e3ce616bfd 100644 --- a/Documentation/fr/texidocs/heavily-customized-polymetric-time-signatures.texidoc +++ b/Documentation/fr/texidocs/heavily-customized-polymetric-time-signatures.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: c5f6541667b71037c4965b482a8161628c7cc485 +%% Translation of GIT committish: de694eef021e3c38119b08370f79809bffc52a9b texidocfr = " Bien que la métrique complexe ne soit pas l'élément primordial de cet exemple, elle permet d'indiquer la pulsation de cette pièce qui, par diff --git a/Documentation/fr/texidocs/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.texidoc b/Documentation/fr/texidocs/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.texidoc index 2f43a5cc8b..5fe191c52b 100644 --- a/Documentation/fr/texidocs/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.texidoc +++ b/Documentation/fr/texidocs/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 08c1ead90d9f49e66ce54208639fb9ef48ca52a6 +%% Translation of GIT committish: de694eef021e3c38119b08370f79809bffc52a9b texidocfr = " Certaines indications de nuance requièrent un complément textuel, comme « sempre pp ». Dans la mesure où les nuances sont habituellement diff --git a/Documentation/fr/texidocs/jazz-combo-template.texidoc b/Documentation/fr/texidocs/jazz-combo-template.texidoc index b8975344a6..a90def26ec 100644 --- a/Documentation/fr/texidocs/jazz-combo-template.texidoc +++ b/Documentation/fr/texidocs/jazz-combo-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 08c1ead90d9f49e66ce54208639fb9ef48ca52a6 +%% Translation of GIT committish: de694eef021e3c38119b08370f79809bffc52a9b texidocfr = " Bien que compliqué de prime abord, voici un canevas tout à fait indiqué pour les ensembles de jazz. Vous noterez que tous les instruments sont diff --git a/Documentation/fr/texidocs/orchestra,-choir-and-piano-template.texidoc b/Documentation/fr/texidocs/orchestra,-choir-and-piano-template.texidoc index 291c589f2f..d0a82fafe8 100644 --- a/Documentation/fr/texidocs/orchestra,-choir-and-piano-template.texidoc +++ b/Documentation/fr/texidocs/orchestra,-choir-and-piano-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: d64a2407615c09ddd8f5c34e13a3ecfdf4284f1b +%% Translation of GIT committish: de694eef021e3c38119b08370f79809bffc52a9b texidocfr = " Ce canevas illustre l'utilisation de contextes @code{StaffGroup} pour regrouper les instruments selon leur famille, imbriqués dans un diff --git a/Documentation/fr/texidocs/piano-template-simple.texidoc b/Documentation/fr/texidocs/piano-template-simple.texidoc index f2707afbe7..9023db2e0f 100644 --- a/Documentation/fr/texidocs/piano-template-simple.texidoc +++ b/Documentation/fr/texidocs/piano-template-simple.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 8eae9a75fb3ec1d0b6633103c8a652608c8fa630 +%% Translation of GIT committish: de694eef021e3c38119b08370f79809bffc52a9b texidocfr = " Voici une simple partition pour piano avec quelques notes. diff --git a/Documentation/fr/texidocs/quoting-another-voice-with-transposition.texidoc b/Documentation/fr/texidocs/quoting-another-voice-with-transposition.texidoc index 8664c89dd1..a1be4f8d73 100644 --- a/Documentation/fr/texidocs/quoting-another-voice-with-transposition.texidoc +++ b/Documentation/fr/texidocs/quoting-another-voice-with-transposition.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: c5f6541667b71037c4965b482a8161628c7cc485 +%% Translation of GIT committish: de694eef021e3c38119b08370f79809bffc52a9b texidocfr = " Les citations tiennent compte de la transposition, aussi bien celle de l'instrument d'origine que celle de la partie où elles interviennent. diff --git a/Documentation/fr/texidocs/quoting-another-voice.texidoc b/Documentation/fr/texidocs/quoting-another-voice.texidoc index 19a112385d..cdbba4dfb2 100644 --- a/Documentation/fr/texidocs/quoting-another-voice.texidoc +++ b/Documentation/fr/texidocs/quoting-another-voice.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 8eae9a75fb3ec1d0b6633103c8a652608c8fa630 +%% Translation of GIT committish: de694eef021e3c38119b08370f79809bffc52a9b texidocfr = " Les types d'événement pris en charge pour la citation sont déterminés par la propriété @code{quotedEventTypes}. Par défaut, sa valeur est fixée à diff --git a/Documentation/fr/texidocs/string-quartet-template-simple.texidoc b/Documentation/fr/texidocs/string-quartet-template-simple.texidoc index fcb0e7fd0c..b280502e8c 100644 --- a/Documentation/fr/texidocs/string-quartet-template-simple.texidoc +++ b/Documentation/fr/texidocs/string-quartet-template-simple.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 8eae9a75fb3ec1d0b6633103c8a652608c8fa630 +%% Translation of GIT committish: de694eef021e3c38119b08370f79809bffc52a9b texidocfr = " Voici un canevas pour quatuor à cordes. Notez l'utilisation de la variable @code{\\global} pour traiter la métrique et la tonalité. diff --git a/Documentation/fr/texidocs/string-quartet-template-with-separate-parts.texidoc b/Documentation/fr/texidocs/string-quartet-template-with-separate-parts.texidoc index 4de657151c..9f69d545ce 100644 --- a/Documentation/fr/texidocs/string-quartet-template-with-separate-parts.texidoc +++ b/Documentation/fr/texidocs/string-quartet-template-with-separate-parts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 8eae9a75fb3ec1d0b6633103c8a652608c8fa630 +%% Translation of GIT committish: de694eef021e3c38119b08370f79809bffc52a9b texidocfr = " Grâce à ce canevas, vous pouvez obtenir une partition d'excellente facture pour quatuor à cordes mais aussi, si le besoin s'en faisait diff --git a/Documentation/fr/texidocs/three-sided-box.texidoc b/Documentation/fr/texidocs/three-sided-box.texidoc index 12a6d1a364..61479b45d0 100644 --- a/Documentation/fr/texidocs/three-sided-box.texidoc +++ b/Documentation/fr/texidocs/three-sided-box.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 8eae9a75fb3ec1d0b6633103c8a652608c8fa630 +%% Translation of GIT committish: 77267b700c377fd170abcbf4863728937038eb5e texidocfr = " Voici comment construire une commande de @emph{markup} chargée d'agrémenter du texte ou autre annotation, d'une bordure sur trois diff --git a/Documentation/fr/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc b/Documentation/fr/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc index acc95d0525..ef532e57bf 100644 --- a/Documentation/fr/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc +++ b/Documentation/fr/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 3ad118d6062153701ab613c1b3855911c45214d3 +%% Translation of GIT committish: 64c8064154e24ff2a07e553ecdbda409f1726487 texidocfr = " Cet exemple, grâce à un peu de code Scheme, donne la priorité aux enharmoniques afin de limiter le nombre d'altérations supplémentaires. diff --git a/Documentation/fr/translations.itexi b/Documentation/fr/translations.itexi index 9b7af8db23..070c6d89cf 100644 --- a/Documentation/fr/translations.itexi +++ b/Documentation/fr/translations.itexi @@ -16,19 +16,85 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Last updated Sun Nov 6 09:35:15 UTC 2016 +@emph{Dernière mise à jour Sat Jun 24 12:50:41 UTC 2017 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 +@headitem +LilyPond Changes +@tab Traducteurs +@tab Relecteurs +@tab Traduit +@tab À jour +@tab Autres informations +@item +Titre des chapitres +@* +2784 +@tab Jean-Charles Malahieude +@tab +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui +@end ifnothtml +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui +@end ifnothtml +@tab pré-GDP +@item +LilyPond --- \TITLE\ +@* +1139 +@tab Jean-Charles Malahieude +@tab +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui +@end ifnothtml +@tab +@ifhtml + +@html +oui +@end html +@end ifhtml +@ifnothtml +oui +@end ifnothtml +@tab pré-GDP +@end multitable + + +@multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 + @headitem Essai sur la gravure musicale automatisée -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traducteurs +@tab Relecteurs +@tab Traduit +@tab À jour +@tab Autres informations @item -Section titles +Titre des chapitres @* 92 @tab Jean-Charles Malahieude @@ -37,23 +103,23 @@ Section titles @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item LilyPond --- \TITLE\ @* @@ -64,23 +130,23 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 1 La gravure musicale @* @@ -95,23 +161,23 @@ Gauvain Pocentek @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2 Références bibliographiques @* @@ -124,23 +190,23 @@ Valentin Villenave @ifhtml @html -partially (93 %) +partiellement (93 %) @end html @end ifhtml @ifnothtml -partially (93 %) +partiellement (93 %) @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @end multitable @@ -148,13 +214,13 @@ yes @headitem GNU LilyPond -- Extension des fonctionnalités -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traducteurs +@tab Relecteurs +@tab Traduit +@tab À jour +@tab Autres informations @item -Section titles +Titre des chapitres @* 107 @tab Jean-Charles Malahieude @@ -163,23 +229,23 @@ Section titles @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item LilyPond --- \TITLE\ @* @@ -190,23 +256,23 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 1 Tutoriel Scheme @* @@ -217,23 +283,23 @@ yes @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2 Interfaces pour programmeurs @* @@ -246,23 +312,23 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @end multitable @@ -270,13 +336,13 @@ yes @headitem GNU LilyPond -- Manuel d'initiation -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traducteurs +@tab Relecteurs +@tab Traduit +@tab À jour +@tab Autres informations @item -Section titles +Titre des chapitres @* 124 @tab John Mandereau @@ -287,21 +353,21 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab post-GDP @item @@ -316,23 +382,23 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 1 Tutoriel @* @@ -351,27 +417,27 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab post-GDP @item 2 Bases de notation musicale @* -4402 +4421 @tab Nicolas Grandclaude @* Ludovic Sardain @@ -386,27 +452,27 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab post-GDP @item 3 Concepts fondamentaux @* -11119 +11240 @tab Valentin Villenave @* Jean-Charles Malahieude @@ -415,21 +481,21 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab post-GDP @item @@ -448,21 +514,21 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab post-GDP @item @@ -475,23 +541,23 @@ A Modèles @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @end multitable @@ -499,13 +565,13 @@ yes @headitem GNU LilyPond -- Manuel de notation -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traducteurs +@tab Relecteurs +@tab Traduit +@tab À jour +@tab Autres informations @item -Section titles +Titre des chapitres @* 326 @tab John Mandereau @@ -516,23 +582,23 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item LilyPond --- \TITLE\ @* @@ -545,23 +611,23 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 1 Notation musicale générale @* @@ -574,27 +640,27 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 1.1 Hauteurs @* -5272 +5413 @tab Frédéric Chiasson @* Jean-Charles Malahieude @@ -605,27 +671,27 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 1.2 Rythme @* -6822 +6853 @tab Frédéric Chiasson @* Jean-Charles Malahieude @@ -638,23 +704,23 @@ Xavier Scheuer @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 1.3 Signes d'interprétation @* @@ -669,23 +735,23 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 1.4 Répétitions et reprises @* @@ -700,27 +766,27 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 1.5 Notes simultanées @* -2920 +2979 @tab Frédéric Chiasson @* Valentin Villenave @@ -733,23 +799,23 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 1.6 Notation sur la portée @* @@ -762,54 +828,54 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 1.7 Annotations éditoriales @* -1477 +1481 @tab Jean-Charles Malahieude @tab @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 1.8 Texte @* -2755 +2754 @tab Jean-Charles Malahieude @tab Valentin Villenave @* @@ -818,23 +884,23 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2 Notation spécialisée @* @@ -847,23 +913,23 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2.1 Musique vocale @* @@ -876,23 +942,23 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2.2 Instruments utilisant des portées multiples @* @@ -907,23 +973,23 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2.3 Cordes non frettées @* @@ -938,23 +1004,23 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2.4 Instruments à cordes frettées @* @@ -965,23 +1031,23 @@ yes @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2.5 Percussions @* @@ -994,23 +1060,23 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2.6 Instruments à vent @* @@ -1025,27 +1091,27 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2.7 Notation des accords @* -1979 +1975 @tab Valentin Villenave @* Jean-Charles Malahieude @@ -1056,23 +1122,23 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2.8 Musique contemporaine @* @@ -1083,50 +1149,50 @@ yes @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2.9 Notations anciennes @* -5516 +5518 @tab Jean-Charles Malahieude @tab @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2.10 Musiques du monde @* @@ -1139,27 +1205,27 @@ Valentin Villenave @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 3 Généralités en matière d'entrée et sortie @* -12839 +12853 @tab Jean-Charles Malahieude @* Valentin Villenave @@ -1168,27 +1234,27 @@ Valentin Villenave @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 4 Gestion de l'espace @* -10911 +10982 @tab Frédéric Chiasson @* Jean-Charles Malahieude @@ -1197,27 +1263,27 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 5 Modification des réglages prédéfinis @* -15597 +17050 @tab Valentin Villenave @* Jean-Charles Malahieude @@ -1226,23 +1292,23 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item A Tables du manuel de notation @* @@ -1255,23 +1321,23 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item B Aide-mémoire @* @@ -1282,23 +1348,23 @@ B Aide-mémoire @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @end multitable @@ -1306,13 +1372,13 @@ yes @headitem GNU LilyPond -- Utilisation des programmes -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traducteurs +@tab Relecteurs +@tab Traduit +@tab À jour +@tab Autres informations @item -Section titles +Titre des chapitres @* 135 @tab John Mandereau @@ -1323,23 +1389,23 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item LilyPond --- \TITLE\ @* @@ -1352,77 +1418,77 @@ Jean-Charles Malahieude @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 1 Exécution de @command{lilypond} @* -5440 +5469 @tab Jean-Charles Malahieude @tab @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 2 Mise à jour avec @command{convert-ly} @* -1866 +2097 @tab Jean-Charles Malahieude @tab @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 3 Association musique-texte avec @command{lilypond-book} @* @@ -1433,23 +1499,23 @@ yes @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 4 Programmes externes @* @@ -1460,23 +1526,23 @@ yes @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item 5 Suggestions pour la saisie de fichiers LilyPond @* @@ -1493,23 +1559,23 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @end multitable @@ -1517,13 +1583,13 @@ yes @headitem LilyPond -- la notation musicale pour tous -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traducteurs +@tab Relecteurs +@tab Traduit +@tab À jour +@tab Autres informations @item -Section titles +Titre des chapitres @* 760 @tab John Mandereau @@ -1532,23 +1598,23 @@ Section titles @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item LilyPond --- \TITLE\ @* @@ -1559,27 +1625,27 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item Introduction @* -5814 +5793 @tab Gauvain Pocentek @* Jean-Charles Malahieude @@ -1590,23 +1656,23 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item Téléchargement @* @@ -1619,23 +1685,23 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item Manuels @* @@ -1646,27 +1712,27 @@ Manuels @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @item Communauté @* -3524 +2449 @tab Jean-Charles Malahieude @* John Mandereau @@ -1675,22 +1741,22 @@ John Mandereau @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml @tab @ifhtml @html -yes +oui @end html @end ifhtml @ifnothtml -yes +oui @end ifnothtml -@tab pre-GDP +@tab pré-GDP @end multitable diff --git a/Documentation/fr/usage/updating.itely b/Documentation/fr/usage/updating.itely index 193b56a33c..7bb958da48 100644 --- a/Documentation/fr/usage/updating.itely +++ b/Documentation/fr/usage/updating.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 88a5dbc589b0d0434f8e640467b5ab57d14dc461 + Translation of GIT committish: 3e251ec33b325f3af4adb31df9752422eb2b9f4c When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -37,6 +37,7 @@ disponibles. * Options en ligne de commande pour convert-ly:: * Problèmes d'exécution de convert-ly:: * Conversions manuelles:: +* Écriture de code supportant différentes versions:: @end menu @@ -381,3 +382,47 @@ converted. \score{} must now begin with a music expression. Anything else (particularly \header{}) must come after the music. @end verbatim + + +@node Écriture de code supportant différentes versions +@section Écriture de code supportant différentes versions +@translationof Writing code to support multiple versions + +Dans certains cas, et tout particulièrement lorsque l'on se contitue une +@emph{bibliothèque} de code, il est souhaitable de pouvoir supporter +différentes versions de LilyPond indépendamment des changements de +syntaxe. Il est possible d'y parvenir à l'aide de portions de code +englobées dans une expression conditionnelle et dont l'exécution se fera +relativement à la version utilisée de LilyPond. La fonction +@code{ly:version?} requiert un opérateur de comparaison @var{op} et une +version de référence @var{ver} sous forme de liste d'entiers jusqu'à +trois éléments. Les éléments absents sont ignorés, de telle sorte que +@code{'(2 20)} est équivalent à @emph{toute} version de la série 2.20. +On peut donc en arriver à des constructions telles que : + +@verbatim +#(cond + ((ly:version? > '(2 20)) + (ly:message "Ce code sera exécuté avec un LilyPond postérieur à 2.20")) + ((ly:version? = '(2 19 57)) + (ly:message "Ce code ne sera exécuté qu'avec LilyPond 2.19.57")) + (else (ly:message "Ceci sera exécuté pour toutes les autres versions"))) +@end verbatim + +Ceci viendra naturellement s'intégrer aux fonctions de bibliothèques +pour permettre l'utilisation de syntaxes différentes. Une comparaison +peut aussi apparaître au sein même de la musique comme ici : + +@verbatim +{ + c' d' e' f' + #(if (ly:version? = '(2 21)) + #{ \override NoteHead.color = #red #} + #{ \override NoteHead.color = #blue #}) + g' a' b' c'' +} +@end verbatim + +@strong{Note :} Cette fonction ayant été introduite avec LilyPond +2.19.57, il n'est pas possible d'établir des comparaisons avec des +versions qui lui sont antérieures. diff --git a/Documentation/fr/web/community.itexi b/Documentation/fr/web/community.itexi index 6030f8f882..4628a89427 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: 6b8cabe379e8b4b945797a4e55759c56117223d4 + Translation of GIT committish: 93be41a1622bc33a01719d1d75af3dca40d75354 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -14,6 +14,7 @@ @include included/acknowledge.itexi @include included/authors.itexi +@include included/gsoc.itexi @include included/helpus.itexi @node Communauté @@ -85,7 +86,7 @@ nous. @item @ref{Grenier} : annonces et recensement des modifications intervenues -aux cours des versions précédentes. +aux cours des versions précédentes, actualités passée, etc. @end itemize @divEnd @@ -118,6 +119,7 @@ aux cours des versions précédentes. @divClass{column-left-bottom} @subheading Discuter entre utilisateurs et demander de l'aide @c VO User Discussions and Help + @subsubheading Liste de diffusion des utilisateurs : @code{lilypond-user@@gnu.org} Cette liste de diffusion @strong{anglophone} est le lieu privilégié des @@ -193,6 +195,7 @@ intéresser d'autres utilisateurs. @end html + @subsubheading Autres langues @quotation @@ -316,13 +319,15 @@ Translation mailing list archive} @divClass{column-center-top} @subheading Exemple minimaliste@dots{} mais qu'est-ce donc que cela ? +@c VO What are @qq{Tiny examples}? Un exemple minimaliste est un bout de code duquel @strong{plus rien} ne peut être retiré. @divEnd @divClass{column-left-bottom} -@subheading Pourquoi être minimaliste ? +@subheading Pourquoi être minimaliste@tie{}? +@c VO Why create them? @divClass{keep-bullets} @itemize @@ -353,6 +358,7 @@ réellement d'un « bogue ». @divClass{column-right-bottom} @subheading Comment être minimaliste@tie{}? +@c VO How to create them? @divClass{keep-bullets} @itemize @@ -392,6 +398,7 @@ Le cas échéant, joignez une image de ce à quoi vous voulez arriver. @divClass{column-center-bottom} @subheading Jusqu'où pousser le minimalisme@tie{}? +@c VO How tiny should they be? En voici un exemple : @@ -485,6 +492,7 @@ Voici ce à quoi devrait ressembler tout signalement de bogue : @divEnd + @divClass{column-right-bottom} @subheading Étape 3 : Transmission d'un signalement de bogue @@ -526,10 +534,11 @@ liste francophone} ; nous nous chargerons de transmettre un rapport à la liste anglophone et assurerons le suivi. @end itemize - @divEnd + @divEnd + @divClass{column-center-bottom} @subheading Étape 4: Notification de prise en compte @@ -540,11 +549,14 @@ l'équipe est réduite, merci de leur laisser quelques jours avant qu'ils ne vous transmettent le numéro de référence de votre signalement une fois qu'il aura été ajouté à la base. -Vous pourrez alors, après l'avoir « marqué », y apporter vos -commentaires et être automatiquement notifié du traitement apporté à ce -bogue, dès lors que vous avez un identifiant reconnu par google. +Vous pourrez alors, après l'avoir indiqué en cliquant le symbole +« enveloppe » apparaissant en regard du titre du rapport, être +automatiquement notifié du traitement apporté à ce bogue. L'ajout de +commentaire et la souscription requièrent d'avoir un identifiant reconnu +par sourceforge. @divEnd + @divClass{column-center-bottom} @subheading Information complémentaire : indication du comportement escompté @@ -621,6 +633,7 @@ ou ambiguïté à ce sujet, avant même que les travaux soient entamés. @divEnd + @divClass{column-center-bottom} @subheading Développeurs intéressés @c VO Interested developers @@ -680,6 +693,7 @@ lecture des @ref{Manuels, manuels pour la version stable}.} @divEnd + @divClass{column-center-top} @subheading Numérotation des versions @c VO Release numbers @@ -902,11 +916,11 @@ dernière mouture est consultable sur @url{http://lilypond.org}} @docLinkPdf{Web,web,@manualDevelWebPdf-fr} @item -@docLinkSplit{Nouveautés,changes,@manualDevelChangesSplit} +@docLinkSplit{Nouveautés,changes,@manualDevelChangesSplit-fr} @tab -@docLinkBig{Nouveautés,changes,@manualDevelChangesBig} +@docLinkBig{Nouveautés,changes,@manualDevelChangesBig-fr} @tab -@docLinkPdf{Nouveautés,changes,@manualDevelChangesPdf} +@docLinkPdf{Nouveautés,changes,@manualDevelChangesPdf-fr} @item @docLinkSplit{Extension,extending,@manualDevelExtendingSplit-fr} @@ -941,217 +955,12 @@ dernière mouture est consultable sur @url{http://lilypond.org}} @unnumberedsec Google Summer of Code @translationof Google Summer of Code +@warning{Dans la mesure où les développeurs de LilyPond sont disséminés +sur la planète et que la participation au programme estival de Google +requiert l'utilisation de l'anglais, il n’est pas prévu de traduire les +paragraphes qui suivent.} -@divClass{column-center-top} -@subheading Le Google Summer of Code -@c VO What is Google Summer of Code? - -Le @uref{https://developers.google.com/open-source/gsoc/, GSoC} est un -programme global, mis en place par Google, qui rémunère des étudiants -durant la période estivale pour travailler au profit de projets -@emph{open source}. Il s'agit là d'une excellente opportunité pour des -étudiants de vivre une expérience réelle dans le développement de -logiciels et contribuer ainsi au bien de tous. Ceci permet aussi de -recruter de nouveaux contributeurs à LilyPond et motiver des étudiants -qui y participent déjà d'y être encore plus impliqués. LilyPond -participe à ce programme sous l'égide du -@uref{http://www.gnu.org/, projet GNU}. - -Nous avons eu des participants aux sessions de 2012, 2015 et 2016, et -encourageons les étudiants à candidater pour les sessions à venir. - -Si vous avez des questions à ce sujet ou avez envie d'y participer, -contactez-nous sur la liste des développeurs (voir @ref{Contact}). -@divEnd - - -@divClass{column-center-middle-color2} -@subheading Recensement de nos idées -@c VO Project Ideas List - -Voici une liste de projets que nous avons proposés aux étudiants du GSoC -et à quiconque aurait envie d'améliorer LilyPond.@* -Dernière mise à jour : novembre 2016. - -La disponibilité de tuteurs diffère selon les projets et les années. -Contactez-nous sur la liste des développeurs -- voir @ref{Contact} -- et -nous vous aiderons à trouver un mentor pour le projet qui correspond à -vos envies et aptitudes. - -Si vous avez d'autres idées de projet dans le cadre du GSoC, n'hésitez -pas à nous en faire part. Il y a bien d'autres choses à améliorer dans -LilyPond et les membres de l'équipe de développement aideront volontiers -ceux qui aimeraient s'y atteler. - -Une liste exhaustive des problèmes est disponible -@uref{http://sourceforge.net/p/lilypond/issues/list, ici}. -@divEnd - - -@divClass{column-center-middle-color3} -@subheading Amélioration de la structure interne des accords -@c VO Improve internal chord structure - -La structure interne des accords dans LilyPond n'est pas suffisamment -puissante pour tenir compte de la nomneclature des accords de jazz. -Pour l'instant, un accord comporte une fondamentale, une basse et un -renversement. Il serait souhaitable d'arriver à gérer les amalgames ou -polyaccords, qu'ils soient majeur ou mineur, etc. Seule le -développement d'une représentation interne capable de capturer l'essence -d'accords complexes permettra d'y parvenir. Cette représentation -interne une fois développée permettra par ailleurs d'améliorer le rendu -des accords nommés. - -@strong{Difficulté :} moyennement facile -@strong{Préalables :} Scheme (Guile), mais le niveau nécessaire peut -s'acquérir aisément. -@strong{Connaissances appréciées :} Théorie des accords et de leur nommage -@strong{Mentor :} Carl Sorensen -@divEnd - - -@divClass{column-center-middle-color3} -@subheading Ajout de variantes pour certains glyphes -@c VO Adding variants of font glyphs - -@divClass{keep-bullets} -@itemize - -@item -Ajout de variantes positionnables « sur une ligne » et « dans un -interligne ». - -@item -Ajout de variantes plus courtes ou plus étroites pour certains glyphes -comme les altérations. Autre exemple, dans le domaine de la notation -ancienne, avec deux variantes de la brève, l'une avec un évidement plus -important que l'autre. -@end itemize -@divEnd - -@strong{Difficulté :} facile -@strong{Préalables :} MetaFont, C++, une bonne vue pour les détails -@strong{Connaissances appréciées :} les bases de LilyPond -@strong{Mentor potentiel :} Werner Lemberg -@divEnd - - -@divClass{column-center-middle-color3} -@subheading Notes d'ornement @emph{(grace notes)} - -Résolution des problèmes de synchronisation des notes d'ornement. Les -notes d'ornement peuvent venir perturber LilyPond dans sa gestion du -temps et entraîner des effets indésirables tout particulièrement -lorsqu'elles interviennent dans une portée seulement. -Il s'agit @uref{https://sourceforge.net/p/testlilyissues/issues/34/, là} -de l'un des bogues les plus vieux et embarrassants pour LilyPond. - -@strong{Difficulté :} moyenne -@strong{Préalables :} C++, MIDI -@strong{Connaissances appréciées :} familiarité avec les arcanes de -LilyPond -@strong{Mentors potentiels :} Mike Solomon (indisponible pour le GSoc -2016), Carl Sorensen -@divEnd - - -@divClass{column-center-middle-color3} -@subheading Amélioration du positionnement par défaut des ligatures -@c VO Improve default beam positioning - -Une ligature, qu'elle soit rectiligne, passe d'une portée à l'autre, -discontinue ou coudée, devrait dépendre du contexte et des notes -adjacentes (voir -@uref{http://imslp.org/wiki/Repository_of_Music-Notation_Mistakes_%28Coulon%2C_Jean-Pierre%29, -la section 2.2 de cet article}). Dans la mesure du possible, raccourcir -le temps de calcul nécessaire à la génération des ligatures. - -@strong{Difficulté :} moyenne -@strong{Préalables :} C++, expérience dans l'écriture d'heuristiques -@strong{Connaissance appréciée :} sens de l'esthétique -@strong{Mentors potentiels :} Mike Solomon (indisponible pour le GSoc -2016), Carl Sorensen -@divEnd - - -@divClass{column-center-middle-color3} -@subheading Aide à l'amélioration du comportement lors de la compilation -@c VO Help improve compilation behavior - -Les outils d'analyse comme @emph{valgrind} pour la détection de fuites -de mémoire ou @emph{callgrind} pour le profilage du code, fournissent -des informations précieuses quant à d'éventuelles faiblesses du -code C++. Faire le ménage dans tous ces messages nous permettrait de -rejeter tout patch qui introduirait des messages superflus. - -@strong{Difficulté :} moyenne -@strong{Préalable :} C++ -@strong{Mentors potentiels :} Joe Neeman, Reinhold Kainhofer -(indisponible pour le GSoc 2016) -@divEnd - - -@divClass{column-center-middle-color3} -@subheading MusicXML - -Amélioration des fonctionnalités d'import et d'export : - -@divClass{keep-bullets} -@itemize - -@item -L'exportation d'un minimum d'informations musicales tel que cela se -pratique déjà au niveau du MIDI, autrement dit à l'aide de classes -d'exportateurs dérivées de la classe @emph{translator} ; - -@item -Construction de l'arborescence XML d'après le contenu musical de base, et -connexion des éléments musicaux à des balises XML ; - -@item -Faire en sorte que tous les graveurs LilyPond restent pleinement -opérationnels ; - -@item -Ajout d'une capacité de lier tout objet de rendu -- autrement dit chaque -stencil ou groupe de stencils -- à l'élément musical qui en est la -cause et, par voie de conséquence, à la balise correspondante dans -l'arborescence XML ; - -@item -Ajout d'un moteur de rendu XML qui pourrait alors inclure l'information -de mise en forme pour tout objet de rendu dans les balises XML. - -@end itemize -@divEnd - -@strong{Difficulté :} moyenne -@strong{Préalables :} MusicXML, Python, Scheme, les bases de LilyPond -@strong{Mentors potentiels :} Reinhold Kainhofer, Mike Solomon (tous -deux indisponibles pour le GSoc 2016) - -La connaissance d'autres éditeurs de partition, dans un but de tests -comparatifs, constituerait une aide. - -@divEnd - - -@divClass{column-center-middle-color3} -@subheading Amélioration des liaisons - -Le galbe par défaut des liaisons n'est souvent pas pleinement -satisfaisant. La « coupure » d'une liaison par un changement de clef ou -de ligne n'est pas totalement fonctionnelle. Ce projet comporte entre -autres un recensement d'exemples de résultats défectueux, l'appréciation -du résultat optimal et l'écriture du code approprié. - -@strong{Difficulté :} difficile -@strong{Préalables :} C++, expérience dans l'écriture d'heuristiques -@strong{Connaissances appréciées :} LilyPond, sens de l'esthétique -@strong{Mentor potentiel :} Mike Solomon, Janek Warchoł (tous deux -indisponibles pour le GSoc 2016) -@divEnd - +@gsocCurrent @node Auteurs @@ -1240,7 +1049,6 @@ indisponibles pour le GSoc 2016) @divEnd - @node Remerciements @unnumberedsec Remerciements @@ -1285,14 +1093,15 @@ indisponibles pour le GSoc 2016) @unnumberedsec Actualités @translationof News -@divClass{heading-center} -@warning{Les vieilles annonces et informations de version sont rangées au -@rwebnamed{Grenier,grenier}.} -@divEnd +@include web/news-new.itexi -@include web/news-front.itexi +@divClass{column-center-bottom} +@subheading Actualités passées + +Les vieilles annonces et informations de version sont rangées au +@rwebnamed{Grenier,grenier}. -@include web/news.itexi +@divEnd @node Grenier @@ -1333,7 +1142,7 @@ Liste descriptive des évolutions, par version : @divEnd -@divClass{column-center-bottom} +@divClass{column-center-middle-color3} @subheading Remerciements Tous nos remerciements aux développeurs, contributeurs, chasseurs @@ -1351,7 +1160,7 @@ de bogue et à ceux qui nous ont fait part de leurs suggestions pour @divEnd -@divClass{column-center-bottom} +@divClass{column-center-middle-color3} @subheading Journal des modifications Notes des développeurs, par version : @@ -1369,3 +1178,23 @@ Notes des développeurs, par version : @miscLink{CHANGES-0.0,v0.0} @divEnd + + +@divClass{column-center-middle-color2 bigger-subsubheadings} +@subheading Suggestions en suspend pour le Google Summer of Code +@c VO Inactive Google Summer of Code project suggestions + +@gsocInactive +@divEnd + + +@divClass{column-center-middle-color2} +@subheading Actualités passées +@c VO Old News + +Actualités jusqu'à juillet 2003. Les actualités plus récentes se +trouvent à la page @ref{Actualités}. + +@divEnd + +@include web/news-old.itexi diff --git a/Documentation/fr/web/introduction.itexi b/Documentation/fr/web/introduction.itexi index e11e8234c2..a9f16e1275 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: 0628cc44250b21d422b21890a7f266cd4b5ca584 + Translation of GIT committish: 721cbad0a8fa77d545bde7237dfc9aff3e5c6e2c When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -370,6 +370,7 @@ basique de gravure avec LilyPond. @exampleImage{bach-bwv610} @divEnd + @divClass{column-center-middle-color2} @subheading Notation complexe @@ -381,6 +382,7 @@ lignes de suivi de voix. @exampleImage{granados} @divEnd + @divClass{column-center-middle-color2} @subheading Musique ancienne @@ -388,7 +390,8 @@ LilyPond prend également en charge plusieurs types de notation ancienne, en particulier grégorienne comme le montre cet exemple. @exampleImage{ancient-headword} -@newsEnd +@divEnd + @divClass{column-center-middle-color2} @subheading Musique moderne @@ -419,6 +422,7 @@ vocales, et une partie de violon. @divEnd + @divClass{column-center-middle-color2} @subheading Tablature @@ -430,28 +434,6 @@ LilyPond en fonction des hauteurs des notes. @exampleImage{tab-example} @divEnd -@divClass{column-center-middle-color2} -@subheading Diagrammes de Schenker - -La notation musicale standard peut être grandement personnalisée, au -point de créer un diagramme d'analyse schenkérienne comme celui-ci, créé -par Kris Schaffer pour un article du -@uref{http://www.linuxjournal.com/article/8364 , Linux Journal}. Les -couleurs ont été ajoutés pour plus de visibilité. - -@exampleImage{bach-schenker} -@divEnd - -@divClass{column-center-middle-color2} -@subheading Sortie personnalisée -@c VO Customized Output - -Ce court extrait du Klavierstück II de Stockhausen illustre les -possibilités dont LilyPond dispose en matière de personnalisation d'une -partition. - -@exampleImage{Stockhausen_Klavierstueck2} -@divEnd @divClass{column-center-middle-color2} @subheading Musique vocale @@ -468,6 +450,19 @@ ligature sur certains groupes de notes. @exampleImage{aucun-snippet} @divEnd + +@divClass{column-center-middle-color2} +@subheading Feuille de chant + +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 + + @divClass{column-center-middle-color2} @subheading Applications pédagogiques @@ -477,17 +472,32 @@ pédagogiques. Voici par exemple un exercice de contrepoint. @exampleImage{theory} @divEnd + @divClass{column-center-middle-color2} -@subheading Feuille de chant +@subheading Diagrammes de Schenker -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. +La notation musicale standard peut être grandement personnalisée, au +point de créer un diagramme d'analyse schenkérienne comme celui-ci, créé +par Kris Schaffer pour un article du +@uref{http://www.linuxjournal.com/article/8364 , Linux Journal}. Les +couleurs ont été ajoutés pour plus de visibilité. -@exampleImage{chart} +@exampleImage{bach-schenker} @divEnd + +@divClass{column-center-middle-color2} +@subheading Sortie personnalisée +@c VO Customized Output + +Ce court extrait du Klavierstück II de Stockhausen illustre les +possibilités dont LilyPond dispose en matière de personnalisation d'une +partition. + +@exampleImage{Stockhausen_Klavierstueck2} +@divEnd + + @divClass{column-center-middle-color2} @subheading Grands projets @@ -1013,7 +1023,7 @@ Schirmer en vue de les publier. J'en mettrais ma main à couper que leur @divClass{testimonial-item} @imageFloat{orm-finnendahl,jpg, left} -@subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, professeur de composition, Musikhochschule Freiburg +@subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, professeur de composition, Hochschule für Musik und Darstellende Kunst, Francfort sur le Main @qq{Bien que ma maîtrise [de LilyPond] soit pour l'instant imparfaite, je suis néanmoins @emph{très} impressionné. J'ai utilisé ce programme @@ -1373,15 +1383,6 @@ la vue graphique et toute erreur de syntaxe dans votre code sera mise en LilyBin vous permet de saisir en ligne vos partitions sans avoir préalablement installé LilyPond sur votre oridnateur. - -@subsubheading Tunefl - -@uref{http://www.tunefl.com} - -tunefl vous permet de saisir en ligne vos mini-partitions sans avoir -préalablement installé LilyPond sur votre oridnateur. Vous pouvez ainsi -tester toutes les fonctionnalités du programme dans une interface web. - @divEnd @divClass{column-center-top} @@ -1395,12 +1396,11 @@ tester toutes les fonctionnalités du programme dans une interface web. @sourceimage{logo-macosx,,,} @sourceimage{logo-windows,,,} -@uref{http://elysium.thsoft.hu} +@uref{https://github.com/thSoft/elysium} -Elysium est un environnement de développement intégré pour Eclipse, qui -dispose d'une vue en parallèle de la source et de la partition. Il -propose un rendu visuel et auditif sans changer de contexte et dispose -de nombreux canevas. +Elysium est un environnement qui permet d'éditer des fichiers LilyPond +dans Eclipse. Il dispose d'une variété d'outils qui permet de gérer +commodément LilyPond. @divEnd @@ -1444,7 +1444,7 @@ chapitre @rprogram{LilyPond et les éditeurs de texte}. @sourceimage{logo-macosx,,,} @subsubheading TeXShop -@uref{http://www.uoregon.edu/~koch/texshop} +@uref{http://pages.uoregon.edu/koch/texshop/} L'éditeur TexShop pour MacOS X peut être muni d'une extension pour lancer LilyPond, @command{lilypond-book} et @command{convert-ly}, @@ -1530,8 +1530,8 @@ d'interpréteurs, et dispose d'un portage en C++. @item @uref{http://strasheela.sourceforge.net/strasheela/doc/index.html,Strasheela} -est un système de composition musicale basé sur le projet -@uref{http://www.mozart-oz.org/, Mozart/Oz}. +est un système de composition musicale basé sur le +@uref{http://mozart.github.io/, Le système de progammation Mozart}. @end itemize @divEnd @@ -1566,7 +1566,7 @@ exporte dans une certaine mesure au format LilyPond. @item @uref{https://sourceforge.net/projects/noteedit.berlios/,NoteEdit}, qui importait -@uref{http://www.makemusic.com/musicxml, MusicXML}, s'est scindé en +@uref{http://www.musicxml.com/, MusicXML}, s'est scindé en @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd} et @uref{http://canorus.org,Canorus}. @@ -1581,6 +1581,13 @@ la version 4. @uref{http://launchpad.net/rumor/,Rumor}, un convertisseur monophonique temps-réel MIDI vers LilyPond. +@item + +@uref{http://www.tunefl.com, tunefl} vous permet de saisir en ligne vos +mini-partitions sans avoir préalablement installé LilyPond sur votre +oridnateur. Vous pouvez ainsi tester toutes les fonctionnalités du +programme dans une interface web. + @item @uref{http://www.tuxguitar.com.ar/,TuxGuitar} est un éditeur de tablatures multi-pistes. Il permet d'afficher tablatures et partitions, diff --git a/Documentation/fr/web/manuals.itexi b/Documentation/fr/web/manuals.itexi index 3beb175ce1..fc385f7303 100644 --- a/Documentation/fr/web/manuals.itexi +++ b/Documentation/fr/web/manuals.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: ef9512388b15e1e5e2b3592299ffe489ac43abb4 + Translation of GIT committish: 45d5c47caba98ccd97dadbc44234c8de1f3570ab When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -105,7 +105,7 @@ courts extraits, trucs, modèles et autres exemples. la Foire Aux Questions. @item -@ref{Web} : +@ref{Top, Web} : ce document. @details{Web} @@ -451,9 +451,9 @@ rapports de bogues et le développement. @docLinks{Web, web, @ref{Top,Web}, - @manualStableWebSplit-fr, - @manualStableWebBig-fr, @w{2,5 MB}, - @manualStableWebPdf-fr, @w{3,5 MB}} + @manualDevelWebSplit-fr, + @manualDevelWebBig-fr, @w{2,5 MB}, + @manualDevelWebPdf-fr, @w{3,5 MB}} @divEnd @@ -488,8 +488,8 @@ nouvelles fonctionnalités de LilyPond depuis la dernière version stable. @divClass{column-left-top} @subheading Extension des fonctionnalités de LilyPond -Ce manuel vous donnera des pistes en matière de programmation -avancée d’ajustements et retouches dans LilyPond. +Ce manuel vous donnera des pistes en matière de programmation avancée +d’ajustements et retouches dans LilyPond. @divEnd diff --git a/Documentation/hu/learning/templates.itely b/Documentation/hu/learning/templates.itely index 7041334a8d..da905502cd 100644 --- a/Documentation/hu/learning/templates.itely +++ b/Documentation/hu/learning/templates.itely @@ -14,7 +14,6 @@ @node Sablonok @appendix Sablonok @translationof Templates -@translationof Templates @untranslated @@ -33,7 +32,6 @@ @node Egy kottasor @appendixsec Egy kottasor @translationof Single staff -@translationof Single staff @untranslated @@ -45,7 +43,6 @@ @node Zongorasablonok @appendixsec Zongorasablonok @translationof Piano templates -@translationof Piano templates @untranslated @@ -57,7 +54,6 @@ @node Vonósnégyes @appendixsec Vonósnégyes @translationof String quartet -@translationof String quartet @untranslated @@ -67,7 +63,6 @@ @node Kórus @appendixsec Kórus @translationof Vocal ensembles -@translationof Vocal ensembles @untranslated @@ -78,7 +73,6 @@ @node Zenekari sablonok @appendixsec Zenekari sablonok @translationof Orchestral templates -@translationof Orchestral templates @untranslated @@ -88,7 +82,6 @@ @node Sablonok régizenéhez @appendixsec Sablonok régizenéhez @translationof Ancient notation templates -@translationof Ancient notation templates @untranslated @@ -98,7 +91,6 @@ @node Egyéb sablonok @appendixsec Egyéb sablonok @translationof Other templates -@translationof Other templates @untranslated diff --git a/Documentation/hu/learning/tweaks.itely b/Documentation/hu/learning/tweaks.itely index 8f0dae8fb2..323092a5aa 100644 --- a/Documentation/hu/learning/tweaks.itely +++ b/Documentation/hu/learning/tweaks.itely @@ -14,7 +14,6 @@ @node A kimenet finomhangolása @chapter A kimenet finomhangolása @translationof Tweaking output -@translationof Tweaking output @untranslated @@ -31,7 +30,6 @@ @node A finomhangolás alapjai @section A finomhangolás alapjai @translationof Tweaking basics -@translationof Tweaking basics @untranslated @@ -46,7 +44,6 @@ @node Bevezetés a finomhangolásba @subsection Bevezetés a finomhangolásba @translationof Introduction to tweaks -@translationof Introduction to tweaks @untranslated @@ -55,7 +52,6 @@ @node Objektumok és interfészek @subsection Objektumok és interfészek @translationof Objects and interfaces -@translationof Objects and interfaces @untranslated @@ -73,7 +69,6 @@ @node Objektumok és tulajdonságok elnevezési konvenciói @subsection Objektumok és tulajdonságok elnevezési konvenciói @translationof Naming conventions of objects and properties -@translationof Naming conventions of objects and properties @untranslated @@ -86,7 +81,6 @@ @node Finomhangolási módszerek @subsection Finomhangolási módszerek @translationof Tweaking methods -@translationof Tweaking methods @untranslated @@ -136,7 +130,6 @@ @node A belső működés referenciája @section A belső működés referenciája @translationof The Internals Reference manual -@translationof The Internals Reference manual @untranslated @@ -151,7 +144,6 @@ @node Elrendezési objektumok tulajdonságai @subsection Elrendezési objektumok tulajdonságai @translationof Properties of layout objects -@translationof Properties of layout objects @untranslated @@ -189,7 +181,6 @@ @node Interfészek tulajdonságai @subsection Interfészek tulajdonságai @translationof Properties found in interfaces -@translationof Properties found in interfaces @untranslated @@ -214,7 +205,6 @@ @node Tulajdonságok típusai @subsection Tulajdonságok típusai @translationof Types of properties -@translationof Types of properties @untranslated @@ -225,7 +215,6 @@ @node Objektumok megjelenése @section Objektumok megjelenése @translationof Appearance of objects -@translationof Appearance of objects @untranslated @@ -239,7 +228,6 @@ @node Objektumok láthatósága és színe @subsection Objektumok láthatósága és színe @translationof Visibility and color of objects -@translationof Visibility and color of objects @untranslated @@ -292,7 +280,6 @@ @node Objektumok mérete @subsection Objektumok mérete @translationof Size of objects -@translationof Size of objects @untranslated @@ -323,7 +310,6 @@ @node Objektumok hossza és vastagsága @subsection Objektumok hossza és vastagsága @translationof Length and thickness of objects -@translationof Length and thickness of objects @untranslated @@ -351,7 +337,6 @@ @node Objektumok elhelyezése @section Objektumok elhelyezése @translationof Placement of objects -@translationof Placement of objects @untranslated @@ -365,7 +350,6 @@ @node Automatikus viselkedés @subsection Automatikus viselkedés @translationof Automatic behavior -@translationof Automatic behavior @untranslated @@ -382,7 +366,6 @@ @node Vonalrendszeren belüli objektumok @subsection Vonalrendszeren belüli objektumok @translationof Within-staff objects -@translationof Within-staff objects @untranslated @@ -417,7 +400,6 @@ @node Vonalrendszeren kívüli objektumok @subsection Vonalrendszeren kívüli objektumok @translationof Outside-staff objects -@translationof Outside-staff objects @untranslated @@ -473,7 +455,6 @@ @node Objektumok ütközése @section Objektumok ütközése @translationof Collisions of objects -@translationof Collisions of objects @untranslated @@ -487,7 +468,6 @@ @node Objektumok mozgatása @subsection Objektumok mozgatása @translationof Moving objects -@translationof Moving objects @untranslated @@ -529,7 +509,6 @@ @node Egymást átfedő jelek javítása @subsection Egymást átfedő jelek javítása @translationof Fixing overlapping notation -@translationof Fixing overlapping notation @untranslated @@ -594,7 +573,6 @@ @node Valós zenei példa @subsection Valós zenei példa @translationof Real music example -@translationof Real music example @untranslated @@ -619,7 +597,6 @@ @node További finomhangolás @section További finomhangolás @translationof Further tweaking -@translationof Further tweaking @untranslated @@ -636,7 +613,6 @@ @node A finomhangolás más felhasználási módjai @subsection A finomhangolás más felhasználási módjai @translationof Other uses for tweaks -@translationof Other uses for tweaks @untranslated @@ -664,7 +640,6 @@ @node Változók felhasználása a finomhangoláshoz @subsection Változók felhasználása a finomhangoláshoz @translationof Using variables for tweaks -@translationof Using variables for tweaks @untranslated @@ -682,7 +657,6 @@ @node Stíluslapok @subsection Stíluslapok @translationof Style sheets -@translationof Style sheets @untranslated @@ -696,7 +670,6 @@ @node További információforrások @subsection További információforrások @translationof Other sources of information -@translationof Other sources of information @untranslated @@ -704,7 +677,6 @@ @node A lassabban feldolgozható finomhangolások elkerülése @subsection A lassabban feldolgozható finomhangolások elkerülése @translationof Avoiding tweaks with slower processing -@translationof Avoiding tweaks with slower processing @untranslated @@ -712,7 +684,6 @@ @node Haladó finomhangolás Scheme-mel @subsection Haladó finomhangolás Scheme-mel @translationof Advanced tweaks with Scheme -@translationof Advanced tweaks with Scheme @untranslated diff --git a/Documentation/hu/macros.itexi b/Documentation/hu/macros.itexi index 44c61911bd..bab43520ae 100644 --- a/Documentation/hu/macros.itexi +++ b/Documentation/hu/macros.itexi @@ -71,7 +71,7 @@ translations should be in macros.itexi. @macro docMain @cartouche -A teljes dokumentáció a @w{@uref{http://@/www@/.lilypond@/.org/}} honlapon +A teljes dokumentáció a @w{@uref{http://@/lilypond@/.org/}} honlapon található. @end cartouche @end macro diff --git a/Documentation/hu/translations.itexi b/Documentation/hu/translations.itexi index c69a2bd945..5be9a8b71d 100644 --- a/Documentation/hu/translations.itexi +++ b/Documentation/hu/translations.itexi @@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Last updated Sun Nov 6 09:35:15 UTC 2016 +@emph{Last updated Sat Jun 24 12:50:41 UTC 2017 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -239,7 +239,7 @@ partially @item 2 Elemi kottaírás @* -4402 +4421 @tab Harmath Dénes @tab @tab @@ -266,7 +266,7 @@ partially @item 3 Alapfogalmak @* -11119 +11240 @tab Griechisch Erika @* Harmath Dénes @@ -285,7 +285,7 @@ yes @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -415,7 +415,7 @@ partially @item 1 A @command{lilypond} használata @* -5440 +5469 @tab Harmath Dénes @tab @tab @@ -442,24 +442,24 @@ partially @item 2 A @command{convert-ly} használata @* -1866 +2097 @tab Harmath Dénes @tab @tab @ifhtml @html -yes +partially (89 %) @end html @end ifhtml @ifnothtml -yes +partially (89 %) @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -562,7 +562,7 @@ partially @item Bevezetés @* -5814 +5793 @tab Harmath Dénes @tab @tab @@ -579,7 +579,7 @@ yes @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -643,24 +643,24 @@ partially @item Közösség @* -3524 +2449 @tab Harmath Dénes @tab @tab @ifhtml @html -partially (95 %) +partially (92 %) @end html @end ifhtml @ifnothtml -partially (95 %) +partially (92 %) @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml diff --git a/Documentation/hu/web.texi b/Documentation/hu/web.texi index ecaed1592f..a8bc44d41d 100644 --- a/Documentation/hu/web.texi +++ b/Documentation/hu/web.texi @@ -138,7 +138,7 @@ Ha többet akarsz róla megtudni, olvasd el a @ref{Bevezetés}t! @divId{news} @c TODO: generate this automatically, including RSS feed. -@include web/news-front.itexi +@include web/news-headlines.itexi @divClass{float-right} (@ref{Hírarchívum}) diff --git a/Documentation/hu/web/community.itexi b/Documentation/hu/web/community.itexi index 5b897bfd44..56d3dedeeb 100644 --- a/Documentation/hu/web/community.itexi +++ b/Documentation/hu/web/community.itexi @@ -60,6 +60,9 @@ LilyPond mára azzá legyen, ami. @item @ref{Publikációk}: Írások, amiket mi írtunk, vagy rólunk írtak. +@item +@ref{Hírek}: Hírek a LilyPond háza tájáról. + @item @ref{Hírarchívum}: A régebbi hírek archívuma. @@ -76,6 +79,7 @@ LilyPond mára azzá legyen, ami. * Fejlesztés:: * Készítők:: * Publikációk:: +* Hírek:: * Hírarchívum:: @end menu @divEnd @@ -960,11 +964,85 @@ Computer Music Special} CMS06 száma) @divEnd @divEnd +@node Hírek +@unnumberedsec Hírek +@translationof News + +@include web/news-new.itexi + + +@divClass{heading-center} +Lásd még @ref{Hírarchívum} +@divEnd + @node Hírarchívum @unnumberedsec Hírarchívum @translationof Attic -@include web/news-front.itexi +@divClass{column-center-top} +@subheading Közlemények + +@uref{http://lilypond.org/doc/v2.16/Documentation/web/index#Lilypond-2_002e16_002e0-released_0021-August-24_002c-2012-1,v2.16}, +@uref{http://lilypond.org/doc/v2.14/Documentation/web/index#LilyPond-2_002e14_002e0-released_0021-June-6_002c-2011,v2.14}, +@miscLink{announce-v2.12,v2.12}, +@miscLink{announce-v2.10,v2.10}, +@miscLink{announce-v2.8,v2.8}, +@miscLink{announce-v2.6,v2.6}, +@miscLink{announce-v2.4,v2.4}, +@miscLink{announce-v2.2,v2.2}, +@miscLink{announce-v2.0,v2.0}, +@miscLink{ANNOUNCE-1.2,v1.2}, +@miscLink{ANNOUNCE-1.0,v1.0}, +@miscLink{ANNOUNCE-0.1,v0.1} + +@uref{http://lilypond.org/doc/v2.16/Documentation/changes/index.html,v2.16}, +@uref{http://lilypond.org/doc/v2.14/Documentation/changes/index.html,v2.14}, +@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS,v2.12}, +@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS,v2.10}, +@uref{http://lilypond.org/doc/v2.8/Documentation/topdocs/NEWS,v2.8}, +@uref{http://lilypond.org/doc/v2.6/Documentation/topdocs/NEWS,v2.6}, +@uref{http://lilypond.org/doc/v2.4/Documentation/topdocs/out-www/NEWS,v2.4}, +@uref{http://lilypond.org/doc/v2.2/Documentation/topdocs/out-www/NEWS,v2.2}, +@uref{http://lilypond.org/doc/v2.0/Documentation/topdocs/out-www/NEWS,v2.0}, +@uref{http://lilypond.org/doc/v1.8/Documentation/topdocs/out-www/NEWS,v1.8}, +@uref{http://lilypond.org/doc/v1.6/Documentation/out-www/NEWS,v1.6}, +@miscLink{NEWS-1.4,v1.4}, +@miscLink{NEWS-1.2,v1.2} + +@divEnd + +@subheading Köszönetnyilvánítás + +@miscLink{THANKS-2.16,v2.16}, +@miscLink{THANKS-2.14,v2.14}, +@miscLink{THANKS-2.12,v2.12}, +@miscLink{THANKS-2.10,v2.10}, +@miscLink{THANKS-2.8,v2.8}, +@miscLink{THANKS-2.6,v2.6}, +@miscLink{THANKS-2.4,v2.4}, +@miscLink{THANKS-2.2,v2.2}, +@miscLink{THANKS-2.0,v2.0}, +@miscLink{THANKS-1.8,v1.8} + +@divEnd + +@divClass{column-center-bottom} +@subheading Változások listája + +@miscLink{ChangeLog-2.10,v2.10}, +@miscLink{ChangeLog-2.3,v2.3}, +@miscLink{ChangeLog-2.1,v2.1}, +@miscLink{ChangeLog-1.5,v1.5 (1)}, +@miscLink{CHANGES-1.5,v1.5 (2)}, +@miscLink{CHANGES-1.4,v1.4}, +@miscLink{CHANGES-1.3,v1.3}, +@miscLink{CHANGES-1.2,v1.2}, +@miscLink{CHANGES-1.1,v1.1}, +@miscLink{CHANGES-1.0,v1.0}, +@miscLink{CHANGES-0.1,v0.1}, +@miscLink{CHANGES-0.0,v0.0} + +@divEnd -@include web/news.itexi +@include web/news-old.itexi diff --git a/Documentation/included/authors.itexi b/Documentation/included/authors.itexi index 360646c471..f8745daa02 100644 --- a/Documentation/included/authors.itexi +++ b/Documentation/included/authors.itexi @@ -171,6 +171,7 @@ Core developer, Schemer extraordinaire @c use commas not colons Guido Aulisi, +Joe Austin, Federico Bruni, Nathan Chou, Dan Eble, @@ -179,6 +180,7 @@ Marc Hohl, Masamichi Hosoda, Mark Knoop, Tobias Kretschmar, +Vincent Le Ligeour, James Lowe, Thomas Morley, Paul Morris, @@ -187,6 +189,7 @@ Keith OHara, Benkő Pál, Knut Petersen, Julien Rioux, +Ben Rudiak-Gould, Devon Schudy, Heikki Tauriainen @@ -200,6 +203,7 @@ Heikki Tauriainen @c use commas not colons +Jay Anderson, Masamichi Hosoda, Abraham Lee @@ -214,6 +218,7 @@ Abraham Lee @c use commas not colons +Simon Albrecht, Frédéric Bron, Federico Bruni, Colin Campbell, @@ -286,9 +291,11 @@ Walter Garcia-Fontes, Tommaso Gordini, Erika Griechisch, Denes Harmath, +Masamichi Hosoda, Jean-Charles Malahieude, Till Paala, Yoshiki Sawada, +Tomohiro Tatejima, Paco Tomillo @c no comma for last entry diff --git a/Documentation/included/gsoc.itexi b/Documentation/included/gsoc.itexi new file mode 100644 index 0000000000..3a0a36b719 --- /dev/null +++ b/Documentation/included/gsoc.itexi @@ -0,0 +1,375 @@ +@c -*- coding: utf-8; mode: texinfo; -*- +@c This file is part of community.itexi +@c It's been moved here to reduce maintenance burden on translators. It's up +@c to translators the choice of translating this section of community.itexi or +@c not (as GSoC students are required to speak english, a translated page is +@c not needed). + +@c Current proposals for Google Summer of Code +@macro gsocCurrent + +@divClass{column-center-top} +@subheading What is Google Summer of Code? + +@uref{https://summerofcode.withgoogle.com/, GSoC} is a global program +that offers students stipends to write code for free software and open +source projects during the summer. For three months students work to +complete a given task as part of the project's community and under the +guidance of experienced mentors. The program is an excellent +opportunity for students to gain experience with real-world software +development and make a contribution that benefits everyone. It brings +new contributors to LilyPond and enables students who are already +involved to become more involved. LilyPond participates in GSoC as part +of the @uref{http://www.gnu.org/, GNU project}. + +We have had GSoC participants in 2012, 2015, 2016 and 2017. This site +will be updated in time before the 2018 season will start. + +@divEnd + +@divClass{column-center-middle-color2 bigger-subsubheadings} +@subheading Project Ideas List + +Below is a list of GSoC project ideas (last update: May 2017), but +if you have other ideas for a project you may complete within the three +months of the program you're welcome to make a suggestion on our +developer mailing list (see @ref{Contact}). There are a number of areas +where LilyPond could be improved, and our development team is always +willing to help those who would like to tackle a project similar to +those listed below. As mentor availability varies from project to +project and from year to year it is wise to get in touch with us as +early as possible. + +A full list of all the current open issues can be found +@uref{http://sourceforge.net/p/testlilyissues/issues/, here}. + + +@subsubheading Adopt the SMuFL music font encoding standard + +For several years now a new standard for music fonts has been around: +@uref{http://www.smufl.org/, SMuFL}, which is also discussed as becoming part of +a future W3C standard for music encoding. As a FLOSS tool LilyPond should +adhere to such an open standard instead of using an isolated solution like it +does today. Adopting SMuFL will help integrating LilyPond with the world of +music notation software and eventually give LilyPond users access to a wider +selection of notation fonts. + +Making LilyPond compliant to SMuFL includes remapping of the glyphs that are +built from METAFONT sources, adjusting the glyphs' metrics to SMuFL's +specifications, and finally updating the way LilyPond looks up and positions the +glyphs. As an optional part of this project LilyPond's font loading mechanism +could be modified to use notation fonts installed as system fonts instead of +inside the LilyPond installation. + +@emph{Difficulty}: Easy/medium + +@emph{Requirements}: C++ and willingness to get familiar with LilyPond +internals. + +@emph{Recommended}: Interest and experience in working with font files. +A little bit of METAFONT. + +@emph{Mentors}: Werner Lemberg, Abraham Lee + + +@subsubheading Adding variants of font glyphs + +@divClass{keep-bullets} +@itemize + +@item +Adding @q{on} and @q{between} staff-line variants. + +@item +Shorter and narrower variants of some glyphs for example, accidentals. +Another, more specific example could be an ancient notation breve +notehead coming in two variants one with a small or big @q{hole} within +it. + +@end itemize +@divEnd + +@emph{Difficulty:} easy + +@emph{Requirements:} MetaFont, C++, good eye for details + +@emph{Recommended knowledge:} basic LilyPond knowledge + +@emph{Mentor:} Werner Lemberg + + +@subsubheading Contemporary Notation + +LilyPond is very good at creating non-standard notation. Having to +@emph{code} every graphical element instead of simply @emph{drawing} +it may seem cumbersome but is in fact a strong asset. New notational +functionality can be provided with consistent appearance, automatic +layout and a natural syntactic interface. + +Within the @uref{https://github.com/openlilylib/oll-core, openLilyLib} +library system the student will create a fundamental infrastructure +and building blocks to make creating contemporary notation easier. +Additionally (at least) @emph{one} concrete package is developed to +cover specific contemporary notation, such as for example the style +of a given composer, extended playing techniques for a specific +instrument or a certain category of effects. + +@emph{Difficulty:} medium + +@emph{Requirements:} Scheme (interaction with LilyPond internals), +contemporary notation techniques + +@emph{Recommended:} sense of building hierarchical frameworks + +@emph{Mentors:} @emph{NN,} Urs Liska + + +@subsubheading Rewrite LibreOffice LilyPond Extension with Python + +The @uref{http://ooolilypond.sourceforge.net/, OOoLilyPond} extension +made it possible to conveniently include LilyPond score snippets in +OpenOffice.org/LibreOffice Writer, Draw and Impress documents while +keeping source and image together. After many years without development +an initial effort has started to make the extension compatible again +with current versions of LibreOffice and LilyPond. + +However, as the LibreOffice ecosystem has changed substantially it is +now possible to rewrite the extension with Python and PyQt. This will +not only be more powerful in general but will allow the integration of +functionality from @uref{http://frescobaldi.org, Frescobaldi}, such as +for example syntax highlighting, entry helpers, score wizards or musical +transformations. + +@emph{Difficulty:} easy/medium + +@emph{Requirements:} Python, PyQt, LilyPond basics, LibreOffice +extension basics + +@emph{Recommended knowledge:} Familiarity with Frescobaldi code based +or willingness to learn during bonding period + +@emph{Mentor(s):} Joram Berger, Urs Liska, (Thorsten Behrens/LibreOffice) + + +@subsubheading Automated testing and documentation for openLilyLib + +@uref{https://github.com/openlilylib, openLilyLib} is an extension +framework for LilyPond code providing a “snippets” repository and a +suite of integrated packages such as for example page layout tools or +scholarly annotations. It is very powerful and promising, but to really +get off the ground two features are missing: automated testing and +documentation generation. + +Automated testing is necessary to ensure modifications to functionality +don't break other functions within the library. There is already some +Automated Testing of the “snippets” repository with Github's Travis +server, but this has to be reconsidered and extended to cover the +standalone packages too. + +In order to be usable for a wider range of LilyPond users on a “consumer +level” openLilyLib needs proper documentation. This documentation has +to be generated from the sources, so a system is needed that requires +package authors to document the input files and provide additional usage +examples, from which documentation is generated. Ideally but not +necessarily this is implemented as a Git hook, i.e. automatically upon +each update to the repository. We don't prescribe the tools and +approaches to be used, but the most widely used language in the LilyPond +domain is Python, so there would be some bias towards that. +Alternatively a Scheme solution could be fine so generating the +documentation would actually be triggered by “compiling” a certain +LilyPond input file. In general it is advisable to make use of proven +concepts and tools from other languages. + +The eventual output of the documentation should be a static HTML site +that can be viewed locally and/or uploaded to a website. But it would +be beneficial if the tool would first generate an intermediate +representation (e.g. a JSON file with additional media files) from which +a Single Page Application could retrieve content for display on +openLilyLib's @uref{https://openlilylib.org, website}. Development of +such a SPA @emph{can} be part of the GSoC project, but is optional. + +@emph{Difficulty:} medium + +@emph{Requirements:} Python or Scheme, static website generator(s) or +(Node.js based) dynamic web application technology. Continuous +Integration (can be learned during the bonding period) + +@emph{Mentors:} Urs Liska, Matteo Ceccarello + + +@subsubheading MusicXML + +Improving MusicXML import and export functions: + +File interchange between LilyPond and other applications using MusicXML +is still a difficult matter. To import MusicXML it has to be converted +manually by the @code{musicxml2ly} script. Export @emph{to} MusicXML is +only available as a rudimentary feature inside Frescobaldi. In order to +provide natural interchange between LilyPond and MusicXML based +applications there's the need of actual import functionality and a +dedicated export backend. + +Importing XML shall provide file, line and column to add origin +attributes to generated objects. That way point and click can be +made available in Frescobaldi or other supported IDEs. + +Exporting XML shall be realized with an exporter class like the MIDI +export. This may be based on the work already done in +@uref{https://github.com/DavidGarfinkle/Lilypond_MusicXMLexport, GSoC 2015} +by David Garfinkle. It should be checked if it is possible to use +another XML library than the one provided by guile-2 in order to have +this feature available in current LilyPond (which is based on guile-1.8). + +@emph{Difficulty:} medium + +@emph{Requirements:} MusicXML, Python, Scheme, basic LilyPond knowledge + +@emph{Recommended:} Familiarity with other scorewriters (for cross-testing) + +@emph{Mentor:} Jan-Peter Voigt + +@divEnd + + +@divClass{column-center-middle-color2} +@subheading Information for Applicants/Participants + +In order to have a satisfying experience with GSoC applicants are +strongly advised to thoroughly read the following recommendations. Some +of these are relevant for the application process, others for the time +within the project. + +@itemize + +@item +Read all applicable information on the program's website, particularly +the +@uref{https://developers.google.com/open-source/gsoc/resources/manual, +students' manual}. Make sure you fulfil all of Google's prerequisites +and are willing to join the program as a full-time commitment over the +coding period of three months. + +@item +Please get in touch with us as soon as possible if you are interested in +applying with a project. Mentor availability may change without notice, +project proposals may need fine-tuning, and many other reasons might +require us to reject or ignore an application that hasn't been discussed +before. + +@item +We do not know in advance how many “slots” we will have available for +projects, so please be aware that you may find yourself in competition +with other applicants or not. Interested or even enthusiastic response +from our mentors is no guarantee of eventually being accepted, and +@emph{not} being accepted does not necessarily indicate a negative +evaluation of your application. If we have to decide between different +applicants there may be various aspects to consider. + +@item +Integration in the LilyPond community is a fundamental part of GSoC, and +we expect our students to make substantial efforts to become community +members. Within the @emph{bonding period} we expect you to write a blog +post about your project (either on @uref{http://lilypondblog.org, Scores +of Beauty} or on any other blog) and to be active on our mailing lists, +introducing yourself but also communicating about unrelated tasks. This +goes beyond the mere setting up of a working environment and +familiarizing yourself with the relevant code, but we think it is +crucial for the GSoC project to be mutually satisfying. + +@item +If you are accepted to the program you will have one mentor explicitly +assigned to your project. With this mentor you will have to agree upon +a communication strategy, be it emails, chatrooms, issue trackers or +voice/video chats. Regular communication is absolutely crucial for the +success of a GSoC project so you are stricly required to keep talking to +your mentor. But keep in mind that your mentor has explicitly taken +over the responsibility for your project, and while unlike you he isn't +paid for this activity you are still entitled to get regular attention +from him. + +@item +In order to get support from your mentor you have to give him a chance +to follow your progress and efforts. Therefore it is important to +regularly commit your changes to the versioning repository you are +working on. Don't hesitate making unfinished code available because you +are afraid of criticism, and don't suppress questions because you think +they might be considered stupid. But ideally your code should at any +time be accompanied by compatible testing code. Your mentor may not be +able to properly assess your code by only @emph{reading} it without the +opportunity to apply it in a real example. + +@end itemize + +There is a list of inactive projects in the @ref{Attic}. We list +projects there that are still considered valuable but for which there +are currently no mentors available. + +@divEnd +@end macro + + +@c Inactive proposals for Google Summer of Code +@macro gsocInactive +@subheading Inactive Google Summer of Code project suggestions + +The following list describes GSoC projects that had been proposed +in recent years and which are still considered valuable but for +which we currently don't have mentors available. + + +@subsubheading Improve slurs and ties + +The engraving quality of slurs and ties is often unsatisfactory. Ties +@q{broken} by clef or staff changes are not handled well. The project +could include collecting and sorting examples of bad output, deciding on +the intended output and writing code to improve them. + +@emph{Difficulty:} hard + +@emph{Requirements:} C++, experience with writing heuristics + +@emph{Recommended knowledge:} LilyPond knowledge, aesthetic sense + + +@subsubheading Grace notes + +Fix problems with synchronization of grace notes. Grace notes can +interfere with LilyPond's timing and cause odd effects, especially when +multiple staffs are used where some have grace notes and others don't. +This is one of the longest-standing and one of the more embarrassing +@uref{https://sourceforge.net/p/testlilyissues/issues/34/,bugs} in +LilyPond. + +@emph{Difficulty:} medium + +@emph{Requirements:} C++, MIDI + +@emph{Recommended:} familiarity with LilyPond internals + + +@subsubheading Improve default beam positioning + +For regular, cross-staff, broken and kneed beams. Beaming should depend +on context and neighbor notes (see section 2.2 of +@uref{http://imslp.org/wiki/Repository_of_Music-Notation_Mistakes_%28Coulon%2C_Jean-Pierre%29, +this book}). If possible also reduce beaming-computation time. + +@emph{Difficulty:} medium + +@emph{Requirements:} C++, experience with writing heuristics + +@emph{Recommended knowledge:} aesthetic sense + + +@subsubheading Help improve compilation behavior + +Automatic code analysis tools, like valgrind memory leak detection or +callgrind code profilers, provide valuable information about possible +flaws in our C++ code. Cleaning up warnings would allow us to automate +the rejection of any patch which introduced extra warnings. + +@emph{Difficulty:} medium + +@emph{Requirements:} C++ + +@end macro diff --git a/Documentation/it/changes.tely b/Documentation/it/changes.tely index 8f4da1a3e1..12f95245ab 100644 --- a/Documentation/it/changes.tely +++ b/Documentation/it/changes.tely @@ -1,6 +1,6 @@ \input texinfo @c -*- coding: UTF-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 32839fc7052761649d3ba3512ca29373acbe880c + Translation of GIT committish: 24dd6365d3d05f13b9259f547be9b2517851a5d1 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -51,6 +51,127 @@ Vedi il manuale utente, \NAME\ @itemize +@item +È ora possibile spostare i sistemi rispetto alla loro posizione corrente +tramite @code{extra-offset}, sottoproprietà di +@code{NonMusicalPaperColumn.line-break-system-details}. Sono consentite +modifiche sia verticali che orizzontali. Questa funzionalità è utile in +particolare per fare piccoli aggiustamenti della posizione verticale +predefinita dei singoli sistemi. Maggiori informazioni in +@ruser{Posizionamento esplicito di righi e sistemi}. + +@item +È ora possibile aggiungere del testo alle parentesi per l'analisi musicale +tramite l'oggetto @code{HorizontalBracketText}. +@lilypond[quote,verbatim] +\layout { + \context { + \Voice + \consists "Horizontal_bracket_engraver" + } +} + +{ + \once \override HorizontalBracketText.text = "a" + c''\startGroup d''\stopGroup + e''-\tweak HorizontalBracketText.text "a'" \startGroup d''\stopGroup +} +@end lilypond + +@item +Le estremità delle forcelle possono ora essere aggiustate precisamente +tramite la proprietà @code{shorten-pair}, che precedentemente agiva +soltanto sugli estensori del testo, come @code{TupletBracket} e +@code{OttavaBracket}. Valori positivi spostano a destra, quelli negativi +a sinistra. +@lilypond[quote,verbatim] +{ \once \override Hairpin.shorten-pair = #'(2 . 2) + c'1~\< + c'2~ c'\! + \once \override Hairpin.shorten-pair = #'(-2 . -2) + c'1~\< + c'2~ c'\! } +@end lilypond + +@item +Nei diagrammi dei tasti la distanza tra i tasti e quella tra le corde sono +ora regolabili in modo indipendente. Sono disponibili @code{fret-distance} e +@code{string-distance} come sottoproprietà di @code{fret-diagram-details}. +@lilypond[verbatim,quote] +fretMrkp = \markup { \fret-diagram-terse #"x;x;o;2;3;2;" } + +\markuplist +\override #'(padding . 2) +\table #'(0 -1) { + "predefinito" + + \fretMrkp + + "fret-distance" + + \override #'(fret-diagram-details . ((fret-distance . 2))) + \fretMrkp + + "string-distance" + + \override #'(fret-diagram-details . ((string-distance . 2))) + \fretMrkp +} +@end lilypond + + +@item +Le regole delle alterazioni possono essere definite nei contesti @code{ChoirStaff}. +Sono disponibili due nuove regole, @code{choral} e @code{choral-cautionary}, che +combinano le caratteristiche di @code{modern-voice} e @code{piano} +o i loro equivalenti per le alterazioni di cortesia. + +@item +La funzione musicale @code{\unfoldRepeats} può ora prendere una lista di +argomenti (facoltativa) che specifica quali tipi di musica ripetuta debbano +essere ricopiati. Le opzioni possibili sono @code{percent}, @code{tremolo} e +@code{volta}. +Se la lista facoltativa non viene specificata, verrà usato @code{repeated-music}, +che ricopia tutto. + +@item +Per l'output SVG viene ora utilizzata la nuova proprietà grob @code{output-attributes} +al posto della proprietà @code{id}. Permette di definire molteplici attributi +come una lista associativa. Per esempio, @code{#'((id . 123) +(class . foo) (data-whatever . @qq{bar}))} produrrà il seguente elemento +gruppo (g) in un file SVG: @code{ @dots{} }. + +@item +Le legature di portamento e di frase possono ora iniziare da note individuali +di un accordo. Varie legature di portamento simultanee per ogni voce devono +essere distinte con l'impostazione @code{spanner-id}. + +@item +La proprietà musicale e dei grob @code{spanner-id}, usata per distinguere +legature di portamento simultanee e legature di frase, è stata modificata: +non è più una stringa, bensì una @q{key}, ovvero un numero intero non negativo +o un simbolo. + +@item +È stato aggiunto il nuovo comando @code{\=} per specificare l'identificativo +degli estensori, @code{spanner-id}, per le legature di portamento e di frase +simultanee. +@lilypond[verbatim,quote] +\fixed c' { + 2 +} +@end lilypond + +@item +I blocchi introdotti con @code{\header} possono essere salvati in variabili +e usati come argomenti di funzioni musicali e funzioni scheme e come parte +dei costrutti @code{#@{@dots{}#@}}. Sono rappresentati come un modulo Guile. + +Sebbene i blocchi @code{\book}, @code{\bookpart}, @code{\score}, @code{\with}, +@code{\layout}, @code{\midi}, @code{\paper} possano essere trasferiti in un +modo simile, sono tuttavia rappresentati da tipi di dati diversi. + @item Le liste di simboli separate da punti come @code{FretBoard.stencil} sono supportate già dalla versione@tie{}2.18. Ora possono contenere anche numeri @@ -162,11 +283,13 @@ oggetto di markup, indicato come primo argomento. @end lilypond @item -Una nuova funzione di interruzione della pagina, @code{ly:one-line-auto-height-breaking}, -posiziona l'intera partitura su una sola linea e cambia la larghezza della -pagina per contenerla, proprio come @code{ly:one-line-breaking}. Con la -differenza che modifica automaticamente anche l'altezza della pagina per -contenere tutta la musica in altezza. +Ci sono due nuove funzioni di interruzione della pagina. +@code{ly:one-page-breaking} modifica automaticamente l'altezza della +pagina per far entrare la musica, in modo che stia tutta in una pagina. +@code{ly:one-line-auto-height-breaking} è simile a @code{ly:one-line-breaking}, +perché posiziona la musica su una sola linea regolando la larghezza della +pagina, tuttavia modifica automaticamente anche l'altezza della pagina per +farci entrare la musica. @item È ora disponibile il comando markup @code{\draw-squiggle-line}. diff --git a/Documentation/it/learning/common-notation.itely b/Documentation/it/learning/common-notation.itely index ef60fdc4fd..933ac12b87 100644 --- a/Documentation/it/learning/common-notation.itely +++ b/Documentation/it/learning/common-notation.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 42cd2e57e37cbbf1fc5ccbe2bc83048761690f60 + Translation of GIT committish: 250f1bf95f84616b68932324d6b5026833080cc4 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -818,7 +818,7 @@ su un singolo rigo. @funindex Lyrics @funindex ChordNames -Come abbiamo visto in @ref{Music expressions explained}, i file di input +Come abbiamo visto in @ref{Espressioni musicali}, i file di input di LilyPond si costruiscono in base alle espressioni musicali. Se la partitura inizia con espressioni musicali simultanee, LilyPond crea più di un rigo musicale. Tuttavia, è più facile vedere quel che accade se creiamo @@ -890,7 +890,7 @@ Glossario musicale: La musica per pianoforte viene stampata su due righi musicali collegati con una @notation{graffa}. Produrre un pentagramma di questo tipo è simile all'esempio polifonico in -@ref{Multiple staves}. In questo caso, però, l'intera espressione +@ref{Righi multipli}. In questo caso, però, l'intera espressione è inserita all'interno di @code{PianoStaff}: @example @@ -990,7 +990,7 @@ a spiegarli via via. @seealso Manuale di Apprendimento: -@ref{Voices contain music}. +@ref{Le voci contengono la musica}. Guida alla notazione: @ruser{Note simultanee}. @@ -1090,7 +1090,7 @@ alle note. La parola @notation{shine} dovrebbe essere cantata su due note, non una. Questo si chiama @notation{melisma}, una singola sillaba che viene cantata per più di una nota. Ci sono molti modi per estendere una sillaba su molteplici note, e il più semplice è aggiungere una legatura di portamento -che le colleghi, per i dettagli si veda @ref{Ties and slurs}: +che le colleghi, per i dettagli si veda @ref{Legature di valore e di portamento}: @lilypond[verbatim,quote] << @@ -1111,7 +1111,7 @@ Adesso le parole sono allineate correttamente con le note, ma il raggruppamento automatico per le note che si trovano sopra @notation{shine as} non ha un aspetto corretto. Possiamo correggerlo inserendo i comandi per il raggruppamento manuale così da scavalcare, in questo caso, il raggruppamento automatico; per i -dettagli si veda @ref{Automatic and manual beams}. +dettagli si veda @ref{Code automatiche e manuali}. @lilypond[verbatim,quote] << @@ -1261,7 +1261,7 @@ più semplice, ovvero @code{\addlyrics}. Ecco un esempio tratto dal Per scrivere partiture un po' più complesse di questi semplici esempi, è meglio separare la struttura dello spartito dalle note e dai testi mediante l'uso di variabili. Di queste si parla più approfonditamente -in @ref{Organizing pieces with variables}. +in @ref{Organizzare i brani con le variabili}. @seealso @@ -1360,9 +1360,9 @@ Le variabili possono essere utilizzate per molti tipi di oggetto nell'input. Ad esempio, @example -width = 4.5\cm -name = "Wendy" -aFivePaper = \paper @{ paperheight = 21.0 \cm @} +larghezza = 60 % un numero da passare a una variabile di \paper (l'unità di misura è il millimetro) +nome = "Wendy" % una stringa da passare a un markup +foglioA5 = \paper @{ #(set-paper-size "a5") @} @end example A seconda dei suoi contesti, la variabile può essere usata in punti @@ -1370,11 +1370,11 @@ differenti. L'esempio seguente usa le variabili mostrate sopra: @example \paper @{ - \aFivePaper - line-width = \width + \foglioA5 + line-width = \larghezza @} @{ - c4^\name + c4^\nome @} @end example @@ -1519,11 +1519,11 @@ modalità relativa: Dopo aver finito di leggere la guida, probabilmente dovresti cercare di scrivere uno o due brani. Puoi iniziare aggiungendo delle note a uno -dei @ref{Templates}. Se necessiti di una qualche notazione che non è +dei @ref{Modelli}. Se necessiti di una qualche notazione che non è stata coperta nel tutorial, dai un'occhiata alla Guida alla notazione, a cominciare da @ruser{Notazione musicale}. Se vuoi scrivere per un gruppo di strumenti che non è incluso nei template, dai un'occhiata a -@ref{Extending the templates}. +@ref{Estendere i modelli}. Una volta che hai scritto alcuni brevi pezzi, puoi proseguire la lettura del Manuale di Apprendimento (capitoli 3-5). Ovviamente non c'è niente @@ -1540,7 +1540,7 @@ la lettura di tutto il Manuale di Apprendimento, potrai rileggere alcune sezioni e seguire i riferimenti incrociati per letture di approfondimento. Se non lo hai già fatto, @emph{ti consigliamo} di leggere -@ref{Overview of manuals}. Contiene molte informazioni su LilyPond, +@ref{Panoramica dei manuali}. Contiene molte informazioni su LilyPond, ed è quindi utile per i nuovi utenti, che spesso non sanno dove cercare aiuto. Se dedichi cinque minuti all'attenta lettura di quella sezione, potresti risparmiarti ore di frustrazione sprecate a guardare in posti sbagliati! diff --git a/Documentation/it/learning/fundamental.itely b/Documentation/it/learning/fundamental.itely index fafe6ac59c..2a933ab677 100644 --- a/Documentation/it/learning/fundamental.itely +++ b/Documentation/it/learning/fundamental.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 8451fc41680f500fff56f826017b53dc3dcbf65d + Translation of GIT committish: 4244c3a9fbf1f3ff2e20e665f92516d35b61de53 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -120,7 +120,7 @@ semplici questo metodo funziona bene, ma per quelli più complessi, soprattutto quando vengono usati ulteriori comandi, la creazione implicita dei contesti può dare risultati inattesi, ad esempio creando dei righi non voluti. Il modo per creare i contesti esplicitamente è spiegato in -@ref{Contexts and engravers}. +@ref{Contesti e incisori}. @warning{Quando si inseriscono più di poche linee di musica, si consiglia di creare sempre esplicitamente i righi e le voci.} @@ -216,7 +216,7 @@ Per maggiori dettagli si veda @ruser{Molteplici partiture in un libro}. @cindex variabili Un'altra grande scorciatoia è la possibilità di definire variabili, come è -spiegato in @ref{Organizing pieces with variables}). Tutti +spiegato in @ref{Organizzare i brani con le variabili}). Tutti i modelli usano questa forma @example @@ -257,7 +257,7 @@ Per una definizione completa del formato di input, si veda @cindex composta, espressione musicale Abbiamo visto l'organizzazione generale dei file di input di LilyPond nella -sezione precedente, @ref{Introduction to the LilyPond file structure}. +sezione precedente, @ref{Introduzione alla struttura di un file di LilyPond}. Ma sembra che abbiamo saltato la parte più importante: cosa dobbiamo scrivere dopo @code{\score}? @@ -270,7 +270,7 @@ semplicemente, che @emph{non c'è} alcun mistero. La seguente frase spiega tutt @noindent Per capire cosa si intende per espressione musicale, potrebbe esserti utile -ripassare il tutorial, @ref{Music expressions explained}. In quella sezione, abbiamo +ripassare il tutorial, @ref{Espressioni musicali}. In quella sezione, abbiamo visto come costruire grandi espressioni musicali a partire da piccoli brani -- abbiamo iniziato con le note, poi gli accordi, etc. Adesso inizieremo da una grande espressione musicale e proseguiremo poi a spiegarne i dettagli. Per @@ -306,7 +306,7 @@ simultanee, ad esempio due voci simultanee, o una voce con del testo. Vogliamo avere una voce con del testo, dunque ci servono le parentesi ad angolo. Aggiungeremo la musica vera e propria in seguito; per adesso mettiamo soltanto delle semplici note e del testo. Se hai dimenticato come aggiungere del testo, potresti voler -ripassare @code{\addlyrics} in @ref{Setting simple songs}. +ripassare @code{\addlyrics} in @ref{Impostare canzoni semplici}. @lilypond[verbatim,quote,ragged-right] \score { @@ -456,7 +456,7 @@ predefinita, che è in basso. @seealso Gli ossia vengono spesso scritti senza armatura di chiave e senza tempo, e solitamente hanno un font più piccolo. Richiedono ulteriori -comandi che non sono stati ancora presentati. Si veda @ref{Size of objects}, +comandi che non sono stati ancora presentati. Si veda @ref{Dimensione degli oggetti}, e @ruser{Righi ossia}. @@ -689,6 +689,24 @@ legature di valore, dinamica, etc., è impostata correttamente. } @end lilypond +@funindex \voices +Se preferisci inserire le voci in un ordine diverso, per esempio dall'alto +verso il basso, puoi specificare i rispettivi numeri di voce prima di +un costrutto @code{<< @dots{} >>} tramite il comando @code{\voices}: + +@lilypond[quote,verbatim] +\new Staff \relative { + % Main voice + c'16 d e f + % Voice = "1" Voice = "2" + << { g4 f e } \\ { r8 e4 d c8~ } >> | + \voices 1,3,2 + % Voice = "1" Voice = "3" Voice = "2" + << { d2 e } \\ { s4 b c2 } \\ { c8 b16 a b8 g~ 2 } >> | +} +@end lilypond + + Tutte queste voci sono separate dalla voce principale che contiene le note e che si trova fuori dal costrutto @code{<< @dots{} >>}, che chiameremo il @emph{costrutto simultaneo}. Legature di portamento e di valore @@ -748,8 +766,8 @@ la voce tre su cerchi barrati verdi, e la voce quattro (non impiegata nell'esempio) su croci magenta; @code{\voiceNeutralStyle} (anch'esso non usato qui) riporta lo stile all'impostazione predefinita. Vedremo in seguito come l'utente possa creare comandi simili. -Si veda @ref{Visibility and color of objects} e -@ref{Using variables for layout adjustments}. +Si veda @ref{Visibilità e colore degli oggetti} e +@ref{Uso delle variabili per modificare la formattazione}. @cindex polifonia e modo relativo @cindex modo relativo e polifonia @@ -796,6 +814,7 @@ più complesse saranno spiegate tutte in sezioni successive. @lilypond[quote,ragged-right] \new Staff \relative { \key aes \major + \voices 1,2,4 % Nessuna terza voce << % Prima voce { c''2 aes4. bes8 } \\ % Voce due @@ -806,7 +825,6 @@ più complesse saranno spiegate tutte in sezioni successive. \once \override NoteColumn.force-hshift = #0.5 des2 } - \\ % Nessuna terza voce \\ % Quarta voce { \override NoteColumn.force-hshift = #0 @@ -841,6 +859,7 @@ ignora quel che non capisci. @lilypond[quote,ragged-right] \new Staff \relative { \key aes \major + \voices 1,2,4 % Nessuna terza voce (vogliamo i gambi in giù) << { % Prima voce \voiceOneStyle @@ -854,7 +873,6 @@ ignora quel che non capisci. \once \override NoteColumn.force-hshift = #0.5 des2 } - \\ % Nessuna terza voce (vogliamo i gambi in giù) \\ % Quarta voce { \voiceThreeStyle \override NoteColumn.force-hshift = #0 @@ -889,18 +907,19 @@ La direzione dei gambi è assegnata automaticamente: le voci dispari avranno i gambi in su e le voci pari i gambi in giù. I gambi per le voci 1 e 2 sono giusti, ma in questo brano i gambi della voce 3 dovrebbero essere in giù. Possiamo correggere semplicemente omettendo la voce tre e ponendo la -musica nella voce quattro. Si può fare aggiungendo semplicemente un altro -paio di @code{\\}: +musica nella voce quattro. Si potrebbe fare aggiungendo semplicemente un +altro paio di @code{\\}, ma preferiamo usare il comando @code{\voices} (che +ci permette anche di inserire le voci in un ordine diverso, se lo vogliamo): @lilypond[quote,verbatim,ragged-right] \new Staff \relative { \key aes \major - << % Voice one + \voices 1,2,4 % Omette la terza voce + << % Voce uno { c''2 aes4. bes8 } - \\ % Voice two + \\ % Voce due { 2 des } - \\ % Omit Voice three - \\ % Voice four + \\ % Voce quattro { aes'2 f4 fes } >> | 1 | @@ -917,7 +936,7 @@ a evitare le collisioni. LilyPond fornisce molti modi per aggiustare la colloca orizzontale delle note. Per ora, non siamo ancora pronti a cercare di correggere questo problema, dunque dovremo aspettare fino a una prossima sezione -- si veda la proprietà @code{force-hshift} in -@ref{Fixing overlapping notation}. +@ref{Correggere la sovrapposizione di elementi della notazione}. @warning{Il testo e gli @emph{spanner} (come le legature di portamento e di valore, le forcelle, etc.) non possono essere create @q{attraverso} le voci.} @@ -1017,7 +1036,7 @@ markup, legature di valore, legature di portamento, e dinamica: } @end lilypond -Vediamo adesso, usando l'esempio della sezione precedente, tre modi +Vediamo adesso, usando l'esempio della sezione precedente, quattro modi diversi di scrivere uno stesso passo di musica polifonica, e i rispettivi vantaggi, a seconda delle circostanze. @@ -1054,6 +1073,36 @@ sì che sia possibile disegnare una legatura di frase sopra di esse. } @end lilypond +@cindex voci, continuate +@funindex \voices + +Il comando @code{\voices} può essere usato anche per continuare una voce +principale nel costrutto simultaneo: + +@lilypond[quote,ragged-right,verbatim] +\new Staff \relative { + \new Voice = "principale" { + \voiceOneStyle + % Questa sezione è omofona + c'16^( d e f + % Inizia la sezione simultanea con tre voci + \voices "principale",2,3 + << + % Continua la voce principale in parallelo + { g4 f e | d2 e) | } + % Inizializza la seconda voce + \\ + % Imposta i gambi, etc., in giù + { r8 e4 d c8~ | 8 b16 a b8 g~ 2 | } + \\ + % Inizializza la terza voce + % Imposta i gambi, etc, in su + { s2. | s4 b c2 | } + >> + } +} +@end lilypond + @cindex annidare le espressioni musicali @cindex annidare i costrutti simultanei @cindex annidare le voci @@ -1146,7 +1195,7 @@ le voci una e tre vengono spostate a destra e le voci due e quattro a sinistra. @code{\shiftOnn} e @code{\shiftOnnn} definiscono ulteriori livelli di scarto che possono essere temporaneamente specificati per risolvere -le collisioni in situazioni complesse -- si veda @ref{Real music example}. +le collisioni in situazioni complesse -- si veda @ref{Esempio musicale}. Una colonna di note può contenere soltanto una nota (o accordo) di una voce con gambi in su e una nota (o accordo) di una voce con gambi in @@ -1159,7 +1208,7 @@ produrrà il messaggio di errore @seealso Manuale di apprendimento: -@ref{Moving objects}. +@ref{Spostare gli oggetti}. Guida alla notazione: @ruser{Più voci}. @@ -1428,9 +1477,10 @@ Guida alla notazione: @ruser{Tutto sui contesti}. @cindex creazione di contesti @cindex contesti, creazione di -In un file di input un blocco della partitura, introdotto dal comando @code{\score}, -contiene un'espressione musicale singola e una definizione di output -associata (o un blocco @code{\layout} o un blocco @code{\midi}). +In un file di input, un blocco della partitura (introdotto dal comando +@code{\score}) contiene un'espressione musicale singola; ma può contenere +anche definizioni di output associate (un blocco @code{\layout}, un blocco +@code{\midi} o entrambi). Di solito si lascia che il contesto @code{Score} sia creato automaticamente quando inizia l'interpretazione di quell'espressione musicale. @@ -1458,14 +1508,14 @@ esplicitamente con @code{\new Score} è di inserire un blocco di contesto, predefiniti per tutto lo spartito.. Le informazioni su come usare i blocchi @code{\with} si trovano sotto il titolo @qq{Setting context properties with @code{\\with} } in -@ref{Modifying context properties}.) +@ref{Modificare le proprietà di contesto}.) @warning{@bs{}@code{new Score} non dovrebbe essere usato perché il fondamentale contesto di livello superiore @code{Score} viene creato automaticamente quando l'espressione musicale all'interno del blocco @bs{}@code{score} viene interpretata. I valori predefiniti delle proprietà di contesto validi per tutta la partitura possono essere modificati nel blocco @bs{}@code{layout}. Vedi -@ref{Modifying context properties}} +@ref{Modificare le proprietà di contesto}} Nelle sezioni precedenti hai già visto molti esempi pratici della creazione di nuovi contesti @code{Staff} e @code{Voice}, ma per ricordarti @@ -1539,7 +1589,7 @@ anche numeri e spazi, ma in questo caso deve essere compreso tra virgolette, ovvero @code{\new Staff = "MioPentagramma 1" @var{espressione-musicale}}. Il nome identificativo viene utilizzato per riportare a quel particolare esempio di un contesto. Abbiamo visto questo utilizzo -nella sezione sul testo, si veda @ref{Voices and vocals}. +nella sezione sul testo, si veda @ref{Voci e musica vocale}. @seealso @@ -1711,27 +1761,29 @@ in quale contesto esse operino. Talvolta questo è ovvio, ma talvolta può risultare complicato. Se viene specificato il contesto sbagliato, non viene generato alcun messaggio di errore, ma l'azione desiderata non avrà luogo. Ad esempio, la proprietà -@code{instrumentName} risiede ovviamente nel contesto @code{Staff}, poiché -è il pentagramma a dover essere nominato. -Nell'esempio seguente viene etichettato il primo pentagramma, ma non il secondo, -perché abbiamo omesso il nome del contesto. +@code{clefGlyph} risiede ovviamente nel contesto @code{Staff}, poiché +è il glifo della chiave a dover essere cambiato. +Nell'esempio seguente viene stampata correttamente la prima chiave del +pentagramma, ma non la seconda (che appare come la chiave predefinita di +violino, invece della chiave di basso o Fa che ci aspetteremmo) perché +abbiamo omesso il nome del contesto. @lilypond[quote,verbatim,ragged-right] << \new Staff \relative { - \set Staff.instrumentName = #"Soprano" + \set Staff.clefGlyph = #"clefs.C" c''2 c } \new Staff \relative { - \set instrumentName = #"Alto" % Wrong! + \set clefGlyph = #"clefs.F" % Sbagliato! d'2 d } >> @end lilypond Ricorda che il nome di contesto predefinito è @code{Voice}, dunque il -secondo comando @code{\set} imposta la proprietà @code{instrumentName} nel -contesto @code{Voice} col valore @qq{Alto}, ma dato che LilyPond non trova +secondo comando @code{\set} imposta la proprietà @code{clefGlyph} nel +contesto @code{Voice} col valore @qq{clefs.F}, ma dato che LilyPond non trova tale proprietà nel contesto @code{Voice}, non ha avuto luogo alcuna altra azione. Questo non è un errore, e nessun messaggio di errore viene riportato nel file di log. @@ -1749,7 +1801,7 @@ Se non usi un editor con queste funzionalità, è consigliabile controllare il n delle proprietà nella Guida al funzionamento interno: si veda @rinternals{Tunable context properties}, o @rinternals{Contexts}. -La proprietà @code{instrumentName} funzionerà soltanto se inserita nel contesto +La proprietà @code{clefGlyph} funzionerà soltanto se inserita nel contesto @code{Staff}, ma alcune proprietà possono essere collocate in più di un contesto. Ad esempio, la proprietà @code{extraNatural} è impostata di default sul valore ##t (vero) su tutti i righi. Se viene impostata su ##f (falso) in uno @@ -2119,7 +2171,7 @@ nemmeno i gambi né le travature. Hai letto il tutorial, sai come scrivere la musica, comprendi i concetti fondamentali. Ma come puoi ottenere i pentagrammi che desideri? Puoi trovare molti -modelli (vedi @ref{Templates}) da cui partire. +modelli (vedi @ref{Modelli}) da cui partire. Ma se ti serve qualcosa che non è presente lì? Continua a leggere. @menu @@ -2319,7 +2371,7 @@ musicaVioloncello = \relative { @seealso I modelli da cui partire si trovano nell'appendice @q{Modelli}, -si veda @ref{Single staff templates}. +si veda @ref{Modelli per rigo singolo}. @node Partitura vocale a quattro parti SATB @@ -2383,10 +2435,11 @@ lower = \relative { } \score { - << % combine ChoirStaff and PianoStaff in parallel + << % unisci in parallelo ChoirStaff e PianoStaff \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" + \new Staff = "sopranos" + \with { instrumentName = #"Soprano" } + << \new Voice = "sopranos" { \global \sopranoMusic @@ -2395,24 +2448,27 @@ lower = \relative { \new Lyrics \lyricsto "sopranos" { \sopranoWords } - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" + \new Staff = "altos" + \with { instrumentName = #"Alto" } + << \new Voice = "altos" { \global \altoMusic } >> \new Lyrics \lyricsto "altos" { \altoWords } - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" + \new Staff = "tenors" + \with { instrumentName = #"Tenor" } + << \new Voice = "tenors" { \global \tenorMusic } >> \new Lyrics \lyricsto "tenors" { \tenorWords } - \new Staff = "basses" << - \set Staff.instrumentName = #"Bass" + \new Staff = "basses" + \with { instrumentName = #"Bass" } + << \new Voice = "basses" { \global \bassMusic @@ -2422,8 +2478,9 @@ lower = \relative { \bassWords } >> % end ChoirStaff - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" + \new PianoStaff + \with { instrumentName = #"Piano" } + << \new Staff = "upper" \upper \new Staff = "lower" \lower >> @@ -2432,7 +2489,7 @@ lower = \relative { @end lilypond @warning{Questa struttura può essere ottenuta facilmente usando il modello -integrato @code{satb.ly}, descritto in @ref{Built-in templates}. Ma per +integrato @code{satb.ly}, descritto in @ref{Modelli integrati}. Ma per facilità d'uso tale modello nasconde deliberatamente la necessaria struttura dei contesti, dato che la fornisce automaticamente. Dunque a scopo di apprendimento vediamo come costruire questa struttura da zero. Potresti @@ -2440,7 +2497,7 @@ aver bisogno di far ciò se il modello integrato non soddisfa le tue necessità.} Il modello @qq{copia e modifica} più simile a questa struttura -è @ref{SATB vocal score and automatic piano reduction}, ma +è @ref{Partitura vocale SATB e automatica riduzione per pianoforte}, ma abbiamo bisogno di modificare l'assetto e aggiungere un accompagnamento per pianoforte che non sia derivato automaticamente dalle parti vocali. Le variabili che si riferiscono alla musica e alle parole per @@ -2462,8 +2519,9 @@ In questo modo il nostro ChoirStaff avrà questo aspetto: @example \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" + \new Staff = "sopranos" + \with @{ instrumentName = #"Soprano" @} + << \new Voice = "sopranos" @{ \global \sopranoMusic @@ -2472,8 +2530,9 @@ In questo modo il nostro ChoirStaff avrà questo aspetto: \new Lyrics \lyricsto "sopranos" @{ \sopranoWords @} - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" + \new Staff = "altos" + \with @{ instrumentName = #"Alto" @} + << \new Voice = "altos" @{ \global \altoMusic @@ -2482,8 +2541,9 @@ In questo modo il nostro ChoirStaff avrà questo aspetto: \new Lyrics \lyricsto "altos" @{ \altoWords @} - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" + \new Staff = "tenors" + \with @{ instrumentName = #"Tenor" @} + << \new Voice = "tenors" @{ \global \tenorMusic @@ -2492,8 +2552,9 @@ In questo modo il nostro ChoirStaff avrà questo aspetto: \new Lyrics \lyricsto "tenors" @{ \tenorWords @} - \new Staff = "basses" << - \set Staff.instrumentName = #"Bass" + \new Staff = "basses" + \with @{ instrumentName = #"Bass" @} + << \new Voice = "basses" @{ \global \bassMusic @@ -2502,7 +2563,7 @@ In questo modo il nostro ChoirStaff avrà questo aspetto: \new Lyrics \lyricsto "basses" @{ \bassWords @} ->> % end ChoirStaff +>> % fine di ChoirStaff @end example Poi dobbiamo lavorare sulla parte per pianoforte. Questo @@ -2510,8 +2571,9 @@ Poi dobbiamo lavorare sulla parte per pianoforte. Questo modello @q{Pianoforte solista}: @example -\new PianoStaff << - \set PianoStaff.instrumentName = #"Piano " +\new PianoStaff +\with @{ instrumentName = #"Piano " @} +<< \new Staff = "upper" \upper \new Staff = "lower" \lower >> @@ -2566,8 +2628,9 @@ perché vogliamo che siano impilati uno sopra l'altro: @} >> % end ChoirStaff - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" + \new PianoStaff + \with @{ instrumentName = #"Piano" @} + << \new Staff = "upper" \upper \new Staff = "lower" \lower >> @@ -2617,10 +2680,11 @@ lower = \relative { } \score { - << % combine ChoirStaff and PianoStaff in parallel + << % combina ChoirStaff e PianoStaff in parallelo \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" + \new Staff = "sopranos" + \with { instrumentName = #"Soprano" } + << \new Voice = "sopranos" { \global \sopranoMusic @@ -2629,8 +2693,9 @@ lower = \relative { \new Lyrics \lyricsto "sopranos" { \sopranoWords } - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" + \new Staff = "altos" + \with { instrumentName = #"Alto" } + << \new Voice = "altos" { \global \altoMusic @@ -2639,8 +2704,9 @@ lower = \relative { \new Lyrics \lyricsto "altos" { \altoWords } - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" + \new Staff = "tenors" + \with { instrumentName = #"Tenor" } + << \new Voice = "tenors" { \global \tenorMusic @@ -2649,8 +2715,9 @@ lower = \relative { \new Lyrics \lyricsto "tenors" { \tenorWords } - \new Staff = "basses" << - \set Staff.instrumentName = #"Bass" + \new Staff = "basses" + \with { instrumentName = #"Bass" } + << \new Voice = "basses" { \global \bassMusic @@ -2661,8 +2728,9 @@ lower = \relative { } >> % end ChoirStaff - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano " + \new PianoStaff + \with { instrumentName = #"Piano " } + << \new Staff = "upper" \upper \new Staff = "lower" \lower >> @@ -3078,7 +3146,7 @@ L'uso di variabili è anche un buon modo per ridurre il lavoro quando la sintassi di input di LilyPond cambia (vedi @rprogram{Aggiornare i file con convert-ly}). Se si ha un'unica definizione (come @code{\dolce}) per tutti i file di input -(vedi @ref{Style sheets}), allora se la sintassi cambia bisogna +(vedi @ref{Fogli di stile}), allora se la sintassi cambia bisogna aggiornare soltanto la singola definizione @code{\dolce}, invece di dover modificare tutti i file @file{.ly}. @@ -3208,11 +3276,10 @@ ovvero @seealso Manuale di apprendimento: -@ref{Organizing pieces with variables}. +@ref{Organizzare i brani con le variabili}. Guida alla notazione: @ruser{Trasposizione}, @ruser{Scrittura delle parti}, @ruser{Pause d'intero}, @ruser{Inclusione di file LilyPond}. - diff --git a/Documentation/it/learning/templates.itely b/Documentation/it/learning/templates.itely index ca80a43253..c16c71e777 100644 --- a/Documentation/it/learning/templates.itely +++ b/Documentation/it/learning/templates.itely @@ -186,7 +186,7 @@ Si possono cambiare anche i nomi estesi o abbreviati degli strumenti: @end lilypond anche se, piuttosto che far così, sarebbe più facile usare il modello -@code{ssaattbb.ly}, vedi @ref{SSAATTBB template}. +@code{ssaattbb.ly}, vedi @ref{Modello SSAATTBB}. Si può aggiungere un discanto definendo dei valori per la variabile @code{DescantMusic} e il testo di discanto definendo i valori della @@ -206,14 +206,14 @@ Layout = \layout @{ ... @} @end example L'insieme completo di variabili modificabili è visibile esaminando il -file @file{ly/satb.ly}, vedi @ref{Other sources of information}. +file @file{ly/satb.ly}, vedi @ref{Altre fonti di informazione}. @seealso Manuale di apprendimento: -@ref{Organizing pieces with variables}, -@ref{Vocal ensembles templates}, -@ref{Extending the templates}, -@ref{Other sources of information}. +@ref{Organizzare i brani con le variabili}, +@ref{Modelli per gruppi vocali}, +@ref{Estendere i modelli}, +@ref{Altre fonti di informazione}. @knownissues L'impostazione della variabile @code{TwoVoicesPerStaff} è attiva per @@ -323,14 +323,14 @@ AltoTwoLyrics = \lyricmode { Al -- to Two ly -- rics } L'insieme completo di variabili che possono essere modificate può essere visto esaminando il file @file{ly/ssaattbb.ly}, vedi -@ref{Other sources of information}. +@ref{Altre fonti di informazione}. @seealso Manuale di apprendimento: -@ref{Organizing pieces with variables}, -@ref{Vocal ensembles templates}, -@ref{Extending the templates}, -@ref{Other sources of information}. +@ref{Organizzare i brani con le variabili}, +@ref{Modelli per gruppi vocali}, +@ref{Estendere i modelli}, +@ref{Altre fonti di informazione}. @knownissues L'impostazione delle variabili @code{...TwoVoicesPerStaff} è attiva per @@ -444,7 +444,7 @@ con questo semplice modello integrato. I modelli seguenti devono essere copiati nella tua partitura e modificati lì. Se la disposizione della tua partitura SATB è relativamente semplice, potresti preferire i modelli integrati, che possono essere semplicemente -inclusi con @code{include}, come è spiegato in @ref{Built-in templates}. +inclusi con @code{include}, come è spiegato in @ref{Modelli integrati}. @menu * Partitura vocale SATB:: diff --git a/Documentation/it/learning/tutorial.itely b/Documentation/it/learning/tutorial.itely index f673c65c61..65d542f0cd 100644 --- a/Documentation/it/learning/tutorial.itely +++ b/Documentation/it/learning/tutorial.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 88cfc9ee61dece9cffff98ab7f10318633698c39 + Translation of GIT committish: 09ef86c87175cc6c1071eedb022ed1d01a93bcaf When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -14,6 +14,7 @@ @node Tutorial @chapter Tutorial +@translationof Tutorial Questo capitolo fornisce un'introduzione di base all'uso di LilyPond. @@ -78,7 +79,7 @@ parentesi dovrebbero essere delimitate da degli spazi, a meno che non si trovino all'inizio o alla fine di una linea. Può darsi che in alcuni esempi di questo manuale le parentesi verranno omesse, ma non dimenticarle nella tua musica! Per maggiori informazioni sull'aspetto degli esempi -nel manuale, si veda @ref{How to read the manuals}.} +nel manuale, si veda @ref{Come leggere i manuali}.} Inoltre, l'input di LilyPond è @strong{sensibile alle maiuscole}. @w{@samp{@{ c d e @}}} è un input valido; @w{@samp{@{ C D E @}}} invece @@ -109,12 +110,12 @@ programmi che usi. @ref{Windows, Microsoft Windows} (grafico) @item -@ref{Command-line, @sourceimage{logo-linux,,,} +@ref{Linea di comando, @sourceimage{logo-linux,,,} @sourceimage{logo-freebsd,,,} @sourceimage{logo-macosx,,,} @sourceimage{logo-windows,,,} } -@ref{Command-line, Tutti i sistemi operativi} (linea di comando) +@ref{Linea di comando, Tutti i sistemi operativi} (linea di comando) @end itemize @@ -698,7 +699,7 @@ nella versione online della documentazione. L'input di LilyPond deve essere compreso dai segni @code{@{ @}} o da @q{@w{@code{@bs{}relative @{ @dots{} @}}}}, come abbiamo visto in -@ref{Working on input files}. Nel resto di questo manuale alcuni +@ref{Lavorare sui file di input}. Nel resto di questo manuale alcuni esempi brevi ometteranno questi segni. Per replicare questi esempi, puoi copiare l'input mostrato e incollarlo tra @code{@{} e @code{@}} nel tuo file di input: @@ -768,17 +769,17 @@ comprendere le sezioni successive.} @item @strong{Prima di fare @emph{qualsiasi} tentativo}: leggi il @ref{Tutorial} -e la @ref{Common notation} del Manuale di apprendimento. Se +e la @ref{Notazione comunemente utilizzata} del Manuale di apprendimento. Se ti imbatti in termini musicali che non conosci, cercali nel @rglosnamed{Top, Glossario}. @item @strong{Prima di tentare di scrivere un pezzo musicale completo}: leggi -i @ref{Fundamental concepts} del Manuale di apprendimento. Dopo puoi dare +i @ref{Concetti fondamentali} del Manuale di apprendimento. Dopo puoi dare un'occhiata alle sezioni rilevanti della @rusernamed{Top, Guida alla notazione}. @item @strong{Prima di cercare di cambiare l'output predefinito}: leggi -@ref{Tweaking output} del Manuale di apprendimento. +@ref{Modifica dell'output} del Manuale di apprendimento. @item @strong{Prima di iniziare un grande progetto}: leggi il documento @@ -786,4 +787,3 @@ un'occhiata alle sezioni rilevanti della @rusernamed{Top, Guida alla notazione}. @end itemize - diff --git a/Documentation/it/learning/tweaks.itely b/Documentation/it/learning/tweaks.itely index 75f481421c..81504f49be 100644 --- a/Documentation/it/learning/tweaks.itely +++ b/Documentation/it/learning/tweaks.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 5ae5c88bdb1a478263ed874cb823ec58dafc93f9 + Translation of GIT committish: db92af51a444062c8edaef3afa36f57375b8feeb When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -58,7 +58,7 @@ costruire questi comandi così da rendere possibile imparare a scrivere le proprie modifiche personali. Prima di iniziare questo capitolo si consiglia di rileggere la sezione -@ref{Contexts and engravers}, perché i contesti, gli incisori e le proprietà +@ref{Contesti e incisori}, perché i contesti, gli incisori e le proprietà contenute al loro interno sono fondamentali per comprendere e costruire le modifiche. @@ -144,7 +144,7 @@ in questo capitolo. @cindex oggetti, convenzioni per i nomi di @cindex proprietà, convenzioni per i nomi di -Abbiamo già visto, in @ref{Contexts and engravers}, le convenzioni per i +Abbiamo già visto, in @ref{Contesti e incisori}, le convenzioni per i nomi di oggetti. Ecco una lista dei più comuni tipi di oggetti e proprietà insieme alle convenzioni usate per nominarli e alcuni esempi di nomi reali. Abbiamo usato @q{A} per indicare un @@ -212,8 +212,8 @@ Guida alla notazione: Abbiamo già incontrato i comandi @code{\set} e @code{\with}, che servono a modificare le proprietà dei @strong{contesti} e a togliere o aggiungere -gli @strong{incisori}, nei paragrafi @ref{Modifying context properties} e -@ref{Adding and removing engravers}. Ora dobbiamo introdurre alcuni +gli @strong{incisori}, nei paragrafi @ref{Modificare le proprietà di contesto} e +@ref{Aggiungere e togliere gli incisori}. Ora dobbiamo introdurre alcuni comandi più importanti. Il comando che cambia le proprietà degli @strong{oggetti di formattazione} è @@ -242,7 +242,7 @@ bassi dei contesti, come ad esempio @code{Voice}, @code{ChordNames} o poi quando deve essere specificato. Le sezioni successive tratteranno in modo dettagliato le proprietà e -i loro valori, si veda @ref{Types of properties}; in questa sezione, invece, +i loro valori, si veda @ref{Tipi di proprietà}; in questa sezione, invece, useremo soltanto alcune proprietà e valori di facile comprensione, in modo da spiegare il formato e l'uso di questo comando. @@ -575,7 +575,7 @@ emphNoteHead = { Il prefisso @code{\once} funziona bene se si desidera enfatizzare note singole o interi accordi, ma non permette di enfatizzare una singola nota @emph{dentro} un accordo. Prima abbiamo visto come si possa usare -@code{\tweak} per fare ciò, vedi @ref{The tweak command}. +@code{\tweak} per fare ciò, vedi @ref{Il comando di ritocco tweak}. Ma non è possibile usare @code{\tweak} in una funzione; è in questo caso che torna utile il comando @code{\single}: @@ -604,8 +604,8 @@ proprietà di @code{\tweak}. @seealso Manuale di apprendimento: -@ref{The tweak command}, -@ref{Using variables for layout adjustments}. +@ref{Il comando di ritocco tweak}, +@ref{Uso delle variabili per modificare la formattazione}. @node Manuale del Funzionamento interno @@ -1116,9 +1116,9 @@ di un brano. Ma di norma le stanghette sono inserite automaticamente: come lo possiamo impedire? Prima di iniziare, occorre ricordare che le proprietà degli oggetti sono -raggruppate nelle cosiddette @emph{interfacce} -- si veda @ref{Properties -found in interfaces}. Queste servono semplicemente a raggruppare quelle -proprietà che possono essere usate insieme per modificare un oggetto +raggruppate nelle cosiddette @emph{interfacce} -- si veda +@ref{Proprietà presenti nelle interfacce}. Queste servono semplicemente a raggruppare +quelle proprietà che possono essere usate insieme per modificare un oggetto grafico -- se una di queste è ammessa per un oggetto, lo sono anche le altre. Alcuni oggetti usano le proprietà di alcune interfacce, altri quelle di altre interfacce. Le interfacce che contengono le proprietà @@ -1126,7 +1126,7 @@ usate da un particolare grob (oggetto grafico) sono elencate nella guida al Funzionamento interno in fondo alla pagina che descrive il grob; queste proprietà possono essere individuate consultando quelle interfacce. -In @ref{Properties of layout objects} abbiamo spiegato come trovare le +In @ref{Proprietà degli oggetti di formattazione} abbiamo spiegato come trovare le informazioni sui grob. Usando lo stesso approccio, andiamo nella guida al Funzionamento interno per trovare l'oggetto grafico relativo alla stanghetta (@emph{bar line}). Passando da @emph{Backend} e @emph{All layout objects} @@ -1498,7 +1498,7 @@ appartenga di norma l'incisore. @cindex oggetti, modificare la dimensione degli Iniziamo rivedendo l'esempio precedente (vedi -@ref{Nesting music expressions}) che mostrava come +@ref{Annidare le espressioni musicali}) che mostrava come inserire un nuovo rigo temporaneo, come in un @rglos{ossia}. @cindex proprietà alignAboveContext, esempio @@ -1800,7 +1800,7 @@ varie linee disegnate (come stanghette, travature, forcine, legature di portamento, etc.). Se si deve aggiustare lo spessore di un particolare oggetto di formattazione, è meglio sovrascrivere la sua proprietà @code{thickness}. Un esempio di come modificare lo spessore -delle legature di portamento è stato mostrato prima in @ref{Properties of layout objects}. +delle legature di portamento è stato mostrato prima in @ref{Proprietà degli oggetti di formattazione}. Lo spessore di tutti gli oggetti disegnati (ovvero quelli non prodotti da un tipo di carattere) può essere cambiato nello stesso modo. @@ -1898,7 +1898,7 @@ seguente mostra questo @q{annidamento} delle note su righi adiacenti: Abbiamo già visto come i comandi @code{\voiceXXX} influenzino la direzione di legature di portamento e di valore, delle diteggiature e di qualsiasi altro elemento che dipenda dalla direzione dei gambi (vedi -@ref{Explicitly instantiating voices}). +@ref{Definire esplicitamente le voci}). Questi comandi sono fondamentali quando si scrive musica polifonica, perché permettono di distinguere le linee melodiche che si intrecciano. Talvolta, però, capita di voler modificare questo comportamento @@ -2412,7 +2412,7 @@ Attraverso la proprietà @code{outside-staff-priority} si può regolare anche la disposizone verticale di singoli oggetti; i risultati potrebbero tuttavia risultare non sempre ottimali. Supponiamo di voler posizionare @qq{Testo3} sopra @qq{Testo4} nell'esempio -precedente (si veda @ref{Automatic behavior}). +precedente (si veda @ref{Comportamento automatico}). Basta andare a cercare la priorità di @code{TextScript} nella guida al Funzionamento interno o nelle tabelle precedenti e aumentare la priorità di @qq{Testo3} assegnando un valore più alto: @@ -2604,7 +2604,7 @@ L'aspetto è migliore, ma sarebbe preferibile avere i segni di dinamica allineati alla stessa linea di base invece di spostarsi su e giù seguendo la posizione delle note. La proprietà che permette di ottenere tale risultato è @code{staff-padding} ed è trattata nella sezione relativa -alle collisioni (vedi @ref{Collisions of objects}). +alle collisioni (vedi @ref{Collisioni tra oggetti}). @node Spaziatura verticale @@ -2834,7 +2834,7 @@ degli elementi della notazione. Vediamoli nel seguente ordine: @item Si può cambiare la @strong{direzione} di uno degli oggetti che si sovrappongono usando i comandi predefiniti elencati prima, in riferimento agli -oggetti interni al rigo (vedi @ref{Within-staff objects}). +oggetti interni al rigo (vedi @ref{Oggetti interni al rigo}). In questo modo si possono riposizionare facilmente gambi, legature di portamento e di valore, travature, segni di dinamica, testo e gruppi irregolari. La limitazione è che si tratta di una scelta circoscritta a due sole @@ -2854,7 +2854,7 @@ di oggetti dello stesso tipo. Tali proprietà sono: @code{direction} Questa è già stata trattata in dettaglio (vedi -@ref{Within-staff objects}). +@ref{Oggetti interni al rigo}). @item @code{padding}, @code{right-padding}, @code{staff-padding} @@ -2976,7 +2976,7 @@ note in voci diverse. All'interno di una voce, tutte le note che si trovano nello stesso momento musicale sono raggruppate in una colonna di note, e viene creato un oggetto @code{NoteColumn} per controllare il posizionamento orizzontale di quel -gruppo di note (vedi @qq{Colonne di note} in @ref{Explicitly instantiating voices}). Se +gruppo di note (vedi @qq{Colonne di note} in @ref{Definire esplicitamente le voci}). Se @emph{e solo se} due o più colonne di note in un solo contesto Staff, entrambe con i gambi nella stessa direzione, si trovano sullo stesso momento musicale, i valori delle loro proprietà @code{horizontal-shift} sono usati per attribuire @@ -3005,7 +3005,7 @@ note sono sovrapposte. Non ha effetto su colonne di note non sovrapposte. Viene specificata in unità appropriate per una colonna di note, ovvero la larghezza della testa della nota nella prima voce. Si usa in situazioni complesse in cui i normali comandi @code{\shiftOn} (vedi -@ref{Explicitly instantiating voices}) non risolvono adeguatamente le collisioni tra le +@ref{Definire esplicitamente le voci}) non risolvono adeguatamente le collisioni tra le note. Per questo scopo, è preferibile alla proprietà @code{extra-offset} perché non c'è bisogno di trovare la giusta distanza in spazi di rigo e lo spostamento delle note dentro o fuori da una @code{NoteColumn} @@ -3423,7 +3423,7 @@ deve essere ripristinato, come si vede. @translationof The force-hshift property Possiamo vedere ora come applicare le correzioni finali all'esempio di Chopin -introdotto alla fine del paragrafo @ref{I'm hearing Voices}, che avevamo +introdotto alla fine del paragrafo @ref{Sento le Voci}, che avevamo lasciato così: @lilypond[quote,verbatim,fragment,ragged-right] @@ -3571,8 +3571,8 @@ Re, e la semiminima puntata del Fa diesis, anch'essa unita alla croma della stessa altezza. Tutto il resto è su una voce singola, quindi il sistema più semplice è introdurre queste ulteriori voci temporaneamente, quando sono richieste. Se ti -sei dimenticato come fare, rileggi i paragrafi @ref{I'm hearing Voices} e -@ref{Explicitly instantiating voices}. In questo caso scegliamo di +sei dimenticato come fare, rileggi i paragrafi @ref{Sento le Voci} e +@ref{Definire esplicitamente le voci}. In questo caso scegliamo di usare per il passaggio polifonico le voci definite esplicitamente, dato che LilyPond riesce a evitare meglio le collisioni se tutte le voci sono definite esplicitamente in questo modo. @@ -3698,7 +3698,7 @@ viene prodotto posponendo @code{\arpeggio} a un accordo e che la stanghetta doppia si ottiene col comando @code{\bar "||"}. Questo è stato facile. Ora dobbiamo correggere la collisione della legatura di valore con l'indicazione di tempo. Il modo migliore è spostare la legatura verso l'alto. Lo spostamento degli oggetti -è stato trattato prima in @ref{Moving objects}, dove si dice che gli oggetti +è stato trattato prima in @ref{Spostare gli oggetti}, dove si dice che gli oggetti posizionati relativamente al rigo possono essere spostati verticalmente sovrascrivendo la proprietà @code{staff-position}, specificata in metà spazi-rigo rispetto alla linea centrale del rigo. Dunque la seguente sovrascrittura @@ -4065,8 +4065,8 @@ attraversare le voci: @seealso Manuale di apprendimento: -@ref{The once prefix,,Il prefisso @code{@bs{}once}}, -@ref{The stencil property}. +@ref{Il prefisso once,,Il prefisso @code{@bs{}once}}, +@ref{La proprietà stencil}. @node Simulare una corona nel MIDI @@ -4252,14 +4252,14 @@ VerseFour = \lyricmode { @translationof Style sheets L'output prodotto da LilyPond può essere ampiamente modificato, come -abbiamo visto nel capitolo @ref{Tweaking output}. Ma se avessi molti +abbiamo visto nel capitolo @ref{Modifica dell'output}. Ma se avessi molti file di input a cui voler applicare delle modifiche? O se volessi semplicemente separare le modifiche dalla musica vera e propria? È molto semplice. Prendiamo un esempio. Non ti preoccupare se non capisci le parti che hanno @code{#()}; verranno spiegate nel capitolo -@ref{Advanced tweaks with Scheme}. +@ref{Modifiche avanzate con Scheme}. @lilypond[quote,verbatim,ragged-right] mpdolce = diff --git a/Documentation/it/macros.itexi b/Documentation/it/macros.itexi index 4378722350..9df10e252f 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: 136e94ea422fc94ef2587c588d516a03e01275e1 + Translation of GIT committish: 9dbf6c2c5c8b2847cdfeb6d3c2d11d6f33d3a506 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -99,12 +99,11 @@ translations should be in macros.itexi. @macro docMain @cartouche -Per maggiori informazioni su come questo manuale si integra col resto -della documentazione, o per leggere questo manuale in altri formati, si veda -@rweb{Manuali}. +Questo manuale è disponibile in altri formati ed è integrato col resto +della documentazione. Maggiori informazioni in @rweb{Manuali}. -Se ti manca qualche manuale, puoi trovare la completa documentazione -all'indirizzo @w{@uref{http://@/www@/.lilypond@/.org/}}. +La documentazione completa si trova all'indirizzo +@w{@uref{http://@/lilypond@/.org/}}. @end cartouche @end macro @@ -121,7 +120,7 @@ all'indirizzo @w{@uref{http://@/www@/.lilypond@/.org/}}. @copyrightDeclare @emph{La traduzione della seguente nota di copyright è gentilmente -offerta per le persone che non parlano inglese, ma solo +offerta alle persone che non parlano inglese, ma solo la nota in inglese ha valore legale.} @emph{The translation of the following copyright notice is provided @@ -129,12 +128,12 @@ for courtesy to non-English speakers, but only the notice in English legally counts.} @quotation -E' garantito il permesso di copiare, distribuire e/o modificare questo -documento seguendo i termini della Licenza per Documentazione -Libera GNU, Versione 1.1 o ogni versione successiva pubblicata dalla +È garantito il permesso di copiare, distribuire e/o modificare questo +documento seguendo i termini della GNU Free Documentation License, +versione 1.1 o ogni versione successiva pubblicata dalla Free Software Foundation; senza alcuna sezione non modificabile. -Una copia della licenza è acclusa nella sezione intitolata ''Licenza -per Documentazione Libera GNU''. +Una copia della licenza si trova nella sezione intitolata +"GNU Free Documentation License". @end quotation @quotation diff --git a/Documentation/it/notation/changing-defaults.itely b/Documentation/it/notation/changing-defaults.itely index 1cd155d37a..102a25a8f1 100644 --- a/Documentation/it/notation/changing-defaults.itely +++ b/Documentation/it/notation/changing-defaults.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 4299c96f609f79426a181ffed107d17fa6e1fdbd + Translation of GIT committish: 18d03fa6a724b0102ccc47d194209802cea02f2e When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -152,7 +152,7 @@ crea l'output grafico si specifica con @code{\layout}. Una definizione di output molto più semplice, usata per produrre l'output Midi, si specifica con @code{\midi}. Molte altre definizioni di output sono usate da LilyPond internamente, come quando si usa la combinazione -automatica delle parti (@ref{Automatic part combining}) o si creano citazioni +automatica delle parti (@ref{Combinazione automatica delle parti}) o si creano citazioni musicali (@ref{Quoting other voices}). Le definizioni di output definiscono la relazione tra i contesti e le loro @@ -164,7 +164,7 @@ al Midi avranno effetto solo se inserite in un blocco @code{\midi}. Alcune impostazioni interessano vari tipi di output: per esempio, se @code{autoBeaming} è disattivato in qualche contesto, le travature contano come melismi al fine di abbinare musica e testo vocale, come descritto -in @ref{Automatic syllable durations}. Questo abbinamento viene fatto +in @ref{Durate automatiche delle sillabe}. Questo abbinamento viene fatto sia per l'output grafico che per il Midi. Se le modifiche fatte a @code{autoBeaming} in una definizione di contesto di un blocco @code{\layout} non sono ripetute nel corrispondente blocco @code{\midi}, il testo e la @@ -494,22 +494,22 @@ esempio quando il testo vocale è associato alla musica: @noindent Maggiori informazioni sull'associazione del testo vocale alla musica in -@ref{Automatic syllable durations}. +@ref{Durate automatiche delle sillabe}. Le proprietà di tutti i contesti di un certo tipo possono essere modificate in un blocco @code{\layout} (con una sintassi diversa), vedi @ref{Changing all contexts of the same type}. Questo costrutto fornisce anche un mezzo per mantenere le istruzioni di formattazione separate dal contenuto musicale. Se occorre modificare un solo contesto, bisogna usare un blocco -@code{\with}, vedi @ref{Changing just one specific context}. +@code{\with}, vedi @ref{Modifica di un solo contesto specifico}. @seealso Manuale di apprendimento: @rlearning{Organizzare i brani con le variabili}. Guida alla notazione: -@ref{Changing just one specific context}, -@ref{Automatic syllable durations}. +@ref{Modifica di un solo contesto specifico}, +@ref{Durate automatiche delle sillabe}. @node Conservazione di un contesto @@ -932,7 +932,7 @@ musicale come @code{\accidentalStyle dodecaphonic} @item Una variabile definita dall'utente contenente un blocco @code{\with}; il blocco @code{\with} è spiegato approfonditamente in -@ref{Changing just one specific context}. +@ref{Modifica di un solo contesto specifico}. @lilypond[quote,verbatim] StaffDefaults = \with { @@ -962,7 +962,7 @@ I comandi che impostano una proprietà possono essere posti in un blocco facendo si ottiene lo stesso risultato che si otterrebbe se si includessero gli stessi comandi all'inizio di ogni contesto del tipo specificato. Se non è specificato alcun contesto, avranno effetto su @emph{qualsiasi} contesto -di basso livello, vedi @ref{Bottom-level contexts - voices}. La sintassi di +di basso livello, vedi @ref{Contesti del livello inferiore - voci}. La sintassi di un comando di impostazione della proprietà in un blocco @code{\layout} è identico a quello che si userebbe in mezzo alle note. @@ -1004,10 +1004,28 @@ comando @code{\new} @var{tipo-contesto}: @} @end example -Dato che questa @q{modifca di contesto} è specificata all'interno della -musica, avrà effetto su @emph{tutti} gli output (quello grafico @emph{e} il -Midi), diversamente da quanto avviene per le modifiche inserite in una -definizione di output. +Altrimenti, se la musica viene inserita usando la forma breve dei comandi +che specificano la modalità di inserimento, per esempio @code{\chords} invece di +@code{\chordmode}, il comando @code{\with} deve essere posto subito dopo il +comando che specifica la modalità: + +@example +\chords \with @{ [impostazioni di contesto per questo contesto (implicito) soltanto] @} +@{ + @dots{} +@} +@end example + +@noindent +perché è il contesto implicito creato da queste forme brevi che deve essere +modificato. Vale la stessa considerazione per le altre forme brevi che +indicano la modalità di inserimento (@code{\drums}, @code{\figures}), vedi +@ref{Input modes}. + +Le @q{modifiche di contesto}, essendo specificate in blocchi @code{\with} che +si trovano all'interno della musica, avranno effetto su @emph{tutti} gli +output (quello grafico @emph{e} il Midi), diversamente da quanto avviene per +le modifiche inserite in una definizione di output. Si possono specificare i seguenti tipi di impostazioni: @@ -1082,6 +1100,11 @@ Un comando predefinito come @code{\dynamicUp} @end itemize +@seealso +Guida alla notazione: +@ref{Modalità di inserimento} + + @node Ordine di precedenza @unnumberedsubsubsec Ordine di precedenza @translationof Order of precedence @@ -1111,8 +1134,8 @@ Manuale di apprendimento: @rlearning{Modificare le proprietà di contesto}. Guida alla notazione: -@ref{Contexts explained}, -@ref{Bottom-level contexts - voices}, +@ref{Tutto sui contesti}, +@ref{Contesti del livello inferiore - voci}, @ref{The set command}, @ref{The override command}, @ref{The layout block,,Il blocco @code{@bs{}layout}}. @@ -1764,6 +1787,7 @@ di LilyPond? * Il comando override:: * Il comando tweak:: * set vs override:: +* Il comando offset:: * Modifica delle liste associative:: @end menu @@ -2259,6 +2283,317 @@ evento musicale (@code{\tweak}) o, nel caso di @code{\overrideProperty}, per una sovrascrittura specifica. +@node Il comando offset +@subsection Il comando @code{\offset} +@translationof The offset command + +@funindex \offset +@cindex offset +@cindex predefinito, offset +@cindex spostamento relativo (offset) + +Sebbene sia possibile impostare le proprietà dei grob su nuovi valori coi +comandi @code{\override}, @code{\tweak} e @code{\overrideProperty}, è spesso +più opportuno modificare tali proprietà in modo relativo a un valore +predefinito. A questo fine è stato creato il comando @code{\offset}. + +La sintassi di @code{\offset} è + +@example +[-]\offset @var{proprietà} @var{offset} @var{elemento} +@end example + +Il comando funziona aggiungendo i contenuti di @var{offset} all'impostazione +predefinita della proprietà @var{proprietà} del grob indicato da +@var{elemento}. + +A seconda di come è formulato il comando, @code{\offset} può comportarsi +come un @code{\tweak} o come un @code{\override}. Le variazioni d'uso +sono trattate dopo aver considerato le proprietà del grob che possono +essere usate con @code{\offset}. + +@subsubsubheading{Proprietà che possono essere spostate con offset} + +Molte, ma non tutte, le proprietà dei grob possono essere spostate con +offset. Se la @var{proprietà} non può essere spostata con offset, l'oggetto +resterà invariato e apparirà un avviso. In questi casi bisogna usare +@code{\override} o @code{\tweak} per modificare l'oggetto. + +Si potrebbe procedere per prova e errore e basarsi sugli avvisi per capire +cosa può essere spostato con offset e cosa no. Tuttavia si può usare un +approccio più sistematico. + +I seguenti criteri determinano se una proprietà possa essere modificata con +@code{\offset}: + +@itemize + +@item +La proprietà ha un'@q{impostazione predefinita} nella descrizione del grob. +Queste proprietà sono elencate, per ogni grob, in @rinternals{All layout objects} +(si trovano anche in @file{scm/define-grobs.scm}). + +@item +La proprietà accetta un valore numerico. I valori numerici comprendono +@code{number}, una lista di @code{number}, @code{number-pair} e +@code{number-pair-list}. Le pagine in @rinternals{All layout objects} +elencano il tipo di dati tipici di ciascuna proprietà. È irrilevante +che l'impostazione predefinita sia una funzione. + +@item +La proprietà non può essere una @q{sottoproprietà}, ovvero una proprietà che +risiede all'interno di un'altra proprietà. + +@item +Le proprietà impostate su valori infiniti non possono essere spostate con +offset, perché non esiste un modo sensato per spostare un infinito positivo +o negativo. +@end itemize + +Gli esempi seguenti prendono in considerazione varie proprietà grob in relazione +ai criteri appena delineati. + +@itemize + +@item Proprietà che possono essere spostate con offset + +@table @asis + +@item @code{Hairpin.height} + +Questa proprietà non è una sottoproprietà e è elencata in +@rinternals{Hairpin}. Come valore prende @q{dimensione, in spazi +rigo} impostata su @code{0.6666}, ovviamente non un numero infinito. + +@item @code{Arpeggio.positions} + +La pagina @rinternals{Arpeggio} elenca una proprietà @code{positions} che +accetta una @q{coppia di numeri}. Il suo valore predefinito è +@code{ly:arpeggio::positions}, una funzione di callback che verrà elaborata +durante la fase di formattazione tipografica per emettere una coppia di numeri +per ogni oggetto @code{Arpeggio}. + +@end table + +@item Proprietà che non possono essere spostate con offset + +@table @asis + +@item @code{Hairpin.color} + +@code{color} non è presente in @rinternals{Hairpin}. + +@item @code{Hairpin.circled-tip} + +L'elenco per @code{Hairpin.circled-tip} in @rinternals{Hairpin} mostra +che prende un valore @code{booleano}. I booleani sono non numerici. + +@item @code{Stem.details.lengths} + +Benché sia elencato in @rinternals{Stem} e il suo valore predefinito sia +un elenco di @code{number}, si tratta di una @q{sottoproprietà}. Attualmente +non sono supportate le @q{proprietà annidate}. + +@end table + +@end itemize + +@subsubsubheading{@bs{}offset come override} + +Se @var{elemento} è un nome di grob come @code{Arpeggio} o +@code{Staff.OttavaBracket}, il risultato è un @code{\override} del tipo +di grob specificato. + +@example +\offset @var{proprietà} @var{offset} [@var{contesto}.]@var{NomeGrob} +@end example + +Notare che il trattino iniziale non è @emph{mai} usato nella forma @q{override}, +proprio come non è mai usato col comando @code{\override} stesso. + +L'esempio seguente usa la forma @q{override} per allungare gli arpeggi +predefiniti mostrati nella prima misura in modo che coprano del tutto +l'esensione degli accordi. Gli arpeggi sono allungati di mezzo spazio +rigo verso l'alto e verso il basso. Viene mostrata anche la stessa +operazione fatta sul primo accordo con un normale override della proprietà +@code{positions}. Questo metodo non rispecchia affatto il compito di +@q{allungare di mezzo spazio rigo}, perché le estremità devono essere +specificate con coordinate assolute invece che relative. Inoltre, sarebbero +necessari override individuali per ciascuno degli altri accordi, dato che +variano in dimensione e posizione. + +@lilypond[quote,verbatim] +arpeggioMusic = { + \arpeggio \arpeggio + \arpeggio \arpeggio +} + +{ + \arpeggioMusic + \bar "||" + \offset positions #'(-0.5 . 0.5) Arpeggio + \arpeggioMusic + \bar "||" + \once \override Arpeggio.positions = #'(-3.5 . -0.5) + 1\arpeggio + \bar "||" +} +@end lilypond + +Nel suo uso come @q{override}, @code{\offset} può essere preceduto da +@code{\once} o @code{\temporary} e annullato con @code{\revert} e la +@var{proprietà}. Ciò deriva dal fatto che @code{\offset} in realtà crea +un @code{\override} della @var{proprietà}. + +@lilypond[quote,verbatim] +music = { c'8\< d' e' f'\! } + +{ + \music + \offset height 1 Hairpin + \music + \music + \revert Hairpin.height + \music + \bar "||" + \once \offset height 1 Hairpin + \music \music + \bar "||" + \override Hairpin.height = 0.2 + \music + \temporary \offset height 2 Hairpin + \music + \music + \revert Hairpin.height + \music + \bar "||" +} +@end lilypond + +Proprio come @code{\override}, la forma @q{override} di @code{\offset} può +essere usata con @code{\undo} e @code{\single}. + +@lilypond[quote,verbatim] +longStem = \offset length 6 Stem + +{ + \longStem c'4 c''' c' c'' + \bar "||" + \undo \longStem c'4 c''' c' c'' + \bar "||" + \single \longStem c'4 c''' c' c'' + \bar "||" +} +@end lilypond + +@subsubsubheading{@bs{}offset come tweak} + +Se @var{elemento} è un'espressione musicale come @code{(} o +@code{\arpeggio}, il risultato è la stessa espressione musicale +con una modifica di tipo tweak applicata. + +@example +[-]\offset [@var{NomeGrob}.]@var{proprietà} @var{offset} @var{espressione-musicale} +@end example + +La sintassi di @code{\offset} nella sua forma @q{tweak} è analoga a quella +dello stesso comando @code{\tweak}, sia nell'ordine sia in presenza o assenza +del trattino iniziale. + +L'esempio seguente usa la forma @q{tweak} per regolare la posizione verticale +dell'oggetto @code{BreathingSign}. Si confronti questo col normale comando +@code{\tweak} che lo segue. La sintassi è equivalente, ma l'output di +@code{\tweak} è meno intuitivo, perché @code{BreathingSign.Y-offset} è +calcolato dalla linea centrale del pentagramma. Al contratio, non è necessatio +conoscere come è calcolato @code{Y-offset} quando si usa @code{\offset}. + +@lilypond[quote,verbatim] +{ + c''4 + \breathe + c''4 + \offset Y-offset 2 \breathe + c''2 + \tweak Y-offset 3 \breathe +} +@end lilypond + +Nell'esempio precedente, gli oggetti modificati sono stati creati direttamente +dall'input dell'utente: il comando @code{\breathe} è un'istruzione esplicita +che restituisce un oggetto @code{BreathingSign}. Dato che l'ambito del comando +era non ambiguo, non è stato necessario specificare il nome dell'oggetto. +Ma quando un oggetto viene creato @emph{indirettamente}, bisogna includere il +nome del grob. Ciò è valido anche per il comando @code{\tweak}. + +Nell'esempio seguente, l'oggetto @code{Beam} viene abbassato di due spazi +rigo applicando @code{\offset} alla proprietà @code{positions}. + +Il primo impiego di @code{\offset} richiede la presenza del nome del grob, +perché nessun elemento dell'input crea esplicitamente la travatura. Nel +secondo impiego la travatura viene creata manualmente con l'espressione +musicale @code{[}; dunque il nome del grob non è necessario. L'esempio +mostra anche una scorciatoia: un singolo @code{numero} viene applicato +a entrambi i membri di una coppia di numeri.) + +@lilypond[quote,verbatim] +{ + c''8 g'' e'' d'' + \offset Beam.positions #'(-2 . -2) + c''8 g'' e'' d'' + c''8 g'' e'' d'' + c''8-\offset positions #-2 [ g'' e'' d''] +} +@end lilypond + +@subsubsubheading{@bs{}offset con estensori spezzati} + +È anche possibile modificare in modo indipendente i segmenti di un estensore +che va oltre una o più interruzioni di linea. In questo caso, @var{offset} +prende una lista di valori del tipo di dati richiesto dalla proprietà. + +Il comando @code{\offset} usato in questo modo è simile al comando +@code{\alterBroken}, vedi @ref{Modifica degli estensori spezzati}. +Tuttavia, diversamente da @code{\alterBroken}, i valori assegnati a +@code{\offset} non sono assoluti, ma relativi. + +L'esempio seguente sposta l'oggetto @q{spezzato} @code{OttavaBracket} +attraverso la sua proprietà @code{staff-padding}. Dato che la proprietà +prende un @code{numero}, a @var{offset} viene fornita una lista di +@code{numeri} per rendere conto dei due segmenti creati dall'interruzione +di linea. +Il pezzo di parentesi dell'ottava sulla prima linea non viene modificato +perché viene aggiunto @code{0} al suo valore predefinito. Il segmento sulla +seconda linea viene alzato di tre spazi rigo dalla sua altezza predefinita. +L'altezza predefinita è @code{2}, anche se non è necessario saperlo. + +@lilypond[quote,verbatim] +{ + \offset staff-padding #'(0 3) Staff.OttavaBracket + \ottava #1 + c'''2 c''' + \break + c'''2 c''' +} +@end lilypond + +L'esempio seguente imita l'effetto del comando @code{\shape} spostando la +proprietà @code{control-points} dell'oggetto @code{Slur}. +Qui @var{offset} è una lista di @code{number-pair-list}, una per ciascun +segmento della legatura di portamento. Questo esempio realizza un risultato +identico a quello corrispondente in @ref{Modifica delle forme}. + +@lilypond[quote,verbatim] +{ + c'4-\offset control-points #'( + ((0 . 0) (0 . 0) (0 . 0) (0 . 1)) + ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5)) + ) ( f'4 g' c'' + \break + d'4 c'' f' c') +} +@end lilypond + + @node Modifica delle liste associative @subsection Modifica delle liste associative @translationof Modifying alists @@ -2401,43 +2736,55 @@ come liste associative.} @translationof Input modes Il modo in cui la notazione contenuta in un file di input è interpretata è -determinato dalla modalità di inserimento corrente. +determinato dalla modalità di inserimento corrente. In generale, esistono +due modi di specificare la modalità: una forma lunga, come @code{\chordmode}, +e una breve, come @code{\chords}. La forma lunga viene usata tipicamente +quando si passa l'input a una variabile o quando si inserisce l'input +direttamente in un contesto creato esplicitamente. La forma breve crea +implicitamente un contesto del tipo corretto per quell'input e passa l'input +a questo direttamente. È utile in casi semplici in cui non è necessario +creare esplicitamente il contesto. @subsubsubheading Modalità accordo Viene attivata col comando @code{\chordmode} e fa sì che l'input sia interpretato con la sintassi della notazione degli accordi, vedi -@ref{Chord notation}. Gli accordi sono visualizzati come note su -un rigo. +@ref{Chord notation}. La musica in modalità accordo viene elaborata +come accordi su un rigo se inserita in un contesto @code{Staff}, come +nomi di accordo se inserita in un contesto @code{ChordNames} oppure come +diagrammi della tastiera se inserita in un contesto @code{FretBoards}. La modalità accordo viene attivata anche col comando @code{\chords}. -Questo crea anche un nuovo contesto @code{ChordNames} e fa sì che -l'input che segue sia interpretato con la sintassi della notazione -degli accordi e visualizzato come nomi di accordo nel contesto -@code{ChordNames}, vedi @ref{Printing chord names}. +Anche questo fa sì che l'input che segue sia interpretato con la sintassi +della notazione degli accordi, ma in aggiunta crea implicitamente un nuovo +contesto @code{ChordNames} e elabora l'input al suo interno come nomi di +accordo, vedi @ref{Printing chord names}. @subsubsubheading Modalità percussioni Viene attivata col comando @code{\drummode} e fa sì che l'input sia interpretato con la sintassi della notazione delle percussioni, -vedi @ref{Basic percussion notation}. +vedi @ref{Basic percussion notation}. La musica in modalità percussioni +è elaborata come note percussive se inserita in un contesto @code{DrumStaff}. La modalità percussioni viene attivata anche col comando @code{\drums}. -Questo crea anche un nuovo contesto @code{DrumStaff} e fa sì che -l'input che segue sia interpretato con la sintassi della notazione -delle percussioni e visualizzato come simboli di percussione su un -rigo ritmico, vedi @ref{Basic percussion notation}. +Anche questo fa sì che l'input che segue sia interpretato con la sintassi +della notazione delle percussioni, ma in aggiunta crea implicitamente un +nuovo contesto @code{DrumStaff} e elabora l'input come note percussive, +vedi @ref{Basic percussion notation}. @subsubsubheading Modalità basso continuo Viene attivata col comando @code{\figuremode} e fa sì che l'input che segue sia interpretato con la sintassi del basso -continuo, vedi @ref{Entering figured bass}. +continuo, vedi @ref{Entering figured bass}. La musica in modalità +basso continuo viene elaborata come basso continuo se inserita in un +contesto @code{FiguredBass} o in un contesto @code{Staff}. La modalità basso continuo viene attivata anche col comando @code{\figures}. -Questo crea anche un nuovo contesto @code{FiguredBass} e fa sì che -l'input che segue sia interpretato con la sintassi del basso continuo -e visualizzato come numeri di basso nel contesto @code{FiguredBass}, +Anche questo fa sì che l'input che segue sia interpretato con la sintassi +del basso continuo, ma in aggiunta crea implicitamente un nuovo contesto +@code{FiguredBass} e elabora l'input al suo interno come basso figurato, vedi @ref{Introduction to figured bass}. @subsubsubheading Modalità tastiera e intavolatura @@ -2449,22 +2796,29 @@ Per creare diagrammi in intavolatura, inserire note o accordi nella modalità nota e visualizzarli in un contesto @code{TabStaff}, vedi @ref{Default tablatures}. -Per creare diagrammi della tastiera sopra un rigo, ci sono due opzioni. -Si può usare il contesto @code{FretBoards} (vedi -@ref{Automatic fret diagrams}) oppure inserirli come testo (markup) -sopra le note usando il comando @code{\fret-diagram} (vedi -@ref{Fret diagram markups}). +Per creare diagrammi della tastiera sopra un rigo, inserire le note o gli +accordi in modalità nota o in modalità accordo e elaborarli in un contesto +@code{FretBoards}, vedi @ref{Automatic fret diagrams}. Altrimenti i diagrammi +possono essere inseriti come testo (markup) sopra le note usando il comando +@code{\fret-diagram}, vedi @ref{Fret diagram markups}. @subsubsubheading Modalità testo vocale Viene attivata col comando @code{\lyricmode} e fa sì che l'input sia interpretato come sillabe del testo vocale con durate opzionali -e modificatori del testo associato, vedi @ref{Vocal music}. +e modificatori del testo associato, vedi @ref{Vocal music}. L'input in +modalità testo vocale viene elaborato come sillabe del testo se inserite +in un contesto @code{Lyrics}. + +La modalità testo vocale viene attivata anche col comando @code{\lyrics}. +Anche questo fa sì che l'input che segue sia interpretato come sillabe del +testo ma in aggiunta crea implicitamente un nuovo contesto @code{Lyrics} e +elabora l'input al suo interno come sillabe. La modalità testo vocale viene attivata anche col comando @code{\addlyrics}. -Questo crea anche un nuovo contesto @code{Lyrics} e un comando implicito -@code{\lyricsto} che associa il testo vocale che segue con la musica che -lo precede. +Anche questo crea implicitamente un nuovo contesto @code{Lyrics} e aggiunge +anche un comando implicito @code{\lyricsto} che associa il testo vocale che +segue con la musica che lo precede, vedi @ref{Durate automatiche delle sillabe}.. @subsubsubheading Modalità testo (markup) @@ -2688,7 +3042,7 @@ oggetti in unità di spazi rigo. @seealso Guida alla notazione: -@ref{Distances and measurements}. +@ref{Distanze e misurazioni}. @node Proprietà del simbolo del rigo @@ -3578,7 +3932,7 @@ Manuale di apprendimento: @rlearning{Altre fonti di informazione}. Guida alla notazione: -@ref{Explaining the Internals Reference}, +@ref{Come funziona la Guida al funzionamento interno}, @ref{Modifying properties}. Estendere LilyPond: @@ -3988,8 +4342,8 @@ XinO = { } @end lilypond -Qualsiasi glifo del tipo di carattere Feta può essere passato al comando -markup @code{\musicglyph} -- vedi @ref{The Feta font}. +Qualsiasi glifo @emph{Feta} usato nel font Emmentaler può essere passato al +comando markup @code{\musicglyph} -- vedi @ref{Il font Emmentaler}. I file @file{EPS} e i comandi Postscript possono essere inseriti entrambi nel @c traduzione libera di "inline" @@ -4000,9 +4354,9 @@ vedi @ref{Graphic}. @seealso Guida alla notazione: @ref{Graphic notation inside markup}, -@ref{Formatting text}, +@ref{Formattazione del testo}, @ref{Text markup commands}, -@ref{The Feta font}, +@ref{Il font Emmentaler}, @ref{Graphic}. diff --git a/Documentation/it/notation/editorial.itely b/Documentation/it/notation/editorial.itely index a777e532ca..0d9b77da6d 100644 --- a/Documentation/it/notation/editorial.itely +++ b/Documentation/it/notation/editorial.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: a22f2ad68fccb81e52f805ba69cb8c0e6bf8cd82 + Translation of GIT committish: dbc2dd143e50e000a39883fc8217b4ec60e08657 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -377,7 +377,7 @@ accordo specificandola dopo ciascuna altezza. @end lilypond Le indicazioni di diteggiatura possono essere poste sopra o sotto il -rigo, come è spiegato in @ref{Direction and placement}. +rigo, come è spiegato in @ref{Direzione e posizionamento}. @snippets @@ -392,7 +392,7 @@ rigo, come è spiegato in @ref{Direction and placement}. @seealso Guida alla notazione: -@ref{Direction and placement}. +@ref{Direzione e posizionamento}. Frammenti: @rlsr{Editorial annotations}. @@ -491,7 +491,7 @@ Guida al funzionamento interno: @funindex x11-color Si possono assegnare dei colori a ciascun oggetto. I nomi dei colori validi -sono elencati nella @ref{List of colors}. +sono elencati nell'@ref{Elenco dei colori}. @lilypond[verbatim,quote,fragment] \override NoteHead.color = #red @@ -515,12 +515,13 @@ La funzione @code{x11-color}, se non riesce a comprendere il parametro, restituisce il colore nero. @lilypond[verbatim,quote] -\relative c'' { - \override Staff.StaffSymbol.color = #(x11-color 'SlateBlue2) - \set Staff.instrumentName = \markup { - \with-color #(x11-color 'navy) "Clarinet" +\new Staff \with { + instrumentName = \markup { + \with-color #(x11-color 'red) "Clarinet" + } } - + \relative c'' { + \override Staff.StaffSymbol.color = #(x11-color 'SlateBlue2) gis8 a \override Beam.color = #(x11-color "medium turquoise") gis a @@ -528,7 +529,7 @@ restituisce il colore nero. gis a \override NoteHead.color = #(x11-color "LimeGreen") gis a - % questo parametro è volutamente assurdo; notare che i gambi restano neri + % this is deliberate nonsense; note that the stems remain black \override Stem.color = #(x11-color 'Boggle) b2 cis } @@ -543,12 +544,13 @@ restituisce il colore nero. I colori RGB esatti si specificano con la funzione Scheme @code{rgb-color}. @lilypond[verbatim,quote] +\new Staff \with { + instrumentName = \markup { + \with-color #(x11-color 'red) "Clarinet" + } + } \relative c'' { \override Staff.StaffSymbol.color = #(x11-color 'SlateBlue2) - \set Staff.instrumentName = \markup { - \with-color #(x11-color 'navy) "Clarinet" - } - \override Stem.color = #(rgb-color 0 0 0) gis8 a \override Stem.color = #(rgb-color 1 1 1) @@ -560,8 +562,7 @@ I colori RGB esatti si specificano con la funzione Scheme @code{rgb-color}. @seealso Guida alla notazione: -@ref{List of colors}, @ref{The -tweak command}. +@ref{Elenco dei colori}, @ref{Il comando tweak}. Frammenti: @rlsr{Editorial annotations}. @@ -583,7 +584,7 @@ e @code{ForestGreen}. Per il web si consiglia di usare i colori normali Le note in un accordo non possono essere colorate separatamente con un @code{\override}; al suo posto si usa @code{\tweak} o l'equivalente -@code{\single\override}, vedi @ref{The tweak command}. +@code{\single\override}, vedi @ref{Il comando tweak}. @node Parentesi @@ -655,7 +656,7 @@ Vale anche per le semibrevi e le pause, anche se i loro gambi sono resi invisibili. I gambi si possono posizionare sopra o sotto, vedi -@ref{Direction and placement}. +@ref{Direzione e posizionamento}. @predefined @@ -675,7 +676,7 @@ I gambi si possono posizionare sopra o sotto, vedi @seealso Guida alla notazione: -@ref{Direction and placement}. +@ref{Direzione e posizionamento}. Frammenti: @rlsr{Editorial annotations}. @@ -886,14 +887,22 @@ Le parentesi analitiche si possono annidare. } @end lilypond -@seealso -Frammenti: -@rlsr{Editorial annotations}. +@snippets + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{analysis-brackets-above-the-staff.ly} +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{analysis-brackets-with-labels.ly} + + +@seealso Guida al funzionamento interno: @rinternals{Horizontal_bracket_engraver}, @rinternals{HorizontalBracket}, @rinternals{horizontal-bracket-interface}, +@rinternals{HorizontalBracketText}, +@rinternals{horizontal-bracket-text-interface}, @rinternals{Staff}. @c LocalWords: gis diff --git a/Documentation/it/notation/expressive.itely b/Documentation/it/notation/expressive.itely index 806286774a..26e1042d4e 100644 --- a/Documentation/it/notation/expressive.itely +++ b/Documentation/it/notation/expressive.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 21be03e4b893ec2bbea745a713360310931337b9 + Translation of GIT committish: c473929f7e9d1219a1fbe60ae0922d17c26fdefe When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -166,7 +166,7 @@ L'output corrispondente è: Le regole per il posizionamento predefinito delle articolazioni sono definite in @file{scm/script.scm}. Articolazioni e ornamenti possono essere posizionati manualmente sopra o sotto il rigo; si veda -@ref{Direction and placement}. +@ref{Direzione e posizionamento}. Le articolazioni sono oggetti @code{Script}. Le loro proprietà sono descritte in dettaglio in @rinternals{Script}. @@ -213,7 +213,7 @@ Manuale di apprendimento: Guida alla notazione: @ref{Text scripts}, -@ref{Direction and placement}, +@ref{Direzione e posizionamento}, @ref{List of articulations}, @ref{Trills}. @@ -262,7 +262,7 @@ sono @code{\ppppp}, @code{\pppp}, @code{\ppp}, @code{\pp}, @code{\p}, @code{\ffff}, @code{\fffff}, @code{\fp}, @code{\sf}, @code{\sff}, @code{\sp}, @code{\spp}, @code{\sfz} e @code{\rfz}. Le indicazioni dinamiche possono essere posizionate manualmente sopra o sotto il -rigo, come è spiegato in dettaglio in @ref{Direction and placement}. +rigo, come è spiegato in dettaglio in @ref{Direzione e posizionamento}. @lilypond[verbatim,quote] \relative c'' { @@ -310,6 +310,8 @@ terminata con l'inizio di un altro segno di @notation{crescendo} o cui è assegnato il successivo @code{\<} o @code{\>}. La forcella successiva partirà dal margine destro della stessa nota invece che dal margine sinistro, come accade quando si termina con @code{\!}. +Una forcella che termina sul battere si fermerà alla stanghetta +precedente. @lilypond[verbatim,quote] \relative { @@ -454,12 +456,17 @@ indicazioni testuali, estensori del testo e indicazioni di pedalizzazione del pi @snippets +@cindex forcelle sulle stanghette + @lilypondfile[verbatim,quote,texidoc,doctitle] {setting-hairpin-behavior-at-bar-lines.ly} @lilypondfile[verbatim,quote,texidoc,doctitle] {setting-the-minimum-length-of-hairpins.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{moving-the-ends-of-hairpins.ly} + @cindex al niente @cindex niente, al @@ -495,10 +502,10 @@ Manuale di apprendimento: @rlearning{Articolazione e dinamiche}. Guida alla notazione: -@ref{Direction and placement}, +@ref{Direzione e posizionamento}, @ref{New dynamic marks}, -@ref{Enhancing MIDI output}, -@ref{Controlling MIDI dynamics}. +@ref{Miglioramento dell'output MIDI}, +@ref{Gestione delle dinamiche nel MIDI}. Frammenti: @rlsr{Expressive marks}. @@ -537,7 +544,7 @@ moltoF = \markup { molto \dynamic f } In modalità markup, si possono creare dinamiche editoriali (racchiuse tra parentesi normali o quadrate). La sintassi della modalità markup è -descritta in @ref{Formatting text}. +descritta in @ref{Formattazione del testo}. @lilypond[verbatim,quote] roundF = \markup { @@ -625,10 +632,10 @@ Le impostazioni dei tipi di carattere in modalità markup sono descritti in @seealso Guida alla notazione: -@ref{Formatting text}, +@ref{Formattazione del testo}, @ref{Selecting font and font size}, -@ref{Enhancing MIDI output}, -@ref{Controlling MIDI dynamics}. +@ref{Miglioramento dell'output MIDI}, +@ref{Gestione delle dinamiche nel MIDI}. Extending LilyPond: @rextend{Markup construction in Scheme}. @@ -678,7 +685,7 @@ terminare nella stessa voce in cui è iniziata.} @funindex \slurNeutral Le legature di portamento possono essere posizionate manualmente sopra o -sotto il rigo, come è spiegato in @ref{Direction and placement}. +sotto il rigo, come è spiegato in @ref{Direzione e posizionamento}. @cindex legatura di frase @cindex legature di portamento multiple @@ -690,7 +697,8 @@ indicano in realtà una legatura di frase e le legature di frase possono essere sovrapposte a una normale legatura, vedi @ref{Phrasing slurs}. Quando invece si vogliono usare molteplici legature di portamento normali in una sola voce, l'inizio e la fine di ogni legatura devono essere preceduti da un -@code{\=} seguito da un numero identificativo o del testo. +@code{\=} seguito da una chiave identificativa (un simbolo o un numero intero +non negativo). @lilypond[verbatim,quote] \fixed c' { @@ -797,7 +805,7 @@ Manuale di apprendimento: @rlearning{Sul non annidamento di parentesi e legature di valore}. Guida alla notazione: -@ref{Direction and placement}, +@ref{Direzione e posizionamento}, @ref{Phrasing slurs}. Frammenti: @@ -834,7 +842,7 @@ A livello tipografico, una legatura di frase si comporta in modo pressoché identico a una normale legatura di portamento. Sono però trattate come oggetti diversi; ad esempio, @code{\slurUp} non ha effetto su una legatura di frase. Le legature di frase possono essere posizionate -sopra o sotto il rigo, come è spiegato in @ref{Direction and placement}. +sopra o sotto il rigo, come è spiegato in @ref{Direzione e posizionamento}. @cindex legature di frase simultanee @cindex legature di frase multiple @@ -929,7 +937,7 @@ Manuale di apprendimento: @rlearning{Sul non annidamento di parentesi e legature di valore}. Guida alla notazione: -@ref{Direction and placement}, +@ref{Direzione e posizionamento}, @ref{Slurs}. Frammenti: @@ -1222,7 +1230,7 @@ valore. Per maggiori dettagli si veda @ref{Ties}. @code{\arpeggioArrowDown}, @code{\arpeggioNormal}, @code{\arpeggioBracket}, -@code{\arpeggioParenthesis} +@code{\arpeggioParenthesis}, @code{\arpeggioParenthesisDashed}. @endpredefined @@ -1277,7 +1285,7 @@ descritti in @ref{Cross-staff stems}. @funindex \stopTrillSpan I trilli senza linea di estensione si ottengono col comando -@code{\trill}; si veda @ref{Articulations and ornamentations}. +@code{\trill}; si veda @ref{Articolazioni e abbellimenti}. I trilli con linea di estensione si ottengono con @code{\startTrillSpan} e @code{\stopTrillSpan}: @@ -1383,7 +1391,7 @@ Glossario Musicale: @rglosnamed{trill,trillo}. Guida alla notazione: -@ref{Articulations and ornamentations}, +@ref{Articolazioni e abbellimenti}, @ref{Grace notes}. Frammenti: diff --git a/Documentation/it/notation/input.itely b/Documentation/it/notation/input.itely index e4664f0ac4..d4bef372d0 100644 --- a/Documentation/it/notation/input.itely +++ b/Documentation/it/notation/input.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 4c31c117565b1c7dd78e606fceb7cba354f2859a + Translation of GIT committish: 1e5c6b0f54079eb3285dcc4c7e53f17d8bb03933 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -390,7 +390,8 @@ di livello superiore saranno combinate insieme in un singolo blocco @code{\book}. Tale comportamento può essere modificato impostando la variabile @code{toplevel-score-handler} nel livello superiore. Il gestore (in inglese @emph{handler}) predefinito è definito nel file -di inizializzazione @file{../scm/lily.scm}. +@file{../scm/lily-library.scm} e viene impostato nel file +@file{../ly/declarations-init.ly}. @item Un blocco @code{\book} combina logicamente molteplici movimenti @@ -551,7 +552,7 @@ alcuni brani comprendono molte altre informazioni. @menu * Creazione di titoli intestazioni e piè di pagina:: * Titoli intestazioni e piè di pagina personalizzati:: -* Creazione di metadati PDF:: +* Creazione di metadati per i file di output:: * Creazione di note a piè di pagina:: * Riferimento ai numeri di pagina:: * Indice:: @@ -583,7 +584,7 @@ brano (@emph{score}). I valori dei campi dei titoli come @code{title} (titolo) e @code{composer} (compositore) sono definiti nei blocchi @code{\header} (la sintassi dei blocchi @code{\header} e un elenco completo dei campi disponibili si -trovano in @ref{Default layout of bookpart and score titles}). I titoli +trovano in @ref{Formattazione predefinita dei titoli delle parti e dei brani}). I titoli del libro, delle parti e dei brani possono avere tutti gli stessi campi, sebbene per impostazione predefinita i campi dei titoli del brano siano limitati a @code{piece} e @code{opus}. @@ -743,8 +744,8 @@ di tutti i brani, magari sovrascrivendo alcuni campi e sopprimendone altri: @seealso Guida alla notazione: @ref{File structure}, -@ref{Default layout of bookpart and score titles}, -@ref{Custom layout for titles}. +@ref{Formattazione predefinita dei titoli delle parti e dei brani}, +@ref{Formattazione personalizzata dei titoli}. @node Formattazione predefinita dei titoli delle parti e dei brani @@ -823,7 +824,7 @@ Le impostazioni predefinite per @code{scoreTitleMarkup} posizionano i campi @end itemize -Per cambiare la formattazione predefinita leggere @ref{Custom layout for titles}. +Per cambiare la formattazione predefinita leggere @ref{Formattazione personalizzata dei titoli}. @cindex breakbefore @@ -862,7 +863,7 @@ Manuale di apprendimento: @rlearning{Come funzionano i file di input di LilyPond}, Guida alla notazione: -@ref{Custom layout for titles}, +@ref{Formattazione personalizzata dei titoli}, @ref{File structure}. File installati: @@ -960,7 +961,7 @@ intestazione, piè di pagina e titolo di un blocco @code{\header}. @seealso Guida alla notazione: -@ref{Formatting text}. +@ref{Formattazione del testo}. @node Formattazione personalizzata dei titoli @@ -984,7 +985,7 @@ testuali, cambiare una o entrambe le seguenti variabili @code{\paper}: Il posizionamento dei titoli secondo i valori predefiniti di queste variabili @code{\markup} è mostrato negli esempi in -@ref{Default layout of bookpart and score titles}. +@ref{Formattazione predefinita dei titoli delle parti e dei brani}. Le impostazioni predefinite di @code{scoreTitleMarkup}, definite in @file{ly/titling-init.ly}, sono: @@ -1173,10 +1174,11 @@ Sono disponibili varie procedure pronte per verificare varie condizioni: @item create-page-number-stencil @tab print-page-numbers è vero? @item print-all-headers @tab print-all-headers è vero? @item first-page @tab prima pagina del libro? +@item not-first-page @tab non la prima pagina del libro? @item (on-page nmbr) @tab numero pagina = nmbr? @item last-page @tab ultima pagina del libero? -@item not-first-page @tab non la prima pagina del libro? @item part-first-page @tab prima pagina della parte? +@item not-part-first-page @tab non la prima pagine della parte? @item part-last-page @tab ultima pagina della parte? @item not-single-page @tab pagine della parte > 1? @@ -1226,22 +1228,35 @@ verificano se l'output è una pagina singola. @seealso Guida alla notazione: @ref{Titles explained}, -@ref{Default layout of bookpart and score titles}. +@ref{Formattazione predefinita dei titoli delle parti e dei brani}. File installati: @file{../ly/titling-init.ly}. -@node Creazione di metadati PDF -@subsection Creazione di metadati PDF -@translationof Creating PDF metadata +@node Creazione di metadati per i file di output +@subsection Creazione di metadati per i file di output +@translationof Creating output file metadata -@cindex PDF metadata +@cindex metadati PDF +@cindex metadati MIDI +@cindex MIDI, metadati +@cindex PDF, metadati Oltre ad apparire nell'output, le variabili di @code{\header} vengono -usate anche per impostare i metadati PDF (le informazioni mostrate dai -lettori PDF come @code{proprietà} del file PDF). Per esempio, impostando -la proprietà @code{title} del blocco @code{header} @q{Sinfonia I} si -assegnerà questo titolo anche al documento PDF. +usate anche per impostare i metadati per i file di output. Per esempio, +con i file PDF, questi metadati possono essere mostrati dai lettori PDF +come @code{proprietà} del file PDF. Per ciascun tipo di file di output, +verranno considerate solo le definizioni @code{\header} dei blocchi +specifici per quel tipo e dei blocchi che si trovano al livello superiore +della gerarchia. Dunque per i file PDF solo le definizioni @code{\header} +del livello @code{\book} e del livello superiore vengono utilizzate per +i metadati PDF del documento, mentre per i file MIDI vengono usate le +definizioni che si trovano in un livello inferiore o in un +blocco @code{\score}. + +Per esempio, impostando la proprietà @code{title} del blocco @code{header} +su @q{Sinfonia I}, questo nome verrà usato come titolo del documento PDF e +come nome della sequenza del file MIDI. @example \header@{ @@ -1273,6 +1288,11 @@ correnti. @code{ModDate} può essere sovrascritta impostando nel blocco @code{header} la variabile @code{moddate} (o @code{pdfmoddate}) su una valida data per il PDF. +La variabile @code{title} imposta anche il nome della sequenza dei file +MIDI. La variabile @code{midititle} serve a impostare il nome della +sequenza in modo indipendente dal valore usato per l'output. + + @node Creazione di note a piè di pagina @subsection Creazione di note a piè di pagina @translationof Creating footnotes @@ -1657,7 +1677,7 @@ piè di pagina, preceduto dal @var{segno}. Qualsiasi carattere facile da scrivere, come * o +, può essere usato come+ segno, come è spiegato in @ref{Footnotes in music expressions}. Altrimenti, -si possono usare gli alias ASCII (vedi @ref{ASCII aliases}): +si possono usare gli alias ASCII (vedi @ref{Alias ASCII}): @lilypond[verbatim,quote,ragged-right,papersize=a8] \book { @@ -1706,8 +1726,8 @@ Manuale di apprendimento: @rlearning{Oggetti e interfacce}. Guida alla notazione: -@ref{ASCII aliases}, -@ref{Balloon help}, +@ref{Alias ASCII}, +@ref{Nuvoletta di aiuto}, @ref{List of special characters}, @ref{Text marks}, @ref{Text scripts}, @@ -2009,7 +2029,7 @@ strumenti. Di norma il file incluso definisce una serie di variabili che poi diventano disponibili nel file della partitura completa. Le sezioni contrassegnate con delle etichette nei file inclusi possono essere usate in varie parti di una partitura, vedi -@ref{Different editions from one source}. +@ref{Edizioni diverse da un unico sorgente}. I file nella directory di lavoro corrente possono essere citati indicando semplicemente il nome del file dopo il comando @code{\include}. I file in altre @@ -2172,7 +2192,7 @@ partitura vocale @notation{a cappella} spesso comprende, ai fini delle prove, una riduzione per pianoforte delle parti, identiche alla musica vocale, dunque la musica deve essere inserita una volta sola. La musica definita in due variabili può essere combinata in un rigo, come è -spiegato in @ref{Automatic part combining}. Ecco un esempio: +spiegato in @ref{Combinazione automatica delle parti}. Ecco un esempio: @lilypond[verbatim,quote] sopranoMusic = \relative { a'4 b c b8( a) } @@ -2463,7 +2483,7 @@ Manuale di apprendimento: @rlearning{Organizzare i brani con le variabili}. Guida alla notazione: -@ref{Automatic part combining}, +@ref{Combinazione automatica delle parti}, @ref{Including LilyPond files}. @knownissues @@ -2838,8 +2858,8 @@ vedi @rprogram{Opzioni di base della linea di comando per LilyPond}. @subsection Cambiare il tipo di carattere della notazione @translationof Replacing the notation font -Gonville è un'alternativa al tipo di carattere Feta usato da LilyPond e può -essere scaricato da: +Gonville è un insieme di glifi alternativo a @emph{Feta}, parte del font +Emmentaler, e può essere usato in LilyPond. Può essere scaricato da: @example @uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/} @end example @@ -2848,7 +2868,7 @@ Ecco alcune battute di musica che usa Gonville: @sourceimage{Gonville_after,15cm,,} -E alcune battute di musica che usa Feta (il tipo di carattere predefinito di LilyPond): +E alcune battute di musica che usa i glifi Feta di LilyPond: @sourceimage{Gonville_before,15cm,,} @@ -2864,6 +2884,9 @@ directory esistente @code{fonts} come @code{fonts_orig} e la directory Manuale di apprendimento: @rlearning{Altre fonti di informazione}. +Guida alla notazione: +@ref{Il font Emmentaler}. + @knownissues Gonville non può essere usato per scrivere notazione in @q{musica antica} ed è probabile che i nuovi glifi introdotti in rilasci successivi di @@ -2932,7 +2955,7 @@ e portato Alcuni effetti, come panning, bilanciamento, espressione, riverbero e chorus, si gestiscono impostando le proprietà di contesto, vedi -@ref{Context properties for MIDI effects}. +@ref{Proprietà di contesto per gli effetti MIDI}. Se si usa lo script @file{articulate}, anche i seguenti elementi della notazione musicale saranno presenti nell'output MIDI: @@ -2955,7 +2978,7 @@ Il c avrà il valore di una semiminima. @end itemize @noindent -Vedi @ref{Enhancing MIDI output}. +Vedi @ref{Miglioramento dell'output MIDI}. @cindex MIDI, notazione non supportata @@ -3021,7 +3044,8 @@ dei blocchi @code{\book}, @code{\bookpart} o @code{\score}. Vedi @seealso Guida alla notazione: -@ref{File structure}. +@ref{File structure}, +@ref{Creazione di metadati per i file di output}. File installati: @file{scm/midi.scm}. @@ -3244,7 +3268,7 @@ Manuale di apprendimento: @rlearning{Altre fonti di informazione}. Guida alla notazione: -@ref{Expressive marks}, +@ref{Segni di espressione}, @ref{Score layout}. File installati: diff --git a/Documentation/it/notation/notation-appendices.itely b/Documentation/it/notation/notation-appendices.itely index 18b9495917..2df11b7af2 100644 --- a/Documentation/it/notation/notation-appendices.itely +++ b/Documentation/it/notation/notation-appendices.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 0b22ae65f4614b93ba9d604d3a164816b2baac42 + Translation of GIT committish: 1e5c6b0f54079eb3285dcc4c7e53f17d8bb03933 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -22,7 +22,7 @@ * Formati carta predefiniti:: * Strumenti MIDI:: * Elenco dei colori:: -* Il tipo di carattere Feta:: +* Il font Emmentaler:: * Stili delle teste di nota:: * Stili della chiave:: * Comandi per markup:: @@ -853,7 +853,7 @@ cello lead 6 (voice) @subsubheading Colori normali -La sintassi è descritta in @ref{Coloring objects}. +La sintassi è descritta in @ref{Colorare gli oggetti}. @cindex elenco dei colori @cindex colori, elenco dei @@ -950,19 +950,38 @@ greyN dove N è un numero compreso tra 0 e 100. -@node Il tipo di carattere Feta -@appendixsec Il tipo di carattere Feta -@translationof The Feta font +@node Il font Emmentaler +@appendixsec Il font Emmentaler +@translationof The Emmentaler font -@cindex tipo di carattere Feta -@cindex Feta, tipo di carattere +@cindex Emmentaler, font +@cindex font Emmentaler +@cindex Feta, font +@cindex font Feta +@cindex Parmesan, font +@cindex font Parmesan +@cindex tipi di carattere -I simboli seguenti sono disponibili nel tipo di carattere Emmentaler e -si possono utilizzare all'interno di un comando @code{\markup} specificando -il nome del glifo, come mostrato nelle seguenti tabelle, per esempio -@code{g^\markup @{\musicglyph #"scripts.segno" @}} o -@code{\markup @{\musicglyph #"five"@}}. Maggiori informazioni in -@ref{Formatting text}. +Il font Emmentaler è composto da due @emph{sottoinsiemi} di glifi. +@qq{Feta}, usato nella notazione classica e @qq{Parmesan}, usato +nella notazione antica. + +A qualsiasi glifo del font Emmentaler si può accedere direttamente usando +del testo insieme al nome del glifo (come è mostrato nelle tabelle +seguenti). Per esempio: + +@example +g^\markup @{\musicglyph #"scripts.segno" @} +@end example + +@noindent +oppure + +@example +\markup @{\musicglyph #"five"@}. +@end example + +Maggiori informazioni in @ref{Formattazione del testo}. @menu @@ -1542,7 +1561,7 @@ Tutti i comandi seguenti possono essere usati all'interno di @code{\markuplist}: @translationof List of special characters Si possono usare i seguenti riferimenti per i caratteri speciali; -maggiori informazioni in @ref{ASCII aliases}. +maggiori informazioni in @ref{Alias ASCII}. Si usa la sintassi HTML. Di questi riferimenti molti sono identici a quelli HTML, alcuni sono ispirati a @LaTeX{}. diff --git a/Documentation/it/notation/pitches.itely b/Documentation/it/notation/pitches.itely index 7c2d839a45..b0f14e9e79 100644 --- a/Documentation/it/notation/pitches.itely +++ b/Documentation/it/notation/pitches.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: e45059ae37b240ce52639ad5c49110b510a89481 + Translation of GIT committish: 041cb33a404a829a8cdeeaebce17e45f613f10d8 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -303,6 +303,24 @@ in ogni intervallo. } @end lilypond +In situazioni complesse, può essere utile cambiare l'altezza di riferimento senza +tener conto di ciò che è successo prima, usando @code{\resetRelativeOctave}: + +@lilypond[verbatim,quote] +\relative { + << + { c''2 d } + \\ + { e,,2 f } + >> + \resetRelativeOctave c'' + c2 +} +@end lilypond + +@funindex \resetRelativeOctave + + @seealso Glossario musicale: @rglosnamed{fifth,quinta}, @@ -446,7 +464,7 @@ Manuale di apprendimento: @rlearning{Altezze e armature di chiave}. Guida alla notazione: -@ref{Automatic accidentals}, +@ref{Alterazioni automatiche}, @ref{Annotational accidentals (musica ficta)}, @ref{Note names in other languages}. @@ -464,8 +482,8 @@ Guida al funzionamento interno: @knownissues Poiché non esistono standard universalmente accettati per indicare -le alterazioni di quarto di tono, il simbolo impiegato da LilyPond -non si riferisce ad alcuno standard. +le alterazioni di quarto di tono, i simboli impiegati da LilyPond +non si riferiscono ad alcuno standard. @node Nomi delle note in altre lingue @@ -526,7 +544,7 @@ Oltre ai nomi delle note, anche i suffissi per le alterazioni possono variare a seconda della lingua adottata: @quotation -@multitable {@code{nederlands}} {-@code{s}/-@code{-sharp}} {-@code{ess}/-@code{es}} {-@code{ss}/-@code{x}/-@code{-sharpsharp}} {-@code{essess}/-@code{eses}} +@multitable {@code{nederlands}} {-@code{s}/-@code{-sharp}} {-@code{f}/-@code{-flat}} {-@code{ss}/-@code{x}/-@code{-sharpsharp}} {-@code{ff}/-@code{-flatflat}} @headitem Lingua @tab diesis @tab bemolle @tab doppio diesis @tab doppio bemolle @item @code{nederlands} @@ -919,9 +937,14 @@ music = \relative { c'8. ees16( fis8. a16 b8.) gis16 f8. d16 } @end lilypond @knownissues -Le legature di valore manuali in @code{\retrograde} saranno spezzate e -genereranno degli avvisi. Alcune legature di valore possono essere -generate automaticamente abilitando @ref{Automatic note splitting}. +@code{\retrograde} è uno strumento piuttosto semplice. Dato che molti eventi +sono @q{riflessi} (come in uno specchio) invece che scambiati, le modifiche +manuali e i modificatori direzionali per gli estensori di apertura devono essere +aggiunti ai corrispondenti estensori di chiusura: @code{^(} deve essere terminato +da @code{^)}, ogni @code{\<} o @code{\cresc} deve essere terminato da @code{\!} +o @code{\endcr}, ogni @code{\>} o @code{\decr} deve essere terminato da +@code{\enddecr}. Comandi e modifiche che cambiano le proprietà con un effetto +duraturo causeranno facilmente delle sorprese. @seealso Guida alla notazione: @@ -1145,7 +1168,7 @@ c'2 c' c'2 c' @end lilypond -L'elenco completo di tutti i nomi di chiave possibili si trova in @ref{Clef styles}. +L'elenco completo di tutti i nomi di chiave possibili si trova in @ref{Stili della chiave}. Chiavi speciali, come quelle usate nella musica @emph{antica}, sono descritte in @ref{Mensural clefs} e @ref{Gregorian clefs}. La musica che utilizza le chiavi dell'intavolatura è discussa in @ref{Default tablatures} e @@ -1229,8 +1252,15 @@ Si può cambiare tale comportamento predefinito col comando c'1 @end lilypond -When there is a manual clef change, the glyph of the changed clef -will be smaller than normal. This behaviour can be overridden. +@noindent +Per essere più precisi, non è proprio il comando @code{\clef} a stampare +la chiave. Questo comando imposta o cambia una proprietà dell'incisore +@code{Clef_engraver}, cui spetta la decisione se stampare o meno una chiave +nel rigo attuale. La proprietà @code{forceClef} scavalca questa decisione +localmente in modo da ristampare la chiave una volta. + +Quando c'è un cambio di chiave manuale, il glifo della chiave cambiata sarà +più piccolo del normale. Tale comportamento può essere modificato. @lilypond[verbatim,quote,fragment] \clef "treble" @@ -1510,26 +1540,24 @@ all'unisono. @lilypond[verbatim,quote] \new GrandStaff << - \new Staff = "violin" { - \relative c'' { - \set Staff.instrumentName = #"Vln" - \set Staff.midiInstrument = #"violin" - % not strictly necessary, but a good reminder - \transposition c' - - \key c \major - g4( c8) r c r c4 - } + \new Staff = "violin" \with { + instrumentName = #"Vln" + midiInstrument = #"violin" } - \new Staff = "clarinet" { - \relative c'' { - \set Staff.instrumentName = \markup { Cl (B\flat) } - \set Staff.midiInstrument = #"clarinet" - \transposition bes - - \key d \major - a4( d8) r d r d4 - } + \relative c'' { + % non strettamente necessario, ma meglio ricordarlo + \transposition c' + \key c \major + g4( c8) r c r c4 + } + \new Staff = "clarinet" \with { + instrumentName = \markup { Cl (B\flat) } + midiInstrument = #"clarinet" + } + \relative c'' { + \transposition bes + \key d \major + a4( d8) r d r d4 } >> @end lilypond @@ -2189,6 +2217,130 @@ musicB = { @end lilypond +@item choral + +@cindex stile delle alterazioni choral +@cindex alterazioni, choral +@cindex choral, stile delle alterazioni +@cindex choral, alterazioni + +@funindex choral + +Questa regola è una combinazione degli stili @code{modern-voice} e @code{piano}. +Mostra tutte le alterazioni richieste dai cantanti che seguono solo la propria +voce, e mostra anche le ulteriori alterazioni per tutti i lettori che seguono +tutte le voci di un intero @code{ChoirStaff} contemporaneamente. + +Questo stile di alterazioni si applica al @code{ChoirStaff} corrente per +impostazione predefinita. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new ChoirStaff { + << + \context Staff = "up" { + \accidentalStyle choral + \musicA + } + \context Staff = "down" { + \musicB + } + >> +} +@end lilypond + + +@item choral-cautionary + +@cindex alterazioni, choral cautionary +@cindex alterazioni di cortesia, choral +@cindex choral cautionary, alterazioni +@cindex stile delle alterazioni, choral cautionary +@cindex cortesia, stile delle alterazioni di, choral + +@funindex choral-cautionary + +Questo stile è identico a @code{choral} ma con le alterazioni extra +in forma di alterazioni di cortesia. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new ChoirStaff { + << + \context Staff = "up" { + \accidentalStyle choral-cautionary + \musicA + } + \context Staff = "down" { + \musicB + } + >> +} +@end lilypond + + @item neo-modern @cindex stile delle alterazioni @emph{neo-modern} @@ -3030,7 +3182,7 @@ Frammenti di codice: Guida alla notazione: @ref{Note head styles}, -@ref{Chorded notes}, +@ref{Note in un accordo}, @ref{Indicating harmonics and dampened notes}. Guida al funzionamento interno: diff --git a/Documentation/it/notation/repeats.itely b/Documentation/it/notation/repeats.itely index fba80f1563..4300dbcf70 100644 --- a/Documentation/it/notation/repeats.itely +++ b/Documentation/it/notation/repeats.itely @@ -314,7 +314,7 @@ contesto Score le proprietà @code{segnoType}, @code{startRepeatSegnoType}, @code{endRepeatSegnoType} o @code{doubleRepeatSegnoType} per il tipo di stanghetta richiesto. I tipi di stanghetta alternativi devono essere selezionati dai tipi predefiniti o dai tipi precedentemente definiti col -comando @code{\defineBarLine} (vedi @ref{Bar lines}). +comando @code{\defineBarLine} (vedi @ref{Stanghette}). @lilypond[verbatim,quote] \defineBarLine ":|.S[" #'(":|." "S[" "") @@ -353,7 +353,7 @@ Glossario Musicale: @rglos{volta}. Guida alla notazione: -@ref{Bar lines}, +@ref{Stanghette}, @ref{Modifying context plug-ins}, @ref{Modifying ties and slurs}, @ref{Time administration}. @@ -448,7 +448,7 @@ situazioni. inusuali, e potrebbero causare un comportamento inaspettato. Nella maggior parte dei casi, le ripetizioni devono essere create col comando standard @code{@bs{}repeat} oppure stampando le stanghette -opportune. Maggiori informazioni in @ref{Bar lines}.} +opportune. Maggiori informazioni in @ref{Stanghette}.} La proprietà @code{repeatCommands} permette di controllare la formattazione delle ripetizioni. Il suo valore è una lista Scheme dei comandi di ripetizione. @@ -515,7 +515,7 @@ Comandi di ripetizione multipli possono trovarsi nello stesso punto: @cindex testo nella parentesi della volta Si può includere del testo nella parentesi della volta. Il testo può consistere di -un numero, di più numeri o di un'indicazione testuale, si veda @ref{Formatting text}. Il +un numero, di più numeri o di un'indicazione testuale, si veda @ref{Formattazione del testo}. Il modo più semplice per usare del testo è definirlo prima e poi includerlo nella lista Scheme, @@ -535,8 +535,8 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } @seealso Guida alla notazione: -@ref{Bar lines}, -@ref{Formatting text}. +@ref{Stanghette}, +@ref{Formattazione del testo}. Frammenti: @rlsr{Repeats}. @@ -656,7 +656,7 @@ senza finali alternativi). @end lilypond Gli accordi si ripetono col simbolo di ripetizione dell'accordo -@code{q}. Vedi @ref{Chord repetition}. +@code{q}. Vedi @ref{Ripetizione di un accordo}. @warning{Se si usa @code{@bs{}relative} dentro a un blocco @code{@bs{}repeat} senza istanziare esplicitamente il contesto @code{Voice}, appare un rigo @@ -664,7 +664,7 @@ in più (non desiderato). Vedi @rprogram{Appare un rigo in più}.} @seealso Guida alla notazione: -@ref{Chord repetition}. +@ref{Ripetizione di un accordo}. Frammenti: @rlsr{Repeats}. diff --git a/Documentation/it/notation/rhythms.itely b/Documentation/it/notation/rhythms.itely index 3cff8040ae..9d09ad3b5b 100644 --- a/Documentation/it/notation/rhythms.itely +++ b/Documentation/it/notation/rhythms.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 3ecc98aa5db8a47adcf9defc4ec9fc018c5cc47d + Translation of GIT committish: 18d03fa6a724b0102ccc47d194209802cea02f2e When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -141,7 +141,7 @@ della notazione proporzionale si trovano in @ref{Proportional notation}. Di norma i punti sono spostati in su per evitare le linee del rigo, fuorché all'interno di passaggi polifonici. I punti possono essere orientati manualmente verso l'alto -o verso il basso; si veda @ref{Direction and placement}. +o verso il basso; si veda @ref{Direzione e posizionamento}. @predefined @@ -170,7 +170,7 @@ Glossario musicale: @rglosnamed{Duration names notes and rests,Nomi di durata delle note e delle pause}. Guida alla notazione: -@ref{Automatic beams}, +@ref{Travature automatiche}, @ref{Ties}, @ref{Stems}, @ref{Writing rhythms}, @@ -317,10 +317,10 @@ Manuale di apprendimento: @rlearning{Metodi di modifica}. Guida alla notazione: -@ref{Direction and placement}, +@ref{Direzione e posizionamento}, @ref{Time administration}, @ref{Scaling durations}, -@ref{The tweak command}, +@ref{Il comando tweak}, @ref{Polymetric notation}. Frammenti di codice: @@ -458,7 +458,7 @@ unire note dalle durate superiori all'unità di suddivisione della misura: @lilypond[verbatim,quote] \relative { - r8 c'~ 2 r4 | + r8 c'4.~ 4 r4 | r8^"non" c2~ 8 r4 } @end lilypond @@ -527,7 +527,7 @@ così: @funindex \tieNeutral Le legature di valore possono essere impostate manualmente per avere la -curva in su o in giù, come è spiegato in @ref{Direction and placement}. +curva in su o in giù, come è spiegato in @ref{Direzione e posizionamento}. @cindex legature di valore, aspetto @cindex legature di valore punteggiate @@ -975,9 +975,9 @@ Glossario musicale: @rglosnamed{multi-measure rest,pausa multipla}. Guida alla notazione: -@ref{Durations}, +@ref{Durata}, @ref{Text}, -@ref{Formatting text}, +@ref{Formattazione del testo}, @ref{Text scripts}. Frammenti di codice: @@ -1372,7 +1372,7 @@ orizzontale. @lilypondfile[verbatim,quote,texidoc,doctitle] {creating-metronome-marks-in-markup-mode.ly} -I dettagli si trovano in @ref{Formatting text}. +I dettagli si trovano in @ref{Formattazione del testo}. @seealso Glossario musicale: @@ -1381,8 +1381,8 @@ Glossario musicale: @rglosnamed{metronome mark,indicazione metronomica}. Guida alla notazione: -@ref{Formatting text}, -@ref{Creating MIDI output}. +@ref{Formattazione del testo}, +@ref{Creazione dell'output MIDI}. Frammenti di codice: @rlsr{Staff notation}. @@ -1539,7 +1539,7 @@ alterazione, che di solito si considera sempre attiva fino alla fine della misura, sarà ancora valida dopo la stanghetta stampata da @code{\bar}. Se si desidera che le alterazioni successive appaiano, si dovranno inserire manualmente delle alterazioni forzate o di precauzione, come è spiegato -in @ref{Accidentals}. +in @ref{Alterazioni}. @lilypond[verbatim,quote] \relative c'' { @@ -1588,7 +1588,7 @@ Guida alla notazione: @ref{Visibility of objects}, @ref{Polymetric notation}, @ref{Manual beams}, -@ref{Accidentals}. +@ref{Alterazioni}. Frammenti di codice: @rlsr{Rhythms}. @@ -1767,7 +1767,7 @@ Glossario musicale: @rglosnamed{meter,tempo}. Guida alla notazione: -@ref{Automatic beams}, +@ref{Travature automatiche}, @ref{Manual beams}, @ref{Time signature}, @ref{Scaling durations}. @@ -1950,6 +1950,23 @@ accompagnamento. Si possono visualizzare usando l'incisore >> @end lilypond +La musica contenente accordi può essere usata anche come input per +@code{RhythmicStaff} e per essere usata con l'incisore +@code{Pitch_squash_engraver} se gli accordi vengono prima ridotti +a note singole con la funzione musicale @code{\reduceChords}: + +@lilypond[quote,verbatim] +\new RhythmicStaff { + \time 4/4 + \reduceChords { + 2 + 2 + 2 + 4 + 4 + } +} +@end lilypond @predefined @code{\improvisationOn}, @@ -2565,7 +2582,7 @@ all'interno dell'intero raggruppamento. @seealso Guida alla notazione: -@ref{Direction and placement}, +@ref{Direzione e posizionamento}, @ref{Grace notes}. Frammenti di codice: @@ -3300,9 +3317,9 @@ numero racchiuso in un quadrato. @end lilypond Il file @file{scm/translation-functions.scm} contiene le -definizioni di @code{format-mark-numbers} (il formato predefinito), -@code{format-mark-box-numbers}, @code{format-mark-letters} e -@code{format-mark-box-letters}. Possono essere usate come fonte +definizioni di @code{format-mark-letters} (il formato predefinito), +@code{format-mark-box-letters}, @code{format-mark-numbers} e +@code{format-mark-box-numbers}. Possono essere usate come fonte di ispirazione per creare altre funzioni di formattazione. Si possono usare @code{format-mark-barnumbers}, @@ -3347,12 +3364,12 @@ comando @code{\mark} @noindent L'elenco dei simboli che possono essere prodotti con @code{\musicglyph} si -trova in @ref{The Feta font}. +trova in @ref{Il font Emmentaler}. Per le più comuni modifiche relative al posizionamento dei segni di chiamata, si -veda @ref{Formatting text}. Per ottenere un controllo più preciso si consiglia +veda @ref{Formattazione del testo}. Per ottenere un controllo più preciso si consiglia di studiare il funzionamento della proprietà @code{break-alignable-interface} -descritta in @ref{Aligning objects}. +descritta in @ref{Allineamento degli oggetti}. Il file @file{scm/translation-functions.scm} contiene le definizioni di @code{format-mark-numbers} e @@ -3361,9 +3378,9 @@ ispirazione per creare altre funzioni di formattazione. @seealso Guida alla notazione: -@ref{The Feta font}, -@ref{Formatting text}, -@ref{Aligning objects}. +@ref{Il font Emmentaler}, +@ref{Formattazione del testo}, +@ref{Allineamento degli oggetti}. File installati: @file{scm/translation-functions.scm}. @@ -3454,11 +3471,22 @@ gli abbellimenti che la seguono. \relative { c''1 \afterGrace d1 { c16[ d] } c1 } @end lilypond -In questo modo, gli abbellimenti sono collocati dopo uno spazio corrispondente a -3/4 della durata della nota principale. La frazione predefinita 3/4 può essere -modificata attraverso @code{afterGraceFraction}. L'esempio seguente mostra -le diverse spaziature che si ottengono con la frazione predefinita, con 15/16 -e infine con 1/2 della nota principale. +In questo modo, gli abbellimenti sono collocati @emph{dopo} l'inizio della nota +principale. Il momento temporale in cui sono posti gli abbellimenti è una +certa frazione della durata della nota principale. L'impostazione predefinita +di + +@example +afterGraceFraction = 3/4 +@end example + +@noindent +può essere ridefinita nel livello superiore. Ma è anche possibile specificare +la frazione per ogni singolo comando @code{\afterGrace}. + +L'esempio seguente mostra le diverse spaziature che si ottengono con la frazione +predefinita, impostandola a @code{15/16} e infine a @code{1/2} della nota +principale. @lilypond[quote,verbatim] << @@ -3466,12 +3494,10 @@ e infine con 1/2 della nota principale. c''1 \afterGrace d1 { c16[ d] } c1 } \new Staff \relative { - #(define afterGraceFraction (cons 15 16)) - c''1 \afterGrace d1 { c16[ d] } c1 + c''1 \afterGrace 15/16 d1 { c16[ d] } c1 } \new Staff \relative { - #(define afterGraceFraction (cons 1 2)) - c''1 \afterGrace d1 { c16[ d] } c1 + c''1 \afterGrace 1/2 d1 { c16[ d] } c1 } >> @end lilypond @@ -3699,7 +3725,7 @@ del tempo in una partitura. @table @code @item currentBarNumber Il numero di battuta corrente. Un esempio che mostra l'uso di -questa proprietà si trova in @ref{Bar numbers}. +questa proprietà si trova in @ref{Numeri di battuta}. @item measureLength La durata delle misure nel tempo corrente. Per un tempo di @@ -3740,14 +3766,14 @@ Quindi la stanghetta successiva si troverà a 9/8 invece che a 5/4. @end lilypond @noindent -Come mostra l'esempio, @code{ly:make-moment n m} definisce una durata -di n/m della nota intera. Ad esempio, @code{ly:make-moment 1 8} corrisponde -alla durata di un ottavo mentre @code{ly:make-moment 7 16} a quella di sette +Come mostra l'esempio, @code{ly:make-moment n/m} definisce una durata +di n/m della nota intera. Ad esempio, @code{ly:make-moment 1/8} corrisponde +alla durata di un ottavo mentre @code{ly:make-moment 7/16} a quella di sette sedicesimi. @seealso Guida alla notazione: -@ref{Bar numbers}, +@ref{Numeri di battuta}, @ref{Unmetered music}. Frammenti di codice: diff --git a/Documentation/it/notation/simultaneous.itely b/Documentation/it/notation/simultaneous.itely index 50779f4055..6fc7f34da9 100644 --- a/Documentation/it/notation/simultaneous.itely +++ b/Documentation/it/notation/simultaneous.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 16661f7f6a78f04d056228d11bdc9e17a7cdf760 + Translation of GIT committish: 4244c3a9fbf1f3ff2e20e665f92516d35b61de53 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -141,7 +141,7 @@ Manuale d'apprendimento: Guida alla notazione: @ref{Chord notation}, -@ref{Articulations and ornamentations}, +@ref{Articolazioni e abbellimenti}, @ref{Relative octave entry}, @ref{Multiple voices}. @@ -164,7 +164,7 @@ la trascrizione enarmonica di una o più altezze, @samp{}, oppure @item -i @ref{Clusters}. +i @ref{Cluster}. @end itemize @@ -263,7 +263,7 @@ stati già elaborati. @seealso Guida alla notazione: @ref{Chord notation}, -@ref{Articulations and ornamentations}. +@ref{Articolazioni e abbellimenti}. File installati: @file{ly/chord-repetition-init.ly}. @@ -342,7 +342,7 @@ apparirà durante la compilazione del file. Si può evitare con: Tuttavia, questo comando non si limita a eliminare l'avvertimento, ma impedisce qualsiasi risoluzione delle collisioni, e potrebbe comportare altri effetti indesiderati -(vedi anche i @emph{Problemi noti} in @ref{Collision resolution}). +(vedi anche i @emph{Problemi noti} in @ref{Risoluzione delle collisioni}). @node Cluster @@ -569,6 +569,28 @@ gambi in giù: >> @end lilypond +@funindex \voices +Quando si desidera inserire le voci in un ordine diverso, conviene usare +il comando @code{\voices}: + +@lilypond[quote,verbatim] +\new Staff \voices 1,3,5,6,4,2 << + \time 2/4 + { f''2 } % 1: la più alta + \\ + { d''2 } % 3: seconda più alta + \\ + { b'2 } % 5: terza più alta + \\ + { g'2 } % 6: terza più bassa + \\ + { e'2 } % 4: seconda più bassa + \\ + { c'2 } % 2: la più bassa +>> +@end lilypond + + @warning{Il testo e gli estensori (come le legature di portamento e di valore, le forcelle, etc.) non possono @q{attraversare} le voci.} @@ -1147,7 +1169,7 @@ ignorati. Consultare i @emph{Problemi noti e avvertimenti} in @ref{Default tablatures} se si usa @code{\partcombine} con l'intavolatura, e la @emph{Nota} in -@ref{Automatic beams} se si usa la disposizione automatica delle travature. +@ref{Travature automatiche} se si usa la disposizione automatica delle travature. @node Scrivere la musica in parallelo diff --git a/Documentation/it/notation/spacing.itely b/Documentation/it/notation/spacing.itely index 095b730cdb..1df6e060be 100644 --- a/Documentation/it/notation/spacing.itely +++ b/Documentation/it/notation/spacing.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 1e339d5efe13a725a4f0c2d8dfc3d40390446b89 + Translation of GIT committish: 24dd6365d3d05f13b9259f547be9b2517851a5d1 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -142,7 +142,7 @@ sezione, @ref{Paper size and automatic scaling}. Le variabili @code{\paper} che si occupano della formattazione della pagina sono trattate in sezioni successive. Le definizioni di markup relative a intestazioni, piè di pagina e titoli sono trattate in -@ref{Custom titles headers and footers}. +@ref{Titoli intestazioni e piè di pagina personalizzati}. La maggior parte delle variabili @code{\paper} funzionano soltanto in un blocco @code{\paper}. Le poche che funzionano anche in un blocco @@ -189,7 +189,7 @@ L'equivalente Scheme dell'esempio precedente è: @seealso Guida alla notazione: @ref{Paper size and automatic scaling}, -@ref{Custom titles headers and footers}, +@ref{Titoli intestazioni e piè di pagina personalizzati}, @ref{The layout block,,Il blocco @code{@bs{}layout}}. File installati: @@ -252,7 +252,7 @@ a tutte le pagine. Se il blocco @code{\paper} si trova dentro un blocco Quando si usa la funzione @code{set-paper-size}, questa deve essere posta @emph{prima} di qualsiasi altra funzione usata nello stesso blocco -@code{\paper}. Vedi @ref{Automatic scaling to paper size}. +@code{\paper}. Vedi @ref{Ridimensionamento automatico al formato carta}. I formati carta sono definiti in @file{scm/paper.scm}, e sebbene sia possibile aggiungere formati personalizzati in questo file, tali aggiunte @@ -303,7 +303,7 @@ usato per la formattazione. @seealso Guida alla notazione: -@ref{Automatic scaling to paper size}, +@ref{Ridimensionamento automatico al formato carta}, @ref{Predefined paper sizes}. File installati: @@ -359,7 +359,7 @@ File installati: @warning{Alcune dimensioni definite nel blocco @code{@bs{}paper} sono ridimensionate automaticamente in base al formato carta, portando a possibili risultati imprevisti. Vedi -@ref{Automatic scaling to paper size}.} +@ref{Ridimensionamento automatico al formato carta}.} I valori predefiniti (prima del ridimensionamento) sono definiti in @file{ly/paper-defaults-init.ly}. @@ -403,7 +403,7 @@ giustificate verticalmente come nelle pagine precedenti. @seealso Guida alla notazione: -@ref{Automatic scaling to paper size}. +@ref{Ridimensionamento automatico al formato carta}. File installati: @file{ly/paper-defaults-init.ly}. @@ -630,7 +630,7 @@ Frammenti: @warning{Alcune dimensioni in @code{@bs{}paper} sono ridimensionate automaticamente in base al formato carta, producendo talvolta un -risultato inatteso. Vedi @ref{Automatic scaling to paper size}.} +risultato inatteso. Vedi @ref{Ridimensionamento automatico al formato carta}.} @menu * Variabili paper per larghezze e margini:: @@ -745,7 +745,7 @@ Questa variabile può essere impostata anche in un blocco @code{\layout}. @seealso Guida alla notazione: -@ref{Automatic scaling to paper size}. +@ref{Ridimensionamento automatico al formato carta}. File installati: @file{ly/paper-defaults-init.ly}. @@ -803,7 +803,7 @@ Funziona soltanto con @code{two-sided} impostato su vero. @seealso Guida alla notazione: -@ref{Automatic scaling to paper size}. +@ref{Ridimensionamento automatico al formato carta}. File installati: @file{ly/paper-defaults-init.ly}. @@ -850,7 +850,7 @@ anche in blocchi @code{\layout} per impostare le brevi indentazioni brano per br @seealso Guida alla notazione: -@ref{Automatic scaling to paper size}. +@ref{Ridimensionamento automatico al formato carta}. File installati: @file{ly/paper-defaults-init.ly}. @@ -926,7 +926,8 @@ I valori predefiniti non elencati qui sono visibili in L'algoritmo di interruzione di pagina da usare. Le opzioni sono @code{ly:minimal-breaking}, @code{ly:page-turn-breaking}, -@code{ly:one-line-breaking}, @code{ly:one-line-auto-height-breaking} e +@code{ly:one-page-breaking}, @code{ly:one-line-breaking}, +@code{ly:one-line-auto-height-breaking} e @code{ly:optimal-breaking} (predefinito). @item page-breaking-system-system-spacing @@ -1007,7 +1008,9 @@ Guida alla notazione: @ref{Optimal page breaking}, @ref{Optimal page turning}, @ref{Minimal page breaking}, -@ref{One-line page breaking}. +@ref{One-page page breaking}, +@ref{One-line page breaking}, +@ref{One-line-auto-height page breaking}. File installati: @file{ly/paper-defaults-init.ly}. @@ -1167,7 +1170,7 @@ musica. Le impostazioni che possono apparire in un blocco La funzione @code{layout-set-staff-size} è spiegata nella prossima sezione, @ref{Setting the staff size}. Le modifiche di contesto sono trattate in un capitolo separato; vedi @ref{Modifying context plug-ins} e -@ref{Changing context default settings}. +@ref{Modifica delle impostazioni predefinite di un contesto}. Le variabili @code{\paper} che possono apparire in un blocco @code{\layout}, con valori predefiniti presi dal blocco @code{\paper}, sono: @@ -1304,7 +1307,7 @@ per ripristinare la configurazione di @code{\layout} a uno stato conosciuto. @seealso Guida alla notazione: -@ref{Changing context default settings}. +@ref{Modifica delle impostazioni predefinite di un contesto}. Frammenti: @rlsr{Spacing}. @@ -1395,12 +1398,11 @@ evitare di ridurre lo spessore delle linee del rigo. @subheading Corpo automatico dei tipi di carattere a dimensioni diverse -Il tipo di carattere Feta fornisce simboli musicali in otto dimensioni -diverse. Ogni tipo di carattere è calibrato per una specifica dimensione -del rigo: via via che la dimensione del rigo diventa più piccola, il corpo -del carattere diventa più grosso, per abbinarsi alle linee del rigo più -spesse. Le dimensioni del carattere consigliate sono elencate nella -seguente tabella: +Il font Emmentaler fornisce l'insieme di glifi musicali @emph{Feta} in otto +dimensioni diverse, ciascuna calibrata per una specifica dimensione +del rigo. Più piccola è la dimensione del glifo, più @qq{grosso} diventa, +per abbinarsi alle linee del rigo più spesse. Le dimensioni dei glifi +consigliate sono elencate nella seguente tabella: @multitable @columnfractions .15 .2 .22 .2 @item @b{nome del tipo di carattere} @tab @b{altezza del rigo (pt)} @tab @b{altezza del rigo (mm)} @tab @b{uso} @@ -1416,7 +1418,8 @@ seguente tabella: @seealso Guida alla notazione: -@ref{Selecting notation font size}. +@ref{Impostare la dimensione del rigo}, +@ref{Il font Emmentaler}. Frammenti: @rlsr{Spacing}. @@ -1610,6 +1613,7 @@ spiega come modificarli. * Interruzione di pagina manuale:: * Interruzione di pagina ottimale:: * Interruzione di pagina minimale:: +* Interruzione di pagina di una pagina:: * Interruzione di pagina su una linea:: * Interruzione di pagina su una linea con altezza automatica:: * Voltata di pagina ottimale:: @@ -1766,6 +1770,27 @@ Frammenti: @rlsr{Spacing}. +@node Interruzione di pagina di una pagina +@unnumberedsubsubsec Interruzione di pagina di una pagina +@translationof One-page page breaking + +@funindex ly:one-page-breaking + +La funzione @code{ly:one-page-breaking} è un algoritmo di interruzione di +pagina per casi speciali che regola automaticamente l'altezza della pagina +per farci entrare la musica, in modo che stia tutto in una sola pagina. +La variabile @code{paper-height} del blocco paper viene ignorata, ma le +altre impostazioni funzionano normalmente. In particolare, la spaziatura +tra l'ultimo sistema (o il testo markup di livello superiore) e il piè di pagina +può essere personalizzata grazie a @code{last-bottom-spacing} nel blocco paper. +La larghezza della pagina non viene modificata ma può essere impostata con +@code{paper-width} nel blocco paper. + +@knownissues +@code{ly:one-page-breaking} non è attualmente compatibile con +@code{\bookpart}. + + @node Interruzione di pagina su una linea @unnumberedsubsubsec Interruzione di pagina su una linea @translationof One-line page breaking @@ -2487,11 +2512,12 @@ il padding verticale, @code{NonMusicalPaperColumn.line-break-system-details} indica precisamente le posizioni verticali esatte sulla pagina. @code{NonMusicalPaperColumn.line-break-system-details} accetta una -lista associativa di tre diverse impostazioni: +lista associativa di quattro diverse impostazioni: @itemize @item @code{X-offset} @item @code{Y-offset} +@item @code{extra-offset} @item @code{alignment-distances} @end itemize @@ -2564,7 +2590,7 @@ vedendo un esempio che non contiene alcuna modifica. Questa partitura isola l'informazione sulle interruzioni di linea e di pagina in una voce apposita. Questa tecnica di creare una voce per le interruzioni permette di tenere la formattazione separata dalla musica via via che il -nostro esempio diventa più complicato. Vedi anche @ref{Breaks}. +nostro esempio diventa più complicato. Vedi anche @ref{Interruzioni}. Usando comandi @code{\break} espliciti, la musica viene divisa proporzionalmente in cinque misure per linea. La spaziatura verticale è quella predefinita di @@ -2605,6 +2631,41 @@ molti valori, ma ne abbiamo impostato solo uno in questo esempio. Nota anche che la proprietà @code{Y-offset} qui determina la posizione verticale esatta sulla pagina in cui ogni nuovo sistema verrà visualizzato. +Oltre al posizionamento assoluto che si ottiene con @code{Y-offset} e +@code{X-offset}, è possibile anche il posizionamento relativo tramite +la proprietà @code{extra-offset} di @code{line-break-system-details}. +Il posizionamento è relativo alla formattazione predefinita o al posizionamento +assoluto determinato dall'uso di @code{X-offset} e @code{Y-offset}. La +proprietà @code{extra-offset} accetta una @code{coppia} di numeri che +determinano lo spostamento lungo gli assi X e Y. + +@lilypond[verbatim,quote,staffsize=16] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((extra-offset . (0 . 10))) + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((extra-offset . (0 . 10))) + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new Staff { + \repeat unfold 15 { d'4 d' d' d' } + } + >> + } +} +@end lilypond + + Ora che abbiamo impostato esplicitamente il punto di inizio verticale di ogni sistema, possiamo impostare manualmente anche le distanze verticali tra i righi. Per farlo usiamo la sottoproprietà @code{alignment-distances} @@ -2690,8 +2751,8 @@ Alcuni punti da considerare: che non sono righi non contano come rigo. @item Le unità dei numeri assegnati a @code{X-offset}, -@code{Y-offset} e @code{alignment-distances} sono interpretati come -multipli della distanza tra linee del rigo adiacenti. Valori positivi +@code{Y-offset}, @code{extra-offset} e @code{alignment-distances} sono interpretati +come multipli della distanza tra linee del rigo adiacenti. Valori positivi spostano in su righi e testo, valori negativi li spostano in giù. @item Dato che le impostazioni di @code{NonMusicalPaperColumn.line-break-system-details} @@ -3478,7 +3539,7 @@ se c'è molto spazio nelle pagine precedenti. Quando si studiano i problemi di formattazione, uno strumento irrinunciabile è @code{annotate-spacing}, un comando che mostra i valori delle diverse variabili di spaziatura. Maggiori dettagli nella prossima sezione, -@ref{Displaying spacing}. +@ref{Visualizzare la spaziatura}. @menu * Visualizzare la spaziatura:: @@ -3609,7 +3670,7 @@ rigo: @item Modificare la spaziatura orizzontale tramite @code{SpacingSpanner}. Maggiori -informazioni in @ref{Changing horizontal spacing}. L'esempio seguente mostra +informazioni in @ref{Modifica della spaziatura orizzontale}. L'esempio seguente mostra la spaziatura predefinita: @lilypond[verbatim,quote] @@ -3659,7 +3720,7 @@ così che sia applicata all'intera partitura. @seealso Guida alla notazione: @ref{Page layout}, -@ref{Changing horizontal spacing}. +@ref{Modifica della spaziatura orizzontale}. Frammenti: @rlsr{Spacing}. diff --git a/Documentation/it/notation/staff.itely b/Documentation/it/notation/staff.itely index e5511734d9..63a7556b8e 100644 --- a/Documentation/it/notation/staff.itely +++ b/Documentation/it/notation/staff.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 19d0e8e1a9cee3444ec4915b1d2d116e67f5b3f7 + Translation of GIT committish: 041cb33a404a829a8cdeeaebce17e45f613f10d8 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -73,7 +73,7 @@ Questa sezione presenta i diversi metodi per creare e raggruppare i righi. @funindex GregorianTranscriptionStaff Il @notation{rigo musicale} si crea con i comandi @code{\new} o -@code{\context}. Ulteriori dettagli in @ref{Creating and referencing contexts}. +@code{\context}. Ulteriori dettagli in @ref{Creazione e citazione di un contesto}. Il contesto di base del rigo è @code{Staff}: @@ -121,14 +121,14 @@ il canto gregoriano moderno. Non mostra le stanghette delle battute. @end lilypond Si possono creare nuovi contesti per un singolo rigo, come è spiegato -dettagliatamente in @ref{Defining new contexts}. +dettagliatamente in @ref{Definizione di nuovi contesti}. @seealso Glossario musicale: @rglosnamed{staff,rigo}, Guida alla notazione: -@ref{Creating and referencing contexts}, +@ref{Creazione e citazione di un contesto}, @ref{Percussion staves}, @ref{Showing melody rhythms}, @ref{Default tablatures}, @@ -136,7 +136,7 @@ Guida alla notazione: @ref{Staff symbol}, @ref{Gregorian chant contexts}, @ref{Mensural contexts}, -@ref{Defining new contexts}. +@ref{Definizione di nuovi contesti}. Frammenti: @rlsr{Staff notation}. @@ -220,8 +220,8 @@ differenza che permette di mostrare il nome dello strumento direttamente. Ulter dettagli in @ref{Instrument names}. @lilypond[verbatim,quote] -\new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" +\new PianoStaff \with { instrumentName = #"Piano" } +<< \new Staff \relative { c''1 c } \new Staff \relative { \clef bass c1 c } >> @@ -234,7 +234,7 @@ Ogni contesto per il gruppo di righi imposta la proprietà @code{SystemStartSquare}, ma deve essere indicato esplicitamente. Si possono definire nuovi contesti di gruppi di rigo. I dettagli sono -spiegati in @ref{Defining new contexts}. +spiegati in @ref{Definizione di nuovi contesti}. @snippets @@ -263,7 +263,7 @@ Glossario musicale: Guida alla notazione: @ref{Instrument names}, -@ref{Defining new contexts}. +@ref{Definizione di nuovi contesti}. Frammenti: @rlsr{Staff notation}. @@ -312,7 +312,7 @@ accanto alla parentesi del gruppo superiore. @end lilypond Si possono definire nuovi gruppi di righi annidati. Ulteriori dettagli -in @ref{Defining new contexts}. +in @ref{Definizione di nuovi contesti}. @snippets @@ -324,7 +324,7 @@ in @ref{Defining new contexts}. Guida alla notazione: @ref{Grouping staves}, @ref{Instrument names}, -@ref{Defining new contexts}. +@ref{Definizione di nuovi contesti}. Frammenti: @rlsr{Staff notation}. @@ -481,7 +481,7 @@ rigo i gambi puntano in su, mentre in quella superiore sono rivolti in giù), occorre allineare la linea centrale (o lo spazio) del rigo personalizzato alla posizione della linea centrale normale (0). Potrà essere necessario regolare la posizione della chiave e del Do@tie{}centrale per adattarsi -alle nuove linee. Si veda @ref{Clef}. +alle nuove linee. Si veda @ref{Chiave}. Si può modificare lo spessore della linea del rigo. Per impostazione predefinita, questa modifica ha effetto anche sui tagli addizionali e sui gambi. @@ -572,7 +572,7 @@ Glossario musicale: @rglosnamed{staff,rigo (o pentagramma)}. Guida alla notazione: -@ref{Clef}. +@ref{Chiave}. Frammenti: @rlsr{Staff notation}. @@ -815,7 +815,7 @@ Manuale d'apprendimento: @rlearning{Visibilità e colore degli oggetti}. Guida alla notazione: -@ref{Changing context default settings}, +@ref{Modifica delle impostazioni predefinite di un contesto}, @ref{Staff symbol}, @ref{Ossia staves}, @ref{Hidden notes}, @@ -846,7 +846,7 @@ conviene usare i seguenti comandi invece di togliere l'incisore: Per i problemi noti e gli avvertimenti relativi a @code{\Staff \RemoveEmptyStaves} si veda -@ref{Changing context default settings}. +@ref{Modifica delle impostazioni predefinite di un contesto}. @node Scrittura delle parti @@ -975,20 +975,14 @@ successive saranno ignorate: @lilypond[verbatim,quote,ragged-right] prepPiccolo = <>^\markup \italic { muta in Piccolo } +prepFlute = <>^\markup \italic { muta in Flauto } + setPiccolo = { - \set Staff.instrumentName = #"Piccolo" - \set Staff.shortInstrumentName = #"Picc." - \set Staff.midiInstrument = #"piccolo" <>^\markup \bold { Piccolo } \transposition c'' } -prepFlute = <>^\markup \italic { muta in Flauto } - setFlute = { - \set Staff.instrumentName = #"Flute" - \set Staff.shortInstrumentName = #"Flt." - \set Staff.midiInstrument = #"flute" <>^\markup \bold { Flute } \transposition c' } @@ -996,14 +990,17 @@ setFlute = { \new Staff \with { instrumentName = #"Flute" shortInstrumentName = #"Flt." - midiInstrument = #"flute" } \relative { g'1 g g g \break g1 g \prepPiccolo R R \break + \set Staff.instrumentName = #"Piccolo" + \set Staff.shortInstrumentName = #"Picc." \setPiccolo g1 g g g \break g1 g \prepFlute R R \break + \set Staff.instrumentName = #"Flute" + \set Staff.shortInstrumentName = #"Flt." \setFlute g1 g g g } @@ -1093,9 +1090,9 @@ oboeNotes = \relative { @end lilypond @c Frase non chiara, traduco letteralmente. - fb -Se un comando @code{\unfoldRepeat} in un'espressione musicale deve essere +Se un comando @code{\unfoldRepeats} in un'espressione musicale deve essere stampato quando si usa @code{\quoteDuring}, allora anch'esso deve contenere -il suo comando @code{\unfoldRepeat}; +il suo comando @code{\unfoldRepeats}; @lilypond[verbatim,quote] fluteNotes = \relative { @@ -1509,7 +1506,7 @@ Guida alla notazione: @ref{Quoting other voices}, @ref{Instrument transpositions}, @ref{Instrument names}, -@ref{Clef}, +@ref{Chiave}, @ref{Musical cues}, @ref{Using tags}. diff --git a/Documentation/it/notation/text.itely b/Documentation/it/notation/text.itely index 8b0f382a56..26a20a2ec3 100644 --- a/Documentation/it/notation/text.itely +++ b/Documentation/it/notation/text.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: bfc3420ada8810d57156e9fc871560188f044a64 + Translation of GIT committish: 18d03fa6a724b0102ccc47d194209802cea02f2e When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -62,7 +62,7 @@ in @ref{Text encoding}.} Si possono aggiungere a una partitura delle semplici indicazioni con del @qq{testo tra virgolette}, come mostrato nell'esempio seguente. Tali indicazioni possono essere posizionate sopra o sotto il rigo, -usando la sintassi descritta in @ref{Direction and placement}. +usando la sintassi descritta in @ref{Direzione e posizionamento}. @lilypond[quote,verbatim] \relative { a'8^"pizz." g f e a4-"scherz." f } @@ -70,7 +70,7 @@ usando la sintassi descritta in @ref{Direction and placement}. In realtà questa sintassi è una scorciatoia; si può specificare una formattazione del testo più complessa usando in modo esplicito un blocco @code{\markup}, come -è spiegato in @ref{Formatting text}. +è spiegato in @ref{Formattazione del testo}. @lilypond[quote,verbatim] \relative { @@ -92,7 +92,7 @@ mentre la seconda sì. @end lilypond Oltre alle scritte, si possono attaccare alle note anche le -articolazioni. Ulteriori informazioni in @ref{Articulations and ornamentations}. +articolazioni. Ulteriori informazioni in @ref{Articolazioni e abbellimenti}. Per maggiori informazioni sull'ordinamento relativo delle scritte e delle articolazioni si veda @rlearning{Posizionamento degli oggetti}. @@ -110,9 +110,9 @@ Manuale d'apprendimento: @rlearning{Posizionamento degli oggetti}. Guida alla notazione: -@ref{Formatting text}, -@ref{Direction and placement}, -@ref{Articulations and ornamentations}. +@ref{Formattazione del testo}, +@ref{Direzione e posizionamento}, +@ref{Articolazioni e abbellimenti}. Frammenti: @rlsr{Text}. @@ -162,7 +162,7 @@ con la seguente sintassi: La stringa testuale da stampare viene impostata attraverso le proprietà dell'oggetto. Per impostazione predefinita, appare in corsivo, ma si può ottenere una formattazione diversa tramite i blocchi @code{\markup}, come -è spiegato in @ref{Formatting text}. +è spiegato in @ref{Formattazione del testo}. @lilypond[quote,verbatim] \relative { @@ -201,8 +201,8 @@ LilyPond è capace di gestire un solo estensore del testo per ogni voce. @seealso Guida alla notazione: @ref{Line styles}, -@ref{Dynamics}, -@ref{Formatting text}. +@ref{Dinamiche}, +@ref{Formattazione del testo}. Frammenti: @rlsr{Text}, @@ -247,7 +247,7 @@ sintassi descritta in @ref{Rehearsal marks}: Questa sintassi permette di porre del testo sopra una stanghetta; una formattazione del testo più complessa è possibile grazie al -blocco @code{\markup}, come è spiegato in @ref{Formatting text}: +blocco @code{\markup}, come è spiegato in @ref{Formattazione del testo}: @lilypond[quote,verbatim] \relative { @@ -306,9 +306,9 @@ successiva. @seealso Guida alla notazione: @ref{Rehearsal marks}, -@ref{Formatting text}, +@ref{Formattazione del testo}, @ref{Music notation inside markup}, -@ref{The Feta font}. +@ref{Il font Emmentaler}. Frammenti: @rlsr{Text}. @@ -377,7 +377,7 @@ in @ref{Multi-page markup}. @seealso Guida alla notazione: -@ref{Formatting text}, +@ref{Formattazione del testo}, @ref{File structure}, @ref{Multiple scores in a book}, @ref{Multi-page markup}. @@ -511,7 +511,8 @@ File installati: @file{scm/markup.scm}. @knownissues -Gli errori di sintassi relativi alla modalità markup possono essere poco chiari. +I messaggi di errore di sintassi relativi alla modalità markup possono +essere poco chiari. @node Scelta del tipo di carattere e della dimensione @@ -554,7 +555,7 @@ La modalità markup permette di cambiare il tipo di carattere: Si può modificare la dimensione del tipo di carattere, rispetto alla dimensione globale del rigo, in vari modi. -Si può impostare su una dimensione predefinita, +Si può impostare su una dimensione predefinita. @lilypond[quote,verbatim] \relative b' { @@ -564,7 +565,7 @@ Si può impostare su una dimensione predefinita, } @end lilypond -oppure in modo proporzionale rispetto al valore precedente, +oppure in modo proporzionale rispetto al valore precedente. @lilypond[quote,verbatim] \relative b' { @@ -575,7 +576,7 @@ oppure in modo proporzionale rispetto al valore precedente, @end lilypond Può essere aumentata o diminuita rispetto al valore impostato per la -dimensione globale del rigo: +dimensione globale del rigo. @lilypond[quote,verbatim] \relative b' { @@ -586,7 +587,7 @@ dimensione globale del rigo: @end lilypond Si può impostare anche su una dimensione fissa (in punti), indipendentemente -dalla dimensione globale del rigo: +dalla dimensione globale del rigo. @lilypond[quote,verbatim] \relative b' { @@ -1123,8 +1124,8 @@ Una lista completa dei comandi specifici per la grafica si trova in @seealso Guida alla notazione: @ref{Align}, -@ref{Dimensions}, -@ref{Editorial annotations}, +@ref{Dimensioni}, +@ref{Note editoriali}, @ref{Graphic}. File installati: @@ -1191,7 +1192,7 @@ modalità markup: Più in generale, qualsiasi simbolo musicale disponibile può essere incluso separatamente in un oggetto markup, come è illustrato sotto. Una lista completa di questi simboli e dei loro nomi si trova in -@ref{The Feta font}. +@ref{Il font Emmentaler}. @lilypond[quote,verbatim] \relative { @@ -1260,7 +1261,7 @@ in @ref{Music}. @seealso Guida alla notazione: @ref{Music}, -@ref{The Feta font}, +@ref{Il font Emmentaler}, @ref{Fonts explained}. File installati: @@ -1373,8 +1374,8 @@ sono riprodotti con Pango. I tipi di carattere della notazione musicale possono essere descritti come un insieme di glifi specifici, ordinati in varie famiglie. La -seguente sintassi permette di usare vari caratteri @code{feta} di LilyPond -(non testuali) direttamente nella modalità markup: +seguente sintassi permette di usare vari glifi @emph{Feta} di LilyPond +direttamente nella modalità markup: @lilypond[quote,verbatim,fragment] a'1^\markup { @@ -1459,11 +1460,11 @@ caso è preferibile usare la sintassi più semplice spiegata in Sebbene sia semplice passare a un tipo di carattere preconfigurato, è anche possibile usare altri tipi, come viene spiegato nelle sezioni successive: -@ref{Single entry fonts} e @ref{Entire document fonts}. +@ref{Single entry fonts} e @ref{Tipi di carattere per l'intero documento}. @seealso Guida alla notazione: -@ref{The Feta font}, +@ref{Il font Emmentaler}, @ref{Music notation inside markup}, @ref{Rotating objects}, @ref{Selecting font and font size}, @@ -1511,7 +1512,7 @@ lilypond -dshow-available-fonts x @seealso Guida alla notazione: @ref{Fonts explained}, -@ref{Entire document fonts}. +@ref{Tipi di carattere per l'intero documento}. Frammenti: @rlsr{Text}. diff --git a/Documentation/it/notation/vocal.itely b/Documentation/it/notation/vocal.itely index 1ca2de981c..7a25035b71 100644 --- a/Documentation/it/notation/vocal.itely +++ b/Documentation/it/notation/vocal.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 88cfc9ee61dece9cffff98ab7f10318633698c39 + Translation of GIT committish: b680788cd1c671d52819d69e9e130ff45361a590 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -138,7 +138,7 @@ si può lasciare che il testo sia allineato automaticamente a una melodia o a un'altra voce del brano, usando @code{\addlyrics} o @code{\lyricsto}. Il primo metodo è descritto sotto in @ref{Manual syllable durations}; il secondo in -@ref{Automatic syllable durations}. +@ref{Durate automatiche delle sillabe}. Una parola o sillaba del testo inizia con un carattere alfabetico (seguito da altri caratteri, vedi dopo) ed è terminata da uno @@ -196,7 +196,7 @@ seguita da @code{`}, @code{'}, @code{"} o @code{^}. Per avere un maggior controllo sull'aspetto del testo si può usare @code{\markup} all'interno del testo. Per una spiegazione delle -molte opzioni disponibili leggere @ref{Formatting text}. +molte opzioni disponibili leggere @ref{Formattazione del testo}. @snippets @@ -209,9 +209,9 @@ Manuale di apprendimento: @rlearning{Canzoni}. Guida alla notazione: -@ref{Automatic syllable durations}, +@ref{Durate automatiche delle sillabe}, @ref{Fonts}, -@ref{Formatting text}, +@ref{Formattazione del testo}, @ref{Input modes}, @ref{Manual syllable durations}, @ref{Special characters}. @@ -234,7 +234,7 @@ Frammenti: @funindex \lyricsto Il testo vocale viene interpretato in @code{\lyricmode} e stampato in un -contesto @code{Lyrics}, vedi @ref{Contexts explained}. +contesto @code{Lyrics}, vedi @ref{Tutto sui contesti}. @example \new Lyrics \lyricmode @{ @dots{} @} @@ -247,7 +247,7 @@ del contesto della voce con cui deve essere sincronizzato, creando implicitamente un contesto Lyrics. Il più versatile @code{\lyricsto} richiede sia di specificare il contesto della voce associata con un nome sia di creare esplicitamente un contesto Lyrics che contenga il -testo. Maggiori dettagli in @ref{Automatic syllable durations}. +testo. Maggiori dettagli in @ref{Durate automatiche delle sillabe}. Ci sono due modi per allineare il testo a una melodia: @@ -259,7 +259,7 @@ durate delle sillabe siano prese da un'altra voce o (in circostanze speciali) da una melodia associata, usando @code{\addlyrics}, @code{\lyricsto} o impostando la proprietà @code{associatedVoice}. Ulteriori informazioni in -@ref{Automatic syllable durations}. +@ref{Durate automatiche delle sillabe}. @lilypond[quote,ragged-right,verbatim] << @@ -332,7 +332,7 @@ parole di strofe diverse si distribuiscono lungo le note in modo differente e le durate necessarie non sono disponibili in un contesto musicale. Ulteriori dettagli in @ref{Manual syllable durations}. Questa tecnica è utile anche quando si imposta un dialogo sopra una musica, come -si può vedere negli esempi in @ref{Dialogue over music}. +si può vedere negli esempi in @ref{Dialogo sopra la musica}. @end itemize @@ -341,11 +341,11 @@ Manuale di apprendimento: @rlearning{Allineare il testo alla melodia}. Guida alla notazione: -@ref{Contexts explained}, -@ref{Automatic syllable durations}, +@ref{Tutto sui contesti}, +@ref{Durate automatiche delle sillabe}, @ref{Stanzas}, @ref{Manual syllable durations}, -@ref{Dialogue over music}, +@ref{Dialogo sopra la musica}, @ref{Manual syllable durations}. Guida al funzionamento interno: @@ -571,7 +571,7 @@ Ecco due esempi: @end lilypond Questa tecnica è utile quando si scrivono dialoghi , vedi -@ref{Dialogue over music}. +@ref{Dialogo sopra la musica}. Per cambiare l'allineamento delle sillabe, basta impostare la proprietà @code{self-alignment-X}: @@ -592,7 +592,7 @@ proprietà @code{self-alignment-X}: @seealso Guida alla notazione: -@ref{Dialogue over music}. +@ref{Dialogo sopra la musica}. Guida al funzionamento interno: @rinternals{Lyrics}, @@ -806,11 +806,11 @@ per ogni nota che debba essere inclusa nel melisma: @predefined - @code{\autoBeamOff}, @code{\autoBeamOn}, @code{\melisma}, @code{\melismaEnd}. +@endpredefined @seealso Glossario musicale: @@ -820,8 +820,8 @@ Manuale di apprendimento: @rlearning{Allineare il testo alla melodia}. Guida alla notazione: -@ref{Aligning lyrics to a melody}, -@ref{Automatic syllable durations}, +@ref{Allineamento del testo alla melodia}, +@ref{Durate automatiche delle sillabe}, @ref{Setting automatic beam behavior}, @ref{Stanzas with different rhythms}. @@ -1099,8 +1099,8 @@ Manuale di apprendimento: @rlearning{Modelli per gruppi vocali}. Guida alla notazione: -@ref{Context layout order}, -@ref{Creating and referencing contexts}. +@ref{Ordine di disposizione dei contesti}, +@ref{Creazione e citazione di un contesto}. @node Posizionamento orizzontale delle sillabe @@ -1737,7 +1737,7 @@ a contesti @code{Voice} e non può essere usata con @code{NullVoice}. @noindent La funzione @code{\partcombine} è descritta in -@ref{Automatic part combining}. +@ref{Combinazione automatica delle parti}. Infine, si può usare questo metodo anche quando le voci si trovano su righi diversi e non è limitata a due sole voci: @@ -2198,7 +2198,7 @@ descritti dettagliatamente in altre parti della documentazione: @itemize @item -Per costruire la struttura del rigo: @ref{Displaying staves}. +Per costruire la struttura del rigo: @ref{Aspetto del rigo}. @item Per scrivere la musica per pianoforte: @@ -2206,7 +2206,7 @@ Per scrivere la musica per pianoforte: @item Per scrivere il testo da associare a una linea melodica: -@ref{Common notation for vocal music}. +@ref{Notazione comune per la musica vocale}. @item Per posizionare il testo: @ref{Placing lyrics vertically}. @@ -2229,9 +2229,9 @@ Manuale di apprendimento: @rlearning{Canzoni}. Guida alla notazione: -@ref{Common notation for vocal music}, +@ref{Notazione comune per la musica vocale}, @ref{Displaying chords}, -@ref{Displaying staves}, +@ref{Aspetto del rigo}, @ref{Keyboard and other multi-staff instruments}, @ref{Placing lyrics vertically}, @ref{Stanzas}. @@ -2331,6 +2331,7 @@ Quando una parte vocale si divide temporaneamente, si devono usare i @code{\oneVoice}, @code{\voiceOne}, @code{\voiceTwo}. +@endpredefined @seealso Manuale di apprendimento: @@ -2338,7 +2339,7 @@ Manuale di apprendimento: @rlearning{Modelli per gruppi vocali}. Guida alla notazione: -@ref{Context layout order}, +@ref{Ordine di disposizione dei contesti}, @ref{Grouping staves}, @ref{Shape note heads}, @ref{Single-staff polyphony}. @@ -2425,17 +2426,18 @@ partitura sopra i loro rispettivi righi, come mostrato in questo esempio: @predefined @code{\dynamicUp}, @code{\dynamicDown}, @code{\dynamicNeutral}. +@endpredefined @seealso Guida alla notazione: -@ref{Changing spacing}, -@ref{Displaying spacing}, +@ref{Modificare la spaziatura}, +@ref{Visualizzare la spaziatura}, @ref{Fitting music onto fewer pages}, @ref{Page layout}, @ref{Score layout}, @ref{Separating systems}, @ref{Setting the staff size}, -@ref{Breaks}, +@ref{Interruzioni}, @ref{Vertical spacing}. Guida al funzionamento interno: @@ -2454,7 +2456,7 @@ Guida al funzionamento interno: @seealso Guida alla notazione: -@ref{Expressive marks as lines}. +@ref{Indicazioni espressive lineari}. @node Opera e musical @@ -2544,7 +2546,7 @@ leggere @ref{Page layout}. @item Si possono inserire suggerimenti di dialogo, didascalie e note a pié di -pagina, vedi @ref{Creating footnotes} e @ref{Text}. Didascalie estese +pagina, vedi @ref{Creazione di note a piè di pagina} e @ref{Text}. Didascalie estese possono essere aggiunte anche con una sezione di markup indipendenti tra i due blocchi @code{\score}, vedi @ref{Separate text}. @@ -2557,7 +2559,7 @@ Glossario musicale: @rglosnamed{transposing instrument,Strumento traspositore}. Guida alla notazione: -@ref{Creating footnotes}, +@ref{Creazione di note a piè di pagina}, @ref{Grouping staves}, @ref{Hiding staves}, @ref{Instrument transpositions}, @@ -2771,8 +2773,8 @@ Glossario musicale: @rglosnamed{cue-notes,Notine o Citazioni in corpo più piccolo}. Guida alla notazione: -@ref{Aligning objects}, -@ref{Direction and placement}, +@ref{Allineamento degli oggetti}, +@ref{Direzione e posizionamento}, @ref{Formatting cue notes}, @ref{Quoting other voices}, @ref{Using music functions}. @@ -3215,7 +3217,7 @@ Manuale di apprendimento: Guida alla notazione: @ref{Ancient notation}, -@ref{Bar lines}, +@ref{Stanghette}, @ref{Modifying context plug-ins}, @ref{Typesetting Gregorian chant}, @ref{Unmetered music}, @@ -3369,7 +3371,7 @@ tick = \markup { @end lilypond L'uso di @code{\markup} per centrare il testo e disporre le linee in -colonne è descritto in @ref{Formatting text}. +colonne è descritto in @ref{Formattazione del testo}. La maggior parte di questi elementi sono mostrati in uno dei due versi del modello @rlearning{Salmi}. @@ -3381,7 +3383,7 @@ Manuale di apprendimento: Guida alla notazione: @ref{Fonts}, -@ref{Formatting text}. +@ref{Formattazione del testo}. @node Misure parziali nei motivi degli inni diff --git a/Documentation/it/notation/world.itely b/Documentation/it/notation/world.itely index 214239c8ff..19745b7539 100644 --- a/Documentation/it/notation/world.itely +++ b/Documentation/it/notation/world.itely @@ -63,7 +63,7 @@ alterazioni di altezza sono determinate in base al contesto. Vengono usati solitamente i nomi italiani delle note, mentre il file di inizializzazione @file{arabic.ly} fornisce un comodo insieme di macro e definizioni che estendono la notazione standard. -Maggiori dettagli in @ref{Arabic music}. +Maggiori dettagli in @ref{Musica araba}. @cindex accordatura non occidentale @@ -96,7 +96,7 @@ Manuale di apprendimento: Guida alla notazione: @ref{Writing pitches}, @ref{Note names in other languages}, -@ref{Arabic music}, +@ref{Musica araba}, @ref{Turkish classical music}. @@ -386,9 +386,9 @@ Glossario musicale: Guida alla notazione: @ref{Manual beams}, -@ref{Automatic beams}, +@ref{Travature automatiche}, @ref{Unmetered music}, -@ref{Automatic accidentals}, +@ref{Alterazioni automatiche}, @ref{Setting automatic beam behavior}, @ref{Time signature}. diff --git a/Documentation/it/texidocs/analysis-brackets-above-the-staff.texidoc b/Documentation/it/texidocs/analysis-brackets-above-the-staff.texidoc new file mode 100644 index 0000000000..eece9cab50 --- /dev/null +++ b/Documentation/it/texidocs/analysis-brackets-above-the-staff.texidoc @@ -0,0 +1,8 @@ +%% Translation of GIT committish: e0808cc5f4890c5f8f03ed1be48fc911627afea4 + texidocit = " +Delle semplici parentesi analitiche orizzontali vengono aggiunte, per impostazione +predefinita, sotto il rigo. L'esempio seguente mostra un modo per posizionarle +sopra il rigo. + +" + doctitleit = "Parentesi analitiche sopra il rigo" diff --git a/Documentation/it/texidocs/analysis-brackets-with-labels.texidoc b/Documentation/it/texidocs/analysis-brackets-with-labels.texidoc new file mode 100644 index 0000000000..02a15c69b2 --- /dev/null +++ b/Documentation/it/texidocs/analysis-brackets-with-labels.texidoc @@ -0,0 +1,10 @@ +%% Translation of GIT committish: 8ef5f99e63cc9e52c7c0071cde4d99e057d10329 + texidocit = " +Si può aggiungere del testo alle parentesi analitiche tramite la proprietà +@code{text} del grob @code{HorizontalBracketText}. L'aggiunta di vari frammenti +di testo alle parentesi che iniziano nello stesso momento musicale richiede +l'uso del comando @code{\\tweak}. +Dopo un'interruzione di linea il testo viene messo tra parentesi. + +" + doctitleit = "Parentesi analitiche con etichette" diff --git a/Documentation/it/texidocs/combining-two-parts-on-the-same-staff.texidoc b/Documentation/it/texidocs/combining-two-parts-on-the-same-staff.texidoc index fdd6aac333..0d253d161d 100644 --- a/Documentation/it/texidocs/combining-two-parts-on-the-same-staff.texidoc +++ b/Documentation/it/texidocs/combining-two-parts-on-the-same-staff.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: e0808cc5f4890c5f8f03ed1be48fc911627afea4 +%% Translation of GIT committish: 8ef5f99e63cc9e52c7c0071cde4d99e057d10329 texidocit = " Lo strumento di unione delle parti (il comando @code{\\partcombine}) permette di combinare varie parti sullo stesso rigo. Indicazioni testuali come diff --git a/Documentation/it/texidocs/jazz-combo-template.texidoc b/Documentation/it/texidocs/jazz-combo-template.texidoc index c3393e490d..53a7567535 100644 --- a/Documentation/it/texidocs/jazz-combo-template.texidoc +++ b/Documentation/it/texidocs/jazz-combo-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: e0808cc5f4890c5f8f03ed1be48fc911627afea4 +%% Translation of GIT committish: 8ef5f99e63cc9e52c7c0071cde4d99e057d10329 texidocit = " Ecco un modello piuttosto complesso, per un gruppo jazz. Si noti che tutti gli strumenti sono in @code{\\key c \\major}. Si tratta della tonalità diff --git a/Documentation/it/texidocs/moving-the-ends-of-hairpins.texidoc b/Documentation/it/texidocs/moving-the-ends-of-hairpins.texidoc new file mode 100644 index 0000000000..c3786466a5 --- /dev/null +++ b/Documentation/it/texidocs/moving-the-ends-of-hairpins.texidoc @@ -0,0 +1,13 @@ +%% Translation of GIT committish: 8ef5f99e63cc9e52c7c0071cde4d99e057d10329 + texidocit = " +Le estremità delle forcelle possono essere spostate in modo relativo alla +loro posizione predefinita (offset) impostando la proprietà @code{shorten-pair} +dell'oggetto @code{Hairpin}. Valori positivi spostano le estremità a +destra, valori negativi le spostano a sinistra. Diversamente dalla +proprietà @code{minimum-length}, questa proprietà modifica solo l'aspetto +della forcella; non cambia la spaziatura orizzontale (inclusa la posizione +delle dinamiche confinanti). Questo metodo è quindi utile per ritoccare +una forcella entro lo spazio ad essa allocato. + +" + doctitleit = "Spostare le estremità delle forcelle" diff --git a/Documentation/it/texidocs/orchestra,-choir-and-piano-template.texidoc b/Documentation/it/texidocs/orchestra,-choir-and-piano-template.texidoc index 254e865f07..93ebdfe661 100644 --- a/Documentation/it/texidocs/orchestra,-choir-and-piano-template.texidoc +++ b/Documentation/it/texidocs/orchestra,-choir-and-piano-template.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: e0808cc5f4890c5f8f03ed1be48fc911627afea4 +%% Translation of GIT committish: 8ef5f99e63cc9e52c7c0071cde4d99e057d10329 texidocit = " Questo modello mostra come usare i contesti annidati @code{StaffGroup} e @code{GrandStaff} per creare sottogruppi degli strumenti dello stesso diff --git a/Documentation/it/texidocs/piano-template-simple.texidoc b/Documentation/it/texidocs/piano-template-simple.texidoc index 660e7e816b..89fe8adb9f 100644 --- a/Documentation/it/texidocs/piano-template-simple.texidoc +++ b/Documentation/it/texidocs/piano-template-simple.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: e0808cc5f4890c5f8f03ed1be48fc911627afea4 +%% Translation of GIT committish: 8ef5f99e63cc9e52c7c0071cde4d99e057d10329 texidocit = " Ecco un comune doppio pentagramma per pianoforte con un po' di note. diff --git a/Documentation/it/texidocs/string-quartet-template-simple.texidoc b/Documentation/it/texidocs/string-quartet-template-simple.texidoc index 09b057f748..aeae20eab8 100644 --- a/Documentation/it/texidocs/string-quartet-template-simple.texidoc +++ b/Documentation/it/texidocs/string-quartet-template-simple.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: e0808cc5f4890c5f8f03ed1be48fc911627afea4 +%% Translation of GIT committish: 8ef5f99e63cc9e52c7c0071cde4d99e057d10329 texidocit = " Questo modello presenta un semplice quartetto d'archi. Impiega anche una sezione @code{\\global} per definire il tempo e l'armatura di chiave. diff --git a/Documentation/it/texidocs/string-quartet-template-with-separate-parts.texidoc b/Documentation/it/texidocs/string-quartet-template-with-separate-parts.texidoc index a3e78d7075..0692b8e350 100644 --- a/Documentation/it/texidocs/string-quartet-template-with-separate-parts.texidoc +++ b/Documentation/it/texidocs/string-quartet-template-with-separate-parts.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: e0808cc5f4890c5f8f03ed1be48fc911627afea4 +%% Translation of GIT committish: 8ef5f99e63cc9e52c7c0071cde4d99e057d10329 texidocit = " Il frammento di codice del @qq{Modello per quartetto d'archi} crea un bel quartetto, ma cosa fare se si ha bisogno di creare le singole parti? Questo diff --git a/Documentation/it/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc b/Documentation/it/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc index a2029149f4..54621f1964 100644 --- a/Documentation/it/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc +++ b/Documentation/it/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: e0808cc5f4890c5f8f03ed1be48fc911627afea4 +%% Translation of GIT committish: 8ef5f99e63cc9e52c7c0071cde4d99e057d10329 texidocit = " Questo esempio usa del codice Scheme per imporre delle modifiche enarmoniche alle note che permettano di avere il numero minimo di diff --git a/Documentation/it/translations.itexi b/Documentation/it/translations.itexi index 7cee245456..c229fda69d 100644 --- a/Documentation/it/translations.itexi +++ b/Documentation/it/translations.itexi @@ -16,42 +16,42 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Last updated Sun Nov 6 09:35:15 UTC 2016 +@emph{Ultimo aggiornamento Sat Jun 24 12:50:41 UTC 2017 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @headitem Cambiamenti in LilyPond -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traduttori +@tab Revisori +@tab Tradotto +@tab Aggiornato +@tab Altre informazioni @item Section titles @* -2577 +2784 @tab Federico Bruni @tab @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -partially +sì @end html @end ifhtml @ifnothtml -partially +sì @end ifnothtml @tab pre-GDP @item @@ -64,21 +64,21 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @end multitable @@ -88,11 +88,11 @@ yes @headitem Saggio sull'incisione musicale automatizzata -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traduttori +@tab Revisori +@tab Tradotto +@tab Aggiornato +@tab Altre informazioni @item Section titles @* @@ -103,21 +103,21 @@ Section titles @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -130,21 +130,21 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -157,21 +157,21 @@ yes @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -184,21 +184,21 @@ yes @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @end multitable @@ -208,11 +208,11 @@ yes @headitem Manuale di apprendimento di LilyPond -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traduttori +@tab Revisori +@tab Tradotto +@tab Aggiornato +@tab Altre informazioni @item Section titles @* @@ -223,21 +223,21 @@ Section titles @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -250,21 +250,21 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -277,75 +277,75 @@ yes @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item 2 Notazione comunemente utilizzata @* -4402 +4421 @tab Federico Bruni @tab Luca Rossetto Casel @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item 3 Concetti fondamentali @* -11119 +11240 @tab Federico Bruni @tab Luca Rossetto Casel @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -358,21 +358,21 @@ yes @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -385,21 +385,21 @@ A Modelli @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @end multitable @@ -409,11 +409,11 @@ yes @headitem Guida alla Notazione di LilyPond -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traduttori +@tab Revisori +@tab Tradotto +@tab Aggiornato +@tab Altre informazioni @item Section titles @* @@ -424,21 +424,21 @@ Section titles @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -451,21 +451,21 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -478,75 +478,75 @@ yes @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item 1.1 Altezze @* -5272 +5413 @tab Federico Bruni @tab Luca Rossetto Casel @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -partially +sì @end html @end ifhtml @ifnothtml -partially +sì @end ifnothtml @tab pre-GDP @item 1.2 Ritmi @* -6822 +6853 @tab Federico Bruni @tab Luca Rossetto Casel @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -partially +sì @end html @end ifhtml @ifnothtml -partially +sì @end ifnothtml @tab pre-GDP @item @@ -559,21 +559,21 @@ partially @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -partially +sì @end html @end ifhtml @ifnothtml -partially +sì @end ifnothtml @tab pre-GDP @item @@ -586,48 +586,48 @@ partially @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item 1.5 Note simultanee @* -2920 +2979 @tab Federico Bruni @tab Luca Rossetto Casel @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -partially +parzialmente @end html @end ifhtml @ifnothtml -partially +parzialmente @end ifnothtml @tab pre-GDP @item @@ -640,75 +640,75 @@ partially @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item 1.7 Note editoriali @* -1477 +1481 @tab Federico Bruni @tab @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -partially +sì @end html @end ifhtml @ifnothtml -partially +sì @end ifnothtml @tab pre-GDP @item 1.8 Testo @* -2755 +2754 @tab Federico Bruni @tab @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -partially +sì @end html @end ifhtml @ifnothtml -partially +sì @end ifnothtml @tab pre-GDP @item @@ -721,21 +721,21 @@ partially @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -748,21 +748,21 @@ yes @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -775,102 +775,102 @@ yes @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item 3 Input e output @* -12839 +12853 @tab Federico Bruni @tab @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -partially +sì @end html @end ifhtml @ifnothtml -partially +sì @end ifnothtml @tab pre-GDP @item 4 Gestione dello spazio @* -10911 +10982 @tab Federico Bruni @tab @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item 5 Modifica delle impostazioni predefinite @* -15597 +17050 @tab Federico Bruni @tab @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -883,21 +883,21 @@ A Tabelle del manuale della notazione @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -910,21 +910,21 @@ B Schema riassuntivo @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @end multitable @@ -934,11 +934,11 @@ yes @headitem LilyPond: manuale d'uso del programma -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traduttori +@tab Revisori +@tab Tradotto +@tab Aggiornato +@tab Altre informazioni @item Section titles @* @@ -949,21 +949,21 @@ Section titles @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -976,75 +976,75 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item 1 Eseguire @command{lilypond} @* -5440 +5469 @tab Federico Bruni @tab Luca Rossetto Casel @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item 2 Aggiornare i file con @command{convert-ly} @* -1866 +2097 @tab Federico Bruni @tab Luca Rossetto Casel @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -1057,21 +1057,21 @@ yes @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -1084,21 +1084,21 @@ yes @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -1111,21 +1111,21 @@ yes @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @end multitable @@ -1135,11 +1135,11 @@ yes @headitem LilyPond -- Notazione musicale per tutti -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Traduttori +@tab Revisori +@tab Tradotto +@tab Aggiornato +@tab Altre informazioni @item Section titles @* @@ -1150,21 +1150,21 @@ Section titles @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -1177,48 +1177,48 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item Introduzione @* -5814 +5793 @tab Federico Bruni @tab Luca Rossetto Casel @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -1231,21 +1231,21 @@ Download @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item @@ -1258,48 +1258,48 @@ Manuali @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @item Comunità @* -3524 +2449 @tab Federico Bruni @tab Luca Rossetto Casel @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab @ifhtml @html -yes +sì @end html @end ifhtml @ifnothtml -yes +sì @end ifnothtml @tab pre-GDP @end multitable diff --git a/Documentation/it/usage/external.itely b/Documentation/it/usage/external.itely index 1535ff8933..162ad67bac 100644 --- a/Documentation/it/usage/external.itely +++ b/Documentation/it/usage/external.itely @@ -410,7 +410,7 @@ esempio i sequencer ad interfaccia grafica e i convertitori XML. Per maggiori dettagli consulta il @uref{http://@/lilypond@/.org,sito web}. Si tratta di programmi separati da @command{lilypond} e sono eseguiti -dalla linea di comando; si veda @ref{Command-line usage} per maggiori +dalla linea di comando; si veda @ref{Uso da linea di comando} per maggiori informazioni. Se usi MacOS 10.3 o 10.4 e hai problemi a eseguire alcuni di questi script, ad esempio @code{convert-ly}, vedi @rweb{MacOS X}. @@ -466,7 +466,7 @@ midi2ly [@var{opzione}]@dots{} @var{file-midi} @end example Attenzione: per @q{linea di comando} si intende la linea di comando -del sistema operativo. Si veda @ref{Converting from other formats} per +del sistema operativo. Si veda @ref{Conversione da altri formati} per maggiori informazioni su questo argomento. @command{midi2ly} accetta le seguenti opzioni. @@ -538,7 +538,7 @@ musicxml2ly [@var{opzione}]@dots{} @var{file-xml} @end example Attenzione: per @q{linea di comando} si intende la linea di comando -del sistema operativo. Si veda @ref{Converting from other formats} per +del sistema operativo. Si veda @ref{Conversione da altri formati} per maggiori informazioni su questo argomento. Se il nome del file è @file{-}, @command{musicxml2ly} legge l'input @@ -688,7 +688,7 @@ etf2ly [@var{opzione}]@dots{} @var{file-etf} @end example Attenzione: per @q{linea di comando} si intende la linea di comando -del sistema operativo. Si veda @ref{Converting from other formats} per +del sistema operativo. Si veda @ref{Conversione da altri formati} per maggiori informazioni su questo argomento. @command{etf2ly} accetta le seguenti opzioni: diff --git a/Documentation/it/usage/lilypond-book.itely b/Documentation/it/usage/lilypond-book.itely index 848be1e563..060d9d68e9 100644 --- a/Documentation/it/usage/lilypond-book.itely +++ b/Documentation/it/usage/lilypond-book.itely @@ -26,9 +26,10 @@ ottenute. Le definizioni relative alla larghezza del rigo e alle dimensioni dei caratteri vengono regolate per adeguarsi alla formattazione del documento. Si tratta di un programma separato da @command{lilypond} e viene lanciato -dalla linea di comando; per maggiori informazioni, si veda @ref{Command-line -usage}. In caso di problemi nell'eseguire @code{lilypond-book} da linea di -comando su Windows o Mac OS X, si veda @rweb{Windows} o @rweb{MacOS X}. +dalla linea di comando; per maggiori informazioni, si veda +@ref{Uso da linea di comando}. In caso di problemi nell'eseguire +@code{lilypond-book} da linea di comando su Windows o Mac OS X, si veda +@rweb{Windows} o @rweb{MacOS X}. Questo procedimento può essere applicato ai documenti @LaTeX{}, HTML, Texinfo o DocBook. @@ -407,7 +408,7 @@ e poi specificando prima di ogni frammento la quantità di sistemi desiderata, @seealso Esistono opzioni specifiche da linea di comando per @command{lilypond-book} e altri dettagli da conoscere quando si elaborano documenti @LaTeX{}; si veda -@ref{Invoking lilypond-book}. +@ref{Utilizzo di lilypond-book}. @node Texinfo @@ -575,7 +576,7 @@ Per includere file separati, si usa si riferisce a un file MusicXML invece che a un file LilyPond. Per una lista di opzioni da usare con gli elementi @code{lilypond} e -@code{lilypondfile}, si veda @ref{Music fragment options}. +@code{lilypondfile}, si veda @ref{Opzioni dei frammenti musicali}. Inoltre, @code{} mostra la versione di lilypond impiegata. @@ -966,8 +967,8 @@ le normali procedure usate con Texinfo; ovvero, si lancia @command{texi2pdf} o @command{texi2dvi} o @command{makeinfo}, a seconda del formato di output che si vuole creare. @ifinfo -@xref{Format with texi2dvi, , , texinfo, GNU Texinfo}, e @ref{Creating -an Info File, , , texinfo, GNU Texinfo}. +@xref{Format with texi2dvi, , , texinfo, GNU Texinfo}, e +@ref{Creating an Info File, , , texinfo, GNU Texinfo}. @end ifinfo @ifnotinfo Si veda la documentazione di Texinfo per ulteriori dettagli. @@ -984,7 +985,7 @@ Si veda la documentazione di Texinfo per ulteriori dettagli. Specifica il tipo di documento da elaborare: @code{html}, @code{latex}, @code{texi} (il formato predefinito) o @code{docbook}. Se manca questa opzione, @command{lilypond-book} cerca di rilevare il formato automaticamente, si veda -@ref{Filename extensions}. Attualmente, @code{texi} è equivalente a +@ref{Estensioni dei nomi di file}. Attualmente, @code{texi} è equivalente a @code{texi-html}. @c This complicated detail is not implemented, comment it out -jm @@ -1121,7 +1122,7 @@ Solo il primo @code{\score} di un blocco LilyPond viene elaborato. Si può usare qualsiasi estensione per il file di input, ma se non si usa l'estensione raccomandata per uno specifico formato potrebbe essere necessario specificare a mano il formato di output; per i dettagli si veda -@ref{Invoking lilypond-book}. Altrimenti, @command{lilypond-book} sceglie +@ref{Utilizzo di lilypond-book}. Altrimenti, @command{lilypond-book} sceglie automaticamente il formato di output in base all'estensione del file di input. @quotation @@ -1409,4 +1410,4 @@ dove @code{\includescore} viene definito in questo modo: Altri modi per combinare testo e musica (senza usare @command{lilypond-book}) sono trattati in -@ref{LilyPond output in other programs}. +@ref{Inclusione di partiture LilyPond in altri programmi}. diff --git a/Documentation/it/usage/running.itely b/Documentation/it/usage/running.itely index 3a20ae22e1..e0e7d94e9b 100644 --- a/Documentation/it/usage/running.itely +++ b/Documentation/it/usage/running.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: 0fa6f042cccacb643d46781dde23617c71a9753e + Translation of GIT committish: cd1ac38996d3de35770ea31f819b392fe686bf39 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -213,7 +213,7 @@ pdfsizeopt.py --use-multivalent=no gsout.pdf final.pdf @end example @item -d, --define-default=@var{variabile}=@var{valore} -Si veda @ref{Advanced command line options for LilyPond}. +Si veda @ref{Opzioni avanzate della linea di comando per LilyPond}. @cindex Scheme, valutazione dell'espressione @cindex valutazione dell'espressione, Scheme @@ -253,7 +253,7 @@ Esempio: @code{lilypond -fpng @var{file}.ly} @noindent Per i formati @code{svg} e @code{eps} usare l'opzione @code{-dbackend}. -Vedi @ref{Advanced command line options for LilyPond}. +Vedi @ref{Opzioni avanzate della linea di comando per LilyPond}. @item -h, --help Mostra una sintesi dell'utilizzo. @@ -282,7 +282,7 @@ Esegue @command{lilypond} in una gabbia chroot. L'opzione @option{--jail} fornisce un'alternativa più flessibile a @option{--safe} quando la formattazione di LilyPond è messa a disposizione attraverso un server web o quando LilyPond esegue sorgenti provenienti dall'esterno -(si veda @ref{Advanced command line options for LilyPond}). +(si veda @ref{Opzioni avanzate della linea di comando per LilyPond}). L'opzione @option{--jail} modifica la radice di @command{lilypond} in @var{gabbia} appena prima di iniziare il vero processo di compilazione. L'utente @@ -332,7 +332,7 @@ con privilegi di superutente (che ovviamente perderà immediatamente), possibilmente con l'uso di @command{sudo}. È una buona idea limitare il numero di secondi di tempo della CPU che LilyPond può usare (ad esempio con @command{ulimit -t}), e, se il sistema operativo lo permette, la quantità di -memoria che può essere allocata. Si veda anche @ref{LilyPond in chroot jail}. +memoria che può essere allocata. Si veda anche @ref{LilyPond in una gabbia chroot}. @end table @cindex loglevel @@ -592,6 +592,10 @@ la compilazione. @tab Sposta il margine sinistro della cornice EPS dell'output della quantità specificata (in mm). +@item @code{font-export-dir} +@tab @code{#f [dir]} +@tab Directory per esportare i font come file PostScript. + @item @code{gs-load-fonts} @tab @code{#f} @tab Carica i font attraverso Ghostscript. @@ -600,6 +604,11 @@ specificata (in mm). @tab @code{#f} @tab Carica solo i font LilyPond attraverso Ghostscript. +@item @code{gs-never-embed-fonts} +@tab @code{#f} +@tab Fa sì che Ghostscript incorpori solo i font TrueType e nessun altro +formato per font. + @item @code{gui} @tab @code{#f} @tab Esegue il programma senza stampare messaggi e redirige tutto l'output in un file di log. @@ -667,7 +676,7 @@ essere compresa tra virgolette precedute dal segno di escape. @item @code{point-and-click} @tab @code{#t} @tab Aggiunge i collegamenti @q{punta e clicca} all'output PDF e SVG. Si veda -@ref{Point and click}. +@ref{Punta e clicca}. @item @code{preview} @tab @code{#f} @@ -757,7 +766,7 @@ La modalità sicura bloccherà la compilazione di molti utili frammenti di codic LilyPond. L'opzione @option{--jail} è un'alternativa più sicura, ma richiede più lavoro -per configurarla. Si veda @ref{Basic command line options for LilyPond}. +per configurarla. Si veda @ref{Opzioni di base della linea di comando per LilyPond}. @multitable @columnfractions .33 .16 .51 @item @code{separate-log-files} @@ -1053,7 +1062,7 @@ contesti, potrebbe apparire lo stesso messaggio molteplici volte. Anche la diagnosi eseguita in uno degli @q{ultimi} passaggi (es: controlli di battuta) può apparire varie volte. -Maggiori informazioni sugli errori si trovano in @ref{Common errors}. +Maggiori informazioni sugli errori si trovano in @ref{Errori comuni}. @node Errori comuni diff --git a/Documentation/it/usage/suggestions.itely b/Documentation/it/usage/suggestions.itely index 69f6248bcf..e5de7e612d 100644 --- a/Documentation/it/usage/suggestions.itely +++ b/Documentation/it/usage/suggestions.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: d36171e34d236d890f5dc511b895037188c6c7cb + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -61,7 +61,7 @@ problemi più comuni in fase di scrittura: @item @strong{Includere sempre il numero di @code{\version} in ogni file di input}, non importa quanto piccolo possa essere il file. Ciò impedisce di dover ricordare con quale versione di LilyPond è stato creato il file ed è -importante soprattutto per @ref{Updating files with convert-ly} (che ha +importante soprattutto per @ref{Aggiornare i file con convert-ly} (che ha bisogno della dichiarazione @code{\version}); o quando si inviano i file di input a altri utenti (per esempio, quando si chiede aiuto nelle mailing list). Nota che tutti i modelli contengono l'informazione su @code{\version}. @@ -298,13 +298,13 @@ Un'altra tecnica di debug molto utile consiste nel creare @cindex makefile @cindex make -Tutte le piattaforme su cui Lilypond può essere installato supportano un +Tutte le piattaforme su cui LilyPond può essere installato supportano un software chiamato @code{make}. Questo software legge un file speciale chiamato @code{Makefile} che definisce quali file dipendono da quali altri e quali comandi occorra dare al sistema operativo per produrre un file da un altro. Ad esempio Makefile può spiegare come generare @file{ballad.pdf} e @file{ballad.midi} da @file{ballad.ly} eseguendo -Lilypond. +LilyPond. In alcune situazioni, è una buona idea creare un @code{Makefile} per il proprio progetto, per proprio comodo o come cortesia diff --git a/Documentation/it/usage/updating.itely b/Documentation/it/usage/updating.itely index 53cbfedbfa..2d3404a870 100644 --- a/Documentation/it/usage/updating.itely +++ b/Documentation/it/usage/updating.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- @ignore - Translation of GIT committish: bd8e8f0193000854fef9d3de3cc0a9f667ea8fb1 + Translation of GIT committish: 094be7d770e887169f70249804e1e96e04a44ca5 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -32,6 +32,7 @@ aggiornare questi file di input più vecchi alla nuova sintassi. * Opzioni da linea di comando per convert-ly:: * Problemi nell'eseguire convert-ly:: * Conversioni manuali:: +* Scrivere codice che funzioni su molteplici versioni:: @end menu @@ -374,3 +375,44 @@ converted. \score{} must now begin with a music expression. Anything else (particularly \header{}) must come after the music. @end verbatim + +@node Scrivere codice che funzioni su molteplici versioni +@section Scrivere codice che funzioni su molteplici versioni +@translationof Writing code to support multiple versions + +In alcuni casi, in particolare quando si scrive codice destinato a funzionare +come @emph{libreria}, è opportuno far sì che supporti molteplici versioni di +LilyPond nonostante le modifiche della sintassi. Per farlo si possono +avvolgere porzioni alternative di codice in espressioni condizionali che +dipendono dalla versione di LilyPond attualmente eseguita. La funzione +Scheme @code{ly:version?} prevede un operatore di confronto @var{op} +e una versione di riferimento @var{ver} passata come elenco di interi di +massimo tre elementi. Gli elementi mancanti vengono ignorati, quindi +@code{'(2 20)} equivale a @emph{qualsiasi} versione della serie di versioni +2.20. Sono possibili costrutti come il seguente: + +@verbatim +#(cond + ((ly:version? > '(2 20)) + (ly:message "Questo è il codice da eseguire per LilyPond 2.20 o successivi")) + ((ly:version? = '(2 19 57)) + (ly:message "Questo verrà eseguito soltanto con LilyPond 2.19.57")) + (else (ly:message "Questo verrà eseguito con qualsiasi altra versione"))) +@end verbatim + +Solitamente questa funzione viene integrata nelle funzioni di una libreria, +per consentire l'uso di sintassi alternativa, ma è anche possibile usare il +confronto direttamente nell'input musicale, come nell'esempio seguente: + +@verbatim +{ + c' d' e' f' + #(if (ly:version? = '(2 21)) + #{ \override NoteHead.color = #red #} + #{ \override NoteHead.color = #blue #}) + g' a' b' c'' +} +@end verbatim + +@strong{Nota:} Questa funzione è stata introdotta in LilyPond 2.19.57, dunque +non è possibile fare confronti usando versioni precedenti. diff --git a/Documentation/it/web/community.itexi b/Documentation/it/web/community.itexi index 3bb0d36a8e..536873bd7b 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: 6b8cabe379e8b4b945797a4e55759c56117223d4 + Translation of GIT committish: 3f5d679ade0f797d5f907569656223d09b09d5db When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -9,6 +9,7 @@ @include included/acknowledge.itexi @include included/authors.itexi +@include included/gsoc.itexi @include included/helpus.itexi @node Comunità @@ -73,7 +74,7 @@ quando si discute di LilyPond. @ref{Notizie}: notizie sul progetto LilyPond. @item -@ref{Attic}: annunci e changelog delle versioni precedenti. +@ref{Soffitta}: annunci e changelog delle versioni precedenti. @end itemize @divEnd @@ -140,7 +141,7 @@ e aggiungi i tuoi esempi! @end example Esempi particolarmente istruttivi provenienti dal LSR sono inclusi nella -nostra documentazione ufficiale, in @ref{Snippets}. +nostra documentazione ufficiale, in @ref{Frammenti}. @subsubheading IRC @@ -494,9 +495,10 @@ quando la segnalazione viene aggiunta al bug tracker. Una risposta può richied fino a 4 giorni, perché abbiamo un numero limitato di volontari per questo compito. Una volta che un bug è stato aggiunto al tracker, puoi commentarlo per aggiungere -informazioni a riguardo. Puoi anche contrassegnare il bug in modo da ricevere -automaticamente delle email ogni volta capiti un'attività relativa al bug. Per -fare questo occorre avere un account google. +informazioni a riguardo. Per ricevere automaticamente delle notifiche su +qualsiasi attività relativa al bug, puoi iscriverti cliccando sul simbolo +della busta vicino al titolo del bug. Per commentare e iscriversi occorre un +account sourceforge. @divEnd @divClass{column-center-bottom} @@ -619,10 +621,10 @@ mailing list degli sviluppatori. @divClass{heading-center} @ifclear web_version - @heading Development for LilyPond @version + @heading Sviluppo di LilyPond @version @end ifclear @ifset web_version - @heading Development for LilyPond @versionDevel + @heading Sviluppo di LilyPond @versionDevel @end ifset @c we normally don't allow named references, but in this case @@ -782,43 +784,43 @@ manuali sono reperibili su @url{http://lilypond.org}} @headitem Introduzione @item -@docLinkSplit{Learning,learning,@manualDevelLearningSplit-it} +@docLinkSplit{Apprendimento,learning,@manualDevelLearningSplit-it} @tab -@docLinkBig{Learning,learning,@manualDevelLearningBig-it} +@docLinkBig{Apprendimento,learning,@manualDevelLearningBig-it} @tab -@docLinkPdf{Learning,learning,@manualDevelLearningPdf-it} +@docLinkPdf{Apprendimento,learning,@manualDevelLearningPdf-it} @item -@docLinkSplit{Glossary,music-glossary,@manualDevelGlossarySplit} +@docLinkSplit{Glossario,music-glossary,@manualDevelGlossarySplit} @tab -@docLinkBig{Glossary,music-glossary,@manualDevelGlossaryBig} +@docLinkBig{Glossario,music-glossary,@manualDevelGlossaryBig} @tab -@docLinkPdf{Glossary,music-glossary,@manualDevelGlossaryPdf} +@docLinkPdf{Glossario,music-glossary,@manualDevelGlossaryPdf} @item -@docLinkSplit{Essay,essay,@manualDevelEssaySplit-it} +@docLinkSplit{Saggio,essay,@manualDevelEssaySplit-it} @tab -@docLinkBig{Essay,essay,@manualDevelEssayBig-it} +@docLinkBig{Saggio,essay,@manualDevelEssayBig-it} @tab -@docLinkPdf{Essay,essay,@manualDevelEssayPdf-it} +@docLinkPdf{Saggio,essay,@manualDevelEssayPdf-it} @end multitable @multitable @columnfractions .3 .3 .3 @headitem Regolare @item -@docLinkSplit{Notation,notation,@manualDevelNotationSplit-it} +@docLinkSplit{Notazione,notation,@manualDevelNotationSplit-it} @tab -@docLinkBig{Notation,notation,@manualDevelNotationBig-it} +@docLinkBig{Notazione,notation,@manualDevelNotationBig-it} @tab -@docLinkPdf{Notation,notation,@manualDevelNotationPdf-it} +@docLinkPdf{Notazione,notation,@manualDevelNotationPdf-it} @item -@docLinkSplit{Usage,usage,@manualDevelUsageSplit-it} +@docLinkSplit{Utilizzo,usage,@manualDevelUsageSplit-it} @tab -@docLinkBig{Usage,usage,@manualDevelUsageBig-it} +@docLinkBig{Utilizzo,usage,@manualDevelUsageBig-it} @tab -@docLinkPdf{Usage,usage,@manualDevelUsagePdf-it} +@docLinkPdf{Utilizzo,usage,@manualDevelUsagePdf-it} @item @docLinkSplit{Snippets,snippets,@manualDevelSnippetsSplit} @@ -839,11 +841,11 @@ manuali sono reperibili su @url{http://lilypond.org}} @docLinkPdf{Web,web,@manualDevelWebPdf-it} @item -@docLinkSplit{Changes,changes,@manualDevelChangesSplit} +@docLinkSplit{Cambiamenti,changes,@manualDevelChangesSplit-it} @tab -@docLinkBig{Changes,changes,@manualDevelChangesBig} +@docLinkBig{Cambiamenti,changes,@manualDevelChangesBig-it} @tab -@docLinkPdf{Changes,changes,@manualDevelChangesPdf} +@docLinkPdf{Cambiamenti,changes,@manualDevelChangesPdf-it} @item @docLinkSplit{Extending,extending,@manualDevelExtendingSplit} @@ -878,207 +880,7 @@ manuali sono reperibili su @url{http://lilypond.org}} @unnumberedsec Google Summer of Code @translationof Google Summer of Code -@divClass{column-center-top} -@subheading Che cos'è il Google Summer of Code? - -@uref{https://developers.google.com/open-source/gsoc/, GSoC} è un programma -internazionale che offre agli studenti degli stipendi per scrivere codice per -progetti di software libero e open source durante l'estate. È un'ottima -opportunità per gli studenti per fare esperienza con lo sviluppo software -in un progetto vero e per dare un contributo da cui tutti potranno trarre -vantaggio. Attrae nuovi collaboratori e stimola gli studenti che già -partecipano allo sviluppo di LilyPond ad impegnarsi di più in esso. LilyPond -partecipa a GSoC sotto l'egida del @uref{http://www.gnu.org/, progetto GNU}. - -Abbiamo avuto partecipanti al GSoC nel 2012, 2015 e 2016 e invitiamo gli -studenti a fare domanda per le prossime estati. - -Se hai dubbi o desideri presentare domanda, invia un'email alla nostra -mailing list degli sviluppatori (vedi @ref{Contact}). - -@divEnd - -@divClass{column-center-middle-color2} -@subheading Elenco di idee di progetti - -Ecco un elenco di progetti suggeriti per il GSoC o per chiunque sia interessato -a aiutare a migliorare LilyPond. (Ultimo aggiornamento: Novembre 2016) - -La disponibilità di mentori varia da progetto a progetto e di anno in anno. -Invia un'email alla nostra mailing list degli sviluppatori (vedi @ref{Contact}) -e ti aiuteremo a trovare un mentore per un progetto che sia adatto ai tuoi -interessi e capacità. - -Se hai idee per un progetto GSoC che non è elencato qui sotto, puoi inviarci -un'email per discuterne. Ci sono molte aree in cui LilyPond può essere -migliorato e il nostro team di sviluppo è sempre disponibile a aiutare -coloro che desiderino affrontare un progetto come quelli di seguito elencati. - -Una lista completa di tutti i problemi da risolvere si trova -@uref{http://sourceforge.net/p/testlilyissues/issues/, qui}. - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Migliorare la struttura interna degli accordi - -La rappresentazione interna degli accordi in LilyPond non è abbastanza potente -da comprendere la nomenclatura degli accordi jazz. Attualmente l'accordo ha -una radice, un basso e un'inversione. Sarebbe auspicabile poter gestire -accordi @qq{impilati} o bicordi, minori/maggiori, etc. Per poter far questo, -deve essere sviluppata una rappresentazione interna capace di catturare -l'essenza di accordi complessi. Una volta che questa rappresentazione -interna viene sviluppata, c'è un'ulteriore vantaggio: sarà più semplice -migliorare la formattazione dei nomi degli accordi. - -@strong{Difficoltà:} Facile/media -@strong{Requisiti:} Scheme (Guile), ma il livello necessario può essere -facilmente imparato -@strong{Consigliato:} Teoria e nomenclatura degli accordi -@strong{Mentore:} Carl Sorensen - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Aggiungere varianti dei glifi dei tipi di carattere - -@divClass{keep-bullets} -@itemize - -@item -Aggiungere varianti @q{sulla} linea del rigo e @q{tra} le linee dei righi. - -@item -Varianti più corte e più strette di alcuni glifi, come ad esempio le -alterazioni. Un altro esempio più specifico è la testa della nota -breve nella notazione antica che ha due varianti, con un @q{buco} più -piccolo o più grande. - -@end itemize -@divEnd - -@strong{Difficoltà:} facile -@strong{Requisiti:} MetaFont, C++, buon occhio per il dettaglio -@strong{Conoscenze consigliate:} conoscenza di base di LilyPond -@strong{Mentore/i:} Werner Lemberg - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Abbellimenti - -Correggere i problemi di sincronizzazione degli abbellimenti. -Gli abbellimenti possono interferire col modo in cui LilyPond -gestisce il tempo e causare strani effetti, specialmente quando si -usano più righi e alcuni di questi hanno degli abbellimenti mentre -altri non ce li hanno. Questo è uno dei -@uref{https://sourceforge.net/p/testlilyissues/issues/34/,bug} più -imbarazzanti e di vecchia data in LilyPond. - -@strong{Difficoltà:} media -@strong{Requisiti:} C++, MIDI -@strong{Consigliato:} familiarità col funzionamento interno di LilyPond -@strong{Mentori potenziali:} Mike Solomon (non disponibile per GSoC 2016), Carl Sorensen - -@divEnd - - -@divClass{column-center-middle-color3} -@subheading Migliorare la disposizione predefinita delle travature - -Per le travature normali, tra i righi, spezzate e angolari. La disposizione -delle travature deve dipendere dal contesto e dalle note vicine (si veda la -sezione 2.2 di -@uref{http://imslp.org/wiki/Repository_of_Music-Notation_Mistakes_%28Coulon%2C_Jean-Pierre%29, -questo libro}). Se possibile, ridurre anche il tempo di elaborazione della -disposizione delle travature. - -@strong{Difficoltà:} media -@strong{Requisiti:} C++, esperienza con la scrittura di euristiche -@strong{Conoscenze consigliate:} senso estetico -@strong{Mentori potenziali:} Mike Solomon (non disponibile per GSoC 2016), Carl Sorensen - -@divEnd - - -@divClass{column-center-middle-color3} -@subheading Migliorare il comportamento durante la compilazione - -Strumenti di analisi automatica del codice, come il rilevamento di -perdite di memoria di valgrind e i profilatori di codice di callgrind, -forniscono informazioni utili per individuare possibili errori nel -nostro codice C++. Pulire gli avvisi ci permetterebbe di automatizzare -il rifiuto di qualsiasi patch che introduca avvisi ulteriori. - -@strong{Difficoltà:} media -@strong{Requisiti:} C++ -@strong{Mentori potenziali:} Reinhold Kainhofer (non disponibile per GSoC 2016), -Joe Neeman - -@divEnd - - -@divClass{column-center-middle-color3} -@subheading MusicXML - -Migliorare le funzioni di importazione e esportazione di MusicXML: - -@divClass{keep-bullets} -@itemize - -@item -Gestire l'esportazione del contenuto musicale principale come l'esportazione -MIDI (ovvero usando classi dedicate dell'esportatore, derivate dalla classe -del traduttore). - -@item -Costruire l'albero XML del contenuto musicale di base, -aggiungere un collegamento dall'evento musicale al tag XML. - -@item -Far sì che tutti gli incisori di LilyPond facciano il loro lavoro. - -@item -Aggiungere la capacità di collegare ogni oggetto dell'output -(ovvero ogni stampo (stencil) / gruppo di stampi) alla sua causa musicale -(e quindi al tag XML nell'albero XML). - -@item -Creare un backend di output XML, che possa aggiungere le informazioni di -formattazione per ogni oggetto di output ai tag XML. - -@end itemize -@divEnd - -Ci sono varie direzioni possibili per questo progetto, inclusa quella di -proseguire l'esportazione in formato MusicXML iniziata nel progetto GSoC 2015. - -@strong{Difficoltà:} media -@strong{Requisiti:} MusicXML, Python, Scheme, conoscenza di base di LilyPond -@strong{Mentori potenziali:} Reinhold Kainhofer, Mike Solomon (entrambi non -disponibili per GSoC 2016) - -È utile avere una certa familiarità con altri software di notazione musicale (a -fine comparativo). - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Migliorare le legature di portamento e di valore - -La qualità tipografica delle legature di portamento e di valore è spesso -non soddisfacente. Le legature di valore @qq{spezzate} da una chiave o da -un cambio di rigo non sono gestite al meglio. Il progetto potrebbe -includere la raccolta e la classificazione di esempi di output scadente, la -decisione sull'output desiderato e la scrittura del codice per migliorarlo. - -@strong{Difficoltà:} difficile -@strong{Requisiti:} C++, esperienza con la scrittura di euristica -@strong{Conoscenze consigliate:} conoscenza di LilyPond, senso estetico -@strong{Mentori:} Mike Solomon, Janek Warchol (entrambi non disponibili -per GSoC 2016) - -@divEnd +@gsocCurrent @@ -1218,9 +1020,13 @@ per GSoC 2016) in @ref{Soffitta}} @divEnd -@include web/news-front.itexi +@include web/news-new.itexi -@include web/news.itexi +@divClass{column-center-bottom} +@subheading Vecchie notizie +Le vecchie notizie si trovano in @ref{Soffitta}, insieme a vecchi annunci +e registri di modifiche (changelog). +@divEnd @node Soffitta @@ -1261,6 +1067,7 @@ Elenco descrittivo dei cambiamenti per ogni versione: @divEnd +@divClass{column-center-middle-color3} @subheading Grazie Grazie a sviluppatori, collaboratori, cacciatori di bug e a chi ci ha dato @@ -1278,7 +1085,7 @@ preziosi suggerimenti @divEnd -@divClass{column-center-bottom} +@divClass{column-center-middle-color3} @subheading Lista dei cambiamenti Lista dei cambiamenti apportati da ciascun sviluppatore in ogni versione: @@ -1296,3 +1103,16 @@ Lista dei cambiamenti apportati da ciascun sviluppatore in ogni versione: @miscLink{CHANGES-0.0,v0.0} @divEnd + +@divClass{column-center-middle-color2 bigger-subsubheadings} +@gsocInactive +@divEnd + +@divClass{column-center-middle-color2} +@subheading Vecchie notizie + +Le vecchie notizie che risalgono fino al luglio 2003. Le notizie più recenti +si trovano alla pagina @ref{Notizie}. +@divEnd + +@include web/news-old.itexi diff --git a/Documentation/it/web/download.itexi b/Documentation/it/web/download.itexi index 039e527952..451e71e038 100644 --- a/Documentation/it/web/download.itexi +++ b/Documentation/it/web/download.itexi @@ -150,7 +150,7 @@ pacchetti sono spesso @emph{molto} più vecchi della versione stabile corrente. Anche se questi pacchetti più vecchi sono più facili da installare, consigliamo @emph{caldamente} di usare i nostri pacchetti generici. In questo caso, controlla che il tuo editor LilyPond stia usando -la versione corretta. Vedi @ref{Easier editing}. +la versione corretta. Vedi @ref{Editing facilitato}. @divEnd diff --git a/Documentation/it/web/introduction.itexi b/Documentation/it/web/introduction.itexi index 0e00e01a22..6511636a88 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: 136e94ea422fc94ef2587c588d516a03e01275e1 + Translation of GIT committish: d1c9544af1b810d0eb4075106f9576347224a1b4 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -117,7 +117,7 @@ spartiti di ottima qualità. Tutte le impostazioni di stile, i font e gli algoritmi di LilyPond sono ispirati alla migliore musica incisa a mano. L'output di LilyPond ha lo stesso aspetto netto, equilibrato ed elegante delle migliori partiture classiche. Questo è stato approfondito nel nostro -@ref{Essay}. +@ref{Saggio}. @divEnd @@ -133,7 +133,7 @@ da un altro essere umano così come da un altro programma. Non ci sono oscure impostazioni nascoste dietro le voci di un menù né salvataggi in file binari. -Questo concetto è approfondito in @ref{Text input}. +Questo concetto è approfondito in @ref{Input testuale}. @subsubheading Le modifiche manuali sono robuste e tracciabili @@ -199,7 +199,7 @@ riconoscimento vocale per modificare i file LilyPond. Anche gli utenti totalmente privi di vista possono usare un software di lettura dello schermo per scrivere file LilyPond – un'operazione impossibile nei programmi di scrittura musicale basati su interfaccia grafica. Puoi vedere una partitura spettacolare -in @ref{Examples}. +in @ref{Esempi}. @subsubheading Diversità degli editor @@ -209,7 +209,7 @@ di modifica dei file LilyPond; non sei quindi legato a una singola interfaccia utente ma puoi usare strumenti diversi per compiti diversi. Puoi perfino usare un editor LilyPond ricco di funzionalità a casa e l'app blocco note del telefonino per modificare i file quando sei in movimento. Alcuni esempi -sono elencati in @ref{Easier editing}. +sono elencati in @ref{Editing facilitato}. @divEnd @@ -275,7 +275,7 @@ offrendo gentilmente il proprio aiuto. I tempi di risposta sono solitamente molto brevi e spesso vengono suggerite brillanti soluzioni dei problemi segnalati. Grazie alla stretta interazione col team di sviluppo, tali soluzioni sono spesso incluse in LilyPond stesso. Maggiori informazioni -in @ref{Community}. +in @ref{Comunità}. @subsubheading Software libero @@ -286,7 +286,7 @@ dalla pagina di download. permesso di modificarlo e copiarlo. Sei infastidito da un malfunzionamento, o desideri una nuova funzionalità? Puoi aggiungerla tu stesso, o pagare qualcun altro per farlo. -Maggiori informazioni in @ref{Freedom}. +Maggiori informazioni in @ref{Libertà}. @divEnd @@ -382,26 +382,6 @@ il pentagramma. @exampleImage{tab-example} @divEnd -@divClass{column-center-middle-color2} -@subheading Grafici Schenker - -L'output di default può essere ampiamente modificato. Ecco un'analisi -Schenkeriana di grande effetto, creata da Kris Schaffer, per un articolo -su @uref{http://www.linuxjournal.com/article/8364 , Linux Journal}. -I colori sono stati aggiunti per migliorare la visibilità. - -@exampleImage{bach-schenker} -@divEnd - -@divClass{column-center-middle-color2} -@subheading Output personalizzato - -Un breve estratto del Klavierstück II di Stockhausen per dimostrare la -capacità di LilyPond di fornire output personalizzato. - -@exampleImage{Stockhausen_Klavierstueck2} -@divEnd - @divClass{column-center-middle-color2} @subheading Musica Vocale @@ -417,14 +397,6 @@ e le parentesi quadre sulle sezioni legate. @exampleImage{aucun-snippet} @divEnd -@divClass{column-center-middle-color2} -@subheading Materiali didattici - -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 Spartiti semplificati @@ -437,6 +409,17 @@ personalizzati per adattarsi a quasi ogni situazione. @exampleImage{chart} @divEnd + +@divClass{column-center-middle-color2} +@subheading Materiali didattici + +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 Grandi Progetti @@ -449,6 +432,29 @@ da Hu Haipeng, un compositore cieco. @divEnd + +@divClass{column-center-middle-color2} +@subheading Output personalizzato + +Un breve estratto del Klavierstück II di Stockhausen per dimostrare la +capacità di LilyPond di fornire output personalizzato. + +@exampleImage{Stockhausen_Klavierstueck2} +@divEnd + + +@divClass{column-center-middle-color2} +@subheading Grafici Schenker + +L'output di default può essere ampiamente modificato. Ecco un'analisi +Schenkeriana di grande effetto, creata da Kris Schaffer, per un articolo +su @uref{http://www.linuxjournal.com/article/8364 , Linux Journal}. +I colori sono stati aggiunti per migliorare la visibilità. + +@exampleImage{bach-schenker} +@divEnd + + @divClass{column-center-bottom} @subheading E ora? @@ -582,7 +588,7 @@ l'arte di creare la bellezza con un computer. Si tratta di una lettura interessante se ti incuriosisce una discussione approfondita delle nostre idee principali. A causa del suo volume, il saggio è presentato come "manunale". Se vuoi leggerlo ora, passa a -@ref{Essay}. Tuttavia, se vuoi solo una rapida introduzione a LilyPond, +@ref{Saggio}. Tuttavia, se vuoi solo una rapida introduzione a LilyPond, per ora puoi saltarlo. @divEnd @@ -1278,14 +1284,6 @@ Un editor LilyPond che si usa nel browser e permette di scrivere una partitura direttamente senza dover installare LilyPond, purché si sia connessi a Internet. -@subsubheading Tunefl -@uref{http://www.tunefl.com} - -Con tunefl è possibile scrivere le partiture direttamente online, -senza bisogno di installare LilyPond sul proprio computer. Consente di -sperimentare tutte le funzionalità del programma usando una comoda -interfaccia web. - @divEnd @@ -1298,11 +1296,12 @@ interfaccia web. @sourceimage{logo-macosx,,,} @sourceimage{logo-windows,,,} -Elysium è un ambiente di sviluppo integrato (IDE) per LilyPond ed è -un'estensione dell'editor Eclipse. Ha una vista che affianca -sorgente e spartito e permette un rapido feedback visivo e sonoro -senza bisogno di cambiare i contesti. Include molti modelli con -configurazione assistita. +@uref{https://github.com/thSoft/elysium} + +È un ambiente completo per creare e modificare partiture con LilyPond +nell'editor Eclipse. Offre un ricco set di strumenti per gestire +facilmente LilyPond. + @divEnd @@ -1349,7 +1348,7 @@ Puoi trovare maggiori informazioni sulla configurazione di Emacs e Vim in @sourceimage{logo-macosx,,,} @subsubheading TeXShop -@uref{http://www.uoregon.edu/~koch/texshop} +@uref{http://pages.uoregon.edu/koch/texshop/} L'editor TeXShop per MacOS@tie{}X può essere potenziato per eseguire LilyPond, @command{lilypond-book} e @command{convert-ly} all'interno dell'editor, @@ -1439,8 +1438,8 @@ anche un port in C++. @item @uref{http://strasheela.sourceforge.net/strasheela/doc/index.html,Strasheela}, un -ambiente costruito sul linguaggio di programmazione a vincoli -@uref{http://www.mozart-oz.org/, Mozart/Oz}. +ambiente costruito sul +@uref{http://mozart.github.io/, Mozart Programming System}. @end itemize @divEnd @@ -1473,7 +1472,7 @@ sono ancora disponibili e scaricabili le versioni precedenti su @item @uref{https://sourceforge.net/projects/noteedit.berlios/,NoteEdit}, che importava -@uref{http://www.makemusic.com/musicxml,MusicXML}, è stato "forkato" +@uref{http://www.musicxml.com/,MusicXML}, è stato "forkato" in @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd} e @uref{http://canorus.org,Canorus}. @@ -1482,6 +1481,13 @@ e @uref{http://canorus.org,Canorus}. @uref{https://launchpad.net/rumor/,Rumor}, un convertitore realtime monofonico da MIDI a LilyPond. +@item +@uref{https://github.com/tiredpixel/tunefl,tunefl} +Con tunefl è possibile scrivere le partiture direttamente online, +senza bisogno di installare LilyPond sul proprio computer. Consente di +sperimentare tutte le funzionalità del programma usando una comoda +interfaccia web. + @item @uref{http://www.tuxguitar.com.ar/,TuxGuitar}, un editor e riproduttore multitraccia per tablatura, include un visualizzatore della partitura e può diff --git a/Documentation/it/web/manuals.itexi b/Documentation/it/web/manuals.itexi index 970ad597a1..35bbc06e3c 100644 --- a/Documentation/it/web/manuals.itexi +++ b/Documentation/it/web/manuals.itexi @@ -446,9 +446,9 @@ funzionalità di LilyPond rispetto alla versione stabile precedente. @docLinks{Cambiamenti, changes, @rchangesnamed{Top,Cambiamenti}, - @manualStableChangesSplit, - @manualStableChangesBig, 90 KB, - @manualStableChangesPdf, 80 KB} + @manualStableChangesSplit-it, + @manualStableChangesBig-it, 90 KB, + @manualStableChangesPdf-it, 80 KB} @divEnd diff --git a/Documentation/it/web/news-headlines.itexi b/Documentation/it/web/news-headlines.itexi index abae0fc58f..6d38f76aae 100644 --- a/Documentation/it/web/news-headlines.itexi +++ b/Documentation/it/web/news-headlines.itexi @@ -2,7 +2,7 @@ @c This file is used in the web.texi file. @ignore - Translation of GIT committish: 2c6f3ccb58859c257744730e8cf91c62a2005632 + Translation of GIT committish: 2e46ee8ff6e49e9863db34b95cce23927c4e5ee7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -19,28 +19,28 @@ @ifclear web_version @c no anchor links, just link to News page -@ref{News, Rilasciato LilyPond 2.19.52 - @emph{4 Dicembre 2016}} +@ref{News, Rilasciato LilyPond 2.19.60 - @emph{8 maggio 2016}} -@ref{News, Due progetti LilyPond nel Google Summer of Code 2016 - @emph{23 Aprile 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.2 - @emph{23 marzo 2014}} -@ref{News, Rilasciato LilyPond 2.18.0 - @emph{29 Dicembre 2013}} +@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.html#LilyPond-2_002e19_002e51-released-December-4_002c-2016, - Rilasciato LilyPond 2.19.52 - @emph{4 Dicembre 2016}} +@uref{news.html#LilyPond-2_002e19_002e60-released-May-08_002c-2017, + Rilasciato LilyPond 2.19.60 - @emph{8 maggio 2016}} @uref{news.html#Two-LilyPond-projects-in-Google-Summer-of-Code-2016-April-23_002c-2016, - Due progetti LilyPond nel Google Summer of Code 2016 - @emph{23 Aprile 2016}} + Due progetti LilyPond nel Google Summer of Code 2016 - @emph{23 aprile 2016}} @uref{news.html#LilyPond-2_002e18_002e2-released_0021-March-23_002c-2014, - Rilasciato LilyPond 2.18.2 - @emph{23 Marzo 2014}} + Rilasciato LilyPond 2.18.2 - @emph{23 marzo 2014}} @uref{news.html#LilyPond-2_002e18_002e0-released_0021-December-29_002c-2013, - Rilasciato LilyPond 2.18.0 - @emph{29 Dicembre 2013}} + Rilasciato LilyPond 2.18.0 - @emph{29 dicembre 2013}} @end ifset diff --git a/Documentation/it/web/news-new.itexi b/Documentation/it/web/news-new.itexi new file mode 100644 index 0000000000..c9c3d8a74d --- /dev/null +++ b/Documentation/it/web/news-new.itexi @@ -0,0 +1,154 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- +@c This file is part of community.itexi + +@ignore + Translation of GIT committish: 2e46ee8ff6e49e9863db34b95cce23927c4e5ee7 + + 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 moving the lowest item(s) +@c into news-old.itexi. + +@c keep two blank lines between news entries + +@c used for news about the upcoming release; see CG on Release Work + +@newsItem +@subheading Rilasciato LilyPond 2.19.60 @emph{8 maggio 2017} + +Siamo felici di annunciare il rilascio di LilyPond +2.19.60. Questo rilascio comprende vari miglioramenti e contiene anche +funzionalità non ancora complete. Permette di avere accesso alle funzionalità +più recenti, ma è bene tenere presente che alcune potrebbero essere incomplete +e non si possono escludere difetti o crash del programma. A chi necessita di +una versione stabile di LilyPond consigliamo di usare la versione 2.18. + +@newsEnd + +@newsItem +@subheading Rilasciato LilyPond 2.18.2! @emph{23 marzo 2014} + +Siamo orgogliosi di annunciare il rilascio di GNU LilyPond 2.18.2. +LilyPond è un programma di notazione musicale dedicato alla produzione +di spartiti musicali della migliore qualità possibile. Introduce nelle +stampe prodotte dai computer l'estetica della musica incisa secondo i +metodi tradizionali. + +Questa versione fornisce vari aggiornamenti alla 2.18.0, tra cui i +manuali aggiornati. Consigliamo tutti gli utenti di aggiornare a +questa versione. + +@newsEnd + + +@newsItem +@subheading Due progetti LilyPond accettati al Google Summer of Code 2016 @emph{23 aprile 2016} + +Siamo felici di vedere due studenti, Nathan Chou e Jeffery Shivers, al lavoro +su LilyPond in qualità di partecipanti del Google Summer of Code di quest'anno. +Ci auguriamo che possano ottenere grandi risultati e che restino nella comunità +degli sviluppatori anche in seguito. + +Nathan affronterà una fastidiosa limitazione, ovvero l'impossibilità degli +estensori di attraversare le voci. Il suo lavoro renderà obsoleto un insieme +di orribili soluzioni temporanee. +Jeffery porterà il pacchetto ScholarLY[1] a un livello qualitativo maturo e +aggiungerà un pacchetto LaTeX, rendendo possibile la creazione di relazioni +critiche a partire dai dati inseriti direttamente nella partitura LilyPond. + +[1] @uref{https://github.com/openlilylib/scholarly}@* + +@newsEnd + + +@newsItem +@subheading Rilasciato LilyPond 2.18.0! @emph{29 dicembre 2013} + +Siamo felici di annunciare il rilascio di GNU LilyPond 2.18.0. +LilyPond è un programma di notazione musicale dedicato alla produzione +di spartiti musicali della migliore qualità possibile. Introduce nelle +stampe prodotte dai computer l'estetica della musica incisa secondo i +metodi tradizionali. + +Tra i numerosi miglioramenti e cambiamenti, i seguenti sono i più rilevanti: + +@itemize @bullet +@item +Molti elementi sono ora posizionati usando il loro reale contorno invece +di un@tie{}riquadro rettangolare. Ciò riduce enormemente il numero di +grandi e sgradevoli spazi vuoti. + +@item +Le impostazioni e le sovrascritture possono usare ora la sintassi +@example +\override Voice.TextSpanner.bound-details.left.text = "rit." +@end example +invece della precedente +@example +\override Voice.TextSpanner #'(bound-details left text) = "rit." +@end example + +@item +Le terzine aventi la stessa durata per ciascun gruppo si possono scrivere +@example +\tuplet 3/2 4 @{ c8 c c c c c @} +@end example +invece di +@example +\times 2/3 @{ c8 c c @} \times 2/3 @{ c8 c c @} +@end example +@end itemize + +Un elenco completo delle nuove funzionalità degne di nota si trova in: + +@example +@uref{http://lilypond.org/doc/v2.18/Documentation/changes/index.it.html} +@end example + +Un grande ringraziamento all'ampio gruppo di persone entusiaste di LilyPond +il cui contributo finanziario ha fatto sì che uno degli sviluppatori +principali, David Kastrup, potesse dedicarsi interamente a LilyPond +durante l'intero ciclo di sviluppo. + +LilyPond 2.18 è stato realizzato da + +@table @asis +@item Principali sviluppatori: +Bertrand Bordage, Trevor Daniels, Colin Hall, Phil Holmes, Ian +Hulin, Reinhold Kainhofer, David Kastrup, Jonathan Kulp, Werner +Lemberg, John Mandereau, Patrick McCarty, Joe Neeman, Han-Wen +Nienhuys, Jan Nieuwenhuizen, Graham Percival, Mark Polesky, Neil +Puttock, Mike Solomon, Carl Sorensen, Francisco Vila, Valentin +Villenave, Janek Warchoł + +@item Principali collaboratori: +Aleksandr Andreev, Frédéric Bron, Torsten Hämmerle, Marc Hohl, +James Lowe, Andrew Main, Thomas Morley, David Nalesnik, Keith +OHara, Benkő Pál, Anders Pilegaard, Julien Rioux, Johannes Rohrer, +Adam Spiers, Heikki Tauriainen + +@item Autori della documentazione: +Frédéric Bron, Federico Bruni, Colin Campbell, Urs Liska, James +Lowe, Thomas Morley, Jean-Charles Malahieude, Guy Stalnaker, +Martin Tarenskeen, Arnold Theresius, Rodolfo Zitellini + +@item Bug Squad: +Colin Campbell, Eluze, Marc Hohl, Phil Holmes, Marek Klein, Ralph +Palmer + +@item Team di supporto: +Colin Campbell, Eluze, Marc Hohl, Marek Klein, Kieren MacMillan, +Urs Liska, Ralph Palmer + +@item Traduttori: +Federico Bruni, Luca Rossetto Casel, Felipe Castro, Pavel Fric, +Jean-Charles Malahieude, Till Paala, Yoshiki Sawada + +@end table +e molti altri collaboratori. + +@newsEnd + diff --git a/Documentation/ja/GNUmakefile b/Documentation/ja/GNUmakefile index 54c1212969..090de5252a 100644 --- a/Documentation/ja/GNUmakefile +++ b/Documentation/ja/GNUmakefile @@ -2,6 +2,33 @@ ISOLANG = ja depth = ../.. STEPMAKE_TEMPLATES = documentation texinfo LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root + +# +# By default, Japanese PDF documents are not built. +# It requires some fonts and packages. +# Unfortunately, most developers do not have them. +# +# For building Japanese PDF documents the following is required. +# +# XeTeX 0.9998+ (TeX Live 2012+) +# The modern TeX engine used for LilyPond's PDF documents. +# It might be contained in texlive-xetex package. +# +# IPAex fonts +# Japanese fonts. +# It might be contained in texlive-lang-japanese package. +# +# zhspacing +# Spacing for mixed CJK-English documents in XeTeX. +# It might be contained in texlive-lang-chinese package. +# (This package is for Chinese, but can also be used for Japanese.) +# +# If you want to build Japanese PDF documents, +# please install these packages and comment out `NO_PDF_FILES = 1' +# before `make doc'. +# Note: Even if Japanese PDF documents have been built, +# links from HTML documents to Japanese PDF will not be created. +# NO_PDF_FILES = 1 include $(depth)/make/stepmake.make diff --git a/Documentation/ja/learning.tely b/Documentation/ja/learning.tely index 6990ac916f..8ffe776d58 100644 --- a/Documentation/ja/learning.tely +++ b/Documentation/ja/learning.tely @@ -1,4 +1,4 @@ -\input texinfo @c -*- coding: utf-8; mode: texinfo; -*- +\input texinfo-ja @c -*- coding: utf-8; mode: texinfo; -*- @ignore Translation of GIT committish: 76ee88f5adfc7bcd8eff487543e3605e43a93d80 diff --git a/Documentation/ja/macros.itexi b/Documentation/ja/macros.itexi index 4f11299db5..9d9272b09c 100644 --- a/Documentation/ja/macros.itexi +++ b/Documentation/ja/macros.itexi @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; -*- @ignore - Translation of GIT committish: 211937747d4adbae18d6ce41f88dffbb3ca04a5f + Translation of GIT committish: 9bb7fa99aa8bc7c14a45a42224545c726bb6c592 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -102,7 +102,7 @@ translations should be in macros.itexi. このマニュアルと他のドキュメントの関係について、あるいは、このマニュアルを他の形式で読む方法についての情報は、@rwebnamed{マニュアル,マニュアル} を参照してください。 -マニュアルのいずれかを見失ってしまった場合、@w{@uref{http://@/www@/.lilypond@/.org/}} にマニュアルがすべて揃っています。 +マニュアルのいずれかを見失ってしまった場合、@w{@uref{http://@/lilypond@/.org/}} にマニュアルがすべて揃っています。 @end cartouche @end macro @@ -179,16 +179,20 @@ 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 定義済みコマンド +@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 diff --git a/Documentation/ja/notation.tely b/Documentation/ja/notation.tely index ab84313ba6..2194222b0d 100644 --- a/Documentation/ja/notation.tely +++ b/Documentation/ja/notation.tely @@ -1,4 +1,4 @@ -@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- +\input texinfo-ja @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore Translation of GIT committish: fabcd22c8f88ea9a87241597f1e48c0a9adbfc6e diff --git a/Documentation/ja/notation/changing-defaults.itely b/Documentation/ja/notation/changing-defaults.itely index 537877abae..ad5d5affcb 100644 --- a/Documentation/ja/notation/changing-defaults.itely +++ b/Documentation/ja/notation/changing-defaults.itely @@ -4214,8 +4214,8 @@ XinO = { @end lilypond @code{\musicglyph} マークアップ コマンドには、@c -Feta フォントに含まれる任意の図柄を提供することができます。@c -@ref{The Feta font} を参照してください。 +Emmentaler フォントに含まれる任意の図柄を提供することができます。@c +@ref{The Emmentaler font} を参照してください。 @c TODO Add inserting eps files or ref to later @@ -4226,7 +4226,7 @@ Feta フォントに含まれる任意の図柄を提供することができま @ref{マークアップ内部でのグラフィック記譜法}, @ref{テキストをフォーマットする}, @ref{Text markup commands}, -@ref{The Feta font} +@ref{The Emmentaler font}. @node 形状を変更する diff --git a/Documentation/ja/notation/input.itely b/Documentation/ja/notation/input.itely index 42f6efcab1..46003a4226 100644 --- a/Documentation/ja/notation/input.itely +++ b/Documentation/ja/notation/input.itely @@ -2486,7 +2486,7 @@ Portable Network Graphics (PNG) 出力フォーマットが利用可能です。 @subsection 記譜フォントを置換する @translationof Replacing the notation font -LilyPond で使用される Feta フォントの代わりに Gonville に使うことができます。@c +LilyPond で使用される Emmentaler フォントの代わりに Gonville に使うことができます。@c Gonville は以下からダウンロードできます: @example @uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/} @@ -2498,7 +2498,7 @@ Gonville のサンプル小節です: @c for the font comparison. -gp @sourceimage{Gonville_after,,,} -LilyPond の Feta フォントのサンプル小節です: +LilyPond の Emmentaler フォントのサンプル小節です: @sourceimage{Gonville_before,,,} @@ -2510,12 +2510,15 @@ ZIP ファイルをダウンロードして、伸張します。@c -- 更なる情報は、@rlearning{Other sources of information} を参照してください。@c 既存の @code{fonts} ディレクトリを @code{fonts_orig} にリネームして、@c @code{lilyfonts} ディレクトリを @code{fonts} にリネームします。@c -Feta フォントに戻すには、@code{fonts_orig} を @code{fonts} に戻します。 +Emmentaler フォントに戻すには、@code{fonts_orig} を @code{fonts} に戻します。 @seealso 学習マニュアル: @rlearning{Other sources of information} +記譜法リファレンス: +@ref{The Emmentaler font}. + @knownissues Gonville では @q{古代の音楽} を記譜することはできません。@c Gonville フォント ファミリーでは、@c diff --git a/Documentation/ja/notation/rhythms.itely b/Documentation/ja/notation/rhythms.itely index 4193aa328b..c04874f13c 100644 --- a/Documentation/ja/notation/rhythms.itely +++ b/Documentation/ja/notation/rhythms.itely @@ -3137,7 +3137,7 @@ c1 | c | c | c @noindent @code{\musicglyph} を使用して譜刻できる記号のリストは、@c -@ref{The Feta font} を参照してください。 +@ref{The Emmentaler font} を参照してください。 リハーサル記号の配置の一般的な調整については、@c @ref{Formatting text} を参照してください。@c @@ -3151,7 +3151,7 @@ c1 | c | c | c @seealso 記譜法リファレンス: -@ref{The Feta font}, +@ref{The Emmentaler font}, @ref{Formatting text}, @ref{Aligning objects} diff --git a/Documentation/ja/notation/spacing.itely b/Documentation/ja/notation/spacing.itely index dad396f717..95a1bb821c 100644 --- a/Documentation/ja/notation/spacing.itely +++ b/Documentation/ja/notation/spacing.itely @@ -1260,7 +1260,7 @@ layoutVariable = \layout @{ @} @end example -Feta フォントは 8 つのサイズの音楽シンボルを提供します。 +Emmentaler フォントは 8 つのサイズの音楽シンボルを提供します。 各フォントは譜サイズに合わせて調整されます: 小さなサイズになるにつれて、@c 相対的に太くなる譜線に対して釣り合いをとるために、@c @@ -1329,7 +1329,8 @@ Feta フォントは 8 つのサイズの音楽シンボルを提供します。 @seealso 記譜法リファレンス: -@ref{記譜フォント サイズを選択する} +@ref{記譜フォント サイズを選択する}, +@ref{The Emmentaler font}. コード断片集: @rlsr{Spacing} diff --git a/Documentation/ja/notation/text.itely b/Documentation/ja/notation/text.itely index 5af7134be3..605484fc7b 100644 --- a/Documentation/ja/notation/text.itely +++ b/Documentation/ja/notation/text.itely @@ -318,7 +318,7 @@ LilyPond が処理できるテキスト スパナは 1 ボイスにつき、1 @ref{リハーサル記号}, @ref{テキストをフォーマットする}, @ref{マークアップ内部での音楽記譜法}, -@ref{The Feta font} +@ref{The Emmentaler font}. コード断片集: @rlsr{Text} @@ -1217,7 +1217,7 @@ a'1_\markup { より一般的には、以下で示すように、@c 使用可能な音楽シンボルはすべてマークアップ オブジェクトに@c 含めることができます。@c -@ref{The Feta font} に、@c +@ref{The Emmentaler font} に、@c 音楽シンボルと音楽シンボル名の徹底したリストがあります。 @lilypond[quote,verbatim] @@ -1288,7 +1288,7 @@ a'1_\markup { @seealso 記譜法リファレンス: @ref{Music}, -@ref{The Feta font}, +@ref{The Emmentaler font}, @ref{フォントの説明} インストールされているファイル: @@ -1497,7 +1497,7 @@ c''4^smaller @seealso 記譜法リファレンス: -@ref{The Feta font}, +@ref{The Emmentaler font}, @ref{マークアップ内部での音楽記譜法}, @ref{Rotating objects}, @ref{フォントとフォント サイズを選択する}, diff --git a/Documentation/ja/search-box.ihtml b/Documentation/ja/search-box.ihtml new file mode 100644 index 0000000000..04556f14a5 --- /dev/null +++ b/Documentation/ja/search-box.ihtml @@ -0,0 +1,28 @@ + + + + + + + + + diff --git a/Documentation/ja/translations.itexi b/Documentation/ja/translations.itexi index 0d30c034e0..6884f984e6 100644 --- a/Documentation/ja/translations.itexi +++ b/Documentation/ja/translations.itexi @@ -16,19 +16,19 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Last updated Sun Nov 6 09:35:15 UTC 2016 +@emph{最終更新日 Sat Jun 24 12:50:41 UTC 2017 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @headitem GNU LilyPond 学習マニュアル -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab 翻訳者 +@tab 翻訳点検者 +@tab 翻訳済み +@tab 最新 +@tab その他の情報 @item -Section titles +セクション タイトル @* 124 @tab Masamichi Hosoda @@ -39,21 +39,21 @@ Yoshiki Sawada @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab post-GDP @item @@ -68,21 +68,21 @@ Yoshiki Sawada @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab pre-GDP @item @@ -97,27 +97,27 @@ Yoshiki Sawada @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab post-GDP @item 2 一般的な記譜法 @* -4402 +4421 @tab Masamichi Hosoda @* Yoshiki Sawada @@ -126,44 +126,44 @@ Yoshiki Sawada @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +partially @end html @end ifhtml @ifnothtml -yes +partially @end ifnothtml @tab post-GDP @item 3 基礎となるコンセプト @* -11119 +11240 @tab Yoshiki Sawada @tab @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -180,11 +180,11 @@ partially @ifhtml @html -partially (95 %) +一部 (95 %) @end html @end ifhtml @ifnothtml -partially (95 %) +一部 (95 %) @end ifnothtml @tab @ifhtml @@ -207,11 +207,11 @@ A テンプレート @ifhtml @html -partially (97 %) +一部 (97 %) @end html @end ifhtml @ifnothtml -partially (97 %) +一部 (97 %) @end ifnothtml @tab @ifhtml @@ -231,13 +231,13 @@ partially @headitem LilyPond 記譜法リファレンス -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab 翻訳者 +@tab 翻訳点検者 +@tab 翻訳済み +@tab 最新 +@tab その他の情報 @item -Section titles +セクション タイトル @* 326 @tab Yoshiki Sawada @@ -246,11 +246,11 @@ Section titles @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -273,21 +273,21 @@ LilyPond --- \TITLE\ @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab pre-GDP @item @@ -300,44 +300,44 @@ yes @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab post-GDP @item 1.1 ピッチ @* -5272 +5413 @tab Yoshiki Sawada @tab @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -347,18 +347,18 @@ partially @item 1.2 リズム @* -6822 +6853 @tab Yoshiki Sawada @tab @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -381,11 +381,11 @@ partially @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -408,11 +408,11 @@ partially @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -428,24 +428,24 @@ partially @item 1.5 同時進行する音符 @* -2920 +2979 @tab Yoshiki Sawada @tab @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -462,11 +462,11 @@ partially @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -482,24 +482,24 @@ partially @item 1.7 編集者の注釈 @* -1477 +1481 @tab Yoshiki Sawada @tab @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -509,7 +509,7 @@ partially @item 1.8 テキスト @* -2755 +2754 @tab Masamichi Hosoda @* Yoshiki Sawada @@ -518,17 +518,17 @@ Yoshiki Sawada @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -545,21 +545,21 @@ partially @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab post-GDP @item @@ -572,11 +572,11 @@ yes @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -599,11 +599,11 @@ partially @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -626,11 +626,11 @@ partially @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -653,11 +653,11 @@ partially @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -680,17 +680,17 @@ partially @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -707,11 +707,11 @@ partially @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -727,18 +727,18 @@ partially @item 2.7 和音記譜法 @* -1979 +1975 @tab Yoshiki Sawada @tab @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -761,21 +761,21 @@ partially @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab post-GDP @item @@ -788,11 +788,11 @@ yes @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -808,18 +808,18 @@ partially @item 3 入出力全般 @* -12839 +12853 @tab Yoshiki Sawada @tab @tab @ifhtml @html -partially (95 %) +一部 (95 %) @end html @end ifhtml @ifnothtml -partially (95 %) +一部 (95 %) @end ifnothtml @tab @ifhtml @@ -835,24 +835,24 @@ partially @item 4 スペースの問題 @* -10911 +10982 @tab Yoshiki Sawada @tab @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -862,24 +862,24 @@ partially @item 5 デフォルトを変更する @* -15597 +17050 @tab Yoshiki Sawada @tab @tab @ifhtml @html -partially (94 %) +一部 (92 %) @end html @end ifhtml @ifnothtml -partially (94 %) +一部 (92 %) @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -896,11 +896,11 @@ A カンニング ペーパー @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -920,13 +920,13 @@ partially @headitem GNU LilyPond -- アプリケーション使用方法 -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab 翻訳者 +@tab 翻訳点検者 +@tab 翻訳済み +@tab 最新 +@tab その他の情報 @item -Section titles +セクション タイトル @* 135 @tab Masamichi Hosoda @@ -937,21 +937,21 @@ Yoshiki Sawada @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab post-GDP @item @@ -966,27 +966,27 @@ Yoshiki Sawada @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab pre-GDP @item 1 @command{lilypond} を実行する @* -5440 +5469 @tab Masamichi Hosoda @* Yoshiki Sawada @@ -995,17 +995,17 @@ Yoshiki Sawada @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -1015,24 +1015,24 @@ partially @item 2 @command{convert-ly} を使ってファイルを更新する @* -1866 +2097 @tab Yoshiki Sawada @tab @tab @ifhtml @html -yes +一部 (89 %) @end html @end ifhtml @ifnothtml -yes +一部 (89 %) @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -1049,11 +1049,11 @@ partially @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -1076,11 +1076,11 @@ partially @ifhtml @html -partially (87 %) +一部 (87 %) @end html @end ifhtml @ifnothtml -partially (87 %) +一部 (87 %) @end ifnothtml @tab @ifhtml @@ -1103,11 +1103,11 @@ partially @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @@ -1127,13 +1127,13 @@ partially @headitem LilyPond -- みんなの楽譜作成 -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab 翻訳者 +@tab 翻訳点検者 +@tab 翻訳済み +@tab 最新 +@tab その他の情報 @item -Section titles +セクション タイトル @* 760 @tab Masamichi Hosoda @@ -1146,21 +1146,21 @@ Yoshinobu Ishizaki @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab pre-GDP @item @@ -1177,27 +1177,27 @@ Yoshinobu Ishizaki @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab pre-GDP @item 導入部 @* -5814 +5793 @tab Masamichi Hosoda @* Yoshiki Sawada @@ -1208,21 +1208,21 @@ Yoshinobu Ishizaki @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +partially @end html @end ifhtml @ifnothtml -yes +partially @end ifnothtml @tab pre-GDP @item @@ -1237,21 +1237,21 @@ Yoshiki Sawada @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab pre-GDP @item @@ -1266,27 +1266,27 @@ Yoshiki Sawada @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab pre-GDP @item コミュニティ @* -3524 +2449 @tab Masamichi Hosoda @* Yoshiki Sawada @@ -1295,21 +1295,21 @@ Yoshiki Sawada @ifhtml @html -yes +はい @end html @end ifhtml @ifnothtml -yes +はい @end ifnothtml @tab @ifhtml @html -yes +partially @end html @end ifhtml @ifnothtml -yes +partially @end ifnothtml @tab pre-GDP @end multitable diff --git a/Documentation/ja/usage.tely b/Documentation/ja/usage.tely index c6da8cbd8e..7ec439f7e5 100644 --- a/Documentation/ja/usage.tely +++ b/Documentation/ja/usage.tely @@ -1,4 +1,4 @@ -\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- +\input texinfo-ja @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore Translation of GIT committish: 2429e825c154f15cda52cf8a44f12e23d9f6a1e6 diff --git a/Documentation/ja/web.texi b/Documentation/ja/web.texi index 8e407d4527..5e745bd4c5 100644 --- a/Documentation/ja/web.texi +++ b/Documentation/ja/web.texi @@ -1,4 +1,4 @@ -\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- +\input texinfo-ja @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore Translation of GIT committish: 472ecfdd548d8f700d71ec1a403b7a5bdce7d5ba diff --git a/Documentation/ja/web/community.itexi b/Documentation/ja/web/community.itexi index 6c7d7deca1..13059b2107 100644 --- a/Documentation/ja/web/community.itexi +++ b/Documentation/ja/web/community.itexi @@ -1275,9 +1275,7 @@ GSoC 2016) @warning{多くの古いアナウンスと変更履歴が @ref{物置} で見つかります。} @divEnd -@include web/news-front.itexi - -@include web/news.itexi +@include web/news-new.itexi @node 物置 @@ -1353,3 +1351,5 @@ GSoC 2016) @miscLink{CHANGES-0.0,v0.0} @divEnd + +@include web/news-old.itexi diff --git a/Documentation/ja/web/introduction.itexi b/Documentation/ja/web/introduction.itexi index ed4924cb4f..10d0e77be9 100644 --- a/Documentation/ja/web/introduction.itexi +++ b/Documentation/ja/web/introduction.itexi @@ -1,13 +1,13 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore - Translation of GIT committish: 36e230cf09bf2755528d2252ee256f88f330e66d + Translation of GIT committish: 9bb7fa99aa8bc7c14a45a42224545c726bb6c592 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 Translators: Masamichi Hosoda, Yoshiki Sawada, Yoshinobu Ishizaki +@c Translators: Tomohiro Tatejima, Masamichi Hosoda, Yoshiki Sawada, Yoshinobu Ishizaki @node 導入部 @unnumbered 導入部 @@ -349,6 +349,7 @@ LilyPond は、いかなる種類の譜刻にも対応できる、@c @divEnd + @divClass{column-center-middle-color2} @subheading クラシック音楽 @c Classical Music @@ -359,6 +360,7 @@ LilyPond の象徴的な例です。 @exampleImage{bach-bwv610} @divEnd + @divClass{column-center-middle-color2} @subheading 複雑な楽譜 @c Complex Notation @@ -371,6 +373,7 @@ LilyPond の象徴的な例です。 @exampleImage{granados} @divEnd + @divClass{column-center-middle-color2} @subheading 古楽 @c Early Music @@ -381,6 +384,7 @@ LilyPond は、以下のグレゴリオ聖歌のパッセージのような、@c @exampleImage{ancient-headword} @divEnd + @divClass{column-center-middle-color2} @subheading 現代音楽 @c Modern Music @@ -410,6 +414,7 @@ Handel の @emph{Giulio Cesare} を譜刻したものの抜粋から、@c @divEnd + @divClass{column-center-middle-color2} @subheading タブ譜 @c Tablature @@ -421,27 +426,6 @@ LilyPond はタブ譜をサポートします。@c @exampleImage{tab-example} @divEnd -@divClass{column-center-middle-color2} -@subheading Schenker Graphs - -標準出力に様々な変更を加えることができます。@c -@uref{http://www.linuxjournal.com/article/8364 , Linux Journal} -に掲載された Kris Schaffer が作成したみごとな Schenkerian 分析を@c -示します。@c -見やすくするために色を追加しました。 - -@exampleImage{bach-schenker} -@divEnd - -@divClass{column-center-middle-color2} -@subheading カスタマイズ -@c Customized Output - -LilyPond のカスタマイズ能力を示すため、 -Stockhausen の Klavierstück II からの短い抜粋です。 - -@exampleImage{Stockhausen_Klavierstueck2} -@divEnd @divClass{column-center-middle-color2} @subheading 声楽 @@ -459,15 +443,6 @@ LilyPond はこれをすっきりと処理します @exampleImage{aucun-snippet} @divEnd -@divClass{column-center-middle-color2} -@subheading 教育 -@c Educational Applications - -LilyPond は教育を目的とした使用にも適しています。@c -ちょっとした対位法の問題例を挙げます。 - -@exampleImage{theory} -@divEnd @divClass{column-center-middle-color2} @subheading リード譜 @@ -482,6 +457,18 @@ LilyPond は教育を目的とした使用にも適しています。@c @exampleImage{chart} @divEnd + +@divClass{column-center-middle-color2} +@subheading 教育 +@c Educational Applications + +LilyPond は教育を目的とした使用にも適しています。@c +ちょっとした対位法の問題例を挙げます。 + +@exampleImage{theory} +@divEnd + + @divClass{column-center-middle-color2} @subheading 大きなプロジェクト @c Large Projects @@ -493,6 +480,30 @@ LilyPond はオペラや交響楽団のような大きなプロジェクトに @exampleImage{orchestra} @divEnd + +@divClass{column-center-middle-color2} +@subheading カスタマイズ +@c Customized Output + +LilyPond のカスタマイズ能力を示すため、 +Stockhausen の Klavierstück II からの短い抜粋です。 + +@exampleImage{Stockhausen_Klavierstueck2} +@divEnd + +@divClass{column-center-middle-color2} +@subheading Schenker Graphs + +標準出力に様々な変更を加えることができます。@c +@uref{http://www.linuxjournal.com/article/8364 , Linux Journal} +に掲載された Kris Schaffer が作成したみごとな Schenkerian 分析を@c +示します。@c +見やすくするために色を追加しました。 + +@exampleImage{bach-schenker} +@divEnd + + @divClass{column-center-bottom} @subheading どうですか? @c Where now? @@ -674,106 +685,100 @@ LilyPond で生成された楽譜は、世界中の演奏で使用されてい @itemize @item -@uref{http://www.aurelienbello.com/,Aurélien Bello} has arranged a -version of Richard Strauss's @emph{Der Rosenkavalier} for four singers -and a chamber orchestra of thirteen players. This has been commissioned -by the Berlin Philharmonic Orchestra whose members will be the performers on -@uref{http://www.festspielhaus.de/veranstaltung/der-kleine-rosenkavalier-02-04-2015-1100/,April 2nd and 6th} -at the Festspielhaus, Baden-Baden, and on -@uref{http://www.berliner-philharmoniker.de/konzerte/kalender/details/21070/,April 26th} -in the @emph{Philharmonie (großer Saal)}, Berlin. We are pleased to see -musicians of such reputation playing from LilyPond scores -- and they are -reportedly very happy with them. - -Aurélien has also re-orchestrated @emph{Der Ring des Nibelungen} by Richard -Wagner to a -@uref{http://www.rsb-online.de/content/concerts/new-season-1516/family-concerts-age-7-and-above/index_eng.html,100-minute version for children}. -Written for a standard symphony orchestra, but with a reduced cast of -singers, it was performed by the +@uref{http://www.aurelienbello.com/,Aurélien Bello} は Richard Strauss の +@emph{Der Rosenkavalier} を4人の歌手と13人の室内オーケストラ用に編曲しました。@c +これは Berlin Philharmonic Orchestra によって委嘱され、@c +@uref{http://www.festspielhaus.de/veranstaltung/der-kleine-rosenkavalier-02-04-2015-1100/, +4月2日と6日}にバーデンバーデンの祝祭劇場で、@c +@uref{http://www.berliner-philharmoniker.de/konzerte/kalender/details/21070/, +4月26日に}ベルリンの @emph{Philharmonie (großer Saal)} で演奏されました。@c +このような名高い音楽家が LilyPond の楽譜で演奏し、そして曰くそれらに@c +非常に満足しているということで我々は嬉しく思います。 + +Aurélien も Richard Wagner の @emph{Der Ring des Nibelungen} を@c +@uref{http://www.rsb-online.de/content/concerts/new-season-1516/family-concerts-age-7-and-above/index_eng.html, +子どものための100分間の版}に編曲しました。@c +通常の交響楽団のために編曲されましたが、歌手の数を減らして、@c +2014å¹´4月にベルリンの Atze Musiktheater で @uref{http://www.rsb-online.de/,@emph{Radio-Sinfonieorchester Berlin}} -in April 2014 at the Atze Musiktheater, Berlin. The Conductor was Heiko -Matthias Förster. +によって演奏されました。指揮者は Heiko Matthias Förster でした。 @item -Joe Smeets created sheet music for the children's book @emph{Zing Mee} -(@emph{Sing along}) by Annie M.G. published by +Joe Smeets は子どものための本 @emph{Zing Mee} +(@emph{一緒に歌おう})の楽譜を作成しました。出版社 @uref{http://www.queridokinderenjeugdboeken.nl/, Querido} --- ISBN 9789045106205; -choir rehearsal scores for the Dutch translation of Benjamin Britten's -@emph{Saint Nicolas} performed by @emph{Muziektheater Hollands Diep} in -2011; -@uref{http://www.muziektheaterhollandsdiep.nl/nl/voorstellingen/sint_nicolaas_leeft, www.muziektheaterhollandsdiep.nl}. -He has also worked on the score and parts for an arrangement of -Moussurgsky’s @emph{Boris Godounov} for wind quartet, piano and -percussion which was performed in 2014, again by -@emph{Muziektheater Hollands Diep}. - -@item -A critical edition of Tommaso Traetta's @emph{Enea nel Lazio (1760)}, -opera series with libretto by Vittorio Amedeo Cigna-Santi, in four -parts: -@uref{http://www.academia.edu/1987651/Enea_nel_Lazio_opera_riformata_prima_lazione_poi_le_parole_-_Partitura_1_4_, Part One} -@uref{http://www.academia.edu/1994533/Enea_nel_Lazio_opera_riformata_prima_lazione_poi_le_parole_-_Partitura_2_4_, Part Two} -@uref{http://www.academia.edu/1994558/Enea_nel_Lazio_opera_riformata_prima_lazione_poi_le_parole_-_Partitura_3_4_, Part Three} -@uref{http://www.academia.edu/1996242/Enea_nel_Lazio_opera_riformata_prima_lazione_poi_le_parole_-_Partitura_4_4_, Part Four} -Created by +-- ISBN 9789045106205 。@c +また Benjamin Britten の @emph{Saint Nicolas} オランダ語版、@c +合唱のリハーサル譜を作成し、2011å¹´ @emph{Muziektheater Hollands Diep} で@c +演奏されました: +@uref{http://www.muziektheaterhollandsdiep.nl/nl/voorstellingen/sint_nicolaas_leeft, +www.muziektheaterhollandsdiep.nl} 。彼はさらに Moussurgsky の +@emph{Boris Godounov} を管楽四重奏・ピアノ・打楽器の編成に編曲し、@c +2014年にまた @emph{Muziektheater Hollands Diep} で演奏されました。 + +@item +Vittorio Amedeo Cigna-Santi によって歌詞が付けられた Tommaso Traetta のオペラ +@emph{Enea nel Lazio (1760)} の校訂版が、 @uref{http://unito.academia.edu/LucaRossettoCasel, Luca Rossetto Casel} -for his Ph.D. Thesis. +の博士論文として作られました。 +@uref{http://www.academia.edu/1987651/Enea_nel_Lazio_opera_riformata_prima_lazione_poi_le_parole_-_Partitura_1_4_, パート 1} +@uref{http://www.academia.edu/1994533/Enea_nel_Lazio_opera_riformata_prima_lazione_poi_le_parole_-_Partitura_2_4_, パート 2} +@uref{http://www.academia.edu/1994558/Enea_nel_Lazio_opera_riformata_prima_lazione_poi_le_parole_-_Partitura_3_4_, パート 3} +@uref{http://www.academia.edu/1996242/Enea_nel_Lazio_opera_riformata_prima_lazione_poi_le_parole_-_Partitura_4_4_, パート 4} @item -Mussorgsky's @emph{Pictures at an exhibition}, was re-orchestrated and -conducted by @uref{http://www.aurelienbello.com/,Aurélien Bello} with -the @uref{https://junge-philharmonie-brandenburg.de/, -Junge Philharmonie Brandenburg} in October 2011 and April 2012. +Mussorgsky の @emph{Pictures at an exhibition} が +@uref{http://www.aurelienbello.com/,Aurélien Bello} によってオーケストラ用に@c +再編曲され、また彼は指揮者として +@uref{https://junge-philharmonie-brandenburg.de/, +Junge Philharmonie Brandenburg} で2011å¹´10月と2012å¹´4月に演奏しました。 @item -@uref{http://kierenmacmillan.info/, Kieren MacMillan}, composer and -musical director. His many, recent works include; @emph{Go Thy Way}, -performed by the @uref{http://www.saltlakechoralartists.org/, -Salt Lake Choral Artists} in March 2012; The -@emph{Just Out of Reach Suite} performed -by the +作曲家・音楽監督の @uref{http://kierenmacmillan.info/, Kieren MacMillan} 。@c +彼の多くの作品から一部を紹介します: +@emph{Go Thy Way} は2012å¹´3月に @uref{http://www.saltlakechoralartists.org/, +Salt Lake Choral Artists} で演奏されました。 +@emph{Just Out of Reach Suite} は @uref{http://www.herald-dispatch.com/news/marshall/x1883873762/Music-duo-Chrysalis-to-perform-at-Marshall-University-on-Jan-19, -Chrysalis Duo} ; @emph{thrafsmata} performed in July 2011 by the -@uref{http://www.pnme.org/, Pittsburgh -New Music Ensemble}. +Chrysalis Duo} によって演奏されました。 +@emph{thrafsmata} は2011å¹´7月に @uref{http://www.pnme.org/, Pittsburgh +New Music Ensemble} によって演奏されました。 @item -@emph{Anonymous Student Compliment or Complaint}, by -@uref{http://www.mikesolomon.org, Mike Solomon}, winner chosen from among -172 entries from 22 countries of the -@uref{http://www.leftcoastensemble.org, 2011 Left Coast Composition Contest}. -Other works include, Norman (age 1) for clarinet solo, performed at the -@uref{http://arts.ufl.edu/academics/music/, University of Florida}'s -Electroacoustic Music Festival (FEMF), October 2010. +@uref{http://www.mikesolomon.org, Mike Solomon} は、 +@emph{Anonymous Student Compliment or Complaint} という題の作品を作曲し、 +@uref{http://www.leftcoastensemble.org, 2011 Left Coast Composition Contest} +で22カ国172の作品から最優秀作品に選ばれました。@c +彼の他の作品の一つ、クラリネットソロのための Norman (age 1) は、2010å¹´10月、@c +@uref{http://arts.ufl.edu/academics/music/, フロリダ大学}の +Electroacoustic Music Festival (FEMF) で演奏されました。 @item -A modern edition of the @emph{Serenata Erminia} by Alessandro Scarlatti, -edited by Thomas Griffin, Musicologist (Rome, Italy). Performed on 22 -October 2010 in the Galleria of the Palazzo Zevallos Stigliano, Naples, -Italy. @uref{http://www.ascarlatti2010.net, Alessandro Scarlatti 2010}, -in celebration of the composer's 350th birthday. +Alessandro Scarlatti の @emph{Serenata Erminia} の現代版が Thomas Griffin +(音楽学者、イタリア・ローマ)によって編集されました。2010å¹´10月22日、@c +イタリア・ナポリの Galleria of the Palazzo Zevallos Stigliano で演奏され、 +@uref{http://www.ascarlatti2010.net, Alessandro Scarlatti 2010} として@c +作曲家の生誕350年が祝われました。 @item -@uref{http://www.mercuryhouston.org/, Mercury Baroque}'s performance of -Lully's @emph{Armide}, May 15-16, 2009, in Houston, Texas (engraving by -@uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux}). +@uref{http://www.mercuryhouston.org/, Mercury Baroque} による +Lully の @emph{Armide} の演奏が、2009å¹´5月15日-16日にテキサス、ヒューストンで@c +行われました。(譜刻は +@uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux} によってされました。) @item -Instrumental excerpts from Rameau's @emph{Hippolyte et Aricie} at -St. James's Church in Manhattan, May 8, 2009, by Frederick Renz -and his ensemble @uref{http://www.earlymusicny.org/, Early Music -New York} (engraving by -@uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux}). +2009å¹´5月8日、 Rameau の @emph{Hippolyte et Aricie} の器楽演奏がマンハッタンの +St. James's Church で、 Frederick Renz と彼の楽団 +@uref{http://www.earlymusicny.org/, Early Music New York} によって@c +行われました。(譜刻は +@uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux}によってされました。) @item -@emph{Affaire étrangère}, an opera by -@uref{http://valentin.villenave.net/,Valentin Villenave} -to a French libretto by -@uref{https://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis -Trondheim}, premiered February 1, 2009 at -@uref{http://www.orchestre-montpellier.com/, L'Opéra National de -Montpellier}, France. +@uref{https://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis Trondheim} +によるフランス語歌詞で @uref{http://valentin.villenave.net/,Valentin Villenave} +のオペラ @emph{Affaire étrangère} が、2009å¹´2月1日にフランスの +@uref{http://www.orchestre-montpellier.com/, L'Opéra National de Montpellier} +で初演されました。 @end itemize @divEnd @@ -795,22 +800,20 @@ LilyPond で生成された楽譜の主要なショーケースです。 @c don't make this "Mutopia" a link, since that looks silly. @item -@uref{http://etudeapp.com, Etude}, @qq{sheet music on steroids} is -an iPhone app which displays piano music engraved with LilyPond, -including many pieces from Mutopia. The app includes a virtual -piano keyboard showing which keys to press to help beginners learn -how to read sheet music. +@uref{http://etudeapp.com, Etude}, @qq{sheet music on steroids} は +Mutopia の作品を含む、 LilyPond で譜刻されたピアノ曲を表示する iPhone +アプリです。画面上に鍵盤が表示され、初心者の読譜を手助けします。 @item -@uref{https://twitter.com/adoromusic, Adoro Music Publishing}, -high-quality scores of sacred music, available for immediate -download or in traditional paper format. +@uref{https://twitter.com/adoromusic, Adoro Music Publishing} +では高品質な聖楽の楽譜をその場でダウンロード、@c +あるいは伝統的な紙の形式で入手できます。 @item -@uref{http://matthieujacquot.com/, The Shady Lane Publishing}, -a @qq{micro musical publishing house} whose goal is to promote a -new form of musical economy closer to the musicians and music -lovers. +@uref{http://matthieujacquot.com/, The Shady Lane Publishing} +@qq{micro musical publishing house} は、音楽家や音楽愛好家にとってより身近な@c +音楽の使用形態を推進することを目指しています。 + @end itemize @@ -852,136 +855,132 @@ LilyPond を試してみる決心がついたのなら、@c @itemize @item -April 2011 +2011å¹´4月 -@uref{http://www.linux-magazine.com,Linux Magazine} publishes an -article titled +@uref{http://www.linux-magazine.com,Linux Magazine} は @uref{http://www.linux-magazine.com/content/download/61706/482546/version/1/file/088-090_projects.pdf, -Projects on the Move}. It is an introductory article on MuseScore, -LilyPond and Chordii. Author Carla Schroder states @qq{LilyPond is -driven from the command line, but don’t let the lack of a GUI scare -you away; LilyPond is user-friendly and easy to learn}, and provides -a hands-on example. +Projects on the Move} という題の記事を出版しました。@c +これは MuseScore, LilyPond, Chordii の紹介記事であり、@c +著者 Carla Schroder は、 @qq{LilyPond はコマンドラインで動作しますが、@c +GUI が無いことはあなたを怖がらせ追い払うものではありません。 +LilyPond はユーザーフレンドリーで学習が簡単です。} と述べ、 +ハンズオンの例が掲載されています。 @item -May 2010 +2010å¹´5月 -Peter Kirn, on the Create Digital Music website, publishes a +ウェブサイト Create Digital Music において Peter Kirn は、 @uref{http://createdigitalmusic.com/2010/05/14/lilypond-free-beautiful-music-notation-engraving-for-anyone/,LilyPond -review}. He takes a balanced view on usage, praises LilyPond's -high-quality notation and suggests to try it out. +review} を投稿しました。使用法についての記述はバランスが取れており、 +LilyPond の高品質な記譜を賞賛し、試用することを提案しています。 @item -September 2009 +2009å¹´9月 -The German LinuxUser magazine wrote an +ドイツの雑誌 LinuxUser で @uref{http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2009/10/Digitaler-Notenschluessel, -article about LilyPond}. +LilyPond に関する記事} が掲載されました。 @item -August 2009 +2009å¹´8月 -Ann Drinan, on the -@uref{http://www.polyphonic.org/article.php?id=188, Polyphonic.org} -website, presents comments by two orchestra librarians who -talk about using software to maintain their libraries. +ウェブサイト @uref{http://www.polyphonic.org/article.php?id=188, Polyphonic.org} +において Ann Drinan は、楽譜を管理するのにソフトウェアを用いている二人の@c +オーケストラ・ライブラリアンのコメントを掲載しました。 @item -June 2009 +2009å¹´6月 -In an @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/Free-Music-Now, article} -published in the French @emph{National Conservatory Parent -Association}'s yearly magazine, French composer and LilyPond -contributor Valentin Villenave explains how Free licenses, and -specifically LilyPond-engraved scores, are instrumental in -making written music accessible to all. +フランス @emph{National Conservatory Parent Association} の@c +年刊で出版される雑誌の +@uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net/Free-Music-Now, 記事} +において、フランス人作曲家であり LilyPond の貢献者でもある Valentin Villenave +は、フリーなライセンスや、特に LilyPond による楽譜は、記譜された音楽を@c +皆にアクセス可能にする手段であることを述べました。 @item -February 2008 +2008å¹´2月 -In @uref{http://www.musicbyandrew.ca/finale-lilypond-1.html, -articles on his personal site}, Andrew Hawryluk compares Finale -and LilyPond in general terms, and evaluates engraving -capabilities of both pieces of software in detail. The second -article is an instructive analysis of engraving issues in -Rachmaninoff's Piano Prelude No. 6, including comparisons with a -hand-engraved reference edition. +@uref{http://www.musicbyandrew.ca/finale-lilypond-1.html, 個人サイトの記事で}、 +Andrew Hawryluk は Finale と LilyPond を総括的に比較し、@c +両ソフトの譜刻能力を詳しく評価しました。2 つ目の記事では@c +ラフマニノフの Piano Prelude No. 6 の譜刻における問題を、手作業で譜刻された@c +版と比較しながら有益な分析を行っています。 @item -June 2006 - -@uref{http://distrowatch.com,DistroWatch} awards LilyPond and -@uref{http://distrowatch.com/weekly.php?issue=20060605,writes} -@qq{Ladies and Gentleman, we are pleased to announce that, based -on readers' requests, the DistroWatch May 2006 donation has been -awarded to LilyPond (@euro{}190.00) and Lua (US$250.00).} +2006å¹´6月 +@uref{http://distrowatch.com,DistroWatch} は LilyPond に寄付金を授与しました。 +@uref{http://distrowatch.com/weekly.php?issue=20060605,記事では} +@qq{皆様、読者のリクエストに応え、 DistroWatch の 2006å¹´5月の寄付金を +LilyPond (@euro{}190.00) と Lua (US$250.00) に授与したことをお知らせできて@c +嬉しく思います。} と書かれています。 @item -December 2005 +2005å¹´12月 -@uref{http://linuxjournal.com,Linux Journal} publishes an article -titled @uref{http://www.linuxjournal.com/article/8364, Make -Stunning Schenker Graphs with GNU LilyPond}. It is an in-depth -but hands-on feature article with crisp LilyPond graphics. Author -Kris Shaffer remarks @qq{GNU LilyPond generates beautiful graphics -that make commercial alternatives seem second-rate.} +@uref{http://linuxjournal.com,Linux Journal} は +@uref{http://www.linuxjournal.com/article/8364, Make +Stunning Schenker Graphs with GNU LilyPond} という題の記事を出版しました。 +詳細でありつつも実践的な機能について、新鮮な LilyPond の画像と共に@c +記述されています。著者の Kris Shaffer は @qq{GNU LilyPond の生成する画像は@c +商用ソフトが二流であるように見える。} と述べています。 @item -August 20, 2005 +2005å¹´8月20日 -The Belgian newspaper De Standaard investigates what drives Free -Software authors in an article titled +ベルギーの新聞 De Standaard は @q{DS2 bijlage} 内で @uref{http://www.standaard.be/Artikel/Detail.aspx?artikelId=G42H5GD6, -Delen van KENNIS zonder WINSTBEJAG} (Non-profit sharing of -knowlegde) in its @q{DS2 bijlage}. LilyPond is used as an example -and the article is interspersed with quotes from an email -interview with Jan Nieuwenhuizen. This marks LilyPond's first -appearance in mainstream printed press. +Delen van KENNIS zonder WINSTBEJAG} (非営利の知識共有)という題で@c +何がフリーソフトウェアの作者を駆り立てるかという調査をしました。 +LilyPond は例として使われ、記事内の至る所に Jan Nieuwenhuizen との +E メールインタビューが引用されています。主流な印刷出版物に LilyPond が@c +取り上げられたのはこの記事が初めてです。 @item -June 2005 +2005å¹´6月 -A French article on the LilyPond 2.6 release appeared on -@uref{http://linuxfr.org/2005/06/27/19210.html, linuxfr.org}. +LilyPond 2.6 のリリースがフランスのウェブサイト +@uref{http://linuxfr.org/2005/06/27/19210.html, linuxfr.org} +に掲載されました。 @item -October 2004 +2004å¹´10月 -The editors of Computer!Totaal, a Dutch computer magazine, -@uref{http://lilypond.org/website/pdf/computer-totaal.jpeg, -describe LilyPond} in the October 2004 issue as: @qq{Wonderful -free (open source) software [@dots{}] The sheet music produced by -LilyPond is exceptionally pretty [@dots{}] a very powerful system that -can do almost anything.} +オランダのコンピューター雑誌 Computer!Totaal の編集者は 2004å¹´10月の@c +刊行において @uref{http://lilypond.org/website/pdf/computer-totaal.jpeg, +LilyPond をこのような文面で紹介} しました。 +@qq{素晴らしいフリーの(オープンソースの)ソフトウェア [@dots{}] +LilyPond で生成された楽譜は並外れて綺麗で [@dots{}] ほとんど何でもすることが@c +出来る非常にパワフルなシステムです。} @item -July, August 2004 +2004å¹´7月, 8月 -Dave Phillips wrote an introductory article for -@uref{http://linuxjournal.com,Linux Journal}: At -the sounding edge: LilyPond, parts -@uref{http://www.linuxjournal.com/article/7657, one} and -@uref{http://www.linuxjournal.com/article/7719, two}. +Dave Phillips は @uref{http://linuxjournal.com,Linux Journal} で +At the sounding edge: LilyPond という紹介記事を書きました。 +@uref{http://www.linuxjournal.com/article/7657, パート 1}、@c +@uref{http://www.linuxjournal.com/article/7719, パート 2}。 @item -March 2004 +2004å¹´3月 -Chris Cannam -@uref{http://www.all-day-breakfast.com/cannam/linux-musician/lilypond.html,interviewed} -Han-Wen Nienhuys and Jan Nieuwenhuizen on linuxmusician.com -(original site defunct). This interview was also reviewed in a -@uref{http://slashdot.org/article.pl?sid=04/03/13/2054227&tid=, -slashdot story}. +Chris Cannam は linuxmusician.com で(元サイトは現存せず) +Han-Wen Nienhuys と Jan Nieuwenhuizen に +@uref{http://www.all-day-breakfast.com/cannam/linux-musician/lilypond.html, +インタビュー} しました。このインタビューは +@uref{http://slashdot.org/article.pl?sid=04/03/13/2054227&tid=, slashdot} で@c +レビューされています。 @item -February 2004 +2004å¹´2月 -Jazz singer Gail Selkirk writes about +ジャズ歌手 Gail Selkirk は @uref{http://www.songbirdofswing.com/editorial_page/lilypond/, -Diving into LilyPond}. @qq{@dots{} you can make lead sheets or full -orchestral parts, and the results can be stunning.} -@uref{http://www.computermusic.co.uk/, Computer Music Special}, -issue CMS06. +LilyPond にハマった} ことについて書きました。 +@qq{@dots{} リード譜やフルオーケストラ譜を作ることができ、@c +そして出力は素敵です。} +@uref{http://www.computermusic.co.uk/, Computer Music Special}, CMS06 の@c +発刊において。 @end itemize @@ -1006,7 +1005,7 @@ Shirmer に出版を掛け合おうとしていますが、そこで印刷され @divClass{testimonial-item} @imageFloat{orm-finnendahl,jpg, left} -@subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, フライブルク音楽大学作曲科教授 +@subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, フランクフルト音楽・舞台芸術大学作曲科教授 @qq{まだ [LilyPond] について詳しく知りませんが、@strong{とても}感銘を受けています。@c 定量記譜法で Josquin Desprez のモテットを入力するのに LilyPond を使いましたが、@c @@ -1358,14 +1357,6 @@ LilyPond をインストールすることなく、@c 直接オンラインで楽譜を組版することができる、@c Web ベースの LilyPond エディタです。 -@subsubheading Tunefl -@uref{http://www.tunefl.com} - -Tunefl を使うと、LilyPond をインストールすることなく、@c -直接オンラインでミニスコアを組版することができます。@c -これは、便利な Web インタフェースを使用して、@c -すべてのプログラムの機能を試すことができます。 - @divEnd @divClass{column-center-top} @@ -1379,12 +1370,10 @@ Tunefl を使うと、LilyPond をインストールすることなく、@c @sourceimage{logo-macosx,,,} @sourceimage{logo-windows,,,} -@uref{http://elysium.thsoft.hu} +@uref{https://github.com/thSoft/elysium} -Elysium はソースとスコアをサイド・バイ・サイドで表示、統合した、@c -Eclipse 向け LilyPond 統合開発環境です。@c -これは、切り替え不要で素早く視覚、聴覚フィードバックができ、@c -たくさんのウィザード方式のテンプレートが付属します。 +EclipseでLilyPondスコアを編集するフル機能の環境です。@c +LilyPondを便利に扱うための豊富なツールキットを提供します。 @divEnd @@ -1428,7 +1417,7 @@ Vim をセットアップするための更なる情報が @sourceimage{logo-macosx,,,} @subsubheading TeXShop -@uref{http://www.uoregon.edu/~koch/texshop} +@uref{http://pages.uoregon.edu/koch/texshop/} MacOS@tie{}X 用のエディタ TexShop を拡張して、 エディタから LilyPond, @command{lilypond-book} それに @@ -1463,14 +1452,14 @@ MacOS@tie{}X 用のエディタ TexShop を拡張して、 テスターを歓迎しています。 @item -@uref{http://enc2ly.sourceforge.net/en/,Enc2ly} is a GNU/Linux program -which converts an Encore music score into a LilyPond one. +@uref{http://enc2ly.sourceforge.net/en/,Enc2ly} は Encore のファイルを +LilyPondに変換する GNU/Linux プログラムです。 @item -@uref{https://github.com/hanwen/go-enc2ly,go-enc2ly} is a Go tool that -converts Encore files to LilyPond. It was created using Felipe Castro's -research and reverse engineering by tweaking existing .enc files and -loading them using the 4.55 demo version. +@uref{https://github.com/hanwen/go-enc2ly,go-enc2ly} は Go 言語のツールで +Encode のファイルを LilyPond に変換します。 +Felipe Castro によるバージョン 4.55 体験版の .enc ファイルの研究や@c +リバースエンジニアリングを基に作られました。 @item @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd}, @@ -1498,22 +1487,20 @@ loading them using the 4.55 demo version. @itemize @item -@uref{http://www.projectabjad.org/,Abjad}, a -@uref{http://www.python.org/,Python} API for Formalized Score Control -designed to help composers build up complex pieces of LilyPond notation -in an iterative and incremental way. +@uref{http://www.projectabjad.org/,Abjad} は@c +形式化された楽譜の制御 (Formalized Score Control) をする +@uref{http://www.python.org/,Python} API で、@c +LilyPond による複雑な音楽を、反復型開発の手法で作成することができます。 @item -@uref{http://common-lisp.net/project/fomus/,FOMUS}, (FOrmat MUSic) is a -music notation tool for computer music composers. It is written in the -Lisp programming language, and has been tested in a variety of -interpreters. A C++ port is also available. +@uref{http://common-lisp.net/project/fomus/,FOMUS} (FOrmat MUSic) は@c +アルゴリズム生成された音楽を記譜するためのツールです。@c +Lisp言語で書かれており、多くのインタプリタで動作します。C++に移植されたものも@c +あります。 @item -@uref{http://strasheela.sourceforge.net/strasheela/doc/index.html,Strasheela}, -an environment built on top of the -@uref{http://www.mozart-oz.org/, Mozart/Oz} constraint programming -language. +@uref{http://strasheela.sourceforge.net/strasheela/doc/index.html,Strasheela} +は @uref{http://mozart.github.io/, The Mozart Programming System} 上の環境です。 @end itemize @divEnd @@ -1535,9 +1522,8 @@ language. KDE 3.5 用の LilyKDE3 と KDE 4.1 用の lilypond-KDE4 だけが存在します。 @item -@uref{http://lilycomp.sourceforge.net, LilyComp} is a graphical note -entry program, acting much like a number-pad which produces LilyPond -notes. +@uref{http://lilycomp.sourceforge.net, LilyComp} はグラフィカルに音符を入力@c +できるプログラムで、LilyPond 版のテンキーのようなものです。 @item @uref{http://www.musescore.org,MuseScore}: @@ -1547,10 +1533,10 @@ notes. でダウンロードできます。 @item -@uref{https://sourceforge.net/projects/noteedit.berlios/,NoteEdit}, which imported -@uref{http://www.makemusic.com/musicxml,MusicXML}, has been forked into +@uref{https://sourceforge.net/projects/noteedit.berlios/,NoteEdit} は@c +@uref{http://www.musicxml.com/,MusicXML} をインポートできましたが、@c @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd} -and @uref{http://canorus.org,Canorus}. +と @uref{http://canorus.org,Canorus} にフォークされました。 @item @uref{http://extensions.services.openoffice.org/en/project/OOoLilyPond,OOoLilypond}, @@ -1562,6 +1548,14 @@ OpenOffice.org の拡張機能で、OpenOffice.org ドキュメント中@c @uref{https://launchpad.net/rumor/,Rumor}: リアルタイムに単声の MIDI を LilyPond に変換します。 +@item +@uref{https://github.com/tiredpixel/tunefl,tunefl} + +LilyPond をインストールすることなく、@c +直接オンラインでミニスコアを組版することができます。@c +これは、便利な Web インタフェースを使用して、@c +すべてのプログラムの機能を試すことができます。 + @item @uref{http://sourceforge.net/projects/tuxguitar/,TuxGuitar}: マルチトラックなタブ譜のエディタ・プレイヤで、楽譜ビューアを持ち、@c diff --git a/Documentation/learning/common-notation.itely b/Documentation/learning/common-notation.itely index b51766c0a2..b9b62cf3b3 100644 --- a/Documentation/learning/common-notation.itely +++ b/Documentation/learning/common-notation.itely @@ -1343,9 +1343,9 @@ Variables may be used for many other types of objects in the input. For example, @example -width = 4.5\cm -name = "Wendy" -aFivePaper = \paper @{ paperheight = 21.0 \cm @} +myWidth = 60 % a number to pass to a \paper variable (the unit is millimeter) +myName = "Wendy" % a string to pass to a markup +aFivePaper = \paper @{ #(set-paper-size "a5") @} @end example Depending on its contents, the variable can be used in different @@ -1354,11 +1354,11 @@ places. The following example uses the above variables: @example \paper @{ \aFivePaper - line-width = \width + line-width = \myWidth @} @{ - c4^\name + c4^\myName @} @end example diff --git a/Documentation/learning/fundamental.itely b/Documentation/learning/fundamental.itely index 6b74fe954a..8e8fd91b6e 100644 --- a/Documentation/learning/fundamental.itely +++ b/Documentation/learning/fundamental.itely @@ -683,12 +683,30 @@ of slurs, stems, ties, dynamics etc., is set appropriately. \new Staff \relative { % Main voice c'16 d e f - % Voice = "1" Voice = "2" Voice = "3" + % Voice = "1" Voice = "2" Voice = "3" << { g4 f e } \\ { r8 e4 d c8~ } >> | << { d2 e } \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> | } @end lilypond +@funindex \voices +If you prefer entering the voices in a different order, like top +to bottom, you can specify the respective voice numbers in front +of one @code{<< @dots{} >>} construct using the @code{\voices} +command, like + +@lilypond[quote,verbatim] +\new Staff \relative { + % Main voice + c'16 d e f + % Voice = "1" Voice = "2" + << { g4 f e } \\ { r8 e4 d c8~ } >> | + \voices 1,3,2 + % Voice = "1" Voice = "3" Voice = "2" + << { d2 e } \\ { s4 b c2 } \\ { c8 b16 a b8 g~ 2 } >> | +} +@end lilypond + These voices are all separate from the main voice that contains the notes just outside the @code{<< @dots{} >>} construct. Let's call this the @emph{simultaneous construct}. Slurs and ties may only @@ -798,6 +816,7 @@ later sections. @lilypond[quote,ragged-right] \new Staff \relative { \key aes \major + \voices 1,2,4 % No voice three << % Voice one { c''2 aes4. bes8 } \\ % Voice two @@ -808,7 +827,6 @@ later sections. \once \override NoteColumn.force-hshift = #0.5 des2 } - \\ % No voice three \\ % Voice four { \override NoteColumn.force-hshift = #0 @@ -845,6 +863,7 @@ not understand. @lilypond[quote,ragged-right] \new Staff \relative { \key aes \major + \voices 1,2,4 % No Voice three (we want stems down) << { % Voice one \voiceOneStyle @@ -858,7 +877,6 @@ not understand. \once \override NoteColumn.force-hshift = #0.5 des2 } - \\ % No Voice three (we want stems down) \\ % Voice four { \voiceThreeStyle \override NoteColumn.force-hshift = #0 @@ -895,17 +913,19 @@ odd-numbered voices taking upward stems and the even-numbered voices downward ones. The stems for voices 1 and 2 are right, but the stems in voice 3 should go down in this particular piece of music. We can correct this by skipping voice three -and placing the music in voice four. This is done by simply -adding another pair of @code{\\}. +and placing the music in voice four. This could be done by simply +adding another pair of @code{\\}, but we use the @code{\voices} +command instead (which would also allow us to enter the voices in +different order if we preferred doing that): @lilypond[quote,verbatim,ragged-right] \new Staff \relative { \key aes \major + \voices 1,2,4 % Omit Voice three << % Voice one { c''2 aes4. bes8 } \\ % Voice two { 2 des } - \\ % Omit Voice three \\ % Voice four { aes'2 f4 fes } >> | @@ -1023,7 +1043,7 @@ markup, ties, slurs, and dynamics: } @end lilypond -Now let's look at three different ways to notate the same passage of +Now let's look at four different ways to notate the same passage of polyphonic music, each of which is advantageous in different circumstances, using the example from the previous section. @@ -1059,6 +1079,37 @@ permitting a phrasing slur to be drawn over them. } @end lilypond +@cindex voices, continued +@funindex \voices + +The @code{\voices} command can also be used for continuing a main +voice into the simultaneous construct: + +@lilypond[quote,ragged-right,verbatim] +\new Staff \relative { + \new Voice = "main" { + \voiceOneStyle + % This section is homophonic + c'16^( d e f + % Start simultaneous section of three voices + \voices "main",2,3 + << + % Continue the main voice in parallel + { g4 f e | d2 e) | } + % Initiate second voice + \\ + % Set stems, etc., down + { r8 e4 d c8~ | 8 b16 a b8 g~ 2 | } + \\ + % Initiate third voice + % Set stems, etc, up + { s2. | s4 b c2 | } + >> + } +} +@end lilypond + + @cindex nesting music expressions @cindex nesting simultaneous constructs @cindex nesting voices @@ -1436,11 +1487,12 @@ Notation Reference: @ruser{Contexts explained}. @cindex creating contexts @cindex contexts, creating -In an input file a score block, introduced with a @code{\score} -command, contains a single music expression and an associated -output definition (either a @code{\layout} or a @code{\midi} block). -The @code{Score} context is usually left to be created automatically -when the interpretation of that music expression starts. +In an input file, a score block (introduced with a @code{\score} +command) contains a single music expression; but it can also contain +associated output definitions too -- either a @code{\layout} block, a +@code{\midi} block or both. The @code{Score} context is usually left to +be created automatically when the interpretation of that music +expression starts. For scores with only one voice and one staff, the @code{Voice} and @code{Staff} contexts may also be left to be created automatically, @@ -1705,27 +1757,28 @@ in which context they operate. Sometimes this is obvious, but occasionally it can be tricky. If the wrong context is specified, no error message is produced, but the expected action will not take place. For example, the -@code{instrumentName} clearly lives in the @code{Staff} context, since -it is the staff that is to be named. -In this example the first staff is labeled, but not the second, -because we omitted the context name. +@code{clefGlyph} clearly lives in the @code{Staff} context, since +it is the staff's clef glyph that is to be changed. +In this example the first staff's clef is printed correctly, but not the +second -- which prints the default treble clef instead of the +expected bass (or F) clef -- because we omitted the context name. @lilypond[quote,verbatim,ragged-right] << \new Staff \relative { - \set Staff.instrumentName = #"Soprano" + \set Staff.clefGlyph = "clefs.C" c''2 c } \new Staff \relative { - \set instrumentName = #"Alto" % Wrong! + \set clefGlyph = "clefs.F" % Wrong! d'2 d } >> @end lilypond Remember the default context name is @code{Voice}, so the second -@code{\set} command set the property @code{instrumentName} in the -@code{Voice} context to @qq{Alto}, but as LilyPond does not look +@code{\set} command set the property @code{clefGlyph} in the +@code{Voice} context to @code{clefs.F}, but as LilyPond does not look for any such property in the @code{Voice} context, no further action took place. This is not an error, and no error message is logged in the log file. @@ -1743,7 +1796,7 @@ such features, it is recommended to check the property name in the Internals Reference: see @rinternals{Tunable context properties}, or @rinternals{Contexts}. -The @code{instrumentName} property will take effect only +The @code{clefGlyph} property will take effect only if it is set in the @code{Staff} context, but some properties can be set in more than one context. For example, the property @code{extraNatural} is by @@ -2377,8 +2430,9 @@ lower = \relative { \score { << % combine ChoirStaff and PianoStaff in parallel \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" + \new Staff = "sopranos" + \with { instrumentName = #"Soprano" } + << \new Voice = "sopranos" { \global \sopranoMusic @@ -2387,24 +2441,31 @@ lower = \relative { \new Lyrics \lyricsto "sopranos" { \sopranoWords } - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" + \new Staff = "altos" + \with { instrumentName = #"Alto" } + << \new Voice = "altos" { \global \altoMusic } >> - \new Lyrics \lyricsto "altos" { \altoWords } - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" + \new Lyrics \lyricsto "altos" { + \altoWords + } + \new Staff = "tenors" + \with { instrumentName = #"Tenor" } + << \new Voice = "tenors" { \global \tenorMusic } >> - \new Lyrics \lyricsto "tenors" { \tenorWords } - \new Staff = "basses" << - \set Staff.instrumentName = #"Bass" + \new Lyrics \lyricsto "tenors" { + \tenorWords + } + \new Staff = "basses" + \with { instrumentName = #"Bass" } + << \new Voice = "basses" { \global \bassMusic @@ -2414,8 +2475,8 @@ lower = \relative { \bassWords } >> % end ChoirStaff - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" + \new PianoStaff \with { instrumentName = #"Piano" } + << \new Staff = "upper" \upper \new Staff = "lower" \lower >> @@ -2453,8 +2514,9 @@ Doing this gives for our ChoirStaff: @example \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" + \new Staff = "sopranos" + \with @{ instrumentName = #"Soprano" @} + << \new Voice = "sopranos" @{ \global \sopranoMusic @@ -2463,8 +2525,9 @@ Doing this gives for our ChoirStaff: \new Lyrics \lyricsto "sopranos" @{ \sopranoWords @} - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" + \new Staff = "altos" + \with @{ instrumentName = #"Alto" @} + << \new Voice = "altos" @{ \global \altoMusic @@ -2473,8 +2536,9 @@ Doing this gives for our ChoirStaff: \new Lyrics \lyricsto "altos" @{ \altoWords @} - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" + \new Staff = "tenors" + \with @{ instrumentName = #"Tenor" @} + << \new Voice = "tenors" @{ \global \tenorMusic @@ -2483,8 +2547,9 @@ Doing this gives for our ChoirStaff: \new Lyrics \lyricsto "tenors" @{ \tenorWords @} - \new Staff = "basses" << - \set Staff.instrumentName = #"Bass" + \new Staff = "basses" + \with @{ instrumentName = #"Bass" @} + << \new Voice = "basses" @{ \global \bassMusic @@ -2501,8 +2566,8 @@ easy - we just pull out the piano part from the @q{Solo piano} template: @example -\new PianoStaff << - \set PianoStaff.instrumentName = #"Piano " +\new PianoStaff \with @{ instrumentName = #"Piano " @} +<< \new Staff = "upper" \upper \new Staff = "lower" \lower >> @@ -2558,8 +2623,8 @@ stacked one above the other: @} >> % end ChoirStaff - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" + \new PianoStaff \with @{ instrumentName = #"Piano" @} + << \new Staff = "upper" \upper \new Staff = "lower" \lower >> @@ -2611,8 +2676,9 @@ lower = \relative { \score { << % combine ChoirStaff and PianoStaff in parallel \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" + \new Staff = "sopranos" + \with { instrumentName = #"Soprano" } + << \new Voice = "sopranos" { \global \sopranoMusic @@ -2621,8 +2687,9 @@ lower = \relative { \new Lyrics \lyricsto "sopranos" { \sopranoWords } - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" + \new Staff = "altos" + \with { instrumentName = #"Alto" } + << \new Voice = "altos" { \global \altoMusic @@ -2631,8 +2698,9 @@ lower = \relative { \new Lyrics \lyricsto "altos" { \altoWords } - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" + \new Staff = "tenors" + \with { instrumentName = #"Tenor" } + << \new Voice = "tenors" { \global \tenorMusic @@ -2641,8 +2709,9 @@ lower = \relative { \new Lyrics \lyricsto "tenors" { \tenorWords } - \new Staff = "basses" << - \set Staff.instrumentName = #"Bass" + \new Staff = "basses" + \with { instrumentName = #"Bass" } + << \new Voice = "basses" { \global \bassMusic @@ -2653,8 +2722,9 @@ lower = \relative { } >> % end ChoirStaff - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano " + \new PianoStaff + \with { instrumentName = #"Piano " } + << \new Staff = "upper" \upper \new Staff = "lower" \lower >> diff --git a/Documentation/lilypond-texi2html.init b/Documentation/lilypond-texi2html.init index b6970ac606..70a86344f1 100644 --- a/Documentation/lilypond-texi2html.init +++ b/Documentation/lilypond-texi2html.init @@ -1369,7 +1369,7 @@ sub lilypond_css_lines ($$) my $reldir = ""; $reldir = "../" unless $bigpage; if ($have_index_entries) { - $Texi2HTML::THISDOC{'CSS_LINES'} .= "\n"; + $Texi2HTML::THISDOC{'CSS_LINES'} .= "\n"; } } diff --git a/Documentation/ly-examples/granados.ly b/Documentation/ly-examples/granados.ly index 9f4cf10301..25a5bf6979 100644 --- a/Documentation/ly-examples/granados.ly +++ b/Documentation/ly-examples/granados.ly @@ -9,7 +9,7 @@ \paper { ragged-right = ##f - #(set-paper-size "letter" 'landscape) + #(set-paper-size "letterlandscape") system-count = 1 } @@ -103,7 +103,8 @@ lowerVoiceTwo = \relative { \csh \once \override Beam.damping = #+inf.0 8 \csl \slurUp - %\once\override Slur.extra-offset = #'(0 . 4) + % Fix problem with -dpreview cropping beams + \once \override TextScript.padding = #10 <> _\markup { " " } es,,64 bes' es g s32. c64 s4 diff --git a/Documentation/macros.itexi b/Documentation/macros.itexi index 3558d0c811..cf58c78906 100644 --- a/Documentation/macros.itexi +++ b/Documentation/macros.itexi @@ -104,7 +104,7 @@ documentation, or to read this manual in other formats, see @rweb{Manuals}. If you are missing any manuals, the complete documentation can be -found at @w{@uref{http://@/www@/.lilypond@/.org/}}. +found at @w{@uref{http://@/lilypond@/.org/}}. @end cartouche @end macro diff --git a/Documentation/music-glossary.tely b/Documentation/music-glossary.tely index 0b03549d88..4b80b3cc1f 100644 --- a/Documentation/music-glossary.tely +++ b/Documentation/music-glossary.tely @@ -535,7 +535,7 @@ No cross-references. ES: mordente de una nota, I: acciaccatura, -F: acciaccatura, appoggiature brève, +F: acciaccature, appoggiature brève, D: Zusammenschlag, NL: samenslag, DK: ?, @@ -1079,7 +1079,7 @@ FI: ylinouseva intervalli. ES: manuscrito, I: autografo, -F: manuscrit, autographe +F: manuscrit, autographe, D: Autograph, Handschrift, NL: manuscript, DK: hÃ¥ndskrift, autograf, @@ -1266,7 +1266,7 @@ g64-"1/64"[ s32 g64 s32 g64 s32 g64] s32 ES: tiempo, parte (de compás) I: tempi, -F: temps, +F: temps, battue D: Takt, Taktschlag, Zeit (im Takt), NL: tel, DK: (takt)slag, @@ -2006,7 +2006,7 @@ Another name for @ref{common time}. ES: ?, I: Periodo di pratica comune, -F: ?, +F: musique classique moderne, D: Kunstmusik, NL: ?, DK: ?, @@ -2226,7 +2226,7 @@ g4 g g a | b2 a | g4 b a a | g1 \bar "||" ES: consonancia, I: consonanza, -F: consonance, +F: consonance, consonnance, D: Konsonanz, NL: consonant, DK: konsonans, @@ -2374,7 +2374,7 @@ g4\< a b c | d1\! \bar "|." ES: notas guía, I: notine, -F: petites notes précédant l'entrée d'un instrument, réplique, @q{à défaut}, +F: petites notes précédant l'entrée d'un instrument, réplique, « à défaut », D: Stichnoten, NL: stichnoten, DK: stiknoder, @@ -2804,7 +2804,7 @@ This is a stub for diminution (@emph{wrt} mensural notation). ES: directo, I: ?, -F: ?, +F: direct, D: Weiser, Zeiger, NL: ?, DK: ?, @@ -2873,7 +2873,7 @@ FI: dissonanssi, dissonoiva intervalli, riitasointi. ES: división, I: divisio, -F: ?, +F: division, D: Divisio, NL: ?, DK: ?, @@ -3107,7 +3107,7 @@ FI: kaksoisylennysmerkki. ES: compás polimétrico, I: indicazione di tempo doppia/polimetrica, -F: ?, +F: mesure composée, métrique composée, D: zusammengesetzte Taktart, NL: ?, DK: ?, @@ -3802,7 +3802,7 @@ FI: kvartti. ES: partitura a la francesa, I: partitura senza i righi vuoti, -F: ?, +F: partition à la française, D: Orchesterpartitur ohne leere Systeme, NL: ?, DK: ?, @@ -3827,7 +3827,7 @@ you may wish to procure a copy of their style manual. ES: pentagrama a la francesa, I: rigo temporaneo, -F: ?, +F: portée à la française, D: zeitweiliges Notensystem, NL: ?, DK: ?, @@ -4299,7 +4299,7 @@ and is therefore a polymeter (second definition) of considerable antiquity. ES: ?, I: ?, -F: ?, +F: clef de basse haute, D: hoher Bassschlüssel, NL: ?, DK: ?, @@ -4314,9 +4314,9 @@ higher -- octavation indicators on clefs appeared at the beginning of the 20th Century. In LilyPond, the most straightforward way to make a high bass clef is to -print the modern version @code{\clef "baas^8"} but without the @code{8}; +print the modern version @code{\clef "bass^8"} but without the @code{8}; -@lilypond[quote,verbatim,relative=1] +@lilypond[quote,verbatim] << \new Staff { \clef treble { g4 b d' g' } @@ -4403,7 +4403,7 @@ No cross-references. ES: ?, I: accordo di settima dominante incompleto, -F: ?, +F: accord de septième de dominante incomplet, D: verkürzter Dominantseptakkord, NL: ?, DK: ?, @@ -4819,7 +4819,7 @@ FI: viiva, nuottiviiva. ES: en su lugar, I: loco, -F: ?, +F: loco, D: loco, NL: ?, DK: ?, @@ -5046,7 +5046,7 @@ mediant (variant tonic). ES: melisma, I: melisma, -F: mélisme, tenue, +F: mélisme, vocalise, D: Melisma, NL: melisma, DK: ?, @@ -5516,7 +5516,7 @@ The female voice between soprano and contralto. ES: do central, I: do centrale, -F: do central, do 3 +F: do central, do 3, D: eingestrichenes@w{ }c, NL: centrale@w{ }c, DK: enstreget@w{ }c, @@ -6383,7 +6383,7 @@ simultaneously or in alternation. ES: indicación de compás polimétrico, I: tempo polimetrico, -F: ?, +F: métrique polymétrique, D: zusammengesetzte Taktart, NL: ?, DK: ?, @@ -6607,7 +6607,7 @@ FI: kvartoli. ES: variante [de acorde o intervalo], I: qualità (?), -F: qualité (?), +F: qualité [d'accord ou d'intervalle], D: Modus (Dur oder Moll), NL: ?, DK: ?, @@ -6982,7 +6982,7 @@ No cross-references. ES: partitura, I: partitura, -F: partition, conducteur (full score), +F: partition, conducteur @emph{(full score)}, D: Partitur (full score), Klavierauszug (vocal score), NL: partituur, DK: partitur, @@ -7133,7 +7133,7 @@ FI: korotusmerkki. ES: simile, similar, I: simile, -F: simile, +F: simile, de façon identique, D: simile, gleichartig, NL: ?, DK: ?, @@ -7585,7 +7585,7 @@ The seventh @ref{scale degree}. ES: sobre la cuerda de Sol, I: sul Sol, -F: sur la G, +F: sur la corde de sol, D: auf G, auf der G-Saite, NL: ?, DK: ?, diff --git a/Documentation/nl/macros.itexi b/Documentation/nl/macros.itexi index 4de99bb1d4..f1295c55f1 100644 --- a/Documentation/nl/macros.itexi +++ b/Documentation/nl/macros.itexi @@ -105,7 +105,7 @@ documentatie past, of over het lezen van deze handleiding in andere formaten, zie @rweb{Handleidingen}. Mocht je een handleiding missen, de volledige documentatie is altijd te -vinden op @w{@uref{http://@/www@/.lilypond@/.org/}}. +vinden op @w{@uref{http://@/lilypond@/.org/}}. @end cartouche @end macro diff --git a/Documentation/nl/translations.itexi b/Documentation/nl/translations.itexi index 7c1de63b6a..e726c18c5d 100644 --- a/Documentation/nl/translations.itexi +++ b/Documentation/nl/translations.itexi @@ -16,19 +16,19 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Last updated Sun Nov 6 09:35:15 UTC 2016 +@emph{Meest recente update Sat Jun 24 12:50:41 UTC 2017 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @headitem LilyPond beginnershandleiding -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Vertalers +@tab Revisie vertaling +@tab Vertaald +@tab Actueel +@tab Andere informatie @item -Section titles +Paragraaftitels @* 124 @tab Jan Nieuwenhuizen @@ -37,23 +37,23 @@ Section titles @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +gedeeltelijk @end html @end ifhtml @ifnothtml -partially +gedeeltelijk @end ifnothtml -@tab post-GDP +@tab na-GDP @item LilyPond -- \TITLE\ @* @@ -64,23 +64,23 @@ LilyPond -- \TITLE\ @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab voor-GDP @item 1 Leerboek @* @@ -91,77 +91,77 @@ yes @ifhtml @html -partially (50 %) +gedeeltelijk (50 %) @end html @end ifhtml @ifnothtml -partially (50 %) +gedeeltelijk (50 %) @end ifnothtml @tab @ifhtml @html -partially +gedeeltelijk @end html @end ifhtml @ifnothtml -partially +gedeeltelijk @end ifnothtml -@tab pre-GDP +@tab voor-GDP @item 2 Algemene muzieknotatie @* -4402 +4421 @tab Jan Nieuwenhuizen @tab @tab @ifhtml @html -partially (37 %) +gedeeltelijk (37 %) @end html @end ifhtml @ifnothtml -partially (37 %) +gedeeltelijk (37 %) @end ifnothtml @tab @ifhtml @html -partially +gedeeltelijk @end html @end ifhtml @ifnothtml -partially +gedeeltelijk @end ifnothtml -@tab pre-GDP +@tab voor-GDP @item 3 Fundamentele concepten @* -11119 +11240 @tab Jan Nieuwenhuizen @tab @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +gedeeltelijk @end html @end ifhtml @ifnothtml -partially +gedeeltelijk @end ifnothtml -@tab pre-GDP +@tab voor-GDP @item 4 Tweaking output @* @@ -172,23 +172,23 @@ partially @ifhtml @html -partially (95 %) +gedeeltelijk (95 %) @end html @end ifhtml @ifnothtml -partially (95 %) +gedeeltelijk (95 %) @end ifnothtml @tab @ifhtml @html -partially +gedeeltelijk @end html @end ifhtml @ifnothtml -partially +gedeeltelijk @end ifnothtml -@tab pre-GDP +@tab voor-GDP @item A Templates @* @@ -199,23 +199,23 @@ A Templates @ifhtml @html -partially (97 %) +gedeeltelijk (97 %) @end html @end ifhtml @ifnothtml -partially (97 %) +gedeeltelijk (97 %) @end ifnothtml @tab @ifhtml @html -partially +gedeeltelijk @end html @end ifhtml @ifnothtml -partially +gedeeltelijk @end ifnothtml -@tab pre-GDP +@tab voor-GDP @end multitable @@ -223,13 +223,13 @@ partially @headitem LilyPond -- Muzieknotatie voor iedereen -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab Vertalers +@tab Revisie vertaling +@tab Vertaald +@tab Actueel +@tab Andere informatie @item -Section titles +Paragraaftitels @* 760 @tab Jan Nieuwenhuizen @@ -238,23 +238,23 @@ Section titles @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +gedeeltelijk @end html @end ifhtml @ifnothtml -partially +gedeeltelijk @end ifnothtml -@tab post-GDP +@tab na-GDP @item LilyPond -- \TITLE\ @* @@ -265,50 +265,50 @@ LilyPond -- \TITLE\ @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml -@tab pre-GDP +@tab voor-GDP @item Inleiding @* -5814 +5793 @tab Jan Nieuwenhuizen @tab Tineke de Munnik @tab @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +gedeeltelijk @end html @end ifhtml @ifnothtml -partially +gedeeltelijk @end ifnothtml -@tab pre-GDP +@tab voor-GDP @item Download @* @@ -319,23 +319,23 @@ Download @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +gedeeltelijk @end html @end ifhtml @ifnothtml -partially +gedeeltelijk @end ifnothtml -@tab pre-GDP +@tab voor-GDP @item Handleidingen @* @@ -346,22 +346,22 @@ Handleidingen @ifhtml @html -yes +ja @end html @end ifhtml @ifnothtml -yes +ja @end ifnothtml @tab @ifhtml @html -partially +gedeeltelijk @end html @end ifhtml @ifnothtml -partially +gedeeltelijk @end ifnothtml -@tab pre-GDP +@tab voor-GDP @end multitable diff --git a/Documentation/nl/web.texi b/Documentation/nl/web.texi index 783e26a348..6d55e185f2 100644 --- a/Documentation/nl/web.texi +++ b/Documentation/nl/web.texi @@ -137,7 +137,7 @@ Lees meer in onze @ref{Inleiding}! @divId{news} @c TODO: generate this automatically, including RSS feed. -@include web/news-front.itexi +@include web/news-headlines.itexi @divClass{float-right} (@ref{News}) @c (@ref{News,,,,Oud nieuws}) diff --git a/Documentation/notation/ancient.itely b/Documentation/notation/ancient.itely index 7e44224426..cb36029405 100644 --- a/Documentation/notation/ancient.itely +++ b/Documentation/notation/ancient.itely @@ -2535,7 +2535,7 @@ Music Glossary: Notation Reference: @ref{Accidentals}, @ref{Automatic accidentals}, -@ref{The Feta font} +@ref{The Emmentaler font} @node Kievan bar line @unnumberedsubsubsec Kievan bar line @@ -2551,8 +2551,10 @@ It can be invoked as @code{\bar "k"}. @end lilypond @seealso +Notation Reference: @ref{Bars}, -@ref{The Feta font} +@ref{The Emmentaler font} + @node Kievan melismata @unnumberedsubsubsec Kievan melismata diff --git a/Documentation/notation/changing-defaults.itely b/Documentation/notation/changing-defaults.itely index c8f9ebc510..5373e4f399 100644 --- a/Documentation/notation/changing-defaults.itely +++ b/Documentation/notation/changing-defaults.itely @@ -1005,8 +1005,26 @@ command: @} @end example -Since such a @q{context modification} is specified inside of -music, it will affect @emph{all} outputs (typesetting @emph{and} +Alternatively, if the music is being entered using the short form of the +input mode-specifying commands, e.g. @code{\chords} rather than +@code{\chordmode}, the @code{\with} command must be placed immediately +after the mode-specifying command: + +@example +\chords \with @{ [context settings for this (implicit) context instance only] @} +@{ + @dots{} +@} +@end example + +@noindent +as it is the implicit context created by these short forms which should +be modified. The same consideration applies to the other input +mode-specifying short forms (@code{\drums}, @code{\figures}), see +@ref{Input modes}. + +Since context modifications specified in @code{\with} blocks are inside +music, they will affect @emph{all} outputs (typesetting @emph{and} Midi) as opposed to changes within an output definition. The following types of settings may be specified: @@ -1082,6 +1100,10 @@ A predefined command such as @code{\dynamicUp} @end itemize +@seealso +Notation Reference: +@ref{Input modes} + @node Order of precedence @unnumberedsubsubsec Order of precedence @@ -1803,6 +1825,7 @@ LilyPond-specific? * The override command:: * The tweak command:: * set versus override:: +* The offset command:: * Modifying alists:: @end menu @@ -2482,6 +2505,318 @@ a music event (@code{\tweak}) or, in the case of @code{\overrideProperty} for a specific override. +@node The offset command +@subsection The @code{\offset} command + +@funindex \offset +@cindex offsetting +@cindex defaults, offsetting + +While it is possible to set grob properties to new values with the +@code{\override}, @code{\tweak}, and @code{\overrideProperty} commands, +it is often more convenient to modify such properties relative to a +default value. The @code{\offset} command is available for this +purpose. + +The syntax for @code{\offset} is + +@example +[-]\offset @var{property} @var{offsets} @var{item} +@end example + +The command works by adding the contents of @var{offsets} to the +default setting of the property @var{property} of the grob indicated by +@var{item}. + +Depending on the formulation of the command, @code{\offset} may act +as either a @code{\tweak} or @code{\override}. The variations in +usage are discussed after consideration is given to grob properties +that may be used with @code{\offset}. + +@subsubsubheading{Properties which may be offset} + +Many, but not all, grob properties may be offset. If @var{property} +cannot be offset, the object will remain unchanged and a warning will +be issued. In such cases, @code{\override} or @code{\tweak} should be +used to modify the object instead. + +One can work by trial and error and let the warnings be the guide to +what may or may not be offset. A more systematic approach is possible, +however. + +The following criteria determine whether a property can be modified with +@code{\offset}: + +@itemize + +@item +The property has a @q{default setting} in the grob's description. Such +properties are listed for each grob in @rinternals{All layout objects}. +(They are also found in @file{scm/define-grobs.scm}.) + +@item +The property takes a numerical value. Numerical values include +@code{number}, list of @code{number}s, @code{number-pair}, and +@code{number-pair-list}. The pages at @rinternals{All layout objects} +list the type of data characteristic to each property. It is immaterial +whether the default setting is a function. + +@item +The property cannot be a @q{subproperty}---a property residing within +another property. + +@item +Properties set to infinite values cannot be offset. There is no +sensible way to offset positive and negative infinity. +@end itemize + +The following examples consider several grob properties against the +criteria outlined above. + +@itemize + +@item Properties that may be offset + +@table @asis + +@item @code{Hairpin.height} + +This property is not a subproperty, and it is listed at +@rinternals{Hairpin}. For a value, it takes @q{dimension, in staff +space} set to @code{0.6666}---clearly a non-infinite @code{number}. + +@item @code{Arpeggio.positions} + +The page @rinternals{Arpeggio} lists a @code{positions} property which +accepts a @q{pair of numbers}. It defaults to +@code{ly:arpeggio::positions}---a callback which will be evaluated +during the typesetting phase to yield a pair of numbers for any given +@code{Arpeggio} object. + +@end table + +@item Properties that may not be offset + +@table @asis + +@item @code{Hairpin.color} + +There is no listing for @code{color} at @rinternals{Hairpin}. + +@item @code{Hairpin.circled-tip} + +The listing for @code{Hairpin.circled-tip} at @rinternals{Hairpin} shows +that it takes a @code{boolean} value. Booleans are non-numerical. + +@item @code{Stem.details.lengths} + +Though listed at @rinternals{Stem} and defaulting to a list of +@code{number}s, this is a @q{subproperty}. There is currently no +support for @q{nested properties}. + +@end table + +@end itemize + +@subsubsubheading{@bs{}offset as an override} + +If @var{item} is a grob name like @code{Arpeggio} or +@code{Staff.OttavaBracket}, the result is an @code{\override} of the +specified grob-type. + +@example +\offset @var{property} @var{offsets} [@var{context}.]@var{GrobName} +@end example + +Note that the leading hyphen is @emph{never} used with the @q{override} +form, just as it is never used with the @code{\override} command itself. + +The following example uses the @q{override} form to lengthen the +default arpeggios shown in the first measure to cover the extent of +the chords more fully. The arpeggios are stretched by a half +staff-space to top and bottom. Also shown is the same operation done on +the first chord with an ordinary override of the @code{positions} +property. This method is not at all expressive of the task of +@q{stretching by a half staff-space}, as the endpoints must be specified +with absolute rather than relative coordinates. Furthermore, individual +overrides would be needed for the other chords, as they vary in size and +position. + +@lilypond[quote,verbatim] +arpeggioMusic = { + \arpeggio \arpeggio + \arpeggio \arpeggio +} + +{ + \arpeggioMusic + \bar "||" + \offset positions #'(-0.5 . 0.5) Arpeggio + \arpeggioMusic + \bar "||" + \once \override Arpeggio.positions = #'(-3.5 . -0.5) + 1\arpeggio + \bar "||" +} +@end lilypond + +In its @q{override} usage, @code{\offset} may be prefaced with +@code{\once} or @code{\temporary} and reverted using @code{\revert} with +@var{property}. This follows from the fact that @code{\offset} actually +creates an @code{\override} of @var{property}. + +@lilypond[quote,verbatim] +music = { c'8\< d' e' f'\! } + +{ + \music + \offset height 1 Hairpin + \music + \music + \revert Hairpin.height + \music + \bar "||" + \once \offset height 1 Hairpin + \music \music + \bar "||" + \override Hairpin.height = 0.2 + \music + \temporary \offset height 2 Hairpin + \music + \music + \revert Hairpin.height + \music + \bar "||" +} +@end lilypond + +Also like @code{\override}, the @q{override} form of @code{\offset} may +be used with @code{\undo} and @code{\single}. + +@lilypond[quote,verbatim] +longStem = \offset length 6 Stem + +{ + \longStem c'4 c''' c' c'' + \bar "||" + \undo \longStem c'4 c''' c' c'' + \bar "||" + \single \longStem c'4 c''' c' c'' + \bar "||" +} +@end lilypond + +@subsubsubheading{@bs{}offset as a tweak} + +If @var{item} is a music expression such as @code{(} or +@code{\arpeggio}, the result is the same music expression with a tweak +applied. + +@example +[-]\offset [@var{GrobName}.]@var{property} @var{offsets} @var{music-expression} +@end example + +The syntax of @code{\offset} in its @q{tweak} form is analogous to the +@code{\tweak} command itself, both in ordering and in the presence or +absence of the leading hyphen. + +The following example uses the @q{tweak} form to adjust the vertical +position of the @code{BreathingSign} object. Compare this with the +ordinary @code{\tweak} command also demonstrated. The syntax is +equivalent; however, the output of @code{\tweak} is less intuitive, +since @code{BreathingSign.Y-offset} is calculated from the middle +staff-line. It is not necessary to know how @code{Y-offset} is +calculated when using @code{\offset}. + +@lilypond[quote,verbatim] +{ + c''4 + \breathe + c''4 + \offset Y-offset 2 \breathe + c''2 + \tweak Y-offset 3 \breathe +} +@end lilypond + +In the previous example, the tweaked objects were created directly from +the user input: the @code{\breathe} command was an explicit instruction +to return a @code{BreathingSign} object. Since the focus of the command +was unambiguous, there was no need to specify the object's name. When +an object is @emph{indirectly} created, however, it is necessary to +include the grob's name. This is the same as for the @code{\tweak} +command. + +In the following example, the @code{Beam} object is lowered two +staff-spaces by applying @code{\offset} to the @code{positions} +property. + +The first application of @code{\offset} requires that the grob's name +be included, because nothing in the input explicitly creates the +beam. In the second application, the beam is created manually with the +music expression @code{[}; therefore, the grob's name is not needed. +(Also illustrated is a shorthand: a single @code{number} will be applied +to both members of a @code{number-pair}.) + +@lilypond[quote,verbatim] +{ + c''8 g'' e'' d'' + \offset Beam.positions #'(-2 . -2) + c''8 g'' e'' d'' + c''8 g'' e'' d'' + c''8-\offset positions #-2 [ g'' e'' d''] +} +@end lilypond + +@subsubsubheading{@bs{}offset with broken spanners} + +Independently modifying segments of a spanner extending over a line +break or breaks is also possible. In this case, @var{offsets} +takes a list of values of the property's required data type. + +The @code{\offset} command used in this manner is similar to the +@code{\alterBroken} command. (See @ref{Modifying broken spanners}.) +In contrast with @code{\alterBroken}, however, the values given to +@code{\offset} are relative, not absolute. + +The following example displaces the @q{broken} @code{OttavaBracket} +object through its @code{staff-padding} property. Since the property +takes a @code{number}, @var{offsets} is provided with a list of +@code{number}s to account for the two segments created by the line +break. The bracket piece on the first line is effectively untouched +since @code{0} is added to its default value of @code{staff-padding}. +The segment on the second line is raised three staff-spaces from its +default height. The default height happens to be @code{2}, though it is +not necessary to know this to achieve the desired positioning. + +@lilypond[quote,verbatim] +{ + \offset staff-padding #'(0 3) Staff.OttavaBracket + \ottava #1 + c'''2 c''' + \break + c'''2 c''' +} +@end lilypond + +The following example mimics the effect of the @code{\shape} command by +offsetting the @code{control-points} property of the @code{Slur} object. +Here, @var{offsets} is a list of @code{number-pair-list}s, one for each +slur segment. This example achieves a result identical to the +corresponding illustration at @ref{Modifying shapes}. + +@lilypond[quote,verbatim] +{ + c'4-\offset control-points #'( + ((0 . 0) (0 . 0) (0 . 0) (0 . 1)) + ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5)) + ) ( f'4 g' c'' + \break + d'4 c'' f' c') +} +@end lilypond + + @node Modifying alists @subsection Modifying alists @@ -2614,43 +2949,56 @@ modified by completely re-defining them as alists.} @subsection Input modes The way in which the notation contained within an input file is -interpreted is determined by the current input mode. +interpreted is determined by the current input mode. In general, +there are two ways of specifying the mode: a long form, e.g. +@code{\chordmode}, and a short form, e.g. @code{\chords}. The long +form is typically used when supplying input to a variable or when +entering input directly into an explicitly created context. The short +form implicitly creates a context of the correct type for the input and +passes the input directly to it. It is useful in simple situations +when there is no requirement to explicitly create the receiving context. @subsubsubheading Chord mode This is activated with the @code{\chordmode} command, and causes input to be interpreted with the syntax of chord notation, see -@ref{Chord notation}. Chords are rendered as notes on a staff. +@ref{Chord notation}. Music in chord mode is rendered as chords on a staff +when entered into a @code{Staff} context, as chord names when entered +into a @code{ChordNames} context or as fret boards when entered into +a @code{FretBoards} context. -Chord mode is also activated with the @code{\chords} command. -This also creates a new @code{ChordNames} context and -causes the following input to be interpreted with the syntax of -chord notation and rendered as chord names in the @code{ChordNames} -context, see @ref{Printing chord names}. +Chord mode is also activated with the @code{\chords} command. This +also causes the following input to be interpreted with the syntax of +chord notation but in addition it implicitly creates a new +@code{ChordNames} context and renders the input into it as chord names, +see @ref{Printing chord names}. @subsubsubheading Drum mode This is activated with the @code{\drummode} command, and causes input to be interpreted with the syntax of drum notation, see -@ref{Basic percussion notation}. +@ref{Basic percussion notation}. Music in drum mode is rendered as +percussion notes when entered into a @code{DrumStaff} context. -Drum mode is also activated with the @code{\drums} command. -This also creates a new @code{DrumStaff} context and causes the -following input to be interpreted with the syntax of drum notation -and rendered as drum symbols on a drum staff, see -@ref{Basic percussion notation}. +Drum mode is also activated with the @code{\drums} command. This +also causes the following input to be interpreted with the syntax of +drum notation but in addition it implicitly creates a new +@code{DrumStaff} context and renders the input into it as percussion +notes, see @ref{Basic percussion notation}. @subsubsubheading Figure mode This is activated with the @code{\figuremode} command, and causes input to be interpreted with the syntax of figured bass, see -@ref{Entering figured bass}. +@ref{Entering figured bass}. Music in figure mode is rendered as +figured bass when entered into a @code{FiguredBass} context or a +@code{Staff} context. Figure mode is also activated with the @code{\figures} command. -This also creates a new @code{FiguredBass} context and causes the -following input to be interpreted with the figured bass syntax -and rendered as figured bass symbols in the @code{FiguredBass} -context, see @ref{Introduction to figured bass}. +This also causes the following input to be interpreted with the +figured bass syntax but in addition it implicitly creates a new +@code{FiguredBass} context and renders the input into it as figured +bass, see @ref{Introduction to figured bass}. @subsubsubheading Fret and tab modes @@ -2660,22 +3008,29 @@ To create tab diagrams, enter notes or chords in note mode and render them in a @code{TabStaff} context, see @ref{Default tablatures}. -To create fret diagrams above a staff, you have two choices. -You can either use the @code{FretBoards} context (see -@ref{Automatic fret diagrams}) or you can enter them as a markup -above the notes using the @code{\fret-diagram} command (see -@ref{Fret diagram markups}). +To create fret diagrams above a staff, enter notes or chords in either +note mode or chord mode and render them in a @code{FretBoards} context, +see @ref{Automatic fret diagrams}. Alternatively, fret diagrams can be +entered as markup above the notes using the @code{\fret-diagram} +command, see @ref{Fret diagram markups}. @subsubsubheading Lyrics mode This is activated with the @code{\lyricmode} command, and causes input to be interpreted as lyric syllables with optional durations -and associated lyric modifiers, see @ref{Vocal music}. +and associated lyric modifiers, see @ref{Vocal music}. Input in +lyric mode is rendered as lyric syllables when entered into a +@code{Lyrics} context. + +Lyric mode is also activated with the @code{\lyrics} command. This +also causes the following input to be interpreted as lyric syllables +but in addition it implicitly creates a new @code{Lyrics} context and +renders the input into it as lyric syllables. -Lyric mode is also activated with the @code{\addlyrics} command. -This also creates a new @code{Lyrics} context and an implicit -@code{\lyricsto} command which associates the following lyrics -with the preceding music. +Lyric mode is also activated with the @code{\addlyrics} command. This +also implicitly creates a new @code{Lyrics} context and in addition it +adds an implicit @code{\lyricsto} command which associates the following +lyrics with the preceding music, see @ref{Automatic syllable durations}. @subsubsubheading Markup mode @@ -4190,8 +4545,9 @@ XinO = { } @end lilypond -Any of the glyphs in the Feta Font can be supplied to the -@code{\musicglyph} markup command -- see @ref{The Feta font}. +Any of the @emph{Feta} glyphs used in the Emmentaler font can be +supplied to the @code{\musicglyph} markup command -- see +@ref{The Emmentaler font}. @file{EPS} files and Postscript commands can both be inserted inline using the @code{\epsfile} and @code{\postscript} markup commands @@ -4203,7 +4559,7 @@ Notation Reference: @ref{Graphic notation inside markup}, @ref{Formatting text}, @ref{Text markup commands}, -@ref{The Feta font}, +@ref{The Emmentaler font}, @ref{Graphic}. diff --git a/Documentation/notation/chords.itely b/Documentation/notation/chords.itely index acc8f14f9d..49ade62bfe 100644 --- a/Documentation/notation/chords.itely +++ b/Documentation/notation/chords.itely @@ -458,7 +458,7 @@ Rests passed to a @code{ChordNames} context will cause the @funindex{\chords} @code{\chords @{ @dots{} @}} is a shortcut notation for -@code{\new ChordNames @{ \chordmode @{ @dots{} @} @}}. +@code{\new ChordNames \chordmode @{ @dots{} @}}. @lilypond[verbatim,quote,ragged-right] \chords { @@ -806,7 +806,7 @@ entry of bass figures, and there is a context named in @code{Staff} contexts. @code{\figures@{ @dots{} @}} is a shortcut notation for -@code{\new FiguredBass @{ \figuremode @{ @dots{} @} @}}. +@code{\new FiguredBass \figuremode @{ @dots{} @}}. Although the support for figured bass may superficially resemble chord diff --git a/Documentation/notation/editorial.itely b/Documentation/notation/editorial.itely index b1fbb8b1c9..8dc3ac9612 100644 --- a/Documentation/notation/editorial.itely +++ b/Documentation/notation/editorial.itely @@ -507,12 +507,13 @@ If @code{x11-color} cannot make sense of the parameter then the color returned defaults to black. @lilypond[verbatim,quote] -\relative c'' { - \override Staff.StaffSymbol.color = #(x11-color 'SlateBlue2) - \set Staff.instrumentName = \markup { - \with-color #(x11-color 'navy) "Clarinet" +\new Staff \with { + instrumentName = \markup { + \with-color #(x11-color 'red) "Clarinet" + } } - + \relative c'' { + \override Staff.StaffSymbol.color = #(x11-color 'SlateBlue2) gis8 a \override Beam.color = #(x11-color "medium turquoise") gis a @@ -536,12 +537,13 @@ Exact RGB colors can be specified using the Scheme function @code{rgb-color}. @lilypond[verbatim,quote] +\new Staff \with { + instrumentName = \markup { + \with-color #(x11-color 'red) "Clarinet" + } + } \relative c'' { \override Staff.StaffSymbol.color = #(x11-color 'SlateBlue2) - \set Staff.instrumentName = \markup { - \with-color #(x11-color 'navy) "Clarinet" - } - \override Stem.color = #(rgb-color 0 0 0) gis8 a \override Stem.color = #(rgb-color 1 1 1) @@ -877,12 +879,19 @@ Analysis brackets may be nested. } @end lilypond -@seealso -Snippets: -@rlsr{Editorial annotations}. +@snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{analysis-brackets-above-the-staff.ly} + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{analysis-brackets-with-labels.ly} + +@seealso Internals Reference: @rinternals{Horizontal_bracket_engraver}, @rinternals{HorizontalBracket}, @rinternals{horizontal-bracket-interface}, +@rinternals{HorizontalBracketText}, +@rinternals{horizontal-bracket-text-interface}, @rinternals{Staff}. diff --git a/Documentation/notation/expressive.itely b/Documentation/notation/expressive.itely index 3c249389c2..5f89cc66cf 100644 --- a/Documentation/notation/expressive.itely +++ b/Documentation/notation/expressive.itely @@ -454,6 +454,9 @@ items such as text scripts, text spanners, and piano pedal marks. @lilypondfile[verbatim,quote,texidoc,doctitle] {setting-the-minimum-length-of-hairpins.ly} +@lilypondfile[verbatim,quote,texidoc,doctitle] +{moving-the-ends-of-hairpins.ly} + @cindex al niente @cindex niente, al diff --git a/Documentation/notation/input.itely b/Documentation/notation/input.itely index 2c8df57890..4970bccd79 100644 --- a/Documentation/notation/input.itely +++ b/Documentation/notation/input.itely @@ -2786,8 +2786,10 @@ see @rprogram{Basic command line options for LilyPond}. @node Replacing the notation font @subsection Replacing the notation font -Gonville is an alternative to the Feta font used in LilyPond and can -be downloaded from: +Gonville is an alternative set of glyphs to @emph{Feta} +-- part of the Emmentaler font -- and used in LilyPond. They can be +downloaded from: + @example @uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/} @end example @@ -2798,7 +2800,7 @@ Here are a few sample bars of music set in Gonville: @c for the font comparison. -gp @sourceimage{Gonville_after,15cm,,} -Here are a few sample bars of music set in LilyPond's Feta font: +Here are a few sample bars of music set in LilyPond's Feta glyphs: @sourceimage{Gonville_before,15cm,,} @@ -2815,6 +2817,9 @@ reverse the process. Learning Manual: @rlearning{Other sources of information}. +Notation Reference: +@ref{The Emmentaler font}. + @knownissues Gonville cannot be used to typeset @q{Ancient Music} notation and it is likely newer glyphs in later releases of LilyPond may not exist in the diff --git a/Documentation/notation/notation-appendices.itely b/Documentation/notation/notation-appendices.itely index 388c8bc388..3aab2d451c 100644 --- a/Documentation/notation/notation-appendices.itely +++ b/Documentation/notation/notation-appendices.itely @@ -21,7 +21,7 @@ * Predefined paper sizes:: * MIDI instruments:: * List of colors:: -* The Feta font:: +* The Emmentaler font:: * Note head styles:: * Clef styles:: * Text markup commands:: @@ -937,18 +937,37 @@ greyN Where N is in the range 0-100. -@node The Feta font -@appendixsec The Feta font +@node The Emmentaler font +@appendixsec The Emmentaler font + +@cindex Emmentaler font +@cindex Font, Emmentaler @cindex Feta font @cindex Font, Feta +@cindex Parmesan font +@cindex Font, Parmesan + +The Emmentaler font consists of two @emph{sub-sets} of glyphs. +@qq{Feta}, used for classical notation and @qq{Parmesan}, used for +Ancient notation. -The following symbols are available in the Emmentaler font and may be -accessed directly using text markup with the name of the glyph -as shown in the tables below, -such as @code{g^\markup @{\musicglyph #"scripts.segno" @}} or -@code{\markup @{\musicglyph #"five"@}}. For more information, -see @ref{Formatting text}. +Any glyph within the Emmentaler font can be accessed directly by using +text markup along with the name of the glyph (as shown in the tables +below). For example; + +@example +g^\markup @{\musicglyph #"scripts.segno" @} +@end example + +@noindent +or + +@example +\markup @{\musicglyph #"five"@} +@end example + +For more information see @ref{Formatting text}. @menu @@ -1476,6 +1495,12 @@ c1 @node Text markup commands @appendixsec Text markup commands +@ignore +All the .tely files included in this appendix are automatically +generated from source files during the build. +For translators: you cannot translate the content of these files. +@end ignore + @include markup-commands.tely @@ -2691,4 +2716,3 @@ within a @code{\layout} or @code{\with} block. @appendixsec Scheme functions @include scheme-functions.tely - diff --git a/Documentation/notation/percussion.itely b/Documentation/notation/percussion.itely index b17dd888ee..da730eb5f3 100644 --- a/Documentation/notation/percussion.itely +++ b/Documentation/notation/percussion.itely @@ -78,10 +78,8 @@ which creates the correct context and entry mode for percussion: This is shorthand for: @lilypond[quote,verbatim] -\new DrumStaff { - \drummode { - hihat4 hh bassdrum bd - } +\new DrumStaff \drummode { + hihat4 hh bassdrum bd } @end lilypond @@ -468,27 +466,22 @@ delicate things have a look at @ref{Staff symbol}. A tambourine, entered with @q{tamb}: -@lilypond[quote,verbatim] +@lilypond[verbatim,quote] #(define mydrums '((tambourine default #t 0))) -tambustaff = { - \override Staff.StaffSymbol.line-positions = #'( 0 ) - \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \set DrumStaff.instrumentName = #"Tambourine" -} +\new DrumStaff \with { instrumentName = #"Tambourine" } -\new DrumStaff { - \tambustaff +\drummode { \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + \override Staff.StaffSymbol.line-positions = #'( 0 ) + \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \drummode { - \time 6/8 - tamb8. 16 8 8 8 8 | - tamb4. 8 8 8 | - % the trick with the scaled duration and the shorter rest - % is neccessary for the correct ending of the trill-span! - tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan | - } + \time 6/8 + tamb8. 16 8 8 8 8 | + tamb4. 8 8 8 | + % the trick with the scaled duration and the shorter rest + % is neccessary for the correct ending of the trill-span! + tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan | } @end lilypond @@ -497,19 +490,14 @@ Music for Tam-Tam (entered with @q{tt}): @lilypond[quote,verbatim] #(define mydrums '((tamtam default #t 0))) -tamtamstaff = { - \override Staff.StaffSymbol.line-positions = #'( 0 ) - \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \set DrumStaff.instrumentName = #"Tamtam" -} +\new DrumStaff \with { instrumentName = #"Tamtam" } -\new DrumStaff { - \tamtamstaff - \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) +\drummode { +\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) +\override Staff.StaffSymbol.line-positions = #'( 0 ) +\override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \drummode { - tt 1 \pp \laissezVibrer - } + tt 1 \pp \laissezVibrer } @end lilypond @@ -519,20 +507,16 @@ Two different bells, entered with @q{cb} (cowbell) and @q{rb} (ridebell) #(define mydrums '((ridebell default #t 3) (cowbell default #t -2))) -bellstaff = { - \override DrumStaff.StaffSymbol.line-positions = #'(-2 3) +\new DrumStaff \with { instrumentName = #"Different Bells" } + +\drummode { \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + \override DrumStaff.StaffSymbol.line-positions = #'(-2 3) \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) - \set DrumStaff.instrumentName = #"Different Bells" -} -\new DrumStaff { - \bellstaff - \drummode { - \time 2/4 - rb8 8 cb8 16 rb16-> ~ | - 16 8 16 cb8 8 | - } + \time 2/4 + rb8 8 cb8 16 rb16-> ~ | + 16 8 16 cb8 8 | } @end lilypond @@ -577,22 +561,22 @@ drumsB = { \score { \new StaffGroup << - \new DrumStaff { - \set DrumStaff.instrumentName = \markup { + \new DrumStaff \with { + instrumentName = \markup { \column { "Tambourine" "et" "caisse claire s. timbre" } } - \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) - \drumsA - } - - \new DrumStaff { - \set DrumStaff.instrumentName = #"Grosse Caisse" - \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) - \drumsB } + drumStyleTable = #(alist->hash-table mydrums) + } + \drumsA + \new DrumStaff \with { + instrumentName = #"Grosse Caisse" + drumStyleTable = #(alist->hash-table mydrums) + } + \drumsB >> } @end lilypond diff --git a/Documentation/notation/pitches.itely b/Documentation/notation/pitches.itely index bfed32447e..15af95d140 100644 --- a/Documentation/notation/pitches.itely +++ b/Documentation/notation/pitches.itely @@ -7,7 +7,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.19.22" +@c \version "2.19.53" @node Pitches @@ -297,6 +297,24 @@ that each interval contains. } @end lilypond +In complex situations, it is sometimes useful to get back to a +certain pitch regardless of what happened before. This can be +done using @code{\resetRelativeOctave}: + +@lilypond[verbatim,quote] +\relative { + << + { c''2 d } + \\ + { e,,2 f } + >> + \resetRelativeOctave c'' + c2 +} +@end lilypond + +@funindex \resetRelativeOctave + @seealso Music Glossary: @@ -1505,26 +1523,24 @@ playing in unison. @lilypond[verbatim,quote] \new GrandStaff << - \new Staff = "violin" { - \relative c'' { - \set Staff.instrumentName = #"Vln" - \set Staff.midiInstrument = #"violin" - % not strictly necessary, but a good reminder - \transposition c' - - \key c \major - g4( c8) r c r c4 - } + \new Staff = "violin" \with { + instrumentName = #"Vln" + midiInstrument = #"violin" } - \new Staff = "clarinet" { - \relative c'' { - \set Staff.instrumentName = \markup { Cl (B\flat) } - \set Staff.midiInstrument = #"clarinet" - \transposition bes - - \key d \major - a4( d8) r d r d4 - } + \relative c'' { + % not strictly necessary, but a good reminder + \transposition c' + \key c \major + g4( c8) r c r c4 + } + \new Staff = "clarinet" \with { + instrumentName = \markup { Cl (B\flat) } + midiInstrument = #"clarinet" + } + \relative c'' { + \transposition bes + \key d \major + a4( d8) r d r d4 } >> @end lilypond @@ -2197,6 +2213,129 @@ musicB = { @end lilypond +@item choral + +@cindex accidental style, choral +@cindex accidentals, choral +@cindex choral accidental style +@cindex choral accidentals + +@funindex choral + +This rule is a combination of the @code{modern-voice} and the @code{piano} +style. It shows all accidentals required for singers that only follow their +own voice, as well as additional accidentals for readers that follow all +voices of an entire @code{ChoirStaff} simultaneously. + +This accidental style applies to the current @code{ChoirStaff} by default. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new ChoirStaff { + << + \context Staff = "up" { + \accidentalStyle choral + \musicA + } + \context Staff = "down" { + \musicB + } + >> +} +@end lilypond + +@item choral-cautionary + +@cindex accidentals, choral cautionary +@cindex cautionary accidentals, choral +@cindex choral cautionary accidentals +@cindex accidental style, choral cautionary +@cindex cautionary accidental style, choral +@cindex choral cautionary accidental style + +@funindex choral-cautionary + +This is the same as @code{choral} but with the extra accidentals +typeset as cautionaries. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new ChoirStaff { + << + \context Staff = "up" { + \accidentalStyle choral-cautionary + \musicA + } + \context Staff = "down" { + \musicB + } + >> +} +@end lilypond + + @item neo-modern @cindex neo-modern accidental style diff --git a/Documentation/notation/rhythms.itely b/Documentation/notation/rhythms.itely index 2df6cbaee7..a393f1346c 100644 --- a/Documentation/notation/rhythms.itely +++ b/Documentation/notation/rhythms.itely @@ -443,7 +443,7 @@ used when note values cross larger subdivisions of the measure: @lilypond[verbatim,quote] \relative { - r8 c'~ 2 r4 | + r8 c'4.~ 4 r4 | r8^"not" c2~ 8 r4 } @end lilypond @@ -1929,6 +1929,22 @@ be done with the @code{Pitch_squash_engraver} and >> @end lilypond +Music containing chords can also be used as input to @code{RhythmicStaff} +and for use with the @code{Pitch_squash_engraver} if the chords are first +reduced to single notes with the @code{\reduceChords} music function: + +@lilypond[quote,verbatim] +\new RhythmicStaff { + \time 4/4 + \reduceChords { + 2 + 2 + 2 + 4 + 4 + } +} +@end lilypond @predefined @code{\improvisationOn}, @@ -3279,9 +3295,9 @@ produces a boxed number. @end lilypond The file @file{scm/translation-functions.scm} contains the -definitions of @code{format-mark-numbers} (the default format), -@code{format-mark-box-numbers}, @code{format-mark-letters} and -@code{format-mark-box-letters}. These can be used as inspiration +definitions of @code{format-mark-letters} (the default format), +@code{format-mark-box-letters}, @code{format-mark-numbers} and +@code{format-mark-box-numbers}. These can be used as inspiration for other formatting functions. You may use @code{format-mark-barnumbers}, @@ -3326,7 +3342,7 @@ Music glyphs (such as the segno sign) may be printed inside a @end lilypond @noindent -See @ref{The Feta font}, for a list of symbols which may be +See @ref{The Emmentaler font}, for a list of symbols which may be printed with @code{\musicglyph}. For common tweaks to the positioning of rehearsal marks, see @@ -3340,7 +3356,7 @@ other formatting functions. @seealso Notation Reference: -@ref{The Feta font}, +@ref{The Emmentaler font}, @ref{Formatting text}, @ref{Aligning objects}. diff --git a/Documentation/notation/simultaneous.itely b/Documentation/notation/simultaneous.itely index d9c7fb42d4..1ad24d94b9 100644 --- a/Documentation/notation/simultaneous.itely +++ b/Documentation/notation/simultaneous.itely @@ -389,6 +389,7 @@ multiple staves. * Single-staff polyphony:: * Voice styles:: * Collision resolution:: +* Merging rests:: * Automatic part combining:: * Writing music in parallel:: @end menu @@ -559,6 +560,28 @@ upstems, and the even-numbered voices are given downstems: >> @end lilypond +@funindex \voices +When a different voice entry order is desired, the command +@code{\voices} may be convenient: + +@lilypond[quote,verbatim] +\new Staff \voices 1,3,5,6,4,2 << + \time 2/4 + { f''2 } % 1: highest + \\ + { d''2 } % 3: second-highest + \\ + { b'2 } % 5: third-highest + \\ + { g'2 } % 6: third-lowest + \\ + { e'2 } % 4: second-lowest + \\ + { c'2 } % 2: lowest +>> +@end lilypond + + @warning{Lyrics and spanners (such as slurs, ties, hairpins, etc.) cannot be created @q{across} voices.} @@ -887,6 +910,39 @@ are at the same time differently dotted are not clear. @end ignore +@node Merging rests +@unnumberedsubsubsec Merging rests + +When using multiple voices it is common to merge rests which occur in both +parts. This can be accomplished using @code{Merge_rests_engraver}. + +@lilypond[quote,verbatim] +voiceA = \relative { d''4 r d2 | R1 | } +voiceB = \relative { fis'4 r g2 | R1 | } +\score { + << + \new Staff \with { + instrumentName = "unmerged" + } + << + \new Voice { \voiceOne \voiceA } + \new Voice { \voiceTwo \voiceB } + >> + \new Staff \with { + instrumentName = "merged" + \consists #Merge_rests_engraver + } + << + \new Voice { \voiceOne \voiceA } + \new Voice { \voiceTwo \voiceB } + >> + >> +} +@end lilypond + +Setting the context property @code{suspendRestMerging} to @code{##t} allows for +turning off rest merging temporarily. + @node Automatic part combining @unnumberedsubsubsec Automatic part combining diff --git a/Documentation/notation/spacing.itely b/Documentation/notation/spacing.itely index 9a4e91d49b..daf43ec540 100644 --- a/Documentation/notation/spacing.itely +++ b/Documentation/notation/spacing.itely @@ -1353,10 +1353,11 @@ reducing the thickness of the staff lines. @subheading Automatic font weight at different sizes -The Feta font provides musical symbols at eight different -sizes. Each font is tuned for a different staff size: at a smaller size -the font becomes heavier, to match the relatively heavier staff lines. -The recommended font sizes are listed in the following table: +The Emmentaler font provides the set of @emph{Feta} musical glyphs in +eight different sizes; each one tuned for a different staff size. The +smaller the glyph size, the @qq{heavier} it becomes, so as to match the +relatively thicker staff lines. Recommended glyphs sizes are listed in +the following table: @multitable @columnfractions .15 .2 .22 .2 @item @b{font name} @tab @b{staff height (pt)} @tab @b{staff height (mm)} @tab @b{use} @@ -1372,7 +1373,8 @@ The recommended font sizes are listed in the following table: @seealso Notation Reference: -@ref{Selecting notation font size}. +@ref{Selecting notation font size}, +@ref{The Emmentaler font}. Snippets: @rlsr{Spacing}. @@ -2438,11 +2440,12 @@ padding, @code{NonMusicalPaperColumn.line-break-system-details} can specify exact vertical positions on the page. @code{NonMusicalPaperColumn.line-break-system-details} accepts -an associative list of three different settings: +an associative list of four different settings: @itemize @item @code{X-offset} @item @code{Y-offset} +@item @code{extra-offset} @item @code{alignment-distances} @end itemize @@ -2555,6 +2558,41 @@ potentially many values, but that we set only one value here. Note, too, that the @code{Y-offset} property here determines the exact vertical position on the page at which each new system will render. +In contrast to the absolute positioning available through +@code{Y-offset} and @code{X-offset}, relative positioning is possible +with the @code{extra-offset} property of +@code{line-break-system-details}. Placement is relative to the +default layout or to the absolute positioning created by setting +@code{X-offset} and @code{Y-offset}. The property @code{extra-offset} +accepts a @code{pair} consisting of displacements along the X-axis and +Y-axis. + +@lilypond[verbatim,quote,staffsize=16] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((extra-offset . (0 . 10))) + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((extra-offset . (0 . 10))) + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new Staff { + \repeat unfold 15 { d'4 d' d' d' } + } + >> + } +} +@end lilypond + Now that we have set the vertical startpoint of each system explicitly, we can also set the vertical distances between staves within each system manually. We do this using the @code{alignment-distances} @@ -2640,9 +2678,10 @@ Some points to consider: do not count as a staff. @item The units of the numbers passed to @code{X-offset}, -@code{Y-offset} and @code{alignment-distances} are interpreted as multiples -of the distance between adjacent staff lines. Positive values move staves -and lyrics up, negative values move staves and lyrics down. +@code{Y-offset}, @code{extra-offset} and @code{alignment-distances} are +interpreted as multiples of the distance between adjacent staff lines. +Positive values move staves and lyrics up, negative values move staves +and lyrics down. @item Because the @code{NonMusicalPaperColumn.line-break-system-details} settings given here allow the positioning of staves and systems anywhere diff --git a/Documentation/notation/staff.itely b/Documentation/notation/staff.itely index d097535643..d7ed3e6738 100644 --- a/Documentation/notation/staff.itely +++ b/Documentation/notation/staff.itely @@ -215,8 +215,8 @@ that it supports printing the instrument name directly. For details, see @ref{Instrument names}. @lilypond[verbatim,quote] -\new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" +\new PianoStaff \with { instrumentName = #"Piano" } +<< \new Staff \relative { c''1 c } \new Staff \relative { \clef bass c1 c } >> @@ -961,20 +961,14 @@ printed and subsequent changes will be ignored: @lilypond[verbatim,quote,ragged-right] prepPiccolo = <>^\markup \italic { muta in Piccolo } +prepFlute = <>^\markup \italic { muta in Flauto } + setPiccolo = { - \set Staff.instrumentName = #"Piccolo" - \set Staff.shortInstrumentName = #"Picc." - \set Staff.midiInstrument = #"piccolo" <>^\markup \bold { Piccolo } \transposition c'' } -prepFlute = <>^\markup \italic { muta in Flauto } - setFlute = { - \set Staff.instrumentName = #"Flute" - \set Staff.shortInstrumentName = #"Flt." - \set Staff.midiInstrument = #"flute" <>^\markup \bold { Flute } \transposition c' } @@ -982,14 +976,17 @@ setFlute = { \new Staff \with { instrumentName = #"Flute" shortInstrumentName = #"Flt." - midiInstrument = #"flute" } \relative { g'1 g g g \break g1 g \prepPiccolo R R \break + \set Staff.instrumentName = #"Piccolo" + \set Staff.shortInstrumentName = #"Picc." \setPiccolo g1 g g g \break g1 g \prepFlute R R \break + \set Staff.instrumentName = #"Flute" + \set Staff.shortInstrumentName = #"Flt." \setFlute g1 g g g } diff --git a/Documentation/notation/text.itely b/Documentation/notation/text.itely index 4d1f44a4e4..39e9d815c3 100644 --- a/Documentation/notation/text.itely +++ b/Documentation/notation/text.itely @@ -300,7 +300,7 @@ Notation Reference: @ref{Rehearsal marks}, @ref{Formatting text}, @ref{Music notation inside markup}, -@ref{The Feta font}. +@ref{The Emmentaler font}. Snippets: @rlsr{Text}. @@ -1178,7 +1178,7 @@ in markup mode: More generally, any available musical symbol may be included separately in a markup object, as demonstrated below; an exhaustive list of these symbols and their names can be found in -@ref{The Feta font}. +@ref{The Emmentaler font}. @lilypond[quote,verbatim] \relative { @@ -1248,7 +1248,7 @@ An exhaustive list of music notation related commands can be found in @seealso Notation Reference: @ref{Music}, -@ref{The Feta font}, +@ref{The Emmentaler font}, @ref{Fonts explained}. Installed Files: @@ -1357,9 +1357,8 @@ detect available fonts on the system; the selected fonts are rendered using Pango. Music notation fonts can be described as a set of specific glyphs, -ordered in several families. The following syntax allows various -LilyPond @code{feta} non-text fonts to be used directly in markup -mode: +ordered in several families. The following syntax allows LilyPond's +various @emph{Feta} glyphs to be used directly in markup mode: @lilypond[quote,verbatim,fragment] a'1^\markup { @@ -1388,17 +1387,53 @@ left braces; right braces may be obtained by rotation, see @ref{Rotating objects}. Three families of text fonts are made available: -@itemize -@item -The @emph{roman} (serif) font, -which defaults to LilyPond Serif (an alias of TeX Gyre Schola). -@item -The @emph{sans} font, -which defaults to LilyPond Sans Serif (an alias of TeX Gyre Heros). -@item -The @emph{typewriter} (monospaced) font, -which defaults to LilyPond Monospace (an alias of TeX Gyre Cursor). -@end itemize +the @emph{roman} (serif) font, +the @emph{sans} font, and the @emph{typewriter} font. + +For @code{svg} backend: +@multitable @columnfractions .15 .30 +@headitem Family @tab Default font +@item @emph{roman} @tab @code{serif} +@item @emph{sans} @tab @code{sans-serif} +@item @emph{typewriter} @tab @code{monospace} +@end multitable + +@code{serif}, @code{sans-serif}, and @code{monospace} are +@code{generic-family} in SVG and CSS specifications. + +For other backends: +@multitable @columnfractions .15 .30 .55 +@headitem Family @tab Default font (alias) @tab Alias definition lists +@item @emph{roman} +@tab @code{LilyPond Serif} +@tab +TeX Gyre Schola, +C059, Century SchoolBook URW, Century Schoolbook L, +DejaVu Serif, +..., serif +@item @emph{sans} +@tab @code{LilyPond Sans Serif} +@tab +TeX Gyre Heros, +Nimbus Sans, Nimbus Sans L, DejaVu Sans, +..., sans-serif +@item @emph{typewriter} +@tab @code{LilyPond Monospace} +@tab +TeX Gyre Cursor, +Nimbus Mono PS, Nimbus Mono, Nimbus Mono L, +DejaVu Sans Mono, +..., monospace +@end multitable + +@code{LilyPond Serif}, @code{LilyPond Sans Serif}, +and @code{LilyPond Monospace} are font aliases defined +in the LilyPond dedicated FontConfig configuration file +@code{00-lilypond-fonts.conf}. +Where a character dosen't exist in the first font listed, +the next font listed will be used instead for that character. +For details of alias definitions, please see +to @code{00-lilypond-fonts.conf} under the installed directory. Each family may include different shapes and series. The following example demonstrates the ability to select alternate families, shapes, @@ -1448,7 +1483,7 @@ possible to use other fonts, as explained in the following sections: @seealso Notation Reference: -@ref{The Feta font}, +@ref{The Emmentaler font}, @ref{Music notation inside markup}, @ref{Rotating objects}, @ref{Selecting font and font size}, diff --git a/Documentation/pictures/GNUmakefile b/Documentation/pictures/GNUmakefile index ef72775059..8ae3e463bb 100644 --- a/Documentation/pictures/GNUmakefile +++ b/Documentation/pictures/GNUmakefile @@ -38,7 +38,7 @@ $(outdir)/%.jpg: %.jpg ln -f $< $@ $(outdir)/%.png: %.eps - gs -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -q -sOutputFile=$@ -sDEVICE=png16m -dEPSCrop -dNOPAUSE -f $< -c quit + gs -dAutoRotatePages=/None -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -q -sOutputFile=$@ -sDEVICE=png16m -dEPSCrop -dNOPAUSE -f $< -c quit $(outdir)/%.pdf: %.eps gs -dAutoRotatePages=/None -q -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@ -dEPSCrop -c .setpdfwrite -f $< diff --git a/Documentation/snippets/adding-drum-parts.ly b/Documentation/snippets/adding-drum-parts.ly index 7ce432bcfc..18a3696de4 100644 --- a/Documentation/snippets/adding-drum-parts.ly +++ b/Documentation/snippets/adding-drum-parts.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.18.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "percussion, preparing-parts, really-simple, rhythms, specific-notation" @@ -24,7 +25,8 @@ lines is possible. drh = \drummode { cymc4.^"crash" hhc16^"h.h." hh hhc8 hho hhc8 hh16 hh hhc4 r4 r2 - } + } % begin verbatim + drl = \drummode { bd4 sn8 bd bd4 << bd ss >> bd8 tommh tommh bd toml toml bd tomfh16 tomfh @@ -37,21 +39,20 @@ timb = \drummode { \score { << \new DrumStaff \with { + instrumentName = #"timbales" drumStyleTable = #timbales-style \override StaffSymbol.line-count = #2 \override BarLine.bar-extent = #'(-1 . 1) - } << - \set Staff.instrumentName = #"timbales" + } + << \timb >> - \new DrumStaff << - \set Staff.instrumentName = #"drums" + \new DrumStaff \with { instrumentName = #"drums" } + << \new DrumVoice { \stemUp \drh } \new DrumVoice { \stemDown \drl } >> >> \layout { } - \midi { - \tempo 4 = 120 - } + \midi { \tempo 4 = 120 } } diff --git a/Documentation/snippets/aligning-and-centering-instrument-names.ly b/Documentation/snippets/aligning-and-centering-instrument-names.ly index 4aa325956f..30bfc4acd8 100644 --- a/Documentation/snippets/aligning-and-centering-instrument-names.ly +++ b/Documentation/snippets/aligning-and-centering-instrument-names.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.18.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "paper-and-layout, text, titles" @@ -20,44 +21,47 @@ and the following systems, respectively. doctitle = "Aligning and centering instrument names" } % begin verbatim -\paper { - left-margin = 3\cm -} +\paper { left-margin = 3\cm } % begin verbatim + \score { \new StaffGroup << - \new Staff { - \override Staff.InstrumentName.self-alignment-X = #LEFT - \set Staff.instrumentName = \markup \left-column { + + \new Staff \with { + \override InstrumentName.self-alignment-X = #LEFT + instrumentName = \markup \left-column { "Left aligned" "instrument name" + } + shortInstrumentName = "Left" } - \set Staff.shortInstrumentName = #"Left" - c''1 - \break - c''1 - } - \new Staff { - \override Staff.InstrumentName.self-alignment-X = #CENTER - \set Staff.instrumentName = \markup \center-column { + + { c''1 \break c''1 } + + \new Staff \with { + \override InstrumentName.self-alignment-X = #CENTER + instrumentName = \markup \center-column { Centered "instrument name" - } - \set Staff.shortInstrumentName = #"Centered" - g'1 - g'1 + } + shortInstrumentName = "Centered" } - \new Staff { - \override Staff.InstrumentName.self-alignment-X = #RIGHT - \set Staff.instrumentName = \markup \right-column { + + { g'1 g'1} + + \new Staff \with { + \override InstrumentName.self-alignment-X = #RIGHT + instrumentName = \markup \right-column { "Right aligned" "instrument name" } - \set Staff.shortInstrumentName = #"Right" - e'1 - e'1 + shortInstrumentName = "Right" } + + { e'1 e'1 } + >> + \layout { ragged-right = ##t indent = 4\cm diff --git a/Documentation/snippets/analysis-brackets-with-labels.ly b/Documentation/snippets/analysis-brackets-with-labels.ly new file mode 100644 index 0000000000..fde149bceb --- /dev/null +++ b/Documentation/snippets/analysis-brackets-with-labels.ly @@ -0,0 +1,46 @@ +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.55 +\version "2.19.55" + +\header { + lsrtags = "editorial-annotations, tweaks-and-overrides" + + texidoc = " +Text may be added to analysis brackets through the @code{text} property +of the @code{HorizontalBracketText} grob. Adding different texts to +brackets beginning at the same time requires the @code{\\tweak} command. +Bracket text will be parenthesized after a line break. + +" + doctitle = "Analysis brackets with labels" +} % begin verbatim + + +\layout { + \context { + \Voice + \consists "Horizontal_bracket_engraver" + \override HorizontalBracket.direction = #UP + } +} + +{ + \once\override HorizontalBracketText.text = "a" + c''\startGroup d''\stopGroup + \once\override HorizontalBracketText.text = "a'" + e''\startGroup d''\stopGroup + c'' + -\tweak HorizontalBracketText.text \markup \bold \huge "b" \startGroup + -\tweak HorizontalBracketText.text "a" \startGroup + d''\stopGroup + e''-\tweak HorizontalBracketText.text "a'" \startGroup + d''\stopGroup\stopGroup + c''-\tweak HorizontalBracketText.text foo \startGroup d'' e'' f'' + \break + g'' a'' b'' c'''\stopGroup +} diff --git a/Documentation/snippets/clip-systems.ly b/Documentation/snippets/clip-systems.ly index 736586bb94..ed8ac5596c 100644 --- a/Documentation/snippets/clip-systems.ly +++ b/Documentation/snippets/clip-systems.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.19.22" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "paper-and-layout" @@ -38,7 +39,8 @@ are generated. origScore = \score { \relative c' { - \set Staff.instrumentName = #"bla" + \new Staff \with { instrumentName = "Instrument" } % begin verbatim + c1 d1 \grace c16 e1 diff --git a/Documentation/snippets/combining-two-parts-on-the-same-staff.ly b/Documentation/snippets/combining-two-parts-on-the-same-staff.ly index 643dacbe86..e869f243e7 100644 --- a/Documentation/snippets/combining-two-parts-on-the-same-staff.ly +++ b/Documentation/snippets/combining-two-parts-on-the-same-staff.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.18.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "simultaneous-notes, syntax-and-expressions, text" @@ -37,7 +38,8 @@ musicUp = \relative c'' { a4 c4.( g8) a4 | g4 e' g,( a8 b) | c b a2. -} +} % begin verbatim + musicDown = \relative c'' { g4 e4.( d8) c4 | @@ -46,22 +48,21 @@ musicDown = \relative c'' { } \score { - << << - \new Staff { - \set Staff.instrumentName = #"Standard polyphony" + \new Staff \with { instrumentName = #"Standard polyphony" } + << \musicUp \\ \musicDown >> + + \new Staff \with { + instrumentName = #"PartCombine without text" + printPartCombineTexts = ##f } - \new Staff \with { printPartCombineTexts = ##f } { - \set Staff.instrumentName = #"PartCombine without texts" - \partcombine \musicUp \musicDown - } - \new Staff { - \set Staff.instrumentName = #"PartCombine with texts" + + \partcombine \musicUp \musicDown + + \new Staff \with { instrumentName = #"PartCombine with text" } \partcombine \musicUp \musicDown - } >> - >> \layout { indent = 6.0\cm \context { diff --git a/Documentation/snippets/contexts-and-engravers.snippet-list b/Documentation/snippets/contexts-and-engravers.snippet-list index 3b3c016eb3..cfa813c52b 100644 --- a/Documentation/snippets/contexts-and-engravers.snippet-list +++ b/Documentation/snippets/contexts-and-engravers.snippet-list @@ -17,5 +17,6 @@ nesting-staves.ly numbering-groups-of-measures.ly removing-bar-numbers-from-a-score.ly use-square-bracket-at-the-start-of-a-staff-group.ly +using-marklines-in-a-frenched-score.ly vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly vocal-ensemble-template-with-verse-and-refrain.ly diff --git a/Documentation/snippets/editorial-annotations.snippet-list b/Documentation/snippets/editorial-annotations.snippet-list index bfe4bfffdc..62db50fef8 100644 --- a/Documentation/snippets/editorial-annotations.snippet-list +++ b/Documentation/snippets/editorial-annotations.snippet-list @@ -4,6 +4,7 @@ adding-markups-in-a-tablature.ly allowing-fingerings-to-be-printed-inside-the-staff.ly alternative-bar-numbering.ly analysis-brackets-above-the-staff.ly +analysis-brackets-with-labels.ly applying-note-head-styles-depending-on-the-step-of-the-scale.ly avoiding-collisions-with-chord-fingerings.ly blanking-staff-lines-using-the--whiteout-command.ly diff --git a/Documentation/snippets/expressive-marks.snippet-list b/Documentation/snippets/expressive-marks.snippet-list index 0bc43e26f9..2aa843367d 100644 --- a/Documentation/snippets/expressive-marks.snippet-list +++ b/Documentation/snippets/expressive-marks.snippet-list @@ -41,6 +41,7 @@ line-arrows.ly making-slurs-with-complex-dash-structure.ly modifying-default-values-for-articulation-shorthand-notation.ly moving-slur-positions-vertically.ly +moving-the-ends-of-hairpins.ly positioning-arpeggios.ly positioning-text-markups-inside-slurs.ly printing-hairpins-in-various-styles.ly diff --git a/Documentation/snippets/figured-bass-headword.ly b/Documentation/snippets/figured-bass-headword.ly index 190cec94a0..f15b8974c4 100644 --- a/Documentation/snippets/figured-bass-headword.ly +++ b/Documentation/snippets/figured-bass-headword.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.18.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "headword" @@ -29,53 +30,49 @@ extendOff = \bassFigureExtendersOff \score { \new StaffGroup << \new GrandStaff << - \new Staff = "violinoI" { - \set Staff.instrumentName = \markup { - \line { Violino I. } - } - \time 4/4 - \mark \markup { \italic Adagio. } - \partial 8 - r16 a'16 | - a'8. [ d''16 d''8. e''16 ] cis''8 a'4 a''16 bes''16 | - cis''8 d''16 ( e'' ) e''8. d''16 d''4 r8 d''16 e''16 | - f''8 f''4 g''16 ( f''16 ) e''8 e''4 f''16 ( e''16 ) | - d''8. d''16 g''16 ( f''16 ) e''16 ( d''16 ) cis''8 - cis''4 cis''16 cis''16 | - d''8 d''8 c''8. c''16 c''8 ( b'4 ) b'16 b'16 | - c''8 c''8 bes'8. bes'16 bes'8 ( a'4 ) a''16 a''16 | - a''8 g''8 g''8. g''16 g''8 ( f''8 ) r8 f''8 | - } + \new Staff = "violinoI" \with { instrumentName = "Violino I." } % begin verbatim - \new Staff = "violinoII" { - \set Staff.instrumentName = \markup { - \line { Violino II. } - } - \time 4/4 - \partial 8 - r16 f'16 | - f'8. g'16 g'4 a'4 r8 d''16 d''16 | - e''8 a'8 cis''8. d''16 d''4 r8 f''16 g''16 | - a''8 a''8 d''8. d''16 g'8 g'8 c''8. c''16 | - f'8. f''16 bes''16 ( a''16 ) g''16 ( f''16 ) e''8 e''4 e''16 e''16 | - a'8 fis''8 g''8 a''8 d''8 d''4 d''16 d''16 | - g'8 e''8 f''8 g''8 c''8 c''4 cis''16 cis''16 | - d''8 d''8 e''8. e''16 e''8 a'8 r8 d''8 | - } + + { + \time 4/4 + \mark \markup { \italic Adagio. } + \partial 8 r16 a'16 | + a'8. [ d''16 d''8. e''16 ] cis''8 a'4 a''16 bes''16 | + cis''8 d''16 ( e'' ) e''8. d''16 d''4 r8 d''16 e''16 | + f''8 f''4 g''16 ( f''16 ) e''8 e''4 f''16 ( e''16 ) | + d''8. d''16 g''16 ( f''16 ) e''16 ( d''16 ) cis''8 + cis''4 cis''16 cis''16 | + d''8 d''8 c''8. c''16 c''8 ( b'4 ) b'16 b'16 | + c''8 c''8 bes'8. bes'16 bes'8 ( a'4 ) a''16 a''16 | + a''8 g''8 g''8. g''16 g''8 ( f''8 ) r8 f''8 | + } + + \new Staff = "violinoII" \with { instrumentName = "Violino II." } + + { + \time 4/4 + \partial 8 r16 f'16 | + f'8. g'16 g'4 a'4 r8 d''16 d''16 | + e''8 a'8 cis''8. d''16 d''4 r8 f''16 g''16 | + a''8 a''8 d''8. d''16 g'8 g'8 c''8. c''16 | + f'8. f''16 bes''16 ( a''16 ) g''16 ( f''16 ) e''8 e''4 e''16 e''16 | + a'8 fis''8 g''8 a''8 d''8 d''4 d''16 d''16 | + g'8 e''8 f''8 g''8 c''8 c''4 cis''16 cis''16 | + d''8 d''8 e''8. e''16 e''8 a'8 r8 d''8 | + } >> - \new Staff = "violone" { - \set Staff.instrumentName = \markup { - \center-column { - Violone, - \line { e Cembalo. } - } + \new Staff = "violone" \with { + instrumentName = \markup { + \center-column { Violone, \line { e Cembalo. } } } + } + + { \time 4/4 \clef bass - \partial 8 - r16 d16 | + \partial 8 r16 d16 | d4 bes,4 a,4 f4 | g8 f16 g16 a8 a,8 d4 d'4 ~ | d'8 c'8 b4 c'8 c'16 bes16 a4 | @@ -83,6 +80,7 @@ extendOff = \bassFigureExtendersOff fis8 d8 e8 fis8 g8 g,4 g16 f16 | e8 c8 d8 e8 f8 f,4 a,8 | b,4 cis4 d4 r8 d'8 | + } \new FiguredBass \figuremode { @@ -98,7 +96,6 @@ extendOff = \bassFigureExtendersOff <6>4 <6->8 <6 5->8 <5 4->8 \extendOn <5 3>4 \extendOff <5 _+>8 | <7>8 <6>8 <5>4 <9 4>8 <8 3>8 s4 | } - >> \layout { diff --git a/Documentation/snippets/heavily-customized-polymetric-time-signatures.ly b/Documentation/snippets/heavily-customized-polymetric-time-signatures.ly index 53d7f2120e..79bb34efc0 100644 --- a/Documentation/snippets/heavily-customized-polymetric-time-signatures.ly +++ b/Documentation/snippets/heavily-customized-polymetric-time-signatures.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.18.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "contemporary-notation, percussion, real-music, rhythms" @@ -19,7 +20,6 @@ is the template of a real Balkan song!). } % begin verbatim melody = \relative c'' { - \set Staff.instrumentName = #"Bb Sop." \key g \major \compoundMeter #'((3 8) (2 8) (2 8) (3 8) (2 8) (2 8) (2 8) (2 8) (3 8) (2 8) (2 8)) @@ -28,13 +28,18 @@ melody = \relative c'' { c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 \break c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 \break -} +} % begin verbatim + drum = \new DrumStaff \drummode { \bar ".|:" bd4.^\markup { Drums } sn4 bd \bar ";" sn4. bd4 sn \bar ";" bd sn bd4. sn4 bd \bar ":|." } + \new Staff \with { + instrumentName = \markup { \concat { "B" \flat " Sop." } } + } + { \melody \drum diff --git a/Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly b/Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly index 5e43ce5333..b515ee3282 100644 --- a/Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly +++ b/Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.18.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "expressive-marks, tweaks-and-overrides, version-specific" @@ -57,7 +58,8 @@ not at the center of pp. \paper { ragged-right = ##f indent = 2.5\cm -} +} % begin verbatim + % Solution 1: Using a simple markup with a particular halign value % Drawback: It's a markup, not a dynamic command, so \dynamicDown @@ -120,27 +122,28 @@ semppMII = #:italic "sempre" #:dynamic "pp"))) -\context StaffGroup << - \context Staff = "s" << - \set Staff.instrumentName = #"Normal" +\new StaffGroup << + \new Staff = "s" \with { instrumentName = \markup \column { Normal } } + << \relative c'' { - \override Staff.InstrumentName.self-alignment-X = #LEFT \key es \major c4\pp c\p c c | c\ff c c\pp c } >> - \context Staff = "sMarkup" << - \set Staff.instrumentName = \markup \column { Normal markup } + \new Staff = "sMarkup" \with { + instrumentName = \markup \column { Normal markup } + } + << \relative c'' { - \override Staff.InstrumentName.self-alignment-X = #LEFT \key es \major c4-\semppMarkup c\p c c | c\ff c c-\semppMarkup c } >> - \context Staff = "sK" << - \set Staff.instrumentName = \markup \column { Explicit shifting } + \new Staff = "sK" \with { + instrumentName = \markup \column { Explicit shifting } + } + << \relative c'' { - \override Staff.InstrumentName.self-alignment-X = #LEFT \key es \major \once \override DynamicText.X-offset = #-9.2 c4\semppK c\p c c @@ -149,34 +152,38 @@ semppMII = c4\semppK c } >> - \context Staff = "sT" << - \set Staff.instrumentName = \markup \column { Right padding } + \new Staff = "sT" \with { + instrumentName = \markup \column { Right padding } + } + << \relative c'' { - \override Staff.InstrumentName.self-alignment-X = #LEFT \key es \major c4\semppT c\p c c | c\ff c c\semppT c } >> - \context Staff = "sM" << - \set Staff.instrumentName = \markup \column { Setting dimension "to zero" } + \new Staff = "sM" \with { + instrumentName = \markup \column { Set dimension "to zero" } + } + << \relative c'' { - \override Staff.InstrumentName.self-alignment-X = #LEFT \key es \major c4\semppM c\p c c | c\ff c c\semppM c } >> - \context Staff = "sG" << - \set Staff.instrumentName = \markup \column { Shifting inside dynamics } + \new Staff = "sG" \with { + instrumentName = \markup \column { Shift inside dynamics} + } + << \relative c'' { - \override Staff.InstrumentName.self-alignment-X = #LEFT \key es \major c4\semppG c\p c c | c\ff c c\semppG c } >> - \context Staff = "sMII" << - \set Staff.instrumentName = \markup \column { Alignment inside dynamics } + \new Staff = "sMII" \with { + instrumentName = \markup \column { Alignment inside dynamics } + } + << \relative c'' { - \override Staff.InstrumentName.self-alignment-X = #LEFT \key es \major % Setting to ##f (false) gives the same result \override DynamicText.X-offset = #0 @@ -184,3 +191,5 @@ semppMII = } >> >> + +\layout { \override Staff.InstrumentName.self-alignment-X = #LEFT } diff --git a/Documentation/snippets/jazz-combo-template.ly b/Documentation/snippets/jazz-combo-template.ly index 9d0dc82fc3..f16a6970a0 100644 --- a/Documentation/snippets/jazz-combo-template.ly +++ b/Documentation/snippets/jazz-combo-template.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.18.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "fretted-strings, keyboards, percussion, real-music, template" @@ -29,7 +30,8 @@ music is within a @code{\\transpose} section. \column { "LilyPond example file by Amelie Zapf," "Berlin 07/07/2003" - } + } % begin verbatim + } } % To make the example display in the documentation @@ -74,7 +76,6 @@ trpHarmony = \transpose c' d { } trumpet = { \global - \set Staff.instrumentName = #"Trumpet" \clef treble << \trpt @@ -91,7 +92,6 @@ altoHarmony = \transpose c' a { } altoSax = { \global - \set Staff.instrumentName = #"Alto Sax" \clef treble << \alto @@ -112,7 +112,6 @@ bariHarmony = \transpose c' a \chordmode { } bariSax = { \global - \set Staff.instrumentName = #"Bari Sax" \clef treble << \bari @@ -129,7 +128,6 @@ tboneHarmony = \chordmode { } trombone = { \global - \set Staff.instrumentName = #"Trombone" \clef bass << \tbone @@ -153,7 +151,6 @@ gtrHarmony = \chordmode { } guitar = { \global - \set Staff.instrumentName = #"Guitar" \clef treble << \gtr @@ -186,7 +183,6 @@ lhLower = \relative c { PianoRH = { \clef treble \global - \set Staff.midiInstrument = #"acoustic grand" << \new Voice = "one" \rhUpper \new Voice = "two" \rhLower @@ -195,7 +191,6 @@ PianoRH = { PianoLH = { \clef bass \global - \set Staff.midiInstrument = #"acoustic grand" << \new Voice = "one" \lhUpper \new Voice = "two" \lhLower @@ -204,7 +199,6 @@ PianoLH = { piano = { << - \set PianoStaff.instrumentName = #"Piano" \new Staff = "upper" \PianoRH \new Staff = "lower" \PianoLH >> @@ -217,7 +211,6 @@ Bass = \relative c { } bass = { \global - \set Staff.instrumentName = #"Bass" \clef bass << \Bass @@ -241,7 +234,6 @@ down = \drummode { drumContents = { \global << - \set DrumStaff.instrumentName = #"Drums" \new DrumVoice \up \new DrumVoice \down >> @@ -252,19 +244,31 @@ drumContents = { \score { << \new StaffGroup = "horns" << - \new Staff = "trumpet" \trumpet - \new Staff = "altosax" \altoSax - \new ChordNames = "barichords" \bariHarmony - \new Staff = "barisax" \bariSax - \new Staff = "trombone" \trombone + \new Staff = "trumpet" \with { instrumentName = #"Trumpet" } + \trumpet + \new Staff = "altosax" \with { instrumentName = #"Alto Sax" } + \altoSax + \new ChordNames = "barichords" \with { instrumentName = #"Trumpet" } + \bariHarmony + \new Staff = "barisax" \with { instrumentName = #"Bari Sax" } + \bariSax + \new Staff = "trombone" \with { instrumentName = #"Trombone" } + \trombone >> \new StaffGroup = "rhythm" << \new ChordNames = "chords" \gtrHarmony - \new Staff = "guitar" \guitar - \new PianoStaff = "piano" \piano - \new Staff = "bass" \bass - \new DrumStaff \drumContents + \new Staff = "guitar" \with { instrumentName = #"Guitar" } + \guitar + \new PianoStaff = "piano" \with { + instrumentName = #"Piano" + midiInstrument = #"acoustic grand" + } + \piano + \new Staff = "bass" \with { instrumentName = #"Bass" } + \bass + \new DrumStaff \with { instrumentName = #"Drums" } + \drumContents >> >> \layout { diff --git a/Documentation/snippets/moving-the-ends-of-hairpins.ly b/Documentation/snippets/moving-the-ends-of-hairpins.ly new file mode 100644 index 0000000000..7447284038 --- /dev/null +++ b/Documentation/snippets/moving-the-ends-of-hairpins.ly @@ -0,0 +1,38 @@ +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.55 +\version "2.19.55" + +\header { + lsrtags = "expressive-marks" + + texidoc = " +The ends of hairpins may be offset by setting the @code{shorten-pair} +property of the @code{Hairpin} object. Positive values move endpoints +to the right, negative to the left. Unlike the @code{minimum-length} +property, this property only affects the appearance of the hairpin; it +does not adjust horizontal spacing (including the position of bounding +dynamics). This method is thus suitable for fine-tuning a hairpin +within its allotted space. + +" + doctitle = "Moving the ends of hairpins" +} % begin verbatim + + +{ + c'1~\< + c'2~ c'\! + \once \override Hairpin.shorten-pair = #'(2 . 2) + c'1~\< + c'2~ c'\! + \once \override Hairpin.shorten-pair = #'(-2 . -2) + c'1~\< + c'2~ c'\! + c'1~\p-\tweak shorten-pair #'(2 . 0)\< + c'2~ c'\ffff +} diff --git a/Documentation/snippets/new/adding-drum-parts.ly b/Documentation/snippets/new/adding-drum-parts.ly new file mode 100644 index 0000000000..9c90056815 --- /dev/null +++ b/Documentation/snippets/new/adding-drum-parts.ly @@ -0,0 +1,50 @@ +\version "2.19.56" + +\header { + lsrtags = "percussion, preparing-parts, really-simple, rhythms, specific-notation" + + texidoc = " +Using the powerful pre-configured tools such as the @code{\\drummode} +function and the @code{DrumStaff} context, inputting drum parts is +quite easy: drums are placed at their own staff positions (with a +special clef symbol) and have note heads according to the drum. +Attaching an extra symbol to the drum or restricting the number of +lines is possible. + +" + doctitle = "Adding drum parts" +} % begin verbatim + +drh = \drummode { + cymc4.^"crash" hhc16^"h.h." hh hhc8 hho hhc8 hh16 hh + hhc4 r4 r2 + } +drl = \drummode { + bd4 sn8 bd bd4 << bd ss >> + bd8 tommh tommh bd toml toml bd tomfh16 tomfh + } +timb = \drummode { + timh4 ssh timl8 ssh r timh r4 + ssh8 timl r4 cb8 cb + } + +\score { + << + \new DrumStaff \with { + instrumentName = #"timbales" + drumStyleTable = #timbales-style + \override StaffSymbol.line-count = #2 + \override BarLine.bar-extent = #'(-1 . 1) + } + << + \timb + >> + \new DrumStaff \with { instrumentName = #"drums" } + << + \new DrumVoice { \stemUp \drh } + \new DrumVoice { \stemDown \drl } + >> + >> + \layout { } + \midi { \tempo 4 = 120 } +} diff --git a/Documentation/snippets/new/aligning-and-centering-instrument-names.ly b/Documentation/snippets/new/aligning-and-centering-instrument-names.ly new file mode 100644 index 0000000000..1d89f9434e --- /dev/null +++ b/Documentation/snippets/new/aligning-and-centering-instrument-names.ly @@ -0,0 +1,62 @@ +\version "2.19.56" + +\header { + lsrtags = "paper-and-layout, text, titles" + + texidoc = " +The horizontal alignment of instrument names is tweaked by changing the +@code{Staff.InstrumentName #'self-alignment-X} property. The +@code{\\layout} variables @code{indent} and @code{short-indent} define +the space in which the instrument names are aligned before the first +and the following systems, respectively. + +" + doctitle = "Aligning and centering instrument names" +} % begin verbatim + +\paper { left-margin = 3\cm } + +\score { + \new StaffGroup << + + \new Staff \with { + \override InstrumentName.self-alignment-X = #LEFT + instrumentName = \markup \left-column { + "Left aligned" + "instrument name" + } + shortInstrumentName = "Left" + } + + { c''1 \break c''1 } + + \new Staff \with { + \override InstrumentName.self-alignment-X = #CENTER + instrumentName = \markup \center-column { + Centered + "instrument name" + } + shortInstrumentName = "Centered" + } + + { g'1 g'1} + + \new Staff \with { + \override InstrumentName.self-alignment-X = #RIGHT + instrumentName = \markup \right-column { + "Right aligned" + "instrument name" + } + shortInstrumentName = "Right" + } + + { e'1 e'1 } + + >> + + \layout { + ragged-right = ##t + indent = 4\cm + short-indent = 2\cm + } +} diff --git a/Documentation/snippets/new/analysis-brackets-with-labels.ly b/Documentation/snippets/new/analysis-brackets-with-labels.ly new file mode 100644 index 0000000000..93f65ea49d --- /dev/null +++ b/Documentation/snippets/new/analysis-brackets-with-labels.ly @@ -0,0 +1,38 @@ +\version "2.19.55" + +\header { + lsrtags = "editorial-annotations, tweaks-and-overrides" + + texidoc = " +Text may be added to analysis brackets through the @code{text} property +of the @code{HorizontalBracketText} grob. Adding different texts to +brackets beginning at the same time requires the @code{\tweak} command. +Bracket text will be parenthesized after a line break. + +" + doctitle = "Analysis brackets with labels" +} + +\layout { + \context { + \Voice + \consists "Horizontal_bracket_engraver" + \override HorizontalBracket.direction = #UP + } +} + +{ + \once\override HorizontalBracketText.text = "a" + c''\startGroup d''\stopGroup + \once\override HorizontalBracketText.text = "a'" + e''\startGroup d''\stopGroup + c'' + -\tweak HorizontalBracketText.text \markup \bold \huge "b" \startGroup + -\tweak HorizontalBracketText.text "a" \startGroup + d''\stopGroup + e''-\tweak HorizontalBracketText.text "a'" \startGroup + d''\stopGroup\stopGroup + c''-\tweak HorizontalBracketText.text foo \startGroup d'' e'' f'' + \break + g'' a'' b'' c'''\stopGroup +} diff --git a/Documentation/snippets/new/clip-systems.ly b/Documentation/snippets/new/clip-systems.ly new file mode 100644 index 0000000000..e099aae47e --- /dev/null +++ b/Documentation/snippets/new/clip-systems.ly @@ -0,0 +1,88 @@ +\version "2.19.56" + +\header { + lsrtags = "paper-and-layout" + + texidoc = " +This code shows how to clip (extract) snippets from a full score. + +This file needs to be run separately with @code{-dclip-systems}; the +snippets page may not adequately show the results. + +The result will be files named +@samp{base-from-start-to-end[-count].eps}. + + +If system starts and ends are included, they include extents of the +System grob, e.g., instrument names. + + +Grace notes at the end point of the region are not included. + + +Regions can span multiple systems. In this case, multiple EPS files +are generated. + +" + doctitle = "Clip systems" +} % begin verbatim + +#(ly:set-option 'clip-systems) +#(define output-suffix "1") + +origScore = \score { + \relative c' { + \new Staff \with { instrumentName = "Instrument" } + c1 + d1 + \grace c16 e1 + \key d \major + f1 \break + \clef bass + g,1 + fis1 + } +} + +\book { + \score { + \origScore + \layout { + % Each clip-region is a (START . END) pair + % where both are rhythmic-locations. + + % (make-rhythmic-locations BAR-NUMBER NUM DEN) + % means NUM/DEN whole-notes into bar numbered BAR-NUMBER + + clip-regions = #(list + (cons + (make-rhythmic-location 2 0 1) + (make-rhythmic-location 4 0 1)) + + (cons + (make-rhythmic-location 0 0 1) + (make-rhythmic-location 4 0 1)) + + (cons + (make-rhythmic-location 0 0 1) + (make-rhythmic-location 6 0 1)) + ) + } + } +} + +#(ly:set-option 'clip-systems #f) +#(define output-suffix #f) + +\book { + \score { \origScore } + \markup { \bold \fontsize #6 clips } + \score { + \lyrics { + \markup { from-2.0.1-to-4.0.1-clip.eps } + \markup { + \epsfile #X #30.0 #(format #f "~a-1-from-2.0.1-to-4.0.1-clip.eps" + (ly:parser-output-name)) } + } + } +} diff --git a/Documentation/snippets/new/combining-two-parts-on-the-same-staff.ly b/Documentation/snippets/new/combining-two-parts-on-the-same-staff.ly new file mode 100644 index 0000000000..341ac8d3af --- /dev/null +++ b/Documentation/snippets/new/combining-two-parts-on-the-same-staff.ly @@ -0,0 +1,65 @@ +\version "2.19.56" + +\header { + lsrtags = "simultaneous-notes, syntax-and-expressions, text" + + texidoc = " +The part combiner tool ( @code{\\partcombine} command ) allows the +combination of several different parts on the same staff. Text +directions such as @qq{solo} or @qq{a2} are added by default; to remove +them, simply set the property @code{printPartCombineTexts} to @code{f}. +For vocal scores (hymns), there is no need to add @qq{solo/a2} texts, +so they should be switched off. However, it might be better not to use +it if there are any solos, as they won't be indicated. In such cases, +standard polyphonic notation may be preferable. + +This snippet presents the three ways two parts can be printed on a same +staff: standard polyphony, @code{\\partcombine} without texts, and +@code{\\partcombine} with texts. + + + + +" + doctitle = "Combining two parts on the same staff" +} % begin verbatim + +%% Combining pedal notes with clef changes + +musicUp = \relative c'' { + \time 4/4 + a4 c4.( g8) a4 | + g4 e' g,( a8 b) | + c b a2. +} + +musicDown = \relative c'' { + g4 e4.( d8) c4 | + r2 g'4( f8 e) | + d2 \stemDown a +} + +\score { + << + \new Staff \with { instrumentName = #"Standard polyphony" } + + << \musicUp \\ \musicDown >> + + \new Staff \with { + instrumentName = #"PartCombine without text" + printPartCombineTexts = ##f + } + + \partcombine \musicUp \musicDown + + \new Staff \with { instrumentName = #"PartCombine with text" } + \partcombine \musicUp \musicDown + >> + \layout { + indent = 6.0\cm + \context { + \Score + \override SystemStartBar.collapse-height = #30 + } + } +} diff --git a/Documentation/snippets/new/figured-bass-headword.ly b/Documentation/snippets/new/figured-bass-headword.ly new file mode 100644 index 0000000000..4f29b597aa --- /dev/null +++ b/Documentation/snippets/new/figured-bass-headword.ly @@ -0,0 +1,101 @@ +\version "2.19.56" + +\header { + lsrtags = "headword" + + texidoc = " +Figured bass headword + +" + doctitle = "Figured bass headword" +} % begin verbatim + +% NR 2.7.3 Figured bass + +% Arcangelo Corelli, 12 Sonate da Camera, Op. 2 +% Sonata II, Allemanda +% measures 1 - 88 +% Coded by Neil Puttock; modified by Carl Sorensen + +extendOn = \bassFigureExtendersOn +extendOff = \bassFigureExtendersOff + +\score { + \new StaffGroup << + \new GrandStaff << + \new Staff = "violinoI" \with { instrumentName = "Violino I." } + + { + \time 4/4 + \mark \markup { \italic Adagio. } + \partial 8 r16 a'16 | + a'8. [ d''16 d''8. e''16 ] cis''8 a'4 a''16 bes''16 | + cis''8 d''16 ( e'' ) e''8. d''16 d''4 r8 d''16 e''16 | + f''8 f''4 g''16 ( f''16 ) e''8 e''4 f''16 ( e''16 ) | + d''8. d''16 g''16 ( f''16 ) e''16 ( d''16 ) cis''8 + cis''4 cis''16 cis''16 | + d''8 d''8 c''8. c''16 c''8 ( b'4 ) b'16 b'16 | + c''8 c''8 bes'8. bes'16 bes'8 ( a'4 ) a''16 a''16 | + a''8 g''8 g''8. g''16 g''8 ( f''8 ) r8 f''8 | + } + + \new Staff = "violinoII" \with { instrumentName = "Violino II." } + + { + \time 4/4 + \partial 8 r16 f'16 | + f'8. g'16 g'4 a'4 r8 d''16 d''16 | + e''8 a'8 cis''8. d''16 d''4 r8 f''16 g''16 | + a''8 a''8 d''8. d''16 g'8 g'8 c''8. c''16 | + f'8. f''16 bes''16 ( a''16 ) g''16 ( f''16 ) e''8 e''4 e''16 e''16 | + a'8 fis''8 g''8 a''8 d''8 d''4 d''16 d''16 | + g'8 e''8 f''8 g''8 c''8 c''4 cis''16 cis''16 | + d''8 d''8 e''8. e''16 e''8 a'8 r8 d''8 | + } + + >> + + \new Staff = "violone" \with { + instrumentName = \markup { + \center-column { Violone, \line { e Cembalo. } } + } + } + + { + \time 4/4 + \clef bass + \partial 8 r16 d16 | + d4 bes,4 a,4 f4 | + g8 f16 g16 a8 a,8 d4 d'4 ~ | + d'8 c'8 b4 c'8 c'16 bes16 a4 | + bes8 bes16 a16 g4 a8 a,4 a16 g16 | + fis8 d8 e8 fis8 g8 g,4 g16 f16 | + e8 c8 d8 e8 f8 f,4 a,8 | + b,4 cis4 d4 r8 d'8 | + + } + + \new FiguredBass \figuremode { + \set figuredBassAlterationDirection = #RIGHT + \set figuredBassPlusDirection = #RIGHT + \override BassFigureAlignment.stacking-dir = #DOWN + s8 | + s4 <6>4 <_+>4 <6>4 | + <6 4\+ 2>8 <6>8 <_+> s8 s2 | + <5>8 <6 4>8 <6 5>4 s4 <5>8 <6>8 | + s4 <6 5 _-> <_+>2 | + <6>8 <_+>8 <6>8 <6 5>8 <5 4>8 \extendOn <5 _!>8 \extendOff s4 | + <6>4 <6->8 <6 5->8 <5 4->8 \extendOn <5 3>4 \extendOff <5 _+>8 | + <7>8 <6>8 <5>4 <9 4>8 <8 3>8 s4 | + } + >> + + \layout { + \context { + \Score + \override RehearsalMark.break-align-symbols = #'(time-signature) + \override RehearsalMark.self-alignment-X = #LEFT + \override TimeSignature.break-align-anchor-alignment = #LEFT + } + } +} diff --git a/Documentation/snippets/new/heavily-customized-polymetric-time-signatures.ly b/Documentation/snippets/new/heavily-customized-polymetric-time-signatures.ly new file mode 100644 index 0000000000..ad57ab2561 --- /dev/null +++ b/Documentation/snippets/new/heavily-customized-polymetric-time-signatures.ly @@ -0,0 +1,38 @@ +\version "2.19.56" + +\header { + lsrtags = "contemporary-notation, percussion, real-music, rhythms" + + texidoc = " +Though the polymetric time signature shown was not the most essential +item here, it has been included to show the beat of this piece (which +is the template of a real Balkan song!). + +" + doctitle = "Heavily customized polymetric time signatures" +} % begin verbatim + +melody = \relative c'' { + \key g \major + \compoundMeter #'((3 8) (2 8) (2 8) (3 8) (2 8) (2 8) + (2 8) (2 8) (3 8) (2 8) (2 8)) + c8 c c d4 c8 c b c b a4 g fis8 e d c b' c d e4-^ fis8 g \break + c,4. d4 c4 d4. c4 d c2 d4. e4-^ d4 + c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 \break + c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 + c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 \break +} + +drum = \new DrumStaff \drummode { + \bar ".|:" bd4.^\markup { Drums } sn4 bd \bar ";" sn4. + bd4 sn \bar ";" bd sn bd4. sn4 bd \bar ":|." +} + + \new Staff \with { + instrumentName = \markup { \concat { "B" \flat " Sop." } } + } + +{ + \melody + \drum +} diff --git a/Documentation/snippets/new/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly b/Documentation/snippets/new/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly new file mode 100644 index 0000000000..912cad8ad7 --- /dev/null +++ b/Documentation/snippets/new/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly @@ -0,0 +1,187 @@ +\version "2.19.56" + +\header { + lsrtags = "expressive-marks, tweaks-and-overrides, version-specific" + + texidoc = " +Some dynamic expressions involve additional text, like @qq{sempre pp}. +Since dynamics are usually centered under the note, the \\pp would be +displayed way after the note it applies to. + +To correctly align the @qq{sempre pp} horizontally, so that it is +aligned as if it were only the \\pp, there are several approaches: + +* Simply use @code{\\once\\override DynamicText.X-offset = #-9.2} +before the note with the dynamics to manually shift it to the correct +position. Drawback: This has to be done manually each time you use that +dynamic markup... + +* Add some padding (@code{#:hspace 7.1}) into the definition of your +custom dynamic mark, so that after lilypond center-aligns it, it is +already correctly aligned. Drawback: The padding really takes up that +space and does not allow any other markup or dynamics to be shown in +that position. + +* Shift the dynamic script @code{\\once\\override ... .X-offset = ..}. +Drawback: @code{\\once\\override} is needed for every invocation! + +* Set the dimensions of the additional text to 0 (using +@code{#:with-dimensions '(0 . 0) '(0 . 0)}). Drawback: To LilyPond +@qq{sempre} has no extent, so it might put other stuff there and create +collisions (which are not detected by the collision detection!). Also, +there seems to be some spacing, so it's not exactly the same alignment +as without the additional text + +* Add an explicit shifting directly inside the scheme function for the +dynamic-script. + +* Set an explicit alignment inside the dynamic-script. By default, this +won't have any effect, only if one sets X-offset! Drawback: One needs +to set @code{DynamicText.X-offset}, which will apply to all dynamic +texts! Also, it is aligned at the right edge of the additional text, +not at the center of pp. + + + + +" + doctitle = "Horizontally aligning custom dynamics (e.g. \"sempre pp\" \"piu f\" \"subito p\")" +} % begin verbatim + +\paper { + ragged-right = ##f + indent = 2.5\cm +} + +% Solution 1: Using a simple markup with a particular halign value +% Drawback: It's a markup, not a dynamic command, so \dynamicDown +% etc. will have no effect +semppMarkup = \markup { \halign #1.4 \italic "sempre" \dynamic "pp" } + +% Solution 2: Using a dynamic script & shifting with +% \once \override ...X-offset = .. +% Drawback: \once \override needed for every invocation +semppK = +#(make-dynamic-script + (markup #:line + (#:normal-text + #:italic "sempre" + #:dynamic "pp"))) + +% Solution 3: Padding the dynamic script so the center-alignment +% puts it at the correct position +% Drawback: the padding really reserves the space, nothing else can be there +semppT = +#(make-dynamic-script + (markup #:line + (#:normal-text + #:italic "sempre" + #:dynamic "pp" + #:hspace 7.1))) + +% Solution 4: Dynamic, setting the dimensions of the additional text to 0 +% Drawback: To lilypond "sempre" has no extent, so it might put +% other stuff there => collisions +% Drawback: Also, there seems to be some spacing, so it's not exactly the +% same alignment as without the additional text +semppM = +#(make-dynamic-script + (markup #:line + (#:with-dimensions '(0 . 0) '(0 . 0) + #:right-align + #:normal-text + #:italic "sempre" + #:dynamic "pp"))) + +% Solution 5: Dynamic with explicit shifting inside the scheme function +semppG = +#(make-dynamic-script + (markup #:hspace 0 + #:translate '(-18.85 . 0) + #:line (#:normal-text + #:italic "sempre" + #:dynamic "pp"))) + +% Solution 6: Dynamic with explicit alignment. This has only effect +% if one sets X-offset! +% Drawback: One needs to set DynamicText.X-offset! +% Drawback: Aligned at the right edge of the additional text, +% not at the center of pp +semppMII = +#(make-dynamic-script + (markup #:line (#:right-align + #:normal-text + #:italic "sempre" + #:dynamic "pp"))) + +\new StaffGroup << + \new Staff = "s" \with { instrumentName = \markup \column { Normal } } + << + \relative c'' { + \key es \major + c4\pp c\p c c | c\ff c c\pp c + } + >> + \new Staff = "sMarkup" \with { + instrumentName = \markup \column { Normal markup } + } + << + \relative c'' { + \key es \major + c4-\semppMarkup c\p c c | c\ff c c-\semppMarkup c + } + >> + \new Staff = "sK" \with { + instrumentName = \markup \column { Explicit shifting } + } + << + \relative c'' { + \key es \major + \once \override DynamicText.X-offset = #-9.2 + c4\semppK c\p c c + c4\ff c + \once \override DynamicText.X-offset = #-9.2 + c4\semppK c + } + >> + \new Staff = "sT" \with { + instrumentName = \markup \column { Right padding } + } + << + \relative c'' { + \key es \major + c4\semppT c\p c c | c\ff c c\semppT c + } + >> + \new Staff = "sM" \with { + instrumentName = \markup \column { Set dimension "to zero" } + } + << + \relative c'' { + \key es \major + c4\semppM c\p c c | c\ff c c\semppM c + } + >> + \new Staff = "sG" \with { + instrumentName = \markup \column { Shift inside dynamics} + } + << + \relative c'' { + \key es \major + c4\semppG c\p c c | c\ff c c\semppG c + } + >> + \new Staff = "sMII" \with { + instrumentName = \markup \column { Alignment inside dynamics } + } + << + \relative c'' { + \key es \major + % Setting to ##f (false) gives the same result + \override DynamicText.X-offset = #0 + c4\semppMII c\p c c | c\ff c c\semppMII c + } + >> +>> + +\layout { \override Staff.InstrumentName.self-alignment-X = #LEFT } diff --git a/Documentation/snippets/new/jazz-combo-template.ly b/Documentation/snippets/new/jazz-combo-template.ly new file mode 100644 index 0000000000..c1543ca923 --- /dev/null +++ b/Documentation/snippets/new/jazz-combo-template.ly @@ -0,0 +1,276 @@ +\version "2.19.56" + +\header { + lsrtags = "fretted-strings, keyboards, percussion, real-music, template" + + texidoc = " +This is quite an advanced template, for a jazz ensemble. Note that all +instruments are notated in @code{\\key c \\major}. This refers to the +key in concert pitch; the key will be automatically transposed if the +music is within a @code{\\transpose} section. + +" + doctitle = "Jazz combo template" +} % begin verbatim + +\header { + title = "Song" + subtitle = "(tune)" + composer = "Me" + meter = "moderato" + piece = "Swing" + tagline = \markup { + \column { + "LilyPond example file by Amelie Zapf," + "Berlin 07/07/2003" + } + } +} +% To make the example display in the documentation +\paper { + paper-width = 130 +} +%#(set-global-staff-size 16) +\include "english.ly" + +%%%%%%%%%%%% Some macros %%%%%%%%%%%%%%%%%%% + +sl = { + \override NoteHead.style = #'slash + \hide Stem +} +nsl = { + \revert NoteHead.style + \undo \hide Stem +} +crOn = \override NoteHead.style = #'cross +crOff = \revert NoteHead.style + +%% insert chord name style stuff here. + +jazzChords = { } + +%%%%%%%%%%%% Keys'n'thangs %%%%%%%%%%%%%%%%% + +global = { \time 4/4 } + +Key = { \key c \major } + +% ############ Horns ############ + +% ------ Trumpet ------ +trpt = \transpose c d \relative c'' { + \Key + c1 | c | c | +} +trpHarmony = \transpose c' d { + \jazzChords +} +trumpet = { + \global + \clef treble + << + \trpt + >> +} + +% ------ Alto Saxophone ------ +alto = \transpose c a \relative c' { + \Key + c1 | c | c | +} +altoHarmony = \transpose c' a { + \jazzChords +} +altoSax = { + \global + \clef treble + << + \alto + >> +} + +% ------ Baritone Saxophone ------ +bari = \transpose c a' \relative c { + \Key + c1 + c1 + \sl + d4^"Solo" d d d + \nsl +} +bariHarmony = \transpose c' a \chordmode { + \jazzChords s1 s d2:maj e:m7 +} +bariSax = { + \global + \clef treble + << + \bari + >> +} + +% ------ Trombone ------ +tbone = \relative c { + \Key + c1 | c | c +} +tboneHarmony = \chordmode { + \jazzChords +} +trombone = { + \global + \clef bass + << + \tbone + >> +} + +% ############ Rhythm Section ############# + +% ------ Guitar ------ +gtr = \relative c'' { + \Key + c1 + \sl + b4 b b b + \nsl + c1 +} +gtrHarmony = \chordmode { + \jazzChords + s1 c2:min7+ d2:maj9 +} +guitar = { + \global + \clef treble + << + \gtr + >> +} + +%% ------ Piano ------ +rhUpper = \relative c'' { + \voiceOne + \Key + c1 | c | c +} +rhLower = \relative c' { + \voiceTwo + \Key + e1 | e | e +} + +lhUpper = \relative c' { + \voiceOne + \Key + g1 | g | g +} +lhLower = \relative c { + \voiceTwo + \Key + c1 | c | c +} + +PianoRH = { + \clef treble + \global + << + \new Voice = "one" \rhUpper + \new Voice = "two" \rhLower + >> +} +PianoLH = { + \clef bass + \global + << + \new Voice = "one" \lhUpper + \new Voice = "two" \lhLower + >> +} + +piano = { + << + \new Staff = "upper" \PianoRH + \new Staff = "lower" \PianoLH + >> +} + +% ------ Bass Guitar ------ +Bass = \relative c { + \Key + c1 | c | c +} +bass = { + \global + \clef bass + << + \Bass + >> +} + +% ------ Drums ------ +up = \drummode { + \voiceOne + hh4 hh + hh4 hh + hh4 hh +} +down = \drummode { + \voiceTwo + bd4 s bd s + bd4 s bd s + bd4 s bd s +} + +drumContents = { + \global + << + \new DrumVoice \up + \new DrumVoice \down + >> +} + +%%%%%%%%% It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%% + +\score { + << + \new StaffGroup = "horns" << + \new Staff = "trumpet" \with { instrumentName = #"Trumpet" } + \trumpet + \new Staff = "altosax" \with { instrumentName = #"Alto Sax" } + \altoSax + \new ChordNames = "barichords" \with { instrumentName = #"Trumpet" } + \bariHarmony + \new Staff = "barisax" \with { instrumentName = #"Bari Sax" } + \bariSax + \new Staff = "trombone" \with { instrumentName = #"Trombone" } + \trombone + >> + + \new StaffGroup = "rhythm" << + \new ChordNames = "chords" \gtrHarmony + \new Staff = "guitar" \with { instrumentName = #"Guitar" } + \guitar + \new PianoStaff = "piano" \with { + instrumentName = #"Piano" + midiInstrument = #"acoustic grand" + } + \piano + \new Staff = "bass" \with { instrumentName = #"Bass" } + \bass + \new DrumStaff \with { instrumentName = #"Drums" } + \drumContents + >> + >> + \layout { + \context { \Staff \RemoveEmptyStaves } + \context { + \Score + \override BarNumber.padding = #3 + \override RehearsalMark.padding = #2 + skipBars = ##t + } + } + \midi { } +} diff --git a/Documentation/snippets/new/moving-the-ends-of-hairpins.ly b/Documentation/snippets/new/moving-the-ends-of-hairpins.ly new file mode 100644 index 0000000000..6c8438cddf --- /dev/null +++ b/Documentation/snippets/new/moving-the-ends-of-hairpins.ly @@ -0,0 +1,30 @@ +\version "2.19.55" + +\header { + lsrtags = "expressive-marks" + + texidoc = " +The ends of hairpins may be offset by setting the @code{shorten-pair} +property of the @code{Hairpin} object. Positive values move endpoints +to the right, negative to the left. Unlike the @code{minimum-length} +property, this property only affects the appearance of the hairpin; it +does not adjust horizontal spacing (including the position of bounding +dynamics). This method is thus suitable for fine-tuning a hairpin +within its allotted space. + +" + doctitle = "Moving the ends of hairpins" +} + +{ + c'1~\< + c'2~ c'\! + \once \override Hairpin.shorten-pair = #'(2 . 2) + c'1~\< + c'2~ c'\! + \once \override Hairpin.shorten-pair = #'(-2 . -2) + c'1~\< + c'2~ c'\! + c'1~\p-\tweak shorten-pair #'(2 . 0)\< + c'2~ c'\ffff +} diff --git a/Documentation/snippets/new/orchestra,-choir-and-piano-template.ly b/Documentation/snippets/new/orchestra,-choir-and-piano-template.ly new file mode 100644 index 0000000000..6e784d4264 --- /dev/null +++ b/Documentation/snippets/new/orchestra,-choir-and-piano-template.ly @@ -0,0 +1,153 @@ +\version "2.19.56" + +\header { + lsrtags = "pitches, staff-notation, template, vocal-music" + + texidoc = " +This template demonstrates the use of nested @code{StaffGroup} and +@code{GrandStaff} contexts to sub-group instruments of the same type +together, and a way to use @code{\\transpose} so that variables hold +music for transposing instruments at concert pitch. + +" + doctitle = "Orchestra choir and piano template" +} % begin verbatim + +#(set-global-staff-size 17) +\paper { + indent = 3.0\cm % add space for instrumentName + short-indent = 1.5\cm % add less space for shortInstrumentName +} + +fluteMusic = \relative c' { \key g \major g'1 b } + +% Pitches as written on a manuscript for Clarinet in A +% are transposed to concert pitch. + +clarinetMusic = \transpose c' a + \relative c'' { \key bes \major bes1 d } + +trumpetMusic = \relative c { \key g \major g''1 b } + +% Key signature is often omitted for horns + +hornMusic = \transpose c' f + \relative c { d'1 fis } + +percussionMusic = \relative c { \key g \major g1 b } + +sopranoMusic = \relative c'' { \key g \major g'1 b } + +sopranoLyrics = \lyricmode { Lyr -- ics } + +altoIMusic = \relative c' { \key g \major g'1 b } + +altoIIMusic = \relative c' { \key g \major g'1 b } + +altoILyrics = \sopranoLyrics + +altoIILyrics = \lyricmode { Ah -- ah } + +tenorMusic = \relative c' { \clef "treble_8" \key g \major g1 b } + +tenorLyrics = \sopranoLyrics + +pianoRHMusic = \relative c { \key g \major g''1 b } + +pianoLHMusic = \relative c { \clef bass \key g \major g1 b } + +violinIMusic = \relative c' { \key g \major g'1 b } + +violinIIMusic = \relative c' { \key g \major g'1 b } + +violaMusic = \relative c { \clef alto \key g \major g'1 b } + +celloMusic = \relative c { \clef bass \key g \major g1 b } + +bassMusic = \relative c { \clef "bass_8" \key g \major g,1 b } + +\score { + << + \new StaffGroup = "StaffGroup_woodwinds" << + \new Staff = "Staff_flute" \with { instrumentName = #"Flute" } + \fluteMusic + + \new Staff = "Staff_clarinet" \with { + instrumentName = \markup { \concat { "Clarinet in B" \flat } } + } + + % Declare that written Middle C in the music + % to follow sounds a concert B flat, for + % output using sounded pitches such as MIDI. + %\transposition bes + + % Print music for a B-flat clarinet + \transpose bes c' \clarinetMusic + >> + + \new StaffGroup = "StaffGroup_brass" << + \new Staff = "Staff_hornI" \with { instrumentName = #"Horn in F" } + % \transposition f + \transpose f c' \hornMusic + + \new Staff = "Staff_trumpet" \with { instrumentName = #"Trumpet in C" } + \trumpetMusic + + >> + \new RhythmicStaff = "RhythmicStaff_percussion" + \with { instrumentName = #"Percussion" } + << + \percussionMusic + >> + \new PianoStaff \with { instrumentName = #"Piano" } + << + \new Staff { \pianoRHMusic } + \new Staff { \pianoLHMusic } + >> + \new ChoirStaff = "ChoirStaff_choir" << + \new Staff = "Staff_soprano" \with { instrumentName = #"Soprano" } + \new Voice = "soprano" + \sopranoMusic + + \new Lyrics \lyricsto "soprano" { \sopranoLyrics } + \new GrandStaff = "GrandStaff_altos" + \with { \accepts Lyrics } << + \new Staff = "Staff_altoI" \with { instrumentName = #"Alto I" } + \new Voice = "altoI" + \altoIMusic + + \new Lyrics \lyricsto "altoI" { \altoILyrics } + \new Staff = "Staff_altoII" \with { instrumentName = #"Alto II" } + \new Voice = "altoII" + \altoIIMusic + + \new Lyrics \lyricsto "altoII" { \altoIILyrics } + >> + + \new Staff = "Staff_tenor" \with { instrumentName = #"Tenor" } + \new Voice = "tenor" + \tenorMusic + + \new Lyrics \lyricsto "tenor" { \tenorLyrics } + >> + \new StaffGroup = "StaffGroup_strings" << + \new GrandStaff = "GrandStaff_violins" << + \new Staff = "Staff_violinI" \with { instrumentName = #"Violin I" } + \violinIMusic + + \new Staff = "Staff_violinII" \with { instrumentName = #"Violin II" } + \violinIIMusic + >> + + \new Staff = "Staff_viola" \with { instrumentName = #"Viola" } + \violaMusic + + \new Staff = "Staff_cello" \with { instrumentName = #"Cello" } + \celloMusic + + \new Staff = "Staff_bass" \with { instrumentName = #"Double Bass" } + \bassMusic + >> + >> + \layout { } +} diff --git a/Documentation/snippets/new/piano-template-simple.ly b/Documentation/snippets/new/piano-template-simple.ly new file mode 100644 index 0000000000..33df86c58e --- /dev/null +++ b/Documentation/snippets/new/piano-template-simple.ly @@ -0,0 +1,37 @@ +\version "2.19.56" + +\header { + lsrtags = "keyboards, really-simple, template" + + texidoc = " +Here is a simple piano staff with some notes. + +" + doctitle = "Piano template (simple)" +} % begin verbatim + +upper = \relative c'' { + \clef treble + \key c \major + \time 4/4 + + a4 b c d +} + +lower = \relative c { + \clef bass + \key c \major + \time 4/4 + + a2 c +} + +\score { + \new PianoStaff \with { instrumentName = #"Piano" } + << + \new Staff = "upper" \upper + \new Staff = "lower" \lower + >> + \layout { } + \midi { } +} diff --git a/Documentation/snippets/new/quoting-another-voice-with-transposition.ly b/Documentation/snippets/new/quoting-another-voice-with-transposition.ly new file mode 100644 index 0000000000..5687876784 --- /dev/null +++ b/Documentation/snippets/new/quoting-another-voice-with-transposition.ly @@ -0,0 +1,42 @@ +\version "2.19.56" + +\header { + lsrtags = "pitches, staff-notation" + + texidoc = " +Quotations take into account the transposition of both source and +target. In this example, all instruments play sounding middle C; the +target is an instrument in F. The target part may be transposed using +@code{\\transpose}. In this case, all the pitches (including the +quoted ones) are transposed. + +" + doctitle = "Quoting another voice with transposition" +} % begin verbatim + +\addQuote clarinet { + \transposition bes + \repeat unfold 8 { d'16 d' d'8 } +} + +\addQuote sax { + \transposition es' + \repeat unfold 16 { a8 } +} + +quoteTest = { + % french horn + \transposition f + g'4 + << \quoteDuring #"clarinet" { \skip 4 } s4^"clar." >> + << \quoteDuring #"sax" { \skip 4 } s4^"sax." >> + g'4 +} + +{ + \new Staff \with { + instrumentName = \markup { \column { Horn "in F" } } + } + \quoteTest + \transpose c' d' << \quoteTest s4_"up a tone" >> +} diff --git a/Documentation/snippets/new/quoting-another-voice.ly b/Documentation/snippets/new/quoting-another-voice.ly new file mode 100644 index 0000000000..1eece949c8 --- /dev/null +++ b/Documentation/snippets/new/quoting-another-voice.ly @@ -0,0 +1,54 @@ +\version "2.19.56" + +\header { + lsrtags = "staff-notation" + + texidoc = " +The @code{quotedEventTypes} property determines the music event types +which should be quoted. The default value is @code{(note-event +rest-event tie-event beam-event tuplet-span-event)}, which means that +only the notes, rests, ties, beams and tuplets of the quoted voice will +appear in the @code{\\quoteDuring} expression. In the following +example, a 16th rest is not quoted since @code{rest-event} is not in +@code{quotedEventTypes}. + +For a list of event types, consult the @qq{Music classes} section of +the Internals Reference. + +" + doctitle = "Quoting another voice" +} % begin verbatim + +quoteMe = \relative c' { + fis4 r16 a8.-> b4\ff c +} +\addQuote quoteMe \quoteMe + +original = \relative c'' { + c8 d s2 + \once \override NoteColumn.ignore-collision = ##t + es8 gis8 +} + +<< + \new Staff \with { instrumentName = "quoteMe" } + \quoteMe + + \new Staff \with { instrumentName = "orig" } + \original + + \new Staff \with { + instrumentName = "orig+quote" + quotedEventTypes = #'(note-event articulation-event) + } + \relative c'' + << + \original + \new Voice { + s4 + \set fontSize = #-4 + \override Stem.length-fraction = #(magstep -4) + \quoteDuring #"quoteMe" { \skip 2. } + } + >> +>> diff --git a/Documentation/snippets/new/staff-headword.ly b/Documentation/snippets/new/staff-headword.ly index 4c7aff1f02..ce794e9f14 100644 --- a/Documentation/snippets/new/staff-headword.ly +++ b/Documentation/snippets/new/staff-headword.ly @@ -1,4 +1,4 @@ -\version "2.19.0" +\version "2.19.55" \include "catalan.ly" \header { @@ -69,38 +69,39 @@ lower = \relative do { \score { << - \context Staff = "trumpet" << - \set Staff.instrumentName = \markup { "Trumpet" \concat{ B \teeny \raise #0.4 \flat } } + \context Staff = "trumpet" + \with { instrumentName = \markup { "Trumpet" \concat{ B \teeny \raise #0.4 \flat } } } + << \transpose sib do' \trompette >> - \context RhythmicStaff = "tambourin" << - \set Staff.instrumentName = "Tambourine" + \context RhythmicStaff = "tambourin" + \with { instrumentName = "Tambourine" } + << \tambourin >> - \context PianoStaff = "prima" << - \set PianoStaff.instrumentName = "Piano " + \context PianoStaff = "prima" + \with { instrumentName = "Piano" } + << \context Staff = "uppera" \upper \context Staff = "lowera" \lower >> >> \layout { } } + \score { << - \context Staff = "trumpet" { - \set Staff.midiInstrument = "trumpet" - \trompette - } + \context Staff = "trumpet" \with { midiInstrument = "trumpet" } + \trompette \context DrumStaff = "tambourin" { \tambourin } - \context Staff = "piano" << + \context Staff = "piano" + << \upper \lower >> >> - \midi { - \tempo 4 = 72 - } + \midi { \tempo 4 = 72 } } diff --git a/Documentation/snippets/new/string-quartet-template-simple.ly b/Documentation/snippets/new/string-quartet-template-simple.ly new file mode 100644 index 0000000000..71530cab99 --- /dev/null +++ b/Documentation/snippets/new/string-quartet-template-simple.ly @@ -0,0 +1,58 @@ +\version "2.19.56" + +\header { + lsrtags = "really-simple, template, unfretted-strings" + + texidoc = " +This template demonstrates a simple string quartet. It also uses a +@code{\\global} section for time and key signatures + +" + doctitle = "String quartet template (simple)" +} % begin verbatim + +global= { + \time 4/4 + \key c \major +} + +violinOne = \new Voice \relative c'' { + c2 d + e1 + \bar "|." +} + +violinTwo = \new Voice \relative c'' { + g2 f + e1 + \bar "|." +} + +viola = \new Voice \relative c' { + \clef alto + e2 d + c1 + \bar "|." +} + +cello = \new Voice \relative c' { + \clef bass + c2 b + a1 + \bar "|." +} + +\score { + \new StaffGroup << + \new Staff \with { instrumentName = "Violin 1" } + << \global \violinOne >> + \new Staff \with { instrumentName = "Violin 2" } + << \global \violinTwo >> + \new Staff \with { instrumentName = "Viola" } + << \global \viola >> + \new Staff \with { instrumentName = "Cello" } + << \global \cello >> + >> + \layout { } + \midi { } +} diff --git a/Documentation/snippets/new/string-quartet-template-with-separate-parts.ly b/Documentation/snippets/new/string-quartet-template-with-separate-parts.ly new file mode 100644 index 0000000000..092336c09c --- /dev/null +++ b/Documentation/snippets/new/string-quartet-template-with-separate-parts.ly @@ -0,0 +1,146 @@ +\version "2.19.56" + +\header { + lsrtags = "preparing-parts, template, unfretted-strings" + + texidoc = " +The @qq{String quartet template} snippet produces a nice string +quartet, but what if you needed to print parts? This new template +demonstrates how to use the @code{\\tag} feature to easily split a +piece into individual parts. + +You need to split this template into separate files; the filenames are +contained in comments at the beginning of each file. @code{piece.ly} +contains all the music definitions. The other files – @code{score.ly}, +@code{vn1.ly}, @code{vn2.ly}, @code{vla.ly}, and @code{vlc.ly} – +produce the appropriate part. + + +Do not forget to remove specified comments when using separate files! + +" + doctitle = "String quartet template with separate parts" +} % begin verbatim + +%%%%% piece.ly +%%%%% (This is the global definitions file) + +global= { + \time 4/4 + \key c \major +} + + +Violinone = \new Voice { + \relative c'' { + c2 d e1 + \bar "|." + } +} + + +Violintwo = \new Voice { + \relative c'' { + g2 f e1 + \bar "|." + } +} + + +Viola = \new Voice { + \relative c' { + \clef alto + e2 d c1 + \bar "|." + } +} + + +Cello = \new Voice { + \relative c' { + \clef bass + c2 b a1 + \bar "|." + } +} + + +music = { + << + \tag #'score \tag #'vn1 + \new Staff \with { instrumentName = "Violin 1" } + << \global \Violinone >> + + \tag #'score \tag #'vn2 + \new Staff \with { instrumentName = "Violin 2" } + << \global \Violintwo>> + + \tag #'score \tag #'vla + \new Staff \with { instrumentName = "Viola" } + << \global \Viola>> + + \tag #'score \tag #'vlc + \new Staff \with { instrumentName = "Cello" } + << \global \Cello >> + >> +} + +% These are the other files you need to save on your computer + +% score.ly +% (This is the main file) + +% uncomment the line below when using a separate file +%\include "piece.ly" + +#(set-global-staff-size 14) + +\score { + \new StaffGroup \keepWithTag #'score \music + \layout { } + \midi { } +} + + +%{ Uncomment this block when using separate files + +% vn1.ly +% (This is the Violin 1 part file) + +\include "piece.ly" +\score { + \keepWithTag #'vn1 \music + \layout { } +} + + +% vn2.ly +% (This is the Violin 2 part file) + +\include "piece.ly" +\score { + \keepWithTag #'vn2 \music + \layout { } +} + + +% vla.ly +% (This is the Viola part file) + +\include "piece.ly" +\score { + \keepWithTag #'vla \music + \layout { } +} + + +% vlc.ly +% (This is the Cello part file) + +\include "piece.ly" +\score { + \keepWithTag #'vlc \music + \layout { } +} + +%} diff --git a/Documentation/snippets/new/three-sided-box.ly b/Documentation/snippets/new/three-sided-box.ly new file mode 100644 index 0000000000..f2851cf724 --- /dev/null +++ b/Documentation/snippets/new/three-sided-box.ly @@ -0,0 +1,45 @@ +\version "2.18.0" + +\header { + lsrtags = "rhythms, scheme-language, text" + + texidoc = " +This example shows how to add a markup command to get a three sided box +around some text (or other markup). + +" + doctitle = "Three-sided box" +} +% New command to add a three sided box, with sides north, west and south +% Based on the box-stencil command defined in scm/stencil.scm +% Note that ";;" is used to comment a line in Scheme +#(define-public (NWS-box-stencil stencil thickness padding) + "Add a box around STENCIL, producing a new stencil." + (let* ((x-ext (interval-widen (ly:stencil-extent stencil X) padding)) + (y-ext (interval-widen (ly:stencil-extent stencil Y) padding)) + (y-rule (make-filled-box-stencil (cons 0 thickness) y-ext)) + (x-rule (make-filled-box-stencil + (interval-widen x-ext thickness) (cons 0 thickness)))) + ;; (set! stencil (ly:stencil-combine-at-edge stencil X 1 y-rule padding)) + (set! stencil (ly:stencil-combine-at-edge stencil X LEFT y-rule padding)) + (set! stencil (ly:stencil-combine-at-edge stencil Y UP x-rule 0.0)) + (set! stencil (ly:stencil-combine-at-edge stencil Y DOWN x-rule 0.0)) + stencil)) + +% The corresponding markup command, based on the \box command defined +% in scm/define-markup-commands.scm +#(define-markup-command (NWS-box layout props arg) (markup?) + #:properties ((thickness 0.1) (font-size 0) (box-padding 0.2)) + "Draw a box round @var{arg}. Looks at @code{thickness}, +@code{box-padding} and @code{font-size} properties to determine line +thickness and padding around the markup." + (let ((pad (* (magstep font-size) box-padding)) + (m (interpret-markup layout props arg))) + (NWS-box-stencil m thickness pad))) + +% Test it: + +\relative c' { + c1^\markup { \NWS-box ABCD } + c1^\markup { \NWS-box \note #"4" #1.0 } +} diff --git a/Documentation/snippets/new/transposing-pitches-with-minimum-accidentals-smart-transpose.ly b/Documentation/snippets/new/transposing-pitches-with-minimum-accidentals-smart-transpose.ly new file mode 100644 index 0000000000..2cac27f8fb --- /dev/null +++ b/Documentation/snippets/new/transposing-pitches-with-minimum-accidentals-smart-transpose.ly @@ -0,0 +1,84 @@ +\version "2.19.22" + +\header { + lsrtags = "pitches, scheme-language, workaround" + + texidoc = " +This example uses some Scheme code to enforce enharmonic modifications +for notes in order to have the minimum number of accidentals. In this +case, the following rules apply: + +Double accidentals should be removed + + +B sharp -> C + + +E sharp -> F + + +C flat -> B + + +F flat -> E + + +In this manner, the most natural enharmonic notes are chosen. + +" + doctitle = "Transposing pitches with minimum accidentals (\"Smart\" transpose)" +} +#(define (naturalize-pitch p) + (let ((o (ly:pitch-octave p)) + (a (* 4 (ly:pitch-alteration p))) + ;; alteration, a, in quarter tone steps, + ;; for historical reasons + (n (ly:pitch-notename p))) + (cond + ((and (> a 1) (or (eqv? n 6) (eqv? n 2))) + (set! a (- a 2)) + (set! n (+ n 1))) + ((and (< a -1) (or (eqv? n 0) (eqv? n 3))) + (set! a (+ a 2)) + (set! n (- n 1)))) + (cond + ((> a 2) (set! a (- a 4)) (set! n (+ n 1))) + ((< a -2) (set! a (+ a 4)) (set! n (- n 1)))) + (if (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7)))) + (if (> n 6) (begin (set! o (+ o 1)) (set! n (- n 7)))) + (ly:make-pitch o n (/ a 4)))) + +#(define (naturalize music) + (let ((es (ly:music-property music 'elements)) + (e (ly:music-property music 'element)) + (p (ly:music-property music 'pitch))) + (if (pair? es) + (ly:music-set-property! + music 'elements + (map naturalize es))) + (if (ly:music? e) + (ly:music-set-property! + music 'element + (naturalize e))) + (if (ly:pitch? p) + (begin + (set! p (naturalize-pitch p)) + (ly:music-set-property! music 'pitch p))) + music)) + +naturalizeMusic = +#(define-music-function (m) + (ly:music?) + (naturalize m)) + +music = \relative c' { c4 d e g } + +\score { + \new Staff { + \transpose c ais { \music } + \naturalizeMusic \transpose c ais { \music } + \transpose c deses { \music } + \naturalizeMusic \transpose c deses { \music } + } + \layout { } +} diff --git a/Documentation/snippets/new/using-marklines-in-a-frenched-score.ly b/Documentation/snippets/new/using-marklines-in-a-frenched-score.ly index 0fdefc9138..2227e1cc24 100644 --- a/Documentation/snippets/new/using-marklines-in-a-frenched-score.ly +++ b/Documentation/snippets/new/using-marklines-in-a-frenched-score.ly @@ -2,7 +2,7 @@ \header { lsrtags = "contexts-and-engravers, staff-notation" texidoc = " -Using @{MarkLine} contexts (such as in +Using @code{MarkLine} contexts (such as in @uref{http://lsr.di.unimi.it/LSR/Item?id=1010, LSR1010}) in a Frenched score can be problematic if all the staves between two @code{MarkLine}s are removed in one system. The diff --git a/Documentation/snippets/new/wind-headword.ly b/Documentation/snippets/new/wind-headword.ly index eae9e1df18..b76e171ffb 100644 --- a/Documentation/snippets/new/wind-headword.ly +++ b/Documentation/snippets/new/wind-headword.ly @@ -1,5 +1,5 @@ -\version "2.19.20" +\version "2.19.56" \header { lsrtags = "headword" @@ -19,8 +19,8 @@ Wind headword % Nutcracker Suite, VII Dance of the Merlitons \score { \new StaffGroup << - \new Staff \relative c'' { - \set Staff.instrumentName = "Flauto I,II" + \new Staff \with { instrumentName = "Flauto I,II" } + \relative c'' { \once \override Score.RehearsalMark.self-alignment-X = #-1 \once \override Score.RehearsalMark.break-align-symbols = #'(time-signature) \once \override Score.TimeSignature.break-align-anchor-alignment = #LEFT @@ -32,11 +32,11 @@ Wind headword 16-.\p -. -. -. 8-. -. -.\< 32( 4--)\mf 16-. -. -. -. - (\> ) -. -.\! + (\> ) -. -.\! 4--\sf \acciaccatura {8} 4--\mf } - \new Staff \relative c' { - \set Staff.instrumentName = "Flauto III" + \new Staff \with { instrumentName = "Flauto III" } + \relative c' { \key d \major \time 2/4 \compressMMRests R2*2_\markup{Gr.Fl.} diff --git a/Documentation/snippets/orchestra,-choir-and-piano-template.ly b/Documentation/snippets/orchestra,-choir-and-piano-template.ly index e3b6eff963..0aa89b54b5 100644 --- a/Documentation/snippets/orchestra,-choir-and-piano-template.ly +++ b/Documentation/snippets/orchestra,-choir-and-piano-template.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.18.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "pitches, staff-notation, template, vocal-music" @@ -21,129 +22,139 @@ music for transposing instruments at concert pitch. #(set-global-staff-size 17) \paper { - paper-height = 10\cm - indent = 3.0\cm % space for instrumentName - short-indent = 1.5\cm % space for shortInstrumentName -} + indent = 3.0\cm % add space for instrumentName + short-indent = 1.5\cm % add less space for shortInstrumentName +} % begin verbatim + fluteMusic = \relative c' { \key g \major g'1 b } + % Pitches as written on a manuscript for Clarinet in A % are transposed to concert pitch. + clarinetMusic = \transpose c' a \relative c'' { \key bes \major bes1 d } + trumpetMusic = \relative c { \key g \major g''1 b } + % Key signature is often omitted for horns + hornMusic = \transpose c' f \relative c { d'1 fis } + percussionMusic = \relative c { \key g \major g1 b } + sopranoMusic = \relative c'' { \key g \major g'1 b } + sopranoLyrics = \lyricmode { Lyr -- ics } + altoIMusic = \relative c' { \key g \major g'1 b } + altoIIMusic = \relative c' { \key g \major g'1 b } + altoILyrics = \sopranoLyrics + altoIILyrics = \lyricmode { Ah -- ah } + tenorMusic = \relative c' { \clef "treble_8" \key g \major g1 b } + tenorLyrics = \sopranoLyrics + pianoRHMusic = \relative c { \key g \major g''1 b } + pianoLHMusic = \relative c { \clef bass \key g \major g1 b } + violinIMusic = \relative c' { \key g \major g'1 b } + violinIIMusic = \relative c' { \key g \major g'1 b } + violaMusic = \relative c { \clef alto \key g \major g'1 b } + celloMusic = \relative c { \clef bass \key g \major g1 b } + bassMusic = \relative c { \clef "bass_8" \key g \major g,1 b } \score { << \new StaffGroup = "StaffGroup_woodwinds" << - \new Staff = "Staff_flute" { - \set Staff.instrumentName = #"Flute" - % shortInstrumentName, midiInstrument, etc. - % may be set here as well - \fluteMusic - } - \new Staff = "Staff_clarinet" { - \set Staff.instrumentName = - \markup { \concat { "Clarinet in B" \flat } } - % Declare that written Middle C in the music - % to follow sounds a concert B flat, for - % output using sounded pitches such as MIDI. - \transposition bes - % Print music for a B-flat clarinet - \transpose bes c' \clarinetMusic + \new Staff = "Staff_flute" \with { instrumentName = #"Flute" } + \fluteMusic + + \new Staff = "Staff_clarinet" \with { + instrumentName = \markup { \concat { "Clarinet in B" \flat } } } + + % Declare that written Middle C in the music + % to follow sounds a concert B flat, for + % output using sounded pitches such as MIDI. + %\transposition bes + + % Print music for a B-flat clarinet + \transpose bes c' \clarinetMusic >> + \new StaffGroup = "StaffGroup_brass" << - \new Staff = "Staff_hornI" { - \set Staff.instrumentName = #"Horn in F" - \transposition f + \new Staff = "Staff_hornI" \with { instrumentName = #"Horn in F" } + % \transposition f \transpose f c' \hornMusic - } - \new Staff = "Staff_trumpet" { - \set Staff.instrumentName = #"Trumpet in C" - \trumpetMusic - } + + \new Staff = "Staff_trumpet" \with { instrumentName = #"Trumpet in C" } + \trumpetMusic + >> - \new RhythmicStaff = "RhythmicStaff_percussion" << - \set RhythmicStaff.instrumentName = #"Percussion" + \new RhythmicStaff = "RhythmicStaff_percussion" + \with { instrumentName = #"Percussion" } + << \percussionMusic >> - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" + \new PianoStaff \with { instrumentName = #"Piano" } + << \new Staff { \pianoRHMusic } \new Staff { \pianoLHMusic } >> \new ChoirStaff = "ChoirStaff_choir" << - \new Staff = "Staff_soprano" { - \set Staff.instrumentName = #"Soprano" - \new Voice = "soprano" - \sopranoMusic - } + \new Staff = "Staff_soprano" \with { instrumentName = #"Soprano" } + \new Voice = "soprano" + \sopranoMusic + \new Lyrics \lyricsto "soprano" { \sopranoLyrics } \new GrandStaff = "GrandStaff_altos" \with { \accepts Lyrics } << - \new Staff = "Staff_altoI" { - \set Staff.instrumentName = #"Alto I" - \new Voice = "altoI" - \altoIMusic - } + \new Staff = "Staff_altoI" \with { instrumentName = #"Alto I" } + \new Voice = "altoI" + \altoIMusic + \new Lyrics \lyricsto "altoI" { \altoILyrics } - \new Staff = "Staff_altoII" { - \set Staff.instrumentName = #"Alto II" - \new Voice = "altoII" - \altoIIMusic - } + \new Staff = "Staff_altoII" \with { instrumentName = #"Alto II" } + \new Voice = "altoII" + \altoIIMusic + \new Lyrics \lyricsto "altoII" { \altoIILyrics } >> - \new Staff = "Staff_tenor" { - \set Staff.instrumentName = #"Tenor" + + \new Staff = "Staff_tenor" \with { instrumentName = #"Tenor" } \new Voice = "tenor" \tenorMusic - } + \new Lyrics \lyricsto "tenor" { \tenorLyrics } >> \new StaffGroup = "StaffGroup_strings" << \new GrandStaff = "GrandStaff_violins" << - \new Staff = "Staff_violinI" { - \set Staff.instrumentName = #"Violin I" - \violinIMusic - } - \new Staff = "Staff_violinII" { - \set Staff.instrumentName = #"Violin II" - \violinIIMusic - } + \new Staff = "Staff_violinI" \with { instrumentName = #"Violin I" } + \violinIMusic + + \new Staff = "Staff_violinII" \with { instrumentName = #"Violin II" } + \violinIIMusic >> - \new Staff = "Staff_viola" { - \set Staff.instrumentName = #"Viola" - \violaMusic - } - \new Staff = "Staff_cello" { - \set Staff.instrumentName = #"Cello" - \celloMusic - } - \new Staff = "Staff_bass" { - \set Staff.instrumentName = #"Double Bass" - \bassMusic - } + + \new Staff = "Staff_viola" \with { instrumentName = #"Viola" } + \violaMusic + + \new Staff = "Staff_cello" \with { instrumentName = #"Cello" } + \celloMusic + + \new Staff = "Staff_bass" \with { instrumentName = #"Double Bass" } + \bassMusic >> >> \layout { } diff --git a/Documentation/snippets/piano-template-simple.ly b/Documentation/snippets/piano-template-simple.ly index b2728932e4..8a921fcc97 100644 --- a/Documentation/snippets/piano-template-simple.ly +++ b/Documentation/snippets/piano-template-simple.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.18.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "keyboards, really-simple, template" @@ -22,7 +23,8 @@ upper = \relative c'' { \time 4/4 a4 b c d -} +} % begin verbatim + lower = \relative c { \clef bass @@ -33,8 +35,8 @@ lower = \relative c { } \score { - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano " + \new PianoStaff \with { instrumentName = #"Piano" } + << \new Staff = "upper" \upper \new Staff = "lower" \lower >> diff --git a/Documentation/snippets/quoting-another-voice-with-transposition.ly b/Documentation/snippets/quoting-another-voice-with-transposition.ly index 82f02f0f0d..8a5eec2583 100644 --- a/Documentation/snippets/quoting-another-voice-with-transposition.ly +++ b/Documentation/snippets/quoting-another-voice-with-transposition.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.18.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "pitches, staff-notation" @@ -22,7 +23,8 @@ quoted ones) are transposed. \addQuote clarinet { \transposition bes - \repeat unfold 8 { d'16 d' d'8 } + \repeat unfold 8 { d'16 d' d'8 } % begin verbatim + } \addQuote sax { @@ -40,10 +42,9 @@ quoteTest = { } { - \set Staff.instrumentName = - \markup { - \center-column { Horn \line { in F } } - } + \new Staff \with { + instrumentName = \markup { \column { Horn "in F" } } + } \quoteTest \transpose c' d' << \quoteTest s4_"up a tone" >> } diff --git a/Documentation/snippets/quoting-another-voice.ly b/Documentation/snippets/quoting-another-voice.ly index cbc1ce7534..40963ab6a9 100644 --- a/Documentation/snippets/quoting-another-voice.ly +++ b/Documentation/snippets/quoting-another-voice.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.18.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "staff-notation" @@ -27,7 +28,8 @@ the Internals Reference. quoteMe = \relative c' { fis4 r16 a8.-> b4\ff c -} +} % begin verbatim + \addQuote quoteMe \quoteMe original = \relative c'' { @@ -37,18 +39,18 @@ original = \relative c'' { } << - \new Staff { - \set Staff.instrumentName = #"quoteMe" - \quoteMe - } - \new Staff { - \set Staff.instrumentName = #"orig" - \original + \new Staff \with { instrumentName = "quoteMe" } + \quoteMe + + \new Staff \with { instrumentName = "orig" } + \original + + \new Staff \with { + instrumentName = "orig+quote" + quotedEventTypes = #'(note-event articulation-event) } - \new Staff \relative c'' << - \set Staff.instrumentName = #"orig+quote" - \set Staff.quotedEventTypes = - #'(note-event articulation-event) + \relative c'' + << \original \new Voice { s4 diff --git a/Documentation/snippets/staff-headword.ly b/Documentation/snippets/staff-headword.ly index 056cfca008..b959f0713a 100644 --- a/Documentation/snippets/staff-headword.ly +++ b/Documentation/snippets/staff-headword.ly @@ -4,8 +4,8 @@ % and then run scripts/auxiliar/makelsr.py % % This file is in the public domain. -%% Note: this file works from version 2.19.0 -\version "2.19.0" +%% Note: this file works from version 2.19.55 +\version "2.19.55" \include "catalan.ly" \header { @@ -77,38 +77,39 @@ lower = \relative do { \score { << - \context Staff = "trumpet" << - \set Staff.instrumentName = \markup { "Trumpet" \concat{ B \teeny \raise #0.4 \flat } } + \context Staff = "trumpet" + \with { instrumentName = \markup { "Trumpet" \concat{ B \teeny \raise #0.4 \flat } } } + << \transpose sib do' \trompette >> - \context RhythmicStaff = "tambourin" << - \set Staff.instrumentName = "Tambourine" + \context RhythmicStaff = "tambourin" + \with { instrumentName = "Tambourine" } + << \tambourin >> - \context PianoStaff = "prima" << - \set PianoStaff.instrumentName = "Piano " + \context PianoStaff = "prima" + \with { instrumentName = "Piano" } + << \context Staff = "uppera" \upper \context Staff = "lowera" \lower >> >> \layout { } } + \score { << - \context Staff = "trumpet" { - \set Staff.midiInstrument = "trumpet" - \trompette - } + \context Staff = "trumpet" \with { midiInstrument = "trumpet" } + \trompette \context DrumStaff = "tambourin" { \tambourin } - \context Staff = "piano" << + \context Staff = "piano" + << \upper \lower >> >> - \midi { - \tempo 4 = 72 - } + \midi { \tempo 4 = 72 } } diff --git a/Documentation/snippets/staff-notation.snippet-list b/Documentation/snippets/staff-notation.snippet-list index bfb3706161..5095cbeb9c 100644 --- a/Documentation/snippets/staff-notation.snippet-list +++ b/Documentation/snippets/staff-notation.snippet-list @@ -47,6 +47,7 @@ tweaking-clef-properties.ly two--partcombine-pairs-on-one-staff.ly use-square-bracket-at-the-start-of-a-staff-group.ly using-autochange-with-more-than-one-voice.ly +using-marklines-in-a-frenched-score.ly vertical-aligned-staffgroups-without-connecting-systemstartbar.ly volta-below-chords.ly volta-multi-staff.ly diff --git a/Documentation/snippets/string-quartet-template-simple.ly b/Documentation/snippets/string-quartet-template-simple.ly index e435da4877..6e7f6e1a23 100644 --- a/Documentation/snippets/string-quartet-template-simple.ly +++ b/Documentation/snippets/string-quartet-template-simple.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.18.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "really-simple, template, unfretted-strings" @@ -20,52 +21,45 @@ This template demonstrates a simple string quartet. It also uses a global= { \time 4/4 \key c \major -} +} % begin verbatim -violinOne = \new Voice \relative c'' { - \set Staff.instrumentName = #"Violin 1 " +violinOne = \new Voice \relative c'' { c2 d e1 - \bar "|." } violinTwo = \new Voice \relative c'' { - \set Staff.instrumentName = #"Violin 2 " - g2 f e1 - \bar "|." } viola = \new Voice \relative c' { - \set Staff.instrumentName = #"Viola " \clef alto - e2 d c1 - \bar "|." } cello = \new Voice \relative c' { - \set Staff.instrumentName = #"Cello " \clef bass - c2 b a1 - \bar "|." } \score { \new StaffGroup << - \new Staff << \global \violinOne >> - \new Staff << \global \violinTwo >> - \new Staff << \global \viola >> - \new Staff << \global \cello >> + \new Staff \with { instrumentName = "Violin 1" } + << \global \violinOne >> + \new Staff \with { instrumentName = "Violin 2" } + << \global \violinTwo >> + \new Staff \with { instrumentName = "Viola" } + << \global \viola >> + \new Staff \with { instrumentName = "Cello" } + << \global \cello >> >> \layout { } \midi { } diff --git a/Documentation/snippets/string-quartet-template-with-separate-parts.ly b/Documentation/snippets/string-quartet-template-with-separate-parts.ly index 7efde9f3a7..e4e82c5ec0 100644 --- a/Documentation/snippets/string-quartet-template-with-separate-parts.ly +++ b/Documentation/snippets/string-quartet-template-with-separate-parts.ly @@ -1,10 +1,11 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. -\version "2.18.0" +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.56 +\version "2.19.56" \header { lsrtags = "preparing-parts, template, unfretted-strings" @@ -34,52 +35,74 @@ Do not forget to remove specified comments when using separate files! global= { \time 4/4 \key c \major -} +} % begin verbatim + -Violinone = \new Voice { \relative c''{ - \set Staff.instrumentName = #"Violin 1 " - c2 d e1 +Violinone = \new Voice { + \relative c'' { + c2 d e1 + \bar "|." + } +} -\bar "|." }} %********************************* -Violintwo = \new Voice { \relative c''{ - \set Staff.instrumentName = #"Violin 2 " - g2 f e1 +Violintwo = \new Voice { + \relative c'' { + g2 f e1 + \bar "|." + } +} -\bar "|." }} %********************************* -Viola = \new Voice { \relative c' { - \set Staff.instrumentName = #"Viola " - \clef alto - e2 d c1 +Viola = \new Voice { + \relative c' { + \clef alto + e2 d c1 + \bar "|." + } +} -\bar "|." }} %********************************* -Cello = \new Voice { \relative c' { - \set Staff.instrumentName = #"Cello " - \clef bass - c2 b a1 +Cello = \new Voice { + \relative c' { + \clef bass + c2 b a1 + \bar "|." + } +} -\bar "|."}} %********************************** music = { << - \tag #'score \tag #'vn1 \new Staff { << \global \Violinone >> } - \tag #'score \tag #'vn2 \new Staff { << \global \Violintwo>> } - \tag #'score \tag #'vla \new Staff { << \global \Viola>> } - \tag #'score \tag #'vlc \new Staff { << \global \Cello>> } + \tag #'score \tag #'vn1 + \new Staff \with { instrumentName = "Violin 1" } + << \global \Violinone >> + + \tag #'score \tag #'vn2 + \new Staff \with { instrumentName = "Violin 2" } + << \global \Violintwo>> + + \tag #'score \tag #'vla + \new Staff \with { instrumentName = "Viola" } + << \global \Viola>> + + \tag #'score \tag #'vlc + \new Staff \with { instrumentName = "Cello" } + << \global \Cello >> >> } -%%% These are the other files you need to save on your computer +% These are the other files you need to save on your computer -%%%%% score.ly -%%%%% (This is the main file) +% score.ly +% (This is the main file) -%%% uncomment the line below when using a separate file +% uncomment the line below when using a separate file %\include "piece.ly" + #(set-global-staff-size 14) + \score { \new StaffGroup \keepWithTag #'score \music \layout { } @@ -89,8 +112,8 @@ music = { %{ Uncomment this block when using separate files -%%%%% vn1.ly -%%%%% (This is the Violin 1 part file) +% vn1.ly +% (This is the Violin 1 part file) \include "piece.ly" \score { @@ -99,8 +122,8 @@ music = { } -%%%%% vn2.ly -%%%%% (This is the Violin 2 part file) +% vn2.ly +% (This is the Violin 2 part file) \include "piece.ly" \score { @@ -109,8 +132,8 @@ music = { } -%%%%% vla.ly -%%%%% (This is the Viola part file) +% vla.ly +% (This is the Viola part file) \include "piece.ly" \score { @@ -119,8 +142,8 @@ music = { } -%%%%% vlc.ly -%%%%% (This is the Cello part file) +% vlc.ly +% (This is the Cello part file) \include "piece.ly" \score { diff --git a/Documentation/snippets/three-sided-box.ly b/Documentation/snippets/three-sided-box.ly index 3e1080dcb7..dd7f46a30a 100644 --- a/Documentation/snippets/three-sided-box.ly +++ b/Documentation/snippets/three-sided-box.ly @@ -1,9 +1,10 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.18.0 \version "2.18.0" \header { @@ -36,15 +37,13 @@ around some text (or other markup). % The corresponding markup command, based on the \box command defined % in scm/define-markup-commands.scm #(define-markup-command (NWS-box layout props arg) (markup?) + #:properties ((thickness 0.1) (font-size 0) (box-padding 0.2)) "Draw a box round @var{arg}. Looks at @code{thickness}, @code{box-padding} and @code{font-size} properties to determine line thickness and padding around the markup." - (let* ((th (chain-assoc-get 'thickness props 0.1)) - (size (chain-assoc-get 'font-size props 0)) - (pad (* (magstep size) - (chain-assoc-get 'box-padding props 0.2))) - (m (interpret-markup layout props arg))) - (NWS-box-stencil m th pad))) + (let ((pad (* (magstep font-size) box-padding)) + (m (interpret-markup layout props arg))) + (NWS-box-stencil m thickness pad))) % Test it: diff --git a/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly b/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly index df6ce9d6c0..3b209f08e2 100644 --- a/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly +++ b/Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly @@ -1,9 +1,10 @@ -%% DO NOT EDIT this file manually; it is automatically -%% generated from LSR http://lsr.di.unimi.it -%% Make any changes in LSR itself, or in Documentation/snippets/new/ , -%% and then run scripts/auxiliar/makelsr.py -%% -%% This file is in the public domain. +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.22 \version "2.19.22" \header { @@ -42,10 +43,10 @@ In this manner, the most natural enharmonic notes are chosen. ;; for historical reasons (n (ly:pitch-notename p))) (cond - ((and (> a 1) (or (eq? n 6) (eq? n 2))) + ((and (> a 1) (or (eqv? n 6) (eqv? n 2))) (set! a (- a 2)) (set! n (+ n 1))) - ((and (< a -1) (or (eq? n 0) (eq? n 3))) + ((and (< a -1) (or (eqv? n 0) (eqv? n 3))) (set! a (+ a 2)) (set! n (- n 1)))) (cond diff --git a/Documentation/snippets/tweaks-and-overrides.snippet-list b/Documentation/snippets/tweaks-and-overrides.snippet-list index b0bf51340d..7461b97e98 100644 --- a/Documentation/snippets/tweaks-and-overrides.snippet-list +++ b/Documentation/snippets/tweaks-and-overrides.snippet-list @@ -7,6 +7,7 @@ adjusting-lyrics-vertical-spacing.ly altering-the-length-of-beamed-stems.ly alternative-bar-numbering.ly analysis-brackets-above-the-staff.ly +analysis-brackets-with-labels.ly asymmetric-slurs.ly avoiding-collisions-with-chord-fingerings.ly caesura-railtracks-with-fermata.ly diff --git a/Documentation/snippets/using-marklines-in-a-frenched-score.ly b/Documentation/snippets/using-marklines-in-a-frenched-score.ly new file mode 100644 index 0000000000..00dce4f6ad --- /dev/null +++ b/Documentation/snippets/using-marklines-in-a-frenched-score.ly @@ -0,0 +1,105 @@ +% DO NOT EDIT this file manually; it is automatically +% generated from Documentation/snippets/new +% Make any changes in Documentation/snippets/new/ +% and then run scripts/auxiliar/makelsr.py +% +% This file is in the public domain. +%% Note: this file works from version 2.19.48 +\version "2.19.48" +\header { + lsrtags = "contexts-and-engravers, staff-notation" + texidoc = " +Using @code{MarkLine} contexts (such as in +@uref{http://lsr.di.unimi.it/LSR/Item?id=1010, LSR1010}) in a +Frenched score can be problematic if all the staves between two +@code{MarkLine}s are removed in one system. The +@code{Keep_alive_together_engraver} can be used within each +@code{StaffGroup} to keep the @code{MarkLine} alive only as long +as the other staves in the group stay alive. +" + doctitle = "Using marklines in a Frenched score" +} % begin verbatim + +bars = { + \tempo "Allegro" 4=120 + s1*2 + \repeat unfold 5 { \mark \default s1*2 } + \bar "||" + \tempo "Adagio" 4=40 + s1*2 + \repeat unfold 8 { \mark \default s1*2 } + \bar "|." +} +winds = \repeat unfold 120 { c''4 } +trumpet = { \repeat unfold 8 g'2 R1*16 \repeat unfold 4 g'2 R1*8 } +trombone = { \repeat unfold 4 c'1 R1*8 d'1 R1*17 } +strings = \repeat unfold 240 { c''8 } + +#(set-global-staff-size 16) +\paper { + systems-per-page = 5 + ragged-last-bottom = ##f +} + +\layout { + indent = 15\mm + short-indent = 5\mm + \context { + \name MarkLine + \type Engraver_group + \consists Output_property_engraver + \consists Axis_group_engraver + \consists Mark_engraver + \consists Metronome_mark_engraver + \override VerticalAxisGroup.remove-empty = ##t + \override VerticalAxisGroup.remove-layer = #'any + \override VerticalAxisGroup.staff-affinity = #DOWN + \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.basic-distance = 1 + keepAliveInterfaces = #'() + } + \context { + \Staff + \override VerticalAxisGroup.remove-empty = ##t + \override VerticalAxisGroup.remove-layer = ##f + } + \context { + \StaffGroup + \accepts MarkLine + \consists Keep_alive_together_engraver + } + \context { + \Score + \remove Mark_engraver + \remove Metronome_mark_engraver + } +} + +\score { + << + \new StaffGroup = "winds" \with { + instrumentName = "Winds" + shortInstrumentName = "Winds" + } << + \new MarkLine \bars + \new Staff \winds + >> + \new StaffGroup = "brass" << + \new MarkLine \bars + \new Staff = "trumpet" \with { + instrumentName = "Trumpet" + shortInstrumentName = "Tpt" + } \trumpet + \new Staff = "trombone" \with { + instrumentName = "Trombone" + shortInstrumentName = "Tbn" + } \trombone + >> + \new StaffGroup = "strings" \with { + instrumentName = "Strings" + shortInstrumentName = "Strings" + } << + \new MarkLine \bars + \new Staff = "strings" { \strings } + >> + >> +} diff --git a/Documentation/snippets/wind-headword.ly b/Documentation/snippets/wind-headword.ly index 2cd83c1bf5..f3bef5585e 100644 --- a/Documentation/snippets/wind-headword.ly +++ b/Documentation/snippets/wind-headword.ly @@ -4,9 +4,9 @@ % and then run scripts/auxiliar/makelsr.py % % This file is in the public domain. -%% Note: this file works from version 2.19.20 +%% Note: this file works from version 2.19.56 -\version "2.19.20" +\version "2.19.56" \header { lsrtags = "headword" @@ -27,8 +27,8 @@ Wind headword % Nutcracker Suite, VII Dance of the Merlitons \score { \new StaffGroup << - \new Staff \relative c'' { - \set Staff.instrumentName = "Flauto I,II" + \new Staff \with { instrumentName = "Flauto I,II" } + \relative c'' { \once \override Score.RehearsalMark.self-alignment-X = #-1 \once \override Score.RehearsalMark.break-align-symbols = #'(time-signature) \once \override Score.TimeSignature.break-align-anchor-alignment = #LEFT @@ -40,11 +40,11 @@ Wind headword 16-.\p -. -. -. 8-. -. -.\< 32( 4--)\mf 16-. -. -. -. - (\> ) -. -.\! + (\> ) -. -.\! 4--\sf \acciaccatura {8} 4--\mf } - \new Staff \relative c' { - \set Staff.instrumentName = "Flauto III" + \new Staff \with { instrumentName = "Flauto III" } + \relative c' { \key d \major \time 2/4 \compressMMRests R2*2_\markup{Gr.Fl.} diff --git a/Documentation/translations.itexi b/Documentation/translations.itexi index 8f17c4965d..be8b0f457c 100644 --- a/Documentation/translations.itexi +++ b/Documentation/translations.itexi @@ -16,18 +16,19 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Last updated Sun Nov 6 09:35:15 UTC 2016 +@emph{Last updated Sat Jun 24 12:50:41 UTC 2017 } -@multitable @columnfractions 0.333333333333 0.333333333333 0.333333333333 +@multitable @columnfractions 0.25 0.25 0.25 0.25 @headitem LilyPond Changes @tab es +@tab fr @tab it @item Section titles @* -(2577) +(2784) @tab Francisco Vila @* @@ -45,11 +46,54 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date +@end ifnothtml +@tab Jean-Charles Malahieude +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date @end ifnothtml @tab Federico Bruni @* @@ -68,11 +112,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @item LilyPond --- \TITLE\ @@ -94,6 +138,49 @@ translated @ifhtml +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml +@tab Jean-Charles Malahieude +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + @html up to date @end html @@ -1147,11 +1234,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Jean-Charles Malahieude @* @@ -1366,9 +1453,31 @@ Section titles (124) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -1626,6 +1735,26 @@ LilyPond --- \TITLE\ @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -1883,6 +2012,26 @@ up to date @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -2200,12 +2349,32 @@ partially up to date @item 2 Common notation @* -(4402) +(4421) @tab Walter Garcia-Fontes @* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -2266,11 +2435,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Francisco Vila @* @@ -2449,11 +2618,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Jan Nieuwenhuizen @* @@ -2501,12 +2670,32 @@ partially up to date @item 3 Fundamental concepts @* -(11119) +(11240) @tab Walter Garcia-Fontes @* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -2519,7 +2708,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -2542,7 +2731,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -2569,11 +2758,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Francisco Vila @* @@ -2662,7 +2851,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -2728,7 +2917,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -2771,7 +2960,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -2786,6 +2975,26 @@ partially up to date @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -3075,34 +3284,54 @@ A Templates @ifhtml @html -partially translated (97 %) + @end html @end ifhtml @ifnothtml -partially translated (97 %) + @end ifnothtml @* @ifhtml @html -partially up to date + @end html @end ifhtml @ifnothtml -partially up to date -@end ifnothtml -@tab Pavel Fric -@* +@end ifnothtml @ifhtml @html -partially translated (75 %) +partially translated (97 %) @end html @end ifhtml @ifnothtml -partially translated (75 %) +partially translated (97 %) +@end ifnothtml +@* + +@ifhtml + +@html +partially up to date +@end html +@end ifhtml +@ifnothtml +partially up to date +@end ifnothtml +@tab Pavel Fric +@* + +@ifhtml + +@html +partially translated (75 %) +@end html +@end ifhtml +@ifnothtml +partially translated (75 %) @end ifnothtml @* @@ -3324,9 +3553,31 @@ B GNU Free Documentation License (3724) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html not translated @end html @@ -3594,7 +3845,29 @@ Section titles (326) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml +@end ifnothtml @ifhtml @html @@ -3741,6 +4014,26 @@ LilyPond --- \TITLE\ @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -3885,6 +4178,26 @@ up to date @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -4023,12 +4336,32 @@ up to date @item 1.1 Pitches @* -(5272) +(5413) @tab Walter Garcia-Fontes @* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -4041,7 +4374,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -4064,7 +4397,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -4087,11 +4420,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Frédéric Chiasson @* @@ -4186,11 +4519,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -4209,7 +4542,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -4218,29 +4551,49 @@ partially up to date @item 1.2 Rhythms @* -(6822) +(6853) @tab Walter Garcia-Fontes @* @ifhtml @html -not translated + @end html @end ifhtml @ifnothtml -not translated + @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +partially up to date +@end html +@end ifhtml +@ifnothtml +partially up to date @end ifnothtml @tab Till Paala @* @@ -4282,11 +4635,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Frédéric Chiasson @* @@ -4392,11 +4745,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -4431,22 +4784,42 @@ partially up to date @ifhtml @html -not translated + @end html @end ifhtml @ifnothtml -not translated + @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +partially up to date +@end html +@end ifhtml +@ifnothtml +partially up to date @end ifnothtml @tab Till Paala @* @@ -4465,7 +4838,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -4488,11 +4861,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Valentin Villenave @* @@ -4587,11 +4960,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -4626,11 +4999,31 @@ partially up to date @ifhtml @html -not translated + @end html @end ifhtml @ifnothtml -not translated + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated @end ifnothtml @* @@ -4814,29 +5207,49 @@ partially up to date @item 1.5 Simultaneous notes @* -(2920) +(2979) @tab Walter Garcia-Fontes @* @ifhtml @html -not translated + @end html @end ifhtml @ifnothtml -not translated + @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +partially up to date +@end html +@end ifhtml +@ifnothtml +partially up to date @end ifnothtml @tab Till Paala @* @@ -4855,7 +5268,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -5002,7 +5415,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -5018,22 +5431,42 @@ partially up to date @ifhtml @html -not translated + @end html @end ifhtml @ifnothtml -not translated + @end ifnothtml @* @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date + +@end ifnothtml +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +partially up to date +@end html +@end ifhtml +@ifnothtml +partially up to date @end ifnothtml @tab Till Paala @* @@ -5195,12 +5628,32 @@ partially up to date @item 1.7 Editorial annotations @* -(1477) +(1481) @tab Walter Garcia-Fontes @* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html not translated @end html @@ -5236,7 +5689,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -5259,11 +5712,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Jean-Charles Malahieude @* @@ -5325,11 +5778,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -5348,7 +5801,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -5357,12 +5810,32 @@ partially up to date @item 1.8 Text @* -(2755) +(2754) @tab Walter Garcia-Fontes @* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html not translated @end html @@ -5398,7 +5871,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -5421,11 +5894,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Jean-Charles Malahieude @* @@ -5518,11 +5991,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Masamichi Hosoda @* @@ -5543,19 +6016,41 @@ translated @ifhtml @html -partially up to date +partially up to date +@end html +@end ifhtml +@ifnothtml +partially up to date +@end ifnothtml +@item +2 Specialist notation +@* +(81) +@tab Walter Garcia-Fontes +@* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + @end html @end ifhtml @ifnothtml -partially up to date -@end ifnothtml -@item -2 Specialist notation -@* -(81) -@tab Walter Garcia-Fontes -@* +@end ifnothtml @ifhtml @html @@ -5699,7 +6194,29 @@ up to date (4977) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml +@end ifnothtml @ifhtml @html @@ -5883,7 +6400,29 @@ partially up to date (904) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml +@end ifnothtml @ifhtml @html @@ -6058,7 +6597,29 @@ partially up to date (279) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml +@end ifnothtml @ifhtml @html @@ -6119,11 +6680,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Valentin Villenave @* @@ -6233,7 +6794,29 @@ partially up to date (2821) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml +@end ifnothtml @ifhtml @html @@ -6395,7 +6978,29 @@ partially up to date (799) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml +@end ifnothtml @ifhtml @html @@ -6433,7 +7038,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -6547,7 +7152,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -6559,7 +7164,29 @@ partially up to date (324) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml +@end ifnothtml @ifhtml @html @@ -6731,10 +7358,32 @@ partially up to date @item 2.7 Chord notation @* -(1979) +(1975) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml +@end ifnothtml @ifhtml @html @@ -6795,11 +7444,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Valentin Villenave @* @@ -6909,7 +7558,29 @@ partially up to date (475) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml @ifhtml @html @@ -7068,12 +7739,34 @@ up to date @item 2.9 Ancient notation @* -(5516) +(5518) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html not translated @end html @@ -7213,9 +7906,31 @@ up to date (1446) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html not translated @end html @@ -7374,30 +8089,52 @@ up to date @ifhtml @html -translated +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +partially up to date +@end html +@end ifhtml +@ifnothtml +partially up to date +@end ifnothtml +@item +3 General input and output +@* +(12853) +@tab Walter Garcia-Fontes +@* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + @end html @end ifhtml @ifnothtml -translated + @end ifnothtml @* @ifhtml @html -partially up to date + @end html @end ifhtml @ifnothtml -partially up to date -@end ifnothtml -@item -3 General input and output -@* -(12839) -@tab Walter Garcia-Fontes -@* +@end ifnothtml @ifhtml @html @@ -7458,11 +8195,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Jean-Charles Malahieude @* @@ -7526,11 +8263,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -7558,10 +8295,32 @@ partially up to date @item 4 Spacing issues @* -(10911) +(10982) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml @ifhtml @html @@ -7599,7 +8358,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -7713,7 +8472,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -7722,10 +8481,32 @@ partially up to date @item 5 Changing defaults @* -(15597) +(17050) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml +@end ifnothtml @ifhtml @html @@ -7763,7 +8544,7 @@ partially translated (85 %) @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -7886,18 +8667,18 @@ up to date @ifhtml @html -partially translated (94 %) +partially translated (92 %) @end html @end ifhtml @ifnothtml -partially translated (94 %) +partially translated (92 %) @end ifnothtml @* @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -7909,7 +8690,29 @@ A Notation manual tables (3079) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml +@end ifnothtml @ifhtml @html @@ -7947,7 +8750,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -8053,9 +8856,31 @@ B Cheat sheet (252) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html not translated @end html @@ -8215,7 +9040,29 @@ C GNU Free Documentation License (3724) @tab Walter Garcia-Fontes @* +Walter Garcia-Fontes +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml +@end ifnothtml @ifhtml @html @@ -8376,6 +9223,26 @@ Section titles @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -8565,6 +9432,26 @@ LilyPond --- \TITLE\ @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -8748,12 +9635,32 @@ up to date @item 1 Running @command{lilypond} @* -(5440) +(5469) @tab Walter Garcia-Fontes @* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html partially translated (95 %) @end html @@ -8968,7 +9875,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -8977,25 +9884,45 @@ partially up to date @item 2 Updating files with @command{convert-ly} @* -(1866) +(2097) @tab Walter Garcia-Fontes @* @ifhtml @html -translated + @end html @end ifhtml @ifnothtml -translated + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + +@html +partially translated (89 %) +@end html +@end ifhtml +@ifnothtml +partially translated (89 %) @end ifnothtml @* @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -9007,18 +9934,18 @@ partially up to date @ifhtml @html -translated +partially translated (89 %) @end html @end ifhtml @ifnothtml -translated +partially translated (89 %) @end ifnothtml @* @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -9096,18 +10023,18 @@ up to date @ifhtml @html -translated +partially translated (89 %) @end html @end ifhtml @ifnothtml -translated +partially translated (89 %) @end ifnothtml @* @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -9162,30 +10089,50 @@ up to date @ifhtml @html -translated +partially translated (89 %) +@end html +@end ifhtml +@ifnothtml +partially translated (89 %) +@end ifnothtml +@* + +@ifhtml + +@html +partially up to date +@end html +@end ifhtml +@ifnothtml +partially up to date +@end ifnothtml +@item +3 Running @command{lilypond-book} +@* +(4211) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html + @end html @end ifhtml @ifnothtml -translated + @end ifnothtml @* @ifhtml @html -partially up to date + @end html @end ifhtml @ifnothtml -partially up to date -@end ifnothtml -@item -3 Running @command{lilypond-book} -@* -(4211) -@tab Walter Garcia-Fontes -@* +@end ifnothtml @ifhtml @html @@ -9413,6 +10360,26 @@ partially up to date @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html not translated @end html @@ -9600,6 +10567,26 @@ partially up to date @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -9829,6 +10816,26 @@ A GNU Free Documentation License @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html not translated @end html @@ -10035,6 +11042,26 @@ Section titles @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -10047,11 +11074,11 @@ translated @ifhtml @html - +up to date @end html @end ifhtml @ifnothtml - +up to date @end ifnothtml @tab Pavel Fric @* @@ -10118,11 +11145,11 @@ translated @ifhtml @html -partially up to date +up to date @end html @end ifhtml @ifnothtml -partially up to date +up to date @end ifnothtml @tab John Mandereau @* @@ -10317,6 +11344,26 @@ LilyPond --- \TITLE\ @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -10593,12 +11640,32 @@ up to date @item Introduction @* -(5814) +(5793) @tab Walter Garcia-Fontes @* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -10611,7 +11678,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -10634,7 +11701,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -10659,11 +11726,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Francisco Vila @* @@ -10752,7 +11819,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -10822,11 +11889,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Jan Nieuwenhuizen @* @@ -10865,7 +11932,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -10890,7 +11957,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -10905,6 +11972,26 @@ Download @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -11207,6 +12294,26 @@ Manuals @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -11525,6 +12632,26 @@ A GNU Free Documentation License @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html not translated @end html @@ -11837,12 +12964,32 @@ up to date @item Community @* -(3524) +(2449) @tab Walter Garcia-Fontes @* @ifhtml +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@* + +@ifhtml + +@html + +@end html +@end ifhtml +@ifnothtml + +@end ifnothtml +@ifhtml + @html translated @end html @@ -11855,7 +13002,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -11867,18 +13014,18 @@ partially up to date @ifhtml @html -partially translated (95 %) +partially translated (92 %) @end html @end ifhtml @ifnothtml -partially translated (95 %) +partially translated (92 %) @end ifnothtml @* @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -11903,7 +13050,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -11983,18 +13130,18 @@ up to date @ifhtml @html -partially translated (95 %) +partially translated (92 %) @end html @end ifhtml @ifnothtml -partially translated (95 %) +partially translated (92 %) @end ifnothtml @* @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -12062,11 +13209,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Jan Nieuwenhuizen @* @@ -12119,18 +13266,18 @@ Anthony Fok @ifhtml @html -partially translated (97 %) +partially translated (95 %) @end html @end ifhtml @ifnothtml -partially translated (97 %) +partially translated (95 %) @end ifnothtml @* @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml diff --git a/Documentation/usage/running.itely b/Documentation/usage/running.itely index 5ab8e1f370..4eeabc80dc 100644 --- a/Documentation/usage/running.itely +++ b/Documentation/usage/running.itely @@ -493,31 +493,7 @@ lyrics. It is recommended to not use font @q{lists} or @q{aliases} in case an SVG viewer is unable to handle them. When using @emph{Web Open Font Format} (WOFF) files the additional @code{--svg-woff} switch is required. -@end multitable - -@noindent -@strong{Note for backend svg output:} -By default in svg output LilyPond will use the generic -@code{font-family} values of @code{serif}, @code{sans-serif}, or -@code{monospace}. Therefore, when using the backend @code{svg} command -you should explicitly define particular default fonts in your source -file; -@quotation -@verbatim -\paper { - #(define fonts - (make-pango-font-tree "TeX Gyre Schola" - "TeX Gyre Heros" - "TeX Gyre Cursor" - (/ staff-height pt 20))) -} -@end verbatim -@end quotation - -Also see @ruser{Entire document fonts}. - -@multitable @columnfractions .33 .16 .51 @item @code{check-internal-types} @tab @code{#f} @tab Check every property assignment for types. diff --git a/Documentation/usage/updating.itely b/Documentation/usage/updating.itely index bad4c8c9d8..fb18cc41ce 100644 --- a/Documentation/usage/updating.itely +++ b/Documentation/usage/updating.itely @@ -31,6 +31,7 @@ upgrade these older input files to use the newer syntax. * Command line options for convert-ly:: * Problems running convert-ly:: * Manual conversions:: +* Writing code to support multiple versions:: @end menu @@ -369,4 +370,41 @@ converted. (particularly \header{}) must come after the music. @end verbatim +@node Writing code to support multiple versions +@section Writing code to support multiple versions +In some cases, especially when writing @emph{library} code it is desirable +to support multiple LilyPond versions across breaking syntax changes. To +do this alternative portions of code can be wrapped into conditional +expressions depending on the currently executed LilyPond version. The +Scheme function @code{ly:version?} expects a comparison operator @var{op} +and a reference version @var{ver} passed as a list of integers with up to +three elements. Missing elements are ignored so @code{'(2 20)} is +equivalent to @emph{any} version of the 2.20 line of versions. +Constructs like the following are possible: + +@verbatim +#(cond + ((ly:version? > '(2 20)) + (ly:message "This is code to run for LilyPond after 2.20")) + ((ly:version? = '(2 19 57)) + (ly:message "This will only be executed with LilyPond 2.19.57")) + (else (ly:message "This will be executed in any other version"))) +@end verbatim + +Usually this will be integrated in library functions to allow alternative +syntax to be used, but it is also possible to use the comparison directly +within the music like in the following example: + +@verbatim +{ + c' d' e' f' + #(if (ly:version? = '(2 21)) + #{ \override NoteHead.color = #red #} + #{ \override NoteHead.color = #blue #}) + g' a' b' c'' +} +@end verbatim + +@strong{Note:} This function has been introduced in LilyPond 2.19.57, so +it is not possible to compare with versions earlier than that. diff --git a/Documentation/web/community.itexi b/Documentation/web/community.itexi index 03a8ecaab4..eea46827a2 100644 --- a/Documentation/web/community.itexi +++ b/Documentation/web/community.itexi @@ -9,6 +9,7 @@ @include included/acknowledge.itexi @include included/authors.itexi +@include included/gsoc.itexi @include included/helpus.itexi @node Community @@ -72,7 +73,8 @@ discussing LilyPond. @ref{News}: news from the LilyPond project. @item -@ref{Attic}: announcements and changelogs from past versions. +@ref{Attic}: announcements and changelogs from past versions, +old news, etc. @end itemize @divEnd @@ -494,9 +496,10 @@ days, as we have a limited number of volunteers for this task. Once a bug has been added to the tracker, you can comment it to add more information about it. -You may also mark the bug so that you automatically receive emails when -any activity on the bug occurs. This requires you have a google account -login. +In order to be automatically notified about any activity on the +tracker issue, you may subscribe by clicking the envelope +symbol next to the issue title. +Commenting and subscribing require being logged in with a sourceforge account. @divEnd @divClass{column-center-bottom} @@ -880,198 +883,7 @@ manuals can be found at @url{http://lilypond.org}} @node Google Summer of Code @unnumberedsec Google Summer of Code -@divClass{column-center-top} -@subheading What is Google Summer of Code? - -@uref{https://developers.google.com/open-source/gsoc/, GSoC} is a global -program that offers students stipends to write code for free software -and open source projects during the summer. It is an excellent -opportunity for students to gain experience with real-world software -development and make a contribution that benefits everyone. It brings -new contributors to LilyPond and enables students who are already -involved to become more involved. LilyPond participates in GSoC as part -of the @uref{http://www.gnu.org/, GNU project}. - -We have had GSoC participants in 2012, 2015 and 2016 and encourage students -to apply for future summers. - -If you have questions or would like to apply, send us an email on our -developer mailing list (see @ref{Contact}). - -@divEnd - -@divClass{column-center-middle-color2} -@subheading Project Ideas List - -Below is a list of suggested projects for GSoC or for anyone who is -interested in helping to improve LilyPond. (Last updated: November 2016) - -Mentor availability varies from project to project and from year to year. -Send us an email on our developer mailing list (see @ref{Contact}), and -we will help you find a mentor for a project that fits your interests -and skills. - -If you have ideas for a GSoC project that is not listed below you can -send us an email as well. There are a number of areas where LilyPond -could be improved, and our development team is always willing to help -those who would like to tackle a project like those listed below. - -A full list of all the current open issues can be found -@uref{http://sourceforge.net/p/testlilyissues/issues/, here}. - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Improve internal chord structure - -The internal representation of LilyPond chords is not powerful enough -to capture the nomenclature of jazz chords. Currently the chord has -a root, a bass and an inversion. It would be nice to be able to handle -stacked or polychords, minor/major, etc. In order to do this, an -internal representation with the ability to capture the essence of -complex chords must be developed. As a bonus, once the internal -representation is developed, the output formatting of chord names can -be improved. - -@strong{Difficulty:} Easy/medium -@strong{Requirements:} Scheme (Guile), but the level necessary can be -easily learned -@strong{Recommended:} Chord theory and naming -@strong{Mentor:} Carl Sorensen - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Adding variants of font glyphs - -@divClass{keep-bullets} -@itemize - -@item -Adding @q{on} and @q{between} staff-line variants. - -@item -Shorter and narrower variants of some glyphs for example, accidentals. -Another, more specific example could be an ancient notation breve -notehead coming in two variants one with a small or big @q{hole} within -it. - -@end itemize -@divEnd - -@strong{Difficulty:} easy -@strong{Requirements:} MetaFont, C++, good eye for details -@strong{Recommended knowledge:} basic LilyPond knowledge -@strong{Mentor:} Werner Lemberg - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Grace notes - -Fix problems with synchronization of grace notes. Grace notes can -interfere with LilyPond's timing and cause odd effects, especially when -multiple staffs are used where some have grace notes and others don't. -This is one of the longest-standing and one of the more embarrassing -@uref{https://sourceforge.net/p/testlilyissues/issues/34/,bugs} in -LilyPond. - -@strong{Difficulty:} medium -@strong{Requirements:} C++, MIDI -@strong{Recommended:} familiarity with LilyPond internals -@strong{Potential Mentors:} Mike Solomon (not available for GSoC 2016), -Carl Sorensen - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Improve default beam positioning - -For regular, cross-staff, broken and kneed beams. Beaming should depend -on context and neighbor notes (see section 2.2 of -@uref{http://imslp.org/wiki/Repository_of_Music-Notation_Mistakes_%28Coulon%2C_Jean-Pierre%29, -this book}). If possible also reduce beaming-computation time. - -@strong{Difficulty:} medium -@strong{Requirements:} C++, experience with writing heuristics -@strong{Recommended knowledge:} aesthetic sense -@strong{Potential Mentors:} Mike Solomon (not available for GSoC 2016), -Carl Sorensen - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Help improve compilation behavior - -Automatic code analysis tools, like valgrind memory leak detection or -callgrind code profilers, provide valuable information about possible -flaws in our C++ code. Cleaning up warnings would allow us to automate -the rejection of any patch which introduced extra warnings. - -@strong{Difficulty:} medium -@strong{Requirements:} C++ -@strong{Potential Mentors:} Reinhold Kainhofer (not available for GSoC -2016), Joe Neeman - -@divEnd - -@divClass{column-center-middle-color3} -@subheading MusicXML - -Improving MusicXML import and export functions: - -@divClass{keep-bullets} -@itemize - -@item -Handle basic musical content export like the MIDI export (i.e. using -dedicated exporter classes, derived from the translator class). - -@item -Build the XML tree of the basic musical content, add a connection from -music event to XML tag. - -@item -Let all LilyPond engravers do their job. - -@item -Link each output object (i.e. each stencil or group of stencils) to the -music cause (and thus to the XML tag in the XML tree). - -@item -Add an XML output backend, which can then add layout information for -each output object to the XML tags. - -@end itemize -@divEnd - -There are several possibilities for this project, including building upon -the MusicXML export project from GSoC 2015. - -@strong{Difficulty:} medium -@strong{Requirements:} MusicXML, Python, Scheme, basic LilyPond knowledge -@strong{Potential Mentors:} Reinhold Kainhofer, Mike Solomon (both not -available for GSoC 2016) - -Familiarity with other scorewriters (for cross-testing) would also help. - -@divEnd - -@divClass{column-center-middle-color3} -@subheading Improve slurs and ties - -The engraving quality of slurs and ties is often unsatisfactory. Ties -@q{broken} by clef or staff changes are not handled well. The project -could include collecting and sorting examples of bad output, deciding on -the intended output and writing code to improve them. - -@strong{Difficulty:} hard -@strong{Requirements:} C++, experience with writing heuristics -@strong{Recommended knowledge:} LilyPond knowledge, aesthetic sense -@strong{Potential Mentors:} Mike Solomon, Janek Warchoł (both not available for -GSoC 2016) - -@divEnd +@gsocCurrent @node Authors @@ -1199,15 +1011,13 @@ GSoC 2016) @node News @unnumberedsec News -@divClass{heading-center} -@warning{Many old announcements and changelogs can be found in -the @ref{Attic}} -@divEnd - -@include web/news-front.itexi - -@include web/news.itexi +@include web/news-new.itexi +@divClass{column-center-bottom} +@subheading Old News +Older news can be found in the @ref{Attic}, along with older +announcements and changelogs +@divEnd @node Attic @unnumberedsec Attic @@ -1246,7 +1056,7 @@ Descriptive list of changes by version: @divEnd -@divClass{column-center-bottom} +@divClass{column-center-middle-color3} @subheading Thanks Thanks to developers, contributors, bug hunters and suggestions for @@ -1263,7 +1073,7 @@ Thanks to developers, contributors, bug hunters and suggestions for @divEnd -@divClass{column-center-bottom} +@divClass{column-center-middle-color3} @subheading Changelogs Developers' changelogs by version: @@ -1281,3 +1091,16 @@ Developers' changelogs by version: @miscLink{CHANGES-0.0,v0.0} @divEnd + +@divClass{column-center-middle-color2 bigger-subsubheadings} +@gsocInactive +@divEnd + +@divClass{column-center-middle-color2} +@subheading Old News + +Older news items dating back to July 2003. Newer news can be found on +the @ref{News} page. +@divEnd + +@include web/news-old.itexi diff --git a/Documentation/web/introduction.itexi b/Documentation/web/introduction.itexi index a3bde1bf94..da7601b714 100644 --- a/Documentation/web/introduction.itexi +++ b/Documentation/web/introduction.itexi @@ -302,7 +302,6 @@ already decided to try LilyPond, first read about our @unnumberedsec Examples @divClass{column-center-top} - @subheading Beautiful Examples LilyPond is a powerful and flexible tool for engraving tasks of @@ -310,6 +309,7 @@ all kinds. Please browse our gallery of examples and be inspired! @divEnd + @divClass{column-center-middle-color2} @subheading Classical Music @@ -319,6 +319,7 @@ in LilyPond. @exampleImage{bach-bwv610} @divEnd + @divClass{column-center-middle-color2} @subheading Complex Notation @@ -329,6 +330,7 @@ beams, cross-staff stems, and voice-follow lines. @exampleImage{granados} @divEnd + @divClass{column-center-middle-color2} @subheading Early Music @@ -338,6 +340,7 @@ as this passage of Gregorian chant. @exampleImage{ancient-headword} @divEnd + @divClass{column-center-middle-color2} @subheading Modern Music @@ -365,6 +368,7 @@ full score, piano-vocal reduction, and a violin part. @divEnd + @divClass{column-center-middle-color2} @subheading Tablature @@ -376,25 +380,6 @@ staff. @exampleImage{tab-example} @divEnd -@divClass{column-center-middle-color2} -@subheading Schenker Graphs - -Standard output can be modified heavily. Here is an impressive -Schenkerian analysis, created by Kris Schaffer, for an article -in @uref{http://www.linuxjournal.com/article/8364 , Linux Journal}. -The colors have been added for better visibility. - -@exampleImage{bach-schenker} -@divEnd - -@divClass{column-center-middle-color2} -@subheading Customized Output - -A short excerpt from Stockhausen's Klavierstück II to demonstrate -LilyPond's ability to provide customised output. - -@exampleImage{Stockhausen_Klavierstueck2} -@divEnd @divClass{column-center-middle-color2} @subheading Vocal Music @@ -410,14 +395,6 @@ and the ligature braces above certain groups of notes. @exampleImage{aucun-snippet} @divEnd -@divClass{column-center-middle-color2} -@subheading Educational Applications - -LilyPond is perfectly suited for educational purposes as well. -Here is an example of a simple counterpoint exercise. - -@exampleImage{theory} -@divEnd @divClass{column-center-middle-color2} @subheading Lead Sheets @@ -430,6 +407,17 @@ to suit nearly any situation. @exampleImage{chart} @divEnd + +@divClass{column-center-middle-color2} +@subheading Educational Applications + +LilyPond is perfectly suited for educational purposes as well. +Here is an example of a simple counterpoint exercise. + +@exampleImage{theory} +@divEnd + + @divClass{column-center-middle-color2} @subheading Large Projects @@ -441,6 +429,29 @@ contributed by Hu Haipeng, a blind composer. @exampleImage{orchestra} @divEnd + +@divClass{column-center-middle-color2} +@subheading Customized Output + +A short excerpt from Stockhausen's Klavierstück II to demonstrate +LilyPond's ability to provide customised output. + +@exampleImage{Stockhausen_Klavierstueck2} +@divEnd + + +@divClass{column-center-middle-color2} +@subheading Schenker Graphs + +Standard output can be modified heavily. Here is an impressive +Schenkerian analysis, created by Kris Schaffer, for an article +in @uref{http://www.linuxjournal.com/article/8364 , Linux Journal}. +The colors have been added for better visibility. + +@exampleImage{bach-schenker} +@divEnd + + @divClass{column-center-bottom} @subheading Where now? @@ -933,7 +944,7 @@ look half as sharp as mine!} @divClass{testimonial-item} @imageFloat{orm-finnendahl,jpg, left} -@subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, professor of Composition, Musikhochschule Freiburg +@subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, professor of Composition, Hochschule für Musik und Darstellende Kunst Frankfurt am Main @qq{Although I don't know [LilyPond] very well yet, I'm @strong{*very} impressed. I used the program to input a motet of @@ -1270,13 +1281,6 @@ the text view when printed from there. A web-based LilyPond editor where you can typeset your scores directly online without needing to install LilyPond. -@subsubheading Tunefl -@uref{http://www.tunefl.com} - -With tunefl, you can typeset your mini-scores directly online without -needing to install LilyPond locally. It allows trying out all the -program's features using a convenient web interface. - @divEnd @divClass{column-center-top} @@ -1289,12 +1293,10 @@ program's features using a convenient web interface. @sourceimage{logo-macosx,,,} @sourceimage{logo-windows,,,} -@uref{http://elysium.thsoft.hu} +@uref{https://github.com/thSoft/elysium} -Elysium is a LilyPond IDE for Eclipse with an integrated, side-by-side -view for source and score. It includes rapid visual & auditive feedback -without having to switch contexts, and comes with many wizard-driven -templates. +A complete environment for editing scores with LilyPond in Eclipse, +offering a rich toolkit for conveniently managing LilyPond. @divEnd @@ -1334,7 +1336,7 @@ More information on setting up Vim can be found in @sourceimage{logo-macosx,,,} @subsubheading TeXShop -@uref{http://www.uoregon.edu/~koch/texshop} +@uref{http://pages.uoregon.edu/koch/texshop/} The TeXShop editor for MacOS@tie{}X can be extended to run LilyPond, @command{lilypond-book} and @command{convert-ly} from within the editor, @@ -1412,8 +1414,7 @@ interpreters. A C++ port is also available. @item @uref{http://strasheela.sourceforge.net/strasheela/doc/index.html,Strasheela}, an environment built on top of the -@uref{http://www.mozart-oz.org/, Mozart/Oz} constraint programming -language. +@uref{http://mozart.github.io/, The Mozart Programming System}. @end itemize @divEnd @@ -1447,7 +1448,7 @@ available for download at @item @uref{https://sourceforge.net/projects/noteedit.berlios/,NoteEdit}, which imported -@uref{http://www.makemusic.com/musicxml,MusicXML}, has been forked into +@uref{http://www.musicxml.com/,MusicXML}, has been forked into @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd} and @uref{http://canorus.org,Canorus}. @@ -1461,6 +1462,12 @@ developed, it appears to still work with version 4. @uref{https://launchpad.net/rumor/,Rumor}, a realtime monophonic MIDI-to-LilyPond converter. +@item +@uref{https://github.com/tiredpixel/tunefl,tunefl} +Typeset your mini-scores directly online without needing to install +LilyPond locally. It allows trying out all the program's features using +a convenient web interface. + @item @uref{http://sourceforge.net/projects/tuxguitar/,TuxGuitar}, a multitrack tablature editor and player, includes a score viewer and can diff --git a/Documentation/web/news-headlines.itexi b/Documentation/web/news-headlines.itexi index 688b933ebf..005ba154b5 100644 --- a/Documentation/web/news-headlines.itexi +++ b/Documentation/web/news-headlines.itexi @@ -11,7 +11,7 @@ @ifclear web_version @c no anchor links, just link to News page -@ref{News, LilyPond 2.19.53 released - @emph{December 17, 2016}} +@ref{News, LilyPond 2.19.65 released - @emph{August 06, 2017}} @ref{News, Two LilyPond projects in Google Summer of Code 2016 - @emph{April 23, 2016}} @@ -23,8 +23,8 @@ @ifset web_version @c anchor links, link to individual news items by their tag -@uref{news.html#LilyPond-2_002e19_002e53-released-December-17_002c-2016, - LilyPond 2.19.53 released - @emph{December 17, 2016}} +@uref{news.html#LilyPond-2_002e19_002e65-released-August-06_002c-2017, + LilyPond 2.19.65 released - @emph{August 06, 2017}} @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}} diff --git a/Documentation/web/news-front.itexi b/Documentation/web/news-new.itexi similarity index 96% rename from Documentation/web/news-front.itexi rename to Documentation/web/news-new.itexi index 98676759f2..d20f7ad2b3 100644 --- a/Documentation/web/news-front.itexi +++ b/Documentation/web/news-new.itexi @@ -2,17 +2,17 @@ @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 into news-old.itexi. @c keep two blank lines between news entries @c used for news about the upcoming release; see CG on Release Work @newsItem -@subheading LilyPond 2.19.53 released @emph{December 17, 2016} +@subheading LilyPond 2.19.65 released @emph{August 06, 2017} We are happy to announce the release of LilyPond -2.19.53. This release includes a number of enhancements, and contains some +2.19.65. 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.itexi b/Documentation/web/news-old.itexi similarity index 97% rename from Documentation/web/news.itexi rename to Documentation/web/news-old.itexi index b8b5961b1d..96bd95ab0c 100644 --- a/Documentation/web/news.itexi +++ b/Documentation/web/news-old.itexi @@ -23,9 +23,153 @@ NOTE: * Split news items in small chunks. It's OK to have more than 1 item on one day. - * don't duplicate entries from news-front.itexi + * don't duplicate entries from news-new.itexi @end ignore +@newsItem +@subheading LilyPond 2.19.64 released @emph{July 15, 2017} + +We are happy to announce the release of LilyPond +2.19.64. 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.63 released @emph{June 28, 2017} + +We are happy to announce the release of LilyPond +2.19.63. 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.62 released @emph{June 10, 2017} + +We are happy to announce the release of LilyPond +2.19.62. 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.61 released @emph{May 21, 2017} + +We are happy to announce the release of LilyPond +2.19.61. 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.60 released @emph{May 08, 2017} + +We are happy to announce the release of LilyPond +2.19.60. 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.59 released @emph{April 09, 2017} + +We are happy to announce the release of LilyPond +2.19.59. 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.58 released @emph{March 26, 2017} + +We are happy to announce the release of LilyPond +2.19.58. 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.57 released @emph{March 12, 2017} + +We are happy to announce the release of LilyPond +2.19.57. 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.56 released @emph{February 26, 2017} + +We are happy to announce the release of LilyPond +2.19.56. 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.55 released @emph{February 12, 2017} + +We are happy to announce the release of LilyPond +2.19.55. 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.54 released @emph{January 4, 2017} + +We are happy to announce the release of LilyPond +2.19.54. 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.53 released @emph{December 17, 2016} + +We are happy to announce the release of LilyPond +2.19.53. 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.52 released @emph{December 4, 2016} @@ -703,9 +847,9 @@ a potential final beta release for the upcoming stable release@tie{}2.18. The developers believe this to be feature-complete, the documentation to be accurate, and no important issues to be overlooked. For upgrading the syntax of your input files to the -latest version, see @uref{http://www.lilypond.org/doc/v2.17/Documentation/usage/updating-files-with-convert_002dly, Updating files with convert-ly}. +latest version, see @uref{http://lilypond.org/doc/v2.17/Documentation/usage/updating-files-with-convert_002dly, Updating files with convert-ly}. Please test this release and report back any problems, see -@uref{http://www.lilypond.org/website/bug-reports.html, Bug reports}. +@uref{http://lilypond.org/website/bug-reports.html, Bug reports}. @newsEnd @@ -717,9 +861,9 @@ a further beta release for the upcoming stable release@tie{}2.18. The developers believe the release to be feature-complete, the documentation to be accurate, and no important issues to be overlooked. For upgrading the syntax of your input files to the -latest version, see @uref{http://www.lilypond.org/doc/v2.17/Documentation/usage/updating-files-with-convert_002dly, Updating files with convert-ly}. +latest version, see @uref{http://lilypond.org/doc/v2.17/Documentation/usage/updating-files-with-convert_002dly, Updating files with convert-ly}. Please test this release and report back any problems, see -@uref{http://www.lilypond.org/website/bug-reports.html, Bug reports}. +@uref{http://lilypond.org/website/bug-reports.html, Bug reports}. @newsEnd @@ -732,7 +876,7 @@ developers are still busy finding solutions for some last-minute problems, but the release is supposed to be feature-complete, the documentation to be accurate, and no important issues to be overlooked. For upgrading the syntax of your input files to the -latest version, see @rprogram{Updating files with convert-ly}. +latest version, see @uref{http://lilypond.org/doc/v2.17/Documentation/usage/updating-files-with-convert_002dly, Updating files with convert-ly}. Please test this release and report back any problems, see @rweb{Bug reports}. diff --git a/Documentation/zh/macros.itexi b/Documentation/zh/macros.itexi index 69fc85ec77..6ebe20713d 100644 --- a/Documentation/zh/macros.itexi +++ b/Documentation/zh/macros.itexi @@ -103,7 +103,7 @@ For more information about how this manual fits with the other documentation, or to read this manual in other formats, see @rweb{Manuals}. -如果你需要任何手册,完整的文档可以在 @w{@uref{http://@/www@/.lilypond@/.org/}} 找到。 +如果你需要任何手册,完整的文档可以在 @w{@uref{http://@/lilypond@/.org/}} 找到。 @end cartouche @end macro diff --git a/Documentation/zh/translations.itexi b/Documentation/zh/translations.itexi index 4c094b2aff..740663ea3c 100644 --- a/Documentation/zh/translations.itexi +++ b/Documentation/zh/translations.itexi @@ -16,19 +16,19 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Last updated Sun Nov 6 09:35:15 UTC 2016 +@emph{最近更新 Sat Jun 24 12:50:41 UTC 2017 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @headitem LilyPond -- 人人的乐谱软件 -@tab Translators -@tab Translation checkers -@tab Translated -@tab Up to date -@tab Other info +@tab 翻译者 +@tab 翻译校对 +@tab 已翻译 +@tab 最新 +@tab 其他信息 @item -Section titles +章节标题 @* 760 @tab Ben Luo @@ -39,23 +39,23 @@ Anthony Fok @ifhtml @html -yes +是 @end html @end ifhtml @ifnothtml -yes +是 @end ifnothtml @tab @ifhtml @html -partially +部分 @end html @end ifhtml @ifnothtml -partially +部分 @end ifnothtml -@tab pre-GDP +@tab GDP 前 @item LilyPond --- \TITLE\ @* @@ -68,27 +68,27 @@ Anthony Fok @ifhtml @html -yes +是 @end html @end ifhtml @ifnothtml -yes +是 @end ifnothtml @tab @ifhtml @html -yes +是 @end html @end ifhtml @ifnothtml -yes +是 @end ifnothtml -@tab pre-GDP +@tab GDP 前 @item 简介 @* -5814 +5793 @tab Ben Luo @* Anthony Fok @@ -97,23 +97,23 @@ Anthony Fok @ifhtml @html -yes +是 @end html @end ifhtml @ifnothtml -yes +是 @end ifnothtml @tab @ifhtml @html -partially +部分 @end html @end ifhtml @ifnothtml -partially +部分 @end ifnothtml -@tab pre-GDP +@tab GDP 前 @item 下载 @* @@ -126,23 +126,23 @@ Anthony Fok @ifhtml @html -yes +是 @end html @end ifhtml @ifnothtml -yes +是 @end ifnothtml @tab @ifhtml @html -partially +部分 @end html @end ifhtml @ifnothtml -partially +部分 @end ifnothtml -@tab pre-GDP +@tab GDP 前 @item 手册 @* @@ -153,27 +153,27 @@ partially @ifhtml @html -yes +是 @end html @end ifhtml @ifnothtml -yes +是 @end ifnothtml @tab @ifhtml @html -partially +部分 @end html @end ifhtml @ifnothtml -partially +部分 @end ifnothtml -@tab pre-GDP +@tab GDP 前 @item 社区 @* -3524 +2449 @tab Ben Luo @* Anthony Fok @@ -182,22 +182,22 @@ Anthony Fok @ifhtml @html -partially (97 %) +部分 (95 %) @end html @end ifhtml @ifnothtml -partially (97 %) +部分 (95 %) @end ifnothtml @tab @ifhtml @html -partially +部分 @end html @end ifhtml @ifnothtml -partially +部分 @end ifnothtml -@tab pre-GDP +@tab GDP 前 @end multitable diff --git a/Documentation/zh/web.texi b/Documentation/zh/web.texi index c2a5daa8ab..4901d8908f 100644 --- a/Documentation/zh/web.texi +++ b/Documentation/zh/web.texi @@ -136,7 +136,7 @@ LilyPond (荷花池) 是一个音乐雕版软件,致力产生最高质量的 @divId{news} @c TODO: generate this automatically, including RSS feed. -@include web/news-front.itexi +@include web/news-headlines.itexi @divClass{float-right} (@ref{旧闻}) diff --git a/Documentation/zh/web/community.itexi b/Documentation/zh/web/community.itexi index 78208bae21..c2e5c2fcab 100644 --- a/Documentation/zh/web/community.itexi +++ b/Documentation/zh/web/community.itexi @@ -1159,9 +1159,7 @@ any patch which introduced extra warnings. the @ref{Attic}} @divEnd -@include web/news-front.itexi - -@include web/news.itexi +@include web/news-new.itexi @node Attic @@ -1218,3 +1216,5 @@ Developers' changelogs by version: @miscLink{CHANGES-0.0,v0.0} @divEnd + +@include web/news-old.itexi diff --git a/NEWS.txt b/NEWS.txt index fba3cfd23c..f845199263 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -1,7 +1,74 @@ New features in 2.20 since 2.18 ******************************* - • The music function ‘\\unfoldRepeats’ can now take an optional + • It is now possible to move systems with reference to their current + position using the ‘extra-offset’ subproperty of + ‘NonMusicalPaperColumn.line-break-system-details’. Both vertical + and horizontal changes are possible. This feature is especially + useful for making slight adjustments to the default vertical + position of individual systems. See *note + (lilypond-notation)Explicit staff and system positioning:: for more + information. + + • It is now possible to add text to analysis brackets through the + ‘HorizontalBracketText’ object. + \layout { + \context { + \Voice + \consists "Horizontal_bracket_engraver" + } + } + + { + \once \override HorizontalBracketText.text = "a" + c''\startGroup d''\stopGroup + e''-\tweak HorizontalBracketText.text "a'" \startGroup d''\stopGroup + } + image of music + + • The ends of hairpins may now be fine-tuned using the ‘shorten-pair’ + grob property, which previously only affected text-spanners like + ‘TupletBracket’ and ‘OttavaBracket’. Positive values offset to the + right, negative to the left. + { \once \override Hairpin.shorten-pair = #'(2 . 2) + c'1~\< + c'2~ c'\! + \once \override Hairpin.shorten-pair = #'(-2 . -2) + c'1~\< + c'2~ c'\! } + image of music + + • In fret-diagrams the distance between frets and the distance + between strings is now independently adjustable. Available are + ‘fret-distance’ and ‘string-distance’ as subproperties of + ‘fret-diagram-details’. + fretMrkp = \markup { \fret-diagram-terse #"x;x;o;2;3;2;" } + + \markuplist + \override #'(padding . 2) + \table #'(0 -1) { + "default" + + \fretMrkp + + "fret-distance" + + \override #'(fret-diagram-details . ((fret-distance . 2))) + \fretMrkp + + "string-distance" + + \override #'(fret-diagram-details . ((string-distance . 2))) + \fretMrkp + } + image of music + + • Accidental rules can now be defined across ‘ChoirStaff’ contexts. + Two new rules ‘choral’ and ‘choral-cautionary’ are available that + combine the characteristics of ‘modern-voice’ and ‘piano’ or their + equivalents with cautionary accidentals. + + • The music function ‘\unfoldRepeats’ can now take an optional argument-list specifying which type(s) of repeated music should be unfolded. Possible entries are ‘percent’, ‘tremolo’, ‘volta’. If the optional argument-list is unspecified, ‘repeated-music’ will be @@ -746,3 +813,36 @@ New features in 2.20 since 2.18 but significantly larger file size. Print quality at high resolutions will be unaffected. + • Default text fonts have been changed from ‘Century Schoolbook L’, + ‘sans-serif’, and ‘monospace’. + + For ‘svg’ backend: + Family Default font + ----------------------------------- + _roman_ ‘serif’ + _sans_ ‘sans-serif’ + _typewriter_‘monospace’ + + ‘serif’, ‘sans-serif’, and ‘monospace’ are ‘generic-family’ in SVG + and CSS specifications. + + For other backends: + Family Default font (alias) Alias definition lists + ---------------------------------------------------------------------------- + _roman_ ‘LilyPond Serif’ TeX Gyre Schola, C059, Century + SchoolBook URW, Century Schoolbook L, + DejaVu Serif, ..., serif + _sans_ ‘LilyPond Sans TeX Gyre Heros, Nimbus Sans, Nimbus + Serif’ Sans L, DejaVu Sans, ..., sans-serif + _typewriter_‘LilyPond Monospace’ TeX Gyre Cursor, Nimbus Mono PS, + Nimbus Mono, Nimbus Mono L, DejaVu + Sans Mono, ..., monospace + + ‘LilyPond Serif’, ‘LilyPond Sans Serif’, and ‘LilyPond Monospace’ + are font aliases defined in the LilyPond dedicated FontConfig + configuration file ‘00-lilypond-fonts.conf’. Where a character + dosen’t exist in the first font listed, the next font listed will + be used instead for that character. For details of alias + definitions, please see to ‘00-lilypond-fonts.conf’ under the + installed directory. + diff --git a/VERSION b/VERSION index 2a9106cf14..039a5f8286 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=2 MINOR_VERSION=19 -PATCH_LEVEL=53 +PATCH_LEVEL=65 MY_PATCH_LEVEL= VERSION_STABLE=2.18.2 -VERSION_DEVEL=2.19.53 +VERSION_DEVEL=2.19.65 diff --git a/aclocal.m4 b/aclocal.m4 index ed47b8350e..1228f6ca29 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -658,7 +658,16 @@ AC_DEFUN(STEPMAKE_GUILE_DEVEL, [ AC_MSG_CHECKING([for guile-config]) guile_config="guile-config" found="no" - for r in $GUILE_CONFIG $target_guile_config $host_guile_config $build_guile_config guile-config guile2-config guile2.0-config guile-2.0-config guile1-config guile1.9-config guile1.8-config guile-1-config guile-1.9-config guile-1.8-config; do + for r in $GUILE_CONFIG \ + $target_guile_config $host_guile_config $build_guile_config \ + guile-config \ + guile2-config guile-2-config guile-config-2 \ + guile2.2-config guile-2.2-config guile-config-2.2 \ + guile2.0-config guile-2.0-config guile-config-2.0 \ + guile1-config guile-1-config guile-config-1 \ + guile1.9-config guile-1.9-config guile-config-1.9 \ + guile1.8-config guile-1.8-config guile-config-1.8; \ + do exe=`STEPMAKE_GET_EXECUTABLE($r)` if ! $exe --version > /dev/null 2>&1 ; then continue @@ -1335,6 +1344,35 @@ AC_DEFUN(STEPMAKE_PANGO_FT2, [ fi ]) +AC_DEFUN(STEPMAKE_PANGO_FT2_WITH_OTF_FEATURE, [ + PKG_CHECK_MODULES(PANGO_FT2, $1 >= $3, + have_pangoft2_with_otf_feature=yes, true) + if test "$have_pangoft2_with_otf_feature" = yes ; then + AC_DEFINE(HAVE_PANGO16) + AC_DEFINE(HAVE_PANGO_FT2) + AC_DEFINE(HAVE_PANGO_FT2_WITH_OTF_FEATURE) + # Do not pollute user-CPPFLAGS with configure-CPPFLAGS + save_CPPFLAGS="$CPPFLAGS" + save_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $PANGO_FT2_CFLAGS" + LIBS="$PANGO_FT2_LIBS $LIBS" + AC_CHECK_HEADERS([pango/pangoft2.h]) + AC_CHECK_FUNCS([pango_ft2_font_map_create_context]) + AC_SUBST(PANGO_FT2_CFLAGS) + AC_SUBST(PANGO_FT2_LIBS) + CPPFLAGS="$save_CPPFLAGS" + LIBS="$save_LIBS" + else + # UGR + #r="lib$1-dev or $1-devel"e + r="libpango1.0-dev or pango?-devel" + ver="`pkg-config --modversion $1`" + STEPMAKE_ADD_ENTRY($2, ["$r >= $3 (It is required if you'd like "]) + STEPMAKE_ADD_ENTRY($2, ["to use OpenType font feature. "]) + STEPMAKE_ADD_ENTRY($2, ["installed: $ver)"]) + fi +]) + AC_DEFUN(STEPMAKE_FONTCONFIG, [ PKG_CHECK_MODULES(FONTCONFIG, $1 >= $3, have_fontconfig=yes, true) if test "$have_fontconfig" = yes ; then diff --git a/config.hh.in b/config.hh.in index 800d77d8a2..a093ad83b2 100644 --- a/config.hh.in +++ b/config.hh.in @@ -89,6 +89,9 @@ /* define if you have pango FT2 binding */ #define HAVE_PANGO_FT2 0 +/* define if you have pango FT2 binding with OpenType font feature */ +#define HAVE_PANGO_FT2_WITH_OTF_FEATURE 0 + /* define if Guile has types scm_t_hash_fold_fn and scm_t_hash_handle_fn */ #define HAVE_GUILE_HASH_FUNC 0 diff --git a/configure b/configure index a779d12994..04d9515b85 100755 --- a/configure +++ b/configure @@ -4391,8 +4391,8 @@ if test "$URWOTF_DIR" != "" ; then C059-Italic.otf C059-Roman.otf \ NimbusMonoPS-Bold.otf NimbusMonoPS-BoldItalic.otf \ NimbusMonoPS-Italic.otf NimbusMonoPS-Regular.otf \ - NimbusSans-Bold.otf NimbusSans-BoldOblique.otf \ - NimbusSans-Oblique.otf NimbusSans-Regular.otf; do + NimbusSans-Bold.otf NimbusSans-BoldItalic.otf \ + NimbusSans-Italic.otf NimbusSans-Regular.otf; do if test ! -f "$URWOTF_DIR/$f"; then MISSING_URWOTF_FILES="$MISSING_URWOTF_FILES $f" else @@ -4400,6 +4400,12 @@ if test "$URWOTF_DIR" != "" ; then fi done fi +if test "$MISSING_URWOTF_FILES"="NimbusSans-BoldItalic.otf NimbusSans-Italic.otf" && \ + test -f "$URWOTF_DIR/NimbusSans-BoldOblique.otf" && \ + test -f "$URWOTF_DIR/NimbusSans-Oblique.otf"; then + MISSING_URWOTF_FILES="" + URWOTF_FILES="$URWOTF_FILES NimbusSans-BoldOblique.otf NimbusSans-Oblique.otf" +fi if test "$URWOTF_DIR" = "" -o "$MISSING_URWOTF_FILES" != ""; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } @@ -4413,7 +4419,7 @@ $as_echo "no" >&6; } else - eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \""(download OTF files from 'http://git.ghostscript.com/?p=urw-core35-fonts.git;a=commit;h=79bcdfb34fbce12b592cce389fa7a19da6b5b018' and put them under '~/.local/share/fonts' etc., or use --with-urwotf-dir)"\"`\" + eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \""(download OTF files from 'http://git.ghostscript.com/?p=urw-core35-fonts.git;a=tree;hb=1f28a6fcd2176256a995db907d9ffe6e1b9b83e9' and put them under '~/.local/share/fonts' etc., or use --with-urwotf-dir)"\"`\" fi else @@ -8411,7 +8417,16 @@ then $as_echo_n "checking for guile-config... " >&6; } guile_config="guile-config" found="no" - for r in $GUILE_CONFIG $target_guile_config $host_guile_config $build_guile_config guile-config guile2-config guile2.0-config guile-2.0-config guile1-config guile1.9-config guile1.8-config guile-1-config guile-1.9-config guile-1.8-config; do + for r in $GUILE_CONFIG \ + $target_guile_config $host_guile_config $build_guile_config \ + guile-config \ + guile2-config guile-2-config guile-config-2 \ + guile2.2-config guile-2.2-config guile-config-2.2 \ + guile2.0-config guile-2.0-config guile-config-2.0 \ + guile1-config guile-1-config guile-config-1 \ + guile1.9-config guile-1.9-config guile-config-1.9 \ + guile1.8-config guile-1.8-config guile-config-1.8; \ + do exe=` ## which doesn't work in ash, if /usr/bin/which isn't installed ## type -p doesn't work in ash @@ -8474,7 +8489,7 @@ $as_echo_n "checking for guile-config... " >&6; } {printf "%.0f\n", $1*1000000 + $2*1000 + three}' ` sup=` - echo "2.2.0" | awk -F. ' + echo "2.3.0" | awk -F. ' { if ($3) {three = $3} else {three = 0} @@ -8485,8 +8500,8 @@ $as_echo_n "checking for guile-config... " >&6; } guile_config="$r >= 2.0.7 (installed: $ver)" continue else - if test -n "2.2.0" -a "$num" -ge "$sup"; then - guile_config="$r < 2.2.0 (installed: $ver)" + if test -n "2.3.0" -a "$num" -ge "$sup"; then + guile_config="$r < 2.3.0 (installed: $ver)" continue else guile_config=$r @@ -8900,7 +8915,16 @@ else $as_echo_n "checking for guile-config... " >&6; } guile_config="guile-config" found="no" - for r in $GUILE_CONFIG $target_guile_config $host_guile_config $build_guile_config guile-config guile2-config guile2.0-config guile-2.0-config guile1-config guile1.9-config guile1.8-config guile-1-config guile-1.9-config guile-1.8-config; do + for r in $GUILE_CONFIG \ + $target_guile_config $host_guile_config $build_guile_config \ + guile-config \ + guile2-config guile-2-config guile-config-2 \ + guile2.2-config guile-2.2-config guile-config-2.2 \ + guile2.0-config guile-2.0-config guile-config-2.0 \ + guile1-config guile-1-config guile-config-1 \ + guile1.9-config guile-1.9-config guile-config-1.9 \ + guile1.8-config guile-1.8-config guile-config-1.8; \ + do exe=` ## which doesn't work in ash, if /usr/bin/which isn't installed ## type -p doesn't work in ash @@ -11662,23 +11686,23 @@ fi else PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then - { $as_echo "$as_me:$LINENO: checking for pangoft2 >= 1.6.0" >&5 -$as_echo_n "checking for pangoft2 >= 1.6.0... " >&6; } + { $as_echo "$as_me:$LINENO: checking for pangoft2 >= 1.38.0" >&5 +$as_echo_n "checking for pangoft2 >= 1.38.0... " >&6; } - if $PKG_CONFIG --exists "pangoft2 >= 1.6.0" ; then + if $PKG_CONFIG --exists "pangoft2 >= 1.38.0" ; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } succeeded=yes { $as_echo "$as_me:$LINENO: checking PANGO_FT2_CFLAGS" >&5 $as_echo_n "checking PANGO_FT2_CFLAGS... " >&6; } - PANGO_FT2_CFLAGS=`$PKG_CONFIG --cflags "pangoft2 >= 1.6.0"` + PANGO_FT2_CFLAGS=`$PKG_CONFIG --cflags "pangoft2 >= 1.38.0"` { $as_echo "$as_me:$LINENO: result: $PANGO_FT2_CFLAGS" >&5 $as_echo "$PANGO_FT2_CFLAGS" >&6; } { $as_echo "$as_me:$LINENO: checking PANGO_FT2_LIBS" >&5 $as_echo_n "checking PANGO_FT2_LIBS... " >&6; } - PANGO_FT2_LIBS=`$PKG_CONFIG --libs "pangoft2 >= 1.6.0"` + PANGO_FT2_LIBS=`$PKG_CONFIG --libs "pangoft2 >= 1.38.0"` { $as_echo "$as_me:$LINENO: result: $PANGO_FT2_LIBS" >&5 $as_echo "$PANGO_FT2_LIBS" >&6; } else @@ -11686,7 +11710,7 @@ $as_echo "$PANGO_FT2_LIBS" >&6; } PANGO_FT2_LIBS="" ## If we have a custom action on failure, don't print errors, but ## do set a variable so people can do so. - PANGO_FT2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pangoft2 >= 1.6.0"` + PANGO_FT2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pangoft2 >= 1.38.0"` fi @@ -11696,18 +11720,22 @@ $as_echo "$PANGO_FT2_LIBS" >&6; } fi if test $succeeded = yes; then - have_pangoft2=yes + have_pangoft2_with_otf_feature=yes else true fi - if test "$have_pangoft2" = yes ; then + if test "$have_pangoft2_with_otf_feature" = yes ; then cat >>confdefs.h <<\_ACEOF #define HAVE_PANGO16 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_PANGO_FT2 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define HAVE_PANGO_FT2_WITH_OTF_FEATURE 1 _ACEOF # Do not pollute user-CPPFLAGS with configure-CPPFLAGS @@ -11968,14 +11996,21 @@ done LIBS="$save_LIBS" else # UGR - #r="libpangoft2-dev or pangoft2-devel"e - r="libpango1.0-dev or pango?-devel" - ver="`pkg-config --modversion pangoft2`" + #r="libpangoft2-dev or pangoft2-devel"e + r="libpango1.0-dev or pango?-devel" + ver="`pkg-config --modversion pangoft2`" - eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \""$r >= 1.6.0 (installed: $ver)"\"`\" + eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \""$r >= 1.38.0 (It is required if you'd like "\"`\" + + + eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \""to use OpenType font feature. "\"`\" + + + eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \""installed: $ver)"\"`\" fi +if test "$have_pangoft2_with_otf_feature" != yes ; then succeeded=no @@ -12032,31 +12067,31 @@ fi else PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then - { $as_echo "$as_me:$LINENO: checking for fontconfig >= 2.4.0" >&5 -$as_echo_n "checking for fontconfig >= 2.4.0... " >&6; } + { $as_echo "$as_me:$LINENO: checking for pangoft2 >= 1.6.0" >&5 +$as_echo_n "checking for pangoft2 >= 1.6.0... " >&6; } - if $PKG_CONFIG --exists "fontconfig >= 2.4.0" ; then + if $PKG_CONFIG --exists "pangoft2 >= 1.6.0" ; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } succeeded=yes - { $as_echo "$as_me:$LINENO: checking FONTCONFIG_CFLAGS" >&5 -$as_echo_n "checking FONTCONFIG_CFLAGS... " >&6; } - FONTCONFIG_CFLAGS=`$PKG_CONFIG --cflags "fontconfig >= 2.4.0"` - { $as_echo "$as_me:$LINENO: result: $FONTCONFIG_CFLAGS" >&5 -$as_echo "$FONTCONFIG_CFLAGS" >&6; } + { $as_echo "$as_me:$LINENO: checking PANGO_FT2_CFLAGS" >&5 +$as_echo_n "checking PANGO_FT2_CFLAGS... " >&6; } + PANGO_FT2_CFLAGS=`$PKG_CONFIG --cflags "pangoft2 >= 1.6.0"` + { $as_echo "$as_me:$LINENO: result: $PANGO_FT2_CFLAGS" >&5 +$as_echo "$PANGO_FT2_CFLAGS" >&6; } - { $as_echo "$as_me:$LINENO: checking FONTCONFIG_LIBS" >&5 -$as_echo_n "checking FONTCONFIG_LIBS... " >&6; } - FONTCONFIG_LIBS=`$PKG_CONFIG --libs "fontconfig >= 2.4.0"` - { $as_echo "$as_me:$LINENO: result: $FONTCONFIG_LIBS" >&5 -$as_echo "$FONTCONFIG_LIBS" >&6; } + { $as_echo "$as_me:$LINENO: checking PANGO_FT2_LIBS" >&5 +$as_echo_n "checking PANGO_FT2_LIBS... " >&6; } + PANGO_FT2_LIBS=`$PKG_CONFIG --libs "pangoft2 >= 1.6.0"` + { $as_echo "$as_me:$LINENO: result: $PANGO_FT2_LIBS" >&5 +$as_echo "$PANGO_FT2_LIBS" >&6; } else - FONTCONFIG_CFLAGS="" - FONTCONFIG_LIBS="" + PANGO_FT2_CFLAGS="" + PANGO_FT2_LIBS="" ## If we have a custom action on failure, don't print errors, but ## do set a variable so people can do so. - FONTCONFIG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "fontconfig >= 2.4.0"` + PANGO_FT2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pangoft2 >= 1.6.0"` fi @@ -12066,94 +12101,465 @@ $as_echo "$FONTCONFIG_LIBS" >&6; } fi if test $succeeded = yes; then - have_fontconfig=yes + have_pangoft2=yes else true fi - if test "$have_fontconfig" = yes ; then + if test "$have_pangoft2" = yes ; then cat >>confdefs.h <<\_ACEOF -#define HAVE_FONTCONFIG 1 +#define HAVE_PANGO16 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define HAVE_PANGO_FT2 1 _ACEOF # Do not pollute user-CPPFLAGS with configure-CPPFLAGS save_CPPFLAGS="$CPPFLAGS" save_LIBS="$LIBS" - CPPFLAGS="$FONTCONFIG_CFLAGS $CPPFLAGS" - LIBS="$FONTCONFIG_LIBS $LIBS" + CPPFLAGS="$CPPFLAGS $PANGO_FT2_CFLAGS" + LIBS="$PANGO_FT2_LIBS $LIBS" +for ac_header in pango/pangoft2.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 - CPPFLAGS="$save_CPPFLAGS" - LIBS="$save_LIBS" - else - r="libfontconfig-dev or fontconfig-devel" - ver="`pkg-config --modversion fontconfig`" + ac_header_compiler=no +fi - eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \""$r >= 2.4.0 (installed: $ver)"\"`\" +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } - fi +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } - succeeded=no +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - if test -z "$PKG_CONFIG"; then - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_PKG_CONFIG+set}" = set; then + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" - ;; -esac + eval "$as_ac_Header=\$ac_header_preproc" fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF +fi - fi +done - if test "$PKG_CONFIG" = "no" ; then - echo "*** The pkg-config script could not be found. Make sure it is" - echo "*** in your path, or set the PKG_CONFIG environment variable" - echo "*** to the full path to pkg-config." - echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." - else - PKG_CONFIG_MIN_VERSION=0.9.0 - if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then - { $as_echo "$as_me:$LINENO: checking for freetype2 >= 2.1.10" >&5 -$as_echo_n "checking for freetype2 >= 2.1.10... " >&6; } - if $PKG_CONFIG --exists "freetype2 >= 2.1.10" ; then - { $as_echo "$as_me:$LINENO: result: yes" >&5 +for ac_func in pango_ft2_font_map_create_context +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_var=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + CPPFLAGS="$save_CPPFLAGS" + LIBS="$save_LIBS" + else + # UGR + #r="libpangoft2-dev or pangoft2-devel"e + r="libpango1.0-dev or pango?-devel" + ver="`pkg-config --modversion pangoft2`" + + eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \""$r >= 1.6.0 (installed: $ver)"\"`\" + + fi + +fi + + + succeeded=no + + if test -z "$PKG_CONFIG"; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi + + if test "$PKG_CONFIG" = "no" ; then + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + PKG_CONFIG_MIN_VERSION=0.9.0 + if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then + { $as_echo "$as_me:$LINENO: checking for fontconfig >= 2.4.0" >&5 +$as_echo_n "checking for fontconfig >= 2.4.0... " >&6; } + + if $PKG_CONFIG --exists "fontconfig >= 2.4.0" ; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + succeeded=yes + + { $as_echo "$as_me:$LINENO: checking FONTCONFIG_CFLAGS" >&5 +$as_echo_n "checking FONTCONFIG_CFLAGS... " >&6; } + FONTCONFIG_CFLAGS=`$PKG_CONFIG --cflags "fontconfig >= 2.4.0"` + { $as_echo "$as_me:$LINENO: result: $FONTCONFIG_CFLAGS" >&5 +$as_echo "$FONTCONFIG_CFLAGS" >&6; } + + { $as_echo "$as_me:$LINENO: checking FONTCONFIG_LIBS" >&5 +$as_echo_n "checking FONTCONFIG_LIBS... " >&6; } + FONTCONFIG_LIBS=`$PKG_CONFIG --libs "fontconfig >= 2.4.0"` + { $as_echo "$as_me:$LINENO: result: $FONTCONFIG_LIBS" >&5 +$as_echo "$FONTCONFIG_LIBS" >&6; } + else + FONTCONFIG_CFLAGS="" + FONTCONFIG_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + FONTCONFIG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "fontconfig >= 2.4.0"` + + fi + + + + fi + fi + + if test $succeeded = yes; then + have_fontconfig=yes + else + true + fi + + if test "$have_fontconfig" = yes ; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_FONTCONFIG 1 +_ACEOF + + # Do not pollute user-CPPFLAGS with configure-CPPFLAGS + save_CPPFLAGS="$CPPFLAGS" + save_LIBS="$LIBS" + CPPFLAGS="$FONTCONFIG_CFLAGS $CPPFLAGS" + LIBS="$FONTCONFIG_LIBS $LIBS" + + + CPPFLAGS="$save_CPPFLAGS" + LIBS="$save_LIBS" + else + r="libfontconfig-dev or fontconfig-devel" + ver="`pkg-config --modversion fontconfig`" + + eval "REQUIRED"=\"`eval echo \"'$'REQUIRED\" \""$r >= 2.4.0 (installed: $ver)"\"`\" + + fi + + + + succeeded=no + + if test -z "$PKG_CONFIG"; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi + + if test "$PKG_CONFIG" = "no" ; then + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + PKG_CONFIG_MIN_VERSION=0.9.0 + if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then + { $as_echo "$as_me:$LINENO: checking for freetype2 >= 2.1.10" >&5 +$as_echo_n "checking for freetype2 >= 2.1.10... " >&6; } + + if $PKG_CONFIG --exists "freetype2 >= 2.1.10" ; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } succeeded=yes @@ -12292,60 +12698,318 @@ IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -case $host_os in - *mingw32* ) MINGW32=yes;; - * ) MINGW32=no;; -esac +case $host_os in + *mingw32* ) MINGW32=yes;; + * ) MINGW32=no;; +esac + + + if test "$CYGWIN" = "yes"; then + LN_S='cp -r' # Cygwin symbolic links do not work for native apps. + program_suffix=.exe + INSTALL="\$(SHELL) \$(stepdir)/../bin/install-dot-exe.sh -c" + elif test "$MINGW32" = "yes"; then + LN='cp -r' + LN_S='cp -r' + program_suffix=.exe + INSTALL="\$(SHELL) \$(stepdir)/../bin/install-dot-exe.sh -c" + PATHSEP=';' + fi + + + + cat >>confdefs.h <<_ACEOF +#define DIRSEP '${DIRSEP}' +_ACEOF + + cat >>confdefs.h <<_ACEOF +#define PATHSEP '${PATHSEP}' +_ACEOF + + + + + + { $as_echo "$as_me:$LINENO: checking for some flavor of Windows" >&5 +$as_echo_n "checking for some flavor of Windows... " >&6; } + if test "$CYGWIN$MINGW32" = "nono"; then + PLATFORM_WINDOWS=no + else + PLATFORM_WINDOWS=yes + fi + { $as_echo "$as_me:$LINENO: result: $PLATFORM_WINDOWS" >&5 +$as_echo "$PLATFORM_WINDOWS" >&6; } + + + for ac_prog in $target-windres windres +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_WINDRES+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$WINDRES"; then + ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_WINDRES="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +WINDRES=$ac_cv_prog_WINDRES +if test -n "$WINDRES"; then + { $as_echo "$as_me:$LINENO: result: $WINDRES" >&5 +$as_echo "$WINDRES" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$WINDRES" && break +done +test -n "$WINDRES" || WINDRES="no" + + + + r="`eval echo '$'"WINDRES"`" + if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"WINDRES"`' : '.*\(echo\)' > /dev/null; then + true + else + ##STEPMAKE_WARN(cannot find . ) + false + fi + + if test $? -ne 0; then + + eval "x"=\"`eval echo \"'$'x\" \"$target-windres windres\"`\" + + if test "x" = "REQUIRED"; then + command="echo ERROR: $target-windres windres not found" + # abort configure process here? + else + command="- echo $target-windres windres not found" + fi + eval "WINDRES"='$command' + false + else + true + fi + + if test $? -eq 0 -a -n ""; then + + r="`eval echo '$'"WINDRES"`" + { $as_echo "$as_me:$LINENO: checking $r version" >&5 +$as_echo_n "checking $r version... " >&6; } + exe=` + ## which doesn't work in ash, if /usr/bin/which isn't installed + ## type -p doesn't work in ash + ## command -v doesn't work in zsh + ## command -v "$r" 2>&1 + ## this test should work in ash, bash, pdksh (ksh), zsh + type -p $r 2>/dev/null | tail -n 1 | awk '{print $NF}' +` + if test -n ""; then + ver="" + else + ver=` + ## "$exe" --version 2>&1 | grep -v '^$' | head -n 1 | awk '{print $NF}' + ## + ## ARG. + ## Workaround for broken Debian gcc version string: + ## gcc (GCC) 3.1.1 20020606 (Debian prerelease) + ## + ## -V: Workaround for python + + #dnl + + ## Assume and hunt for dotted version multiplet. + ## use eval trickery, because we cannot use multi-level $() instead of `` + ## for compatibility reasons. + + ## grab the first version number in --version output. + eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | + grep -E '(^| )[0-9][0-9]*\.[0-9]' | + head -n 1 | + tr ' ' '\n' | + sed 's/\([0-9][0-9]*\.[0-9][0-9.]*\).*/\1/g' | + grep -E '(^| )[0-9][0-9]*\.[0-9]' | + head -n 1\`\" + + if test -z "$_ver"; then + ## If empty, try date [fontforge] + eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 \ + | grep '\(^\|[^0-9a-f]\)[0-9]\{6,8\}\([^0-9a-f]\|$\)' \ + | head -n 1 \ + | sed -e 's/^[^.0-9]*//' -e 's/[^.0-9]*$//'\`\" + fi + echo "$_ver" + #dnl +` + fi + num=` + echo "$ver" | awk -F. ' + { + if ($3) {three = $3} + else {three = 0} + } + {printf "%.0f\n", $1*1000000 + $2*1000 + three}' +` + req=` + echo "" | awk -F. ' + { + if ($3) {three = $3} + else {three = 0} + } + {printf "%.0f\n", $1*1000000 + $2*1000 + three}' +` + { $as_echo "$as_me:$LINENO: result: $ver" >&5 +$as_echo "$ver" >&6; } + if test "$num" -lt "$req"; then + + eval "x"=\"`eval echo \"'$'x\" \""$r >= (installed: $ver)"\"`\" + fi + vervar="`echo WINDRES | tr 'a-z' 'A-Z'`_VERSION" + eval `echo $vervar=$num` +## AC_SUBST(`eval echo $vervar`) - if test "$CYGWIN" = "yes"; then - LN_S='cp -r' # Cygwin symbolic links do not work for native apps. - program_suffix=.exe - INSTALL="\$(SHELL) \$(stepdir)/../bin/install-dot-exe.sh -c" - elif test "$MINGW32" = "yes"; then - LN='cp -r' - LN_S='cp -r' - program_suffix=.exe - INSTALL="\$(SHELL) \$(stepdir)/../bin/install-dot-exe.sh -c" - PATHSEP=';' fi - cat >>confdefs.h <<_ACEOF -#define DIRSEP '${DIRSEP}' -_ACEOF - cat >>confdefs.h <<_ACEOF -#define PATHSEP '${PATHSEP}' -_ACEOF +# guile executable for some scripts +if test "$GUILEv2" = "yes" +then + { $as_echo "$as_me:$LINENO: checking for guile" >&5 +$as_echo_n "checking for guile... " >&6; } + guile="guile" + found="no" + for r in $GUILE guile guile2 guile2.0 guile-2.0 guile1 guile1.9 guile1.8 guile-1 guile-1.9 guile-1.8; do + exe=` + ## which doesn't work in ash, if /usr/bin/which isn't installed + ## type -p doesn't work in ash + ## command -v doesn't work in zsh + ## command -v "$r" 2>&1 + ## this test should work in ash, bash, pdksh (ksh), zsh + type -p $r 2>/dev/null | tail -n 1 | awk '{print $NF}' +` + if ! $exe --version > /dev/null 2>&1 ; then + continue + fi + ver=` + ## "$exe" --version 2>&1 | grep -v '^$' | head -n 1 | awk '{print $NF}' + ## + ## ARG. + ## Workaround for broken Debian gcc version string: + ## gcc (GCC) 3.1.1 20020606 (Debian prerelease) + ## + ## -V: Workaround for python + #dnl + ## Assume and hunt for dotted version multiplet. + ## use eval trickery, because we cannot use multi-level $() instead of `` + ## for compatibility reasons. + ## grab the first version number in --version output. + eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 | + grep -E '(^| )[0-9][0-9]*\.[0-9]' | + head -n 1 | + tr ' ' '\n' | + sed 's/\([0-9][0-9]*\.[0-9][0-9.]*\).*/\1/g' | + grep -E '(^| )[0-9][0-9]*\.[0-9]' | + head -n 1\`\" - { $as_echo "$as_me:$LINENO: checking for some flavor of Windows" >&5 -$as_echo_n "checking for some flavor of Windows... " >&6; } - if test "$CYGWIN$MINGW32" = "nono"; then - PLATFORM_WINDOWS=no - else - PLATFORM_WINDOWS=yes + if test -z "$_ver"; then + ## If empty, try date [fontforge] + eval _ver=\"\`("$exe" --version || "$exe" -V) 2>&1 \ + | grep '\(^\|[^0-9a-f]\)[0-9]\{6,8\}\([^0-9a-f]\|$\)' \ + | head -n 1 \ + | sed -e 's/^[^.0-9]*//' -e 's/[^.0-9]*$//'\`\" fi - { $as_echo "$as_me:$LINENO: result: $PLATFORM_WINDOWS" >&5 -$as_echo "$PLATFORM_WINDOWS" >&6; } + echo "$_ver" + #dnl +` + num=` + echo "$ver" | awk -F. ' + { + if ($3) {three = $3} + else {three = 0} + } + {printf "%.0f\n", $1*1000000 + $2*1000 + three}' +` + req=` + echo "2.0.7" | awk -F. ' + { + if ($3) {three = $3} + else {three = 0} + } + {printf "%.0f\n", $1*1000000 + $2*1000 + three}' +` + sup=` + echo "2.3.0" | awk -F. ' + { + if ($3) {three = $3} + else {three = 0} + } + {printf "%.0f\n", $1*1000000 + $2*1000 + three}' +` + if test -n "2.0.7" && test "$num" -lt "$req"; then + guile="$r >= 2.0.7 (installed: $ver)" + continue + else + if test -n "2.3.0" && test "$num" -ge "$sup"; then + guile="$r < 2.3.0 (installed: $ver)" + continue + else + guile=$r + found=$r + break + fi + fi + done + { $as_echo "$as_me:$LINENO: result: $found" >&5 +$as_echo "$found" >&6; } + if test "$found" != "no"; then + { $as_echo "$as_me:$LINENO: checking $guile version" >&5 +$as_echo_n "checking $guile version... " >&6; } + { $as_echo "$as_me:$LINENO: result: $ver" >&5 +$as_echo "$ver" >&6; } + GUILE=$found + else + eval "OPTIONAL"=\"`eval echo \"'$'OPTIONAL\" \"$guile\"`\" - for ac_prog in $target-windres windres + fi + + for ac_prog in $GUILE do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_WINDRES+set}" = set; then +if test "${ac_cv_prog_GUILE+set}" = set; then $as_echo_n "(cached) " >&6 else - if test -n "$WINDRES"; then - ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. + if test -n "$GUILE"; then + ac_cv_prog_GUILE="$GUILE" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -12354,7 +13018,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_WINDRES="$ac_prog" + ac_cv_prog_GUILE="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -12364,24 +13028,24 @@ IFS=$as_save_IFS fi fi -WINDRES=$ac_cv_prog_WINDRES -if test -n "$WINDRES"; then - { $as_echo "$as_me:$LINENO: result: $WINDRES" >&5 -$as_echo "$WINDRES" >&6; } +GUILE=$ac_cv_prog_GUILE +if test -n "$GUILE"; then + { $as_echo "$as_me:$LINENO: result: $GUILE" >&5 +$as_echo "$GUILE" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi - test -n "$WINDRES" && break + test -n "$GUILE" && break done -test -n "$WINDRES" || WINDRES="no" +test -n "$GUILE" || GUILE="no" - r="`eval echo '$'"WINDRES"`" - if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"WINDRES"`' : '.*\(echo\)' > /dev/null; then + r="`eval echo '$'"GUILE"`" + if test -n "$r" -a "$r" != "error" -a "$r" != "no" && expr '`eval echo '$'"GUILE"`' : '.*\(echo\)' > /dev/null; then true else ##STEPMAKE_WARN(cannot find . ) @@ -12390,23 +13054,69 @@ test -n "$WINDRES" || WINDRES="no" if test $? -ne 0; then - eval "x"=\"`eval echo \"'$'x\" \"$target-windres windres\"`\" + eval ""=\"`eval echo \"'$'\" \"$GUILE\"`\" - if test "x" = "REQUIRED"; then - command="echo ERROR: $target-windres windres not found" + if test "" = "REQUIRED"; then + command="echo ERROR: $GUILE not found" # abort configure process here? else - command="- echo $target-windres windres not found" + command="- echo $GUILE not found" fi - eval "WINDRES"='$command' + eval "GUILE"='$command' false else true fi - if test $? -eq 0 -a -n ""; then + if test $? -eq 0; then + for ac_prog in $GUILE +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_GUILE+set}" = set; then + $as_echo_n "(cached) " >&6 +else + case $GUILE in + [\\/]* | ?:[\\/]*) + ac_cv_path_GUILE="$GUILE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GUILE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS - r="`eval echo '$'"WINDRES"`" + ;; +esac +fi +GUILE=$ac_cv_path_GUILE +if test -n "$GUILE"; then + { $as_echo "$as_me:$LINENO: result: $GUILE" >&5 +$as_echo "$GUILE" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$GUILE" && break +done + + if test -n ""; then + + r="`eval echo '$'"GUILE"`" { $as_echo "$as_me:$LINENO: checking $r version" >&5 $as_echo_n "checking $r version... " >&6; } exe=` @@ -12475,19 +13185,18 @@ $as_echo_n "checking $r version... " >&6; } $as_echo "$ver" >&6; } if test "$num" -lt "$req"; then - eval "x"=\"`eval echo \"'$'x\" \""$r >= (installed: $ver)"\"`\" + eval ""=\"`eval echo \"'$'\" \""$r >= (installed: $ver)"\"`\" fi - vervar="`echo WINDRES | tr 'a-z' 'A-Z'`_VERSION" + vervar="`echo GUILE | tr 'a-z' 'A-Z'`_VERSION" eval `echo $vervar=$num` ## AC_SUBST(`eval echo $vervar`) + fi fi - - -# guile executable for some scripts +else { $as_echo "$as_me:$LINENO: checking for guile" >&5 $as_echo_n "checking for guile... " >&6; } @@ -12788,6 +13497,7 @@ $as_echo "$ver" >&6; } fi +fi # perl for help2man and for mf2pt1.pl diff --git a/configure.ac b/configure.ac index d77ea15881..8e3cabe01e 100644 --- a/configure.ac +++ b/configure.ac @@ -127,8 +127,8 @@ if test "$URWOTF_DIR" != "" ; then C059-Italic.otf C059-Roman.otf \ NimbusMonoPS-Bold.otf NimbusMonoPS-BoldItalic.otf \ NimbusMonoPS-Italic.otf NimbusMonoPS-Regular.otf \ - NimbusSans-Bold.otf NimbusSans-BoldOblique.otf \ - NimbusSans-Oblique.otf NimbusSans-Regular.otf; do + NimbusSans-Bold.otf NimbusSans-BoldItalic.otf \ + NimbusSans-Italic.otf NimbusSans-Regular.otf; do if test ! -f "$URWOTF_DIR/$f"; then MISSING_URWOTF_FILES="$MISSING_URWOTF_FILES $f" else @@ -136,6 +136,12 @@ if test "$URWOTF_DIR" != "" ; then fi done fi +if test "$MISSING_URWOTF_FILES"="NimbusSans-BoldItalic.otf NimbusSans-Italic.otf" && \ + test -f "$URWOTF_DIR/NimbusSans-BoldOblique.otf" && \ + test -f "$URWOTF_DIR/NimbusSans-Oblique.otf"; then + MISSING_URWOTF_FILES="" + URWOTF_FILES="$URWOTF_FILES NimbusSans-BoldOblique.otf NimbusSans-Oblique.otf" +fi if test "$URWOTF_DIR" = "" -o "$MISSING_URWOTF_FILES" != ""; then AC_MSG_RESULT(no) STEPMAKE_ADD_ENTRY(OPTIONAL,URW++ OTF fonts) @@ -143,7 +149,7 @@ if test "$URWOTF_DIR" = "" -o "$MISSING_URWOTF_FILES" != ""; then if test "$FCLIST" = ""; then STEPMAKE_ADD_ENTRY(OPTIONAL,'(install the fc-list utility from FontConfig, or use --with-urwotf-dir)') else - STEPMAKE_ADD_ENTRY(OPTIONAL,"(download OTF files from 'http://git.ghostscript.com/?p=urw-core35-fonts.git;a=commit;h=79bcdfb34fbce12b592cce389fa7a19da6b5b018' and put them under '~/.local/share/fonts' etc., or use --with-urwotf-dir)") + STEPMAKE_ADD_ENTRY(OPTIONAL,"(download OTF files from 'http://git.ghostscript.com/?p=urw-core35-fonts.git;a=tree;hb=1f28a6fcd2176256a995db907d9ffe6e1b9b83e9' and put them under '~/.local/share/fonts' etc., or use --with-urwotf-dir)") fi else STEPMAKE_ADD_ENTRY(OPTIONAL,'(these files are missing: $MISSING_URWOTF_FILES)') @@ -181,7 +187,7 @@ STEPMAKE_TEXMF(REQUIRED) STEPMAKE_TEXMF_DIRS(REQUIRED) if test "$GUILEv2" = "yes" then - STEPMAKE_GUILE_DEVEL(REQUIRED, 2.0.7, 2.2.0) + STEPMAKE_GUILE_DEVEL(REQUIRED, 2.0.7, 2.3.0) else STEPMAKE_GUILE_DEVEL(REQUIRED, 1.8.2, 1.9.0) fi @@ -260,14 +266,22 @@ AC_MSG_RESULT($rpath_b) HOST_ARCH=`$CC -dumpmachine` AC_SUBST(HOST_ARCH) -STEPMAKE_PANGO_FT2(pangoft2, REQUIRED, 1.6.0) +STEPMAKE_PANGO_FT2_WITH_OTF_FEATURE(pangoft2, OPTIONAL, 1.38.0) +if test "$have_pangoft2_with_otf_feature" != yes ; then + STEPMAKE_PANGO_FT2(pangoft2, REQUIRED, 1.6.0) +fi STEPMAKE_FONTCONFIG(fontconfig, REQUIRED, 2.4.0) STEPMAKE_FREETYPE2(freetype2, REQUIRED, 2.1.10) STEPMAKE_WINDOWS # guile executable for some scripts -STEPMAKE_GUILE(OPTIONAL, 1.8.2, 1.9.0) +if test "$GUILEv2" = "yes" +then + STEPMAKE_GUILE(OPTIONAL, 2.0.7, 2.3.0) +else + STEPMAKE_GUILE(OPTIONAL, 1.8.2, 1.9.0) +fi # perl for help2man and for mf2pt1.pl STEPMAKE_PERL(REQUIRED) diff --git a/elisp/lilypond-what-beat.el b/elisp/lilypond-what-beat.el index 59a4fe1d52..e42f171e53 100644 --- a/elisp/lilypond-what-beat.el +++ b/elisp/lilypond-what-beat.el @@ -80,15 +80,15 @@ (defun parse-duration (duration) "Returns a duration string parsed as '(numerator denominator)" (string-match duration-regex duration) - (let ((result (list 1 (string-to-int (extract-match duration 2)))) + (let ((result (list 1 (string-to-number (extract-match duration 2)))) (dots (extract-match duration 4)) (numerator (or (extract-match duration 6) "1")) (denominator (or (extract-match duration 8) "1"))) (if (and (not (null dots)) (< 0 (string-width dots))) (dotimes (dummy (string-width dots)) (setq result (list (1+ (* 2 (car result))) (* 2 (cadr result)))))) - (list (* (string-to-int numerator) (car result)) - (* (string-to-int denominator) (cadr result))) + (list (* (string-to-number numerator) (car result)) + (* (string-to-number denominator) (cadr result))) )) (defun walk-note-duration () @@ -211,8 +211,8 @@ If next note has no duration, returns t" ; handle \times/\tuplet specially (let* ((times-p (match-beginning 1)) - (numerator (string-to-int (match-string (if times-p 2 3)))) - (denominator (string-to-int (match-string (if times-p 3 2))))) + (numerator (string-to-number (match-string (if times-p 2 3)))) + (denominator (string-to-number (match-string (if times-p 3 2))))) (goto-char (match-end 0)) (goto-note-begin) (while (and (not (looking-at "}")) diff --git a/flower/file-name.cc b/flower/file-name.cc index c65d8fc7ed..990e3d6d91 100644 --- a/flower/file-name.cc +++ b/flower/file-name.cc @@ -77,9 +77,21 @@ dir_name (const string &file_name) string get_working_directory () { - char cwd[PATH_MAX]; - // getcwd returns NULL upon a failure, contents of cwd would be undefined! - return string (getcwd (cwd, PATH_MAX)); +#ifdef PATH_MAX + vector cwd (PATH_MAX); +#else + vector cwd (1024); +#endif + while (getcwd (cwd.data (), cwd.size ()) == NULL) + { + if (errno != ERANGE) + { + // getcwd () fails. + return ""; + } + cwd.resize (cwd.size () * 2); + } + return string (cwd.data ()); } /* Join components to full file_name. */ diff --git a/flower/test-file-path.cc b/flower/test-file-path.cc index a20364b98c..8a891afeea 100644 --- a/flower/test-file-path.cc +++ b/flower/test-file-path.cc @@ -1,4 +1,5 @@ #include "file-path.hh" +#include "file-name.hh" #include #include @@ -10,8 +11,7 @@ TEST (File_path, Find) { char const *extensions[] = {"ly", "", 0}; string file = "init"; - char cwd[PATH_MAX]; - if (!getcwd (cwd, PATH_MAX)) + if (get_working_directory().empty()) { cerr << "Could not get current work directory\n"; exit (1); diff --git a/guile18/.gitignore b/guile18/.gitignore new file mode 100644 index 0000000000..7644deacdb --- /dev/null +++ b/guile18/.gitignore @@ -0,0 +1,77 @@ +*.o +*.info +*.info-[0-9]* +version.texi +Makefile +Makefile.in +.deps +.libs +autom4te.cache +config.sub +config.guess +config.status +config.log +config.h +guile-readline-config.h +*.doc +*.x +*.lo +*.la +aclocal.m4 +libtool +ltmain.sh +configure +depcomp +elisp-comp +missing +mdate-sh +install-sh +texinfo.tex +*~ +,* +BUGS +Makefile +Makefile.in +aclocal.m4 +autom4te.cache +benchmark-guile +check-guile +check-guile.log +compile +confdefs.h +config.build-subdirs +config.cache +config.guess +config.h +config.h.in +config.log +config.status +config.sub +configure +conftest +conftest.c +depcomp +elisp-comp +guile-*.tar.gz +guile-tools +install-sh +libtool +ltconfig +ltmain.sh +mdate-sh +missing +mkinstalldirs +pre-inst-guile +pre-inst-guile-env +stamp-h1 +guile-procedures.txt +guile-config/guile-config +guile-readline/guile-readline-config.h +guile-readline/guile-readline-config.h.in +TAGS +guile-1.8.pc +libguile/stack-limit-calibration.scm +cscope.out +cscope.files +*.log +INSTALL diff --git a/guile18/ABOUT-NLS b/guile18/ABOUT-NLS new file mode 100644 index 0000000000..ec20977e06 --- /dev/null +++ b/guile18/ABOUT-NLS @@ -0,0 +1,1101 @@ +1 Notes on the Free Translation Project +*************************************** + +Free software is going international! The Free Translation Project is +a way to get maintainers of free software, translators, and users all +together, so that free software will gradually become able to speak many +languages. A few packages already provide translations for their +messages. + + If you found this `ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU `gettext' internally, +itself available at your nearest GNU archive site. But you do _not_ +need to install GNU `gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work on translations can contact the appropriate team. + + When reporting bugs in the `intl/' directory or bugs which may be +related to internationalization, you should tell about the version of +`gettext' which is used. The information can be found in the +`intl/VERSION' file, in internationalized packages. + +1.1 Quick configuration advice +============================== + +If you want to exploit the full power of internationalization, you +should configure it using + + ./configure --with-included-gettext + +to force usage of internationalizing routines provided within this +package, despite the existence of internationalizing capabilities in the +operating system where this package is being installed. So far, only +the `gettext' implementation in the GNU C library version 2 provides as +many features (such as locale alias, message inheritance, automatic +charset conversion or plural form handling) as the implementation here. +It is also not possible to offer this additional functionality on top +of a `catgets' implementation. Future versions of GNU `gettext' will +very likely convey even more functionality. So it might be a good idea +to change to GNU `gettext' as soon as possible. + + So you need _not_ provide this option if you are using GNU libc 2 or +you have installed a recent copy of the GNU gettext package with the +included `libintl'. + +1.2 INSTALL Matters +=================== + +Some packages are "localizable" when properly installed; the programs +they contain can be made to speak your own native language. Most such +packages use GNU `gettext'. Other packages have their own ways to +internationalization, predating GNU `gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system already +provides the GNU `gettext' functions. If not, the included GNU +`gettext' library will be used. This library is wholly contained +within this package, usually in the `intl/' subdirectory, so prior +installation of the GNU `gettext' package is _not_ required. +Installers may use special options at configuration time for changing +the default behaviour. The commands: + + ./configure --with-included-gettext + ./configure --disable-nls + +will, respectively, bypass any pre-existing `gettext' to use the +internationalizing routines provided within this package, or else, +_totally_ disable translation of messages. + + When you already have GNU `gettext' installed on your system and run +configure without an option for your new package, `configure' will +probably detect the previously built and installed `libintl.a' file and +will decide to use this. This might not be desirable. You should use +the more recent version of the GNU `gettext' library. I.e. if the file +`intl/VERSION' shows that the library which comes with this package is +more recent, you should use + + ./configure --with-included-gettext + +to prevent auto-detection. + + The configuration process will not test for the `catgets' function +and therefore it will not be used. The reason is that even an +emulation of `gettext' on top of `catgets' could not provide all the +extensions of the GNU `gettext' library. + + Internationalized packages usually have many `po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at `configure' time by using the +`--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable `LINGUAS' +may be set, prior to configuration, to limit the installed set. +`LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +1.3 Using This Package +====================== + +As a user, if your language has been installed for this package, you +only have to set the `LANG' environment variable to the appropriate +`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, +and `CC' is an ISO 3166 two-letter country code. For example, let's +suppose that you speak German and live in Germany. At the shell +prompt, merely execute `setenv LANG de_DE' (in `csh'), +`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). +This can be done from your `.login' or `.profile' file, once and for +all. + + You might think that the country code specification is redundant. +But in fact, some languages have dialects in different countries. For +example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +country code serves to distinguish the dialects. + + The locale naming convention of `LL_CC', with `LL' denoting the +language and `CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are +used, such as `LL' or `LL_CC.ENCODING'. You can get the list of +locales supported by your system for your language by running the +command `locale -a | grep '^LL''. + + Not all programs have translations for all languages. By default, an +English message is shown in place of a nonexistent translation. If you +understand other languages, you can set up a priority list of languages. +This is done through a different environment variable, called +`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' +for the purpose of message handling, but you still need to have `LANG' +set to the primary language; this is required by other parts of the +system libraries. For example, some Swedish users who would rather +read translations in German than English for when Swedish is not +available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. + + Special advice for Norwegian users: The language code for Norwegian +bokma*l changed from `no' to `nb' recently (in 2003). During the +transition period, while some message catalogs for this language are +installed under `nb' and some older ones under `no', it's recommended +for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and +older translations are used. + + In the `LANGUAGE' environment variable, but not in the `LANG' +environment variable, `LL_CC' combinations can be abbreviated as `LL' +to denote the language's main dialect. For example, `de' is equivalent +to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' +(Portuguese as spoken in Portugal) in this context. + +1.4 Translating Teams +===================== + +For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list. The up-to-date list of +teams can be found at the Free Translation Project's homepage, +`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" +area. + + If you'd like to volunteer to _work_ at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is _not_ the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +_actively_ in translations, or at solving translational difficulties, +rather than merely lurking around. If your team does not exist yet and +you want to start one, or if you are unsure about what to do or how to +get started, please write to `translation@iro.umontreal.ca' to reach the +coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skills are praised more than +programming skills, here. + +1.5 Available Packages +====================== + +Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of October +2006. The matrix shows, in regard of each package, for which languages +PO files have been submitted to translation coordination, with a +translation percentage of at least 50%. + + Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB eo + +----------------------------------------------------+ + GNUnet | [] | + a2ps | [] [] [] [] [] | + aegis | () | + ant-phone | () | + anubis | [] | + ap-utils | | + aspell | [] [] [] [] [] | + bash | [] [] [] | + batchelor | [] | + bfd | | + bibshelf | [] | + binutils | [] | + bison | [] [] | + bison-runtime | | + bluez-pin | [] [] [] [] [] | + cflow | [] | + clisp | [] [] | + console-tools | [] [] | + coreutils | [] [] [] | + cpio | | + cpplib | [] [] [] | + cryptonit | [] | + darkstat | [] () [] | + dialog | [] [] [] [] [] [] | + diffutils | [] [] [] [] [] [] | + doodle | [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] | + error | [] [] [] [] | + fetchmail | [] [] () [] | + fileutils | [] [] | + findutils | [] [] [] | + flex | [] [] [] | + fslint | [] | + gas | | + gawk | [] [] [] | + gbiff | [] | + gcal | [] | + gcc | [] | + gettext-examples | [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] | + gettext-tools | [] [] | + gimp-print | [] [] [] [] | + gip | [] | + gliv | [] | + glunarclock | [] | + gmult | [] [] | + gnubiff | () | + gnucash | () () [] | + gnucash-glossary | [] () | + gnuedu | | + gnulib | [] [] [] [] [] [] | + gnunet-gtk | | + gnutls | | + gpe-aerial | [] [] | + gpe-beam | [] [] | + gpe-calendar | | + gpe-clock | [] [] | + gpe-conf | [] [] | + gpe-contacts | | + gpe-edit | [] | + gpe-filemanager | | + gpe-go | [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] | + gpe-package | | + gpe-sketchbook | [] [] | + gpe-su | [] [] | + gpe-taskmanager | [] [] | + gpe-timesheet | [] | + gpe-today | [] [] | + gpe-todo | | + gphoto2 | [] [] [] [] | + gprof | [] [] | + gpsdrive | () () | + gramadoir | [] [] | + grep | [] [] [] [] [] [] | + gretl | | + gsasl | | + gss | | + gst-plugins | [] [] [] [] | + gst-plugins-base | [] [] [] | + gst-plugins-good | [] [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] [] [] | + gtick | () | + gtkam | [] [] [] | + gtkorphan | [] [] | + gtkspell | [] [] [] [] | + gutenprint | [] | + hello | [] [] [] [] [] | + id-utils | [] [] | + impost | | + indent | [] [] [] | + iso_3166 | [] [] | + iso_3166_2 | | + iso_4217 | [] | + iso_639 | [] [] | + jpilot | [] | + jtag | | + jwhois | | + kbd | [] [] [] [] | + keytouch | | + keytouch-editor | | + keytouch-keyboa... | | + latrine | () | + ld | [] | + leafpad | [] [] [] [] [] | + libc | [] [] [] [] [] | + libexif | [] | + libextractor | [] | + libgpewidget | [] [] [] | + libgpg-error | [] | + libgphoto2 | [] [] | + libgphoto2_port | [] [] | + libgsasl | | + libiconv | [] [] | + libidn | [] [] | + lifelines | [] () | + lilypond | [] | + lingoteach | | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailutils | [] | + make | [] [] | + man-db | [] () [] [] | + minicom | [] [] [] | + mysecretdiary | [] [] | + nano | [] [] [] | + nano_1_0 | [] () [] [] | + opcodes | [] | + parted | | + pilot-qof | [] | + psmisc | [] | + pwdutils | | + python | | + qof | | + radius | [] | + recode | [] [] [] [] [] [] | + rpm | [] [] | + screem | | + scrollkeeper | [] [] [] [] [] [] [] [] | + sed | [] [] [] | + sh-utils | [] [] | + shared-mime-info | [] [] [] [] | + sharutils | [] [] [] [] [] [] | + shishi | | + silky | | + skencil | [] () | + sketch | [] () | + solfege | | + soundtracker | [] [] | + sp | [] | + stardict | [] | + system-tools-ba... | [] [] [] [] [] [] [] [] [] | + tar | [] | + texinfo | [] [] [] | + textutils | [] [] [] | + tin | () () | + tp-robot | [] | + tuxpaint | [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] [] [] | + vorbis-tools | [] [] [] [] | + wastesedge | () | + wdiff | [] [] [] [] | + wget | [] [] | + xchat | [] [] [] [] [] [] | + xkeyboard-config | | + xpad | [] [] | + +----------------------------------------------------+ + af am ar az be bg bs ca cs cy da de el en en_GB eo + 10 0 1 2 9 22 1 42 41 2 60 95 16 1 17 16 + + es et eu fa fi fr ga gl gu he hi hr hu id is it + +--------------------------------------------------+ + GNUnet | | + a2ps | [] [] [] () | + aegis | | + ant-phone | [] | + anubis | [] | + ap-utils | [] [] | + aspell | [] [] [] | + bash | [] [] [] | + batchelor | [] [] | + bfd | [] | + bibshelf | [] [] [] | + binutils | [] [] [] | + bison | [] [] [] [] [] [] | + bison-runtime | [] [] [] [] [] | + bluez-pin | [] [] [] [] [] | + cflow | [] | + clisp | [] [] | + console-tools | | + coreutils | [] [] [] [] [] [] | + cpio | [] [] [] | + cpplib | [] [] | + cryptonit | [] | + darkstat | [] () [] [] [] | + dialog | [] [] [] [] [] [] [] [] | + diffutils | [] [] [] [] [] [] [] [] [] | + doodle | [] [] | + e2fsprogs | [] [] [] | + enscript | [] [] [] | + error | [] [] [] [] [] | + fetchmail | [] | + fileutils | [] [] [] [] [] [] | + findutils | [] [] [] [] | + flex | [] [] [] | + fslint | [] | + gas | [] [] | + gawk | [] [] [] [] | + gbiff | [] | + gcal | [] [] | + gcc | [] | + gettext-examples | [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] | + gettext-tools | [] [] [] | + gimp-print | [] [] | + gip | [] [] [] | + gliv | () | + glunarclock | [] [] [] | + gmult | [] [] [] | + gnubiff | () () | + gnucash | () () () | + gnucash-glossary | [] [] | + gnuedu | [] | + gnulib | [] [] [] [] [] [] [] [] | + gnunet-gtk | | + gnutls | | + gpe-aerial | [] [] | + gpe-beam | [] [] | + gpe-calendar | | + gpe-clock | [] [] [] [] | + gpe-conf | [] | + gpe-contacts | [] [] | + gpe-edit | [] [] [] [] | + gpe-filemanager | [] | + gpe-go | [] [] [] | + gpe-login | [] [] [] | + gpe-ownerinfo | [] [] [] [] [] | + gpe-package | [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] [] [] | + gpe-taskmanager | [] [] [] | + gpe-timesheet | [] [] [] [] | + gpe-today | [] [] [] [] | + gpe-todo | [] | + gphoto2 | [] [] [] [] [] | + gprof | [] [] [] [] | + gpsdrive | () () [] () | + gramadoir | [] [] | + grep | [] [] [] [] [] [] [] [] [] [] [] [] | + gretl | [] [] [] | + gsasl | [] [] | + gss | [] | + gst-plugins | [] [] [] | + gst-plugins-base | [] [] | + gst-plugins-good | [] [] [] | + gstreamer | [] [] [] | + gtick | [] | + gtkam | [] [] [] [] | + gtkorphan | [] [] | + gtkspell | [] [] [] [] [] [] | + gutenprint | [] | + hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | + id-utils | [] [] [] [] [] | + impost | [] [] | + indent | [] [] [] [] [] [] [] [] [] [] | + iso_3166 | [] [] [] | + iso_3166_2 | [] | + iso_4217 | [] [] [] [] | + iso_639 | [] [] [] [] [] | + jpilot | [] [] | + jtag | [] | + jwhois | [] [] [] [] [] | + kbd | [] [] | + keytouch | [] | + keytouch-editor | [] | + keytouch-keyboa... | [] | + latrine | [] [] [] | + ld | [] [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] [] | + libexif | [] | + libextractor | [] | + libgpewidget | [] [] [] [] [] | + libgpg-error | | + libgphoto2 | [] [] [] | + libgphoto2_port | [] [] | + libgsasl | [] [] | + libiconv | [] [] | + libidn | [] [] | + lifelines | () | + lilypond | [] | + lingoteach | [] [] [] | + lynx | [] [] [] | + m4 | [] [] [] [] | + mailutils | [] [] | + make | [] [] [] [] [] [] [] [] | + man-db | () | + minicom | [] [] [] [] | + mysecretdiary | [] [] [] | + nano | [] [] [] [] [] [] | + nano_1_0 | [] [] [] [] [] | + opcodes | [] [] [] [] | + parted | [] [] [] [] | + pilot-qof | | + psmisc | [] [] [] | + pwdutils | | + python | | + qof | [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] [] | + rpm | [] [] | + screem | | + scrollkeeper | [] [] [] | + sed | [] [] [] [] [] | + sh-utils | [] [] [] [] [] [] [] | + shared-mime-info | [] [] [] [] [] [] | + sharutils | [] [] [] [] [] [] [] [] | + shishi | | + silky | [] | + skencil | [] [] | + sketch | [] [] | + solfege | [] | + soundtracker | [] [] [] | + sp | [] | + stardict | [] | + system-tools-ba... | [] [] [] [] [] [] [] [] | + tar | [] [] [] [] [] [] [] | + texinfo | [] [] | + textutils | [] [] [] [] [] | + tin | [] () | + tp-robot | [] [] [] [] | + tuxpaint | [] [] | + unicode-han-tra... | | + unicode-transla... | [] [] | + util-linux | [] [] [] [] [] [] [] | + vorbis-tools | [] [] | + wastesedge | () | + wdiff | [] [] [] [] [] [] [] [] | + wget | [] [] [] [] [] [] [] [] | + xchat | [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] | + xpad | [] [] [] | + +--------------------------------------------------+ + es et eu fa fi fr ga gl gu he hi hr hu id is it + 88 22 14 2 40 115 61 14 1 8 1 6 59 31 0 52 + + ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no + +-------------------------------------------------+ + GNUnet | | + a2ps | () [] [] () | + aegis | () | + ant-phone | [] | + anubis | [] [] [] | + ap-utils | [] | + aspell | [] [] | + bash | [] | + batchelor | [] [] | + bfd | | + bibshelf | [] | + binutils | | + bison | [] [] [] | + bison-runtime | [] [] [] | + bluez-pin | [] [] [] | + cflow | | + clisp | [] | + console-tools | | + coreutils | [] | + cpio | | + cpplib | [] | + cryptonit | [] | + darkstat | [] [] | + dialog | [] [] | + diffutils | [] [] [] | + doodle | | + e2fsprogs | [] | + enscript | [] | + error | [] | + fetchmail | [] [] | + fileutils | [] [] | + findutils | [] | + flex | [] [] | + fslint | [] [] | + gas | | + gawk | [] [] | + gbiff | [] | + gcal | | + gcc | | + gettext-examples | [] [] | + gettext-runtime | [] [] [] | + gettext-tools | [] [] | + gimp-print | [] [] | + gip | [] [] | + gliv | [] | + glunarclock | [] [] | + gmult | [] [] | + gnubiff | | + gnucash | () () | + gnucash-glossary | [] | + gnuedu | | + gnulib | [] [] [] [] | + gnunet-gtk | | + gnutls | | + gpe-aerial | [] | + gpe-beam | [] | + gpe-calendar | [] | + gpe-clock | [] [] [] | + gpe-conf | [] [] | + gpe-contacts | [] | + gpe-edit | [] [] [] | + gpe-filemanager | [] [] | + gpe-go | [] [] [] | + gpe-login | [] [] [] | + gpe-ownerinfo | [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] [] | + gpe-taskmanager | [] [] [] [] | + gpe-timesheet | [] | + gpe-today | [] [] | + gpe-todo | [] | + gphoto2 | [] [] | + gprof | | + gpsdrive | () () () | + gramadoir | () | + grep | [] [] [] [] | + gretl | | + gsasl | [] | + gss | | + gst-plugins | [] | + gst-plugins-base | | + gst-plugins-good | [] | + gstreamer | [] | + gtick | | + gtkam | [] | + gtkorphan | [] | + gtkspell | [] [] | + gutenprint | | + hello | [] [] [] [] [] [] | + id-utils | [] | + impost | | + indent | [] [] | + iso_3166 | [] | + iso_3166_2 | [] | + iso_4217 | [] [] [] | + iso_639 | [] [] | + jpilot | () () () | + jtag | | + jwhois | [] | + kbd | [] | + keytouch | [] | + keytouch-editor | | + keytouch-keyboa... | | + latrine | [] | + ld | | + leafpad | [] [] | + libc | [] [] [] [] [] | + libexif | | + libextractor | | + libgpewidget | [] | + libgpg-error | | + libgphoto2 | [] | + libgphoto2_port | [] | + libgsasl | [] | + libiconv | | + libidn | [] [] | + lifelines | [] | + lilypond | | + lingoteach | [] | + lynx | [] [] | + m4 | [] [] | + mailutils | | + make | [] [] [] | + man-db | () | + minicom | [] | + mysecretdiary | [] | + nano | [] [] [] | + nano_1_0 | [] [] [] | + opcodes | [] | + parted | [] [] | + pilot-qof | | + psmisc | [] [] [] | + pwdutils | | + python | | + qof | | + radius | | + recode | [] | + rpm | [] [] | + screem | [] | + scrollkeeper | [] [] [] [] | + sed | [] [] | + sh-utils | [] [] | + shared-mime-info | [] [] [] [] [] | + sharutils | [] [] | + shishi | | + silky | [] | + skencil | | + sketch | | + solfege | | + soundtracker | | + sp | () | + stardict | [] [] | + system-tools-ba... | [] [] [] [] | + tar | [] [] [] | + texinfo | [] [] [] | + textutils | [] [] [] | + tin | | + tp-robot | [] | + tuxpaint | [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] | + vorbis-tools | [] | + wastesedge | [] | + wdiff | [] [] | + wget | [] [] | + xchat | [] [] [] [] | + xkeyboard-config | [] | + xpad | [] [] [] | + +-------------------------------------------------+ + ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no + 52 24 2 2 1 3 0 2 3 21 0 15 1 97 5 1 + + nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta + +------------------------------------------------------+ + GNUnet | | + a2ps | () [] [] [] [] [] [] | + aegis | () () | + ant-phone | [] [] | + anubis | [] [] [] | + ap-utils | () | + aspell | [] [] | + bash | [] [] [] | + batchelor | [] [] | + bfd | | + bibshelf | [] | + binutils | [] [] | + bison | [] [] [] [] [] | + bison-runtime | [] [] [] [] | + bluez-pin | [] [] [] [] [] [] [] [] [] | + cflow | [] | + clisp | [] | + console-tools | [] | + coreutils | [] [] [] [] | + cpio | [] [] [] | + cpplib | [] | + cryptonit | [] [] | + darkstat | [] [] [] [] [] [] | + dialog | [] [] [] [] [] [] [] [] [] | + diffutils | [] [] [] [] [] [] | + doodle | [] [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] [] | + error | [] [] [] [] | + fetchmail | [] [] [] | + fileutils | [] [] [] [] [] | + findutils | [] [] [] [] [] [] | + flex | [] [] [] [] [] | + fslint | [] [] [] [] | + gas | | + gawk | [] [] [] [] | + gbiff | [] | + gcal | [] | + gcc | [] | + gettext-examples | [] [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] [] [] | + gimp-print | [] [] | + gip | [] [] [] [] | + gliv | [] [] [] [] | + glunarclock | [] [] [] [] [] [] | + gmult | [] [] [] [] | + gnubiff | () | + gnucash | () [] | + gnucash-glossary | [] [] [] | + gnuedu | | + gnulib | [] [] [] [] [] | + gnunet-gtk | [] | + gnutls | [] [] | + gpe-aerial | [] [] [] [] [] [] [] | + gpe-beam | [] [] [] [] [] [] [] | + gpe-calendar | [] | + gpe-clock | [] [] [] [] [] [] [] [] | + gpe-conf | [] [] [] [] [] [] [] | + gpe-contacts | [] [] [] [] [] | + gpe-edit | [] [] [] [] [] [] [] [] | + gpe-filemanager | [] [] | + gpe-go | [] [] [] [] [] [] | + gpe-login | [] [] [] [] [] [] [] [] | + gpe-ownerinfo | [] [] [] [] [] [] [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] [] [] [] [] [] [] | + gpe-su | [] [] [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] [] [] [] | + gpe-timesheet | [] [] [] [] [] [] [] [] | + gpe-today | [] [] [] [] [] [] [] [] | + gpe-todo | [] [] [] [] | + gphoto2 | [] [] [] [] [] | + gprof | [] [] [] | + gpsdrive | [] [] [] | + gramadoir | [] [] | + grep | [] [] [] [] [] [] [] [] | + gretl | [] | + gsasl | [] [] [] | + gss | [] [] [] | + gst-plugins | [] [] [] [] | + gst-plugins-base | [] | + gst-plugins-good | [] [] [] [] | + gstreamer | [] [] [] | + gtick | [] | + gtkam | [] [] [] [] | + gtkorphan | [] | + gtkspell | [] [] [] [] [] [] [] [] | + gutenprint | [] | + hello | [] [] [] [] [] [] [] [] | + id-utils | [] [] [] [] | + impost | [] | + indent | [] [] [] [] [] [] | + iso_3166 | [] [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | [] [] [] [] | + iso_639 | [] [] [] [] | + jpilot | | + jtag | [] | + jwhois | [] [] [] [] | + kbd | [] [] [] | + keytouch | [] | + keytouch-editor | [] | + keytouch-keyboa... | [] | + latrine | [] [] | + ld | [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] [] | + libexif | [] | + libextractor | [] [] | + libgpewidget | [] [] [] [] [] [] [] | + libgpg-error | [] [] | + libgphoto2 | [] | + libgphoto2_port | [] [] [] | + libgsasl | [] [] [] [] | + libiconv | [] [] | + libidn | [] [] () | + lifelines | [] [] | + lilypond | | + lingoteach | [] | + lynx | [] [] [] | + m4 | [] [] [] [] [] | + mailutils | [] [] [] [] | + make | [] [] [] [] | + man-db | [] [] | + minicom | [] [] [] [] [] | + mysecretdiary | [] [] [] [] | + nano | [] [] [] | + nano_1_0 | [] [] [] [] | + opcodes | [] [] | + parted | [] | + pilot-qof | [] | + psmisc | [] [] | + pwdutils | [] [] | + python | | + qof | [] [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] | + rpm | [] [] [] [] | + screem | | + scrollkeeper | [] [] [] [] [] [] [] | + sed | [] [] [] [] [] [] [] [] [] | + sh-utils | [] [] [] | + shared-mime-info | [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | [] | + silky | [] | + skencil | [] [] [] | + sketch | [] [] [] | + solfege | [] | + soundtracker | [] [] | + sp | | + stardict | [] [] [] | + system-tools-ba... | [] [] [] [] [] [] [] [] [] | + tar | [] [] [] [] [] | + texinfo | [] [] [] [] | + textutils | [] [] [] | + tin | () | + tp-robot | [] | + tuxpaint | [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] [] [] | + vorbis-tools | [] [] | + wastesedge | | + wdiff | [] [] [] [] [] [] | + wget | [] [] [] [] | + xchat | [] [] [] [] [] [] [] | + xkeyboard-config | [] [] | + xpad | [] [] [] | + +------------------------------------------------------+ + nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta + 0 2 3 58 30 54 5 73 72 4 40 46 11 50 128 2 + + tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu + +---------------------------------------------------+ + GNUnet | [] | 2 + a2ps | [] [] [] | 19 + aegis | | 0 + ant-phone | [] [] | 6 + anubis | [] [] [] | 11 + ap-utils | () [] | 4 + aspell | [] [] [] | 15 + bash | [] | 11 + batchelor | [] [] | 9 + bfd | | 1 + bibshelf | [] | 7 + binutils | [] [] [] | 9 + bison | [] [] [] | 19 + bison-runtime | [] [] [] | 15 + bluez-pin | [] [] [] [] [] [] | 28 + cflow | [] [] | 5 + clisp | | 6 + console-tools | [] [] | 5 + coreutils | [] [] | 16 + cpio | [] [] [] | 9 + cpplib | [] [] [] [] | 11 + cryptonit | | 5 + darkstat | [] () () | 15 + dialog | [] [] [] [] [] | 30 + diffutils | [] [] [] [] | 28 + doodle | [] | 6 + e2fsprogs | [] [] | 10 + enscript | [] [] [] | 16 + error | [] [] [] [] | 18 + fetchmail | [] [] | 12 + fileutils | [] [] [] | 18 + findutils | [] [] [] | 17 + flex | [] [] | 15 + fslint | [] | 9 + gas | [] | 3 + gawk | [] [] | 15 + gbiff | [] | 5 + gcal | [] | 5 + gcc | [] [] [] | 6 + gettext-examples | [] [] [] [] [] [] | 27 + gettext-runtime | [] [] [] [] [] [] | 28 + gettext-tools | [] [] [] [] [] | 19 + gimp-print | [] [] | 12 + gip | [] [] | 12 + gliv | [] [] | 8 + glunarclock | [] [] [] | 15 + gmult | [] [] [] [] | 15 + gnubiff | [] | 1 + gnucash | () | 2 + gnucash-glossary | [] [] | 9 + gnuedu | [] | 2 + gnulib | [] [] [] [] [] | 28 + gnunet-gtk | | 1 + gnutls | | 2 + gpe-aerial | [] [] | 14 + gpe-beam | [] [] | 14 + gpe-calendar | [] | 3 + gpe-clock | [] [] [] [] | 21 + gpe-conf | [] [] | 14 + gpe-contacts | [] [] | 10 + gpe-edit | [] [] [] [] | 20 + gpe-filemanager | [] | 6 + gpe-go | [] [] | 15 + gpe-login | [] [] [] [] [] | 21 + gpe-ownerinfo | [] [] [] [] | 21 + gpe-package | [] | 6 + gpe-sketchbook | [] [] | 16 + gpe-su | [] [] [] | 20 + gpe-taskmanager | [] [] [] | 20 + gpe-timesheet | [] [] [] [] | 18 + gpe-today | [] [] [] [] [] | 21 + gpe-todo | [] | 7 + gphoto2 | [] [] [] [] | 20 + gprof | [] [] | 11 + gpsdrive | | 4 + gramadoir | [] | 7 + grep | [] [] [] [] | 34 + gretl | | 4 + gsasl | [] [] | 8 + gss | [] | 5 + gst-plugins | [] [] [] | 15 + gst-plugins-base | [] [] [] | 9 + gst-plugins-good | [] [] [] [] [] | 20 + gstreamer | [] [] [] | 17 + gtick | [] | 3 + gtkam | [] | 13 + gtkorphan | [] | 7 + gtkspell | [] [] [] [] [] [] | 26 + gutenprint | | 3 + hello | [] [] [] [] [] | 37 + id-utils | [] [] | 14 + impost | [] | 4 + indent | [] [] [] [] | 25 + iso_3166 | [] [] [] [] | 16 + iso_3166_2 | | 2 + iso_4217 | [] [] | 14 + iso_639 | [] | 14 + jpilot | [] [] [] [] | 7 + jtag | [] | 3 + jwhois | [] [] [] | 13 + kbd | [] [] | 12 + keytouch | [] | 4 + keytouch-editor | | 2 + keytouch-keyboa... | [] | 3 + latrine | [] [] | 8 + ld | [] [] [] [] | 8 + leafpad | [] [] [] [] | 23 + libc | [] [] [] | 23 + libexif | [] | 4 + libextractor | [] | 5 + libgpewidget | [] [] [] | 19 + libgpg-error | [] | 4 + libgphoto2 | [] | 8 + libgphoto2_port | [] [] [] | 11 + libgsasl | [] | 8 + libiconv | [] | 7 + libidn | [] [] | 10 + lifelines | | 4 + lilypond | | 2 + lingoteach | [] | 6 + lynx | [] [] [] | 15 + m4 | [] [] [] | 18 + mailutils | [] | 8 + make | [] [] [] | 20 + man-db | [] | 6 + minicom | [] | 14 + mysecretdiary | [] [] | 12 + nano | [] [] | 17 + nano_1_0 | [] [] [] | 18 + opcodes | [] [] | 10 + parted | [] [] [] | 10 + pilot-qof | [] | 3 + psmisc | [] | 10 + pwdutils | [] | 3 + python | | 0 + qof | [] | 4 + radius | [] | 6 + recode | [] [] [] | 25 + rpm | [] [] [] [] | 14 + screem | [] | 2 + scrollkeeper | [] [] [] [] | 26 + sed | [] [] [] | 22 + sh-utils | [] | 15 + shared-mime-info | [] [] [] [] | 24 + sharutils | [] [] [] | 23 + shishi | | 1 + silky | [] | 4 + skencil | [] | 7 + sketch | | 6 + solfege | | 2 + soundtracker | [] [] | 9 + sp | [] | 3 + stardict | [] [] [] [] | 11 + system-tools-ba... | [] [] [] [] [] [] [] | 37 + tar | [] [] [] [] | 20 + texinfo | [] [] [] | 15 + textutils | [] [] [] | 17 + tin | | 1 + tp-robot | [] [] [] | 10 + tuxpaint | [] [] [] | 16 + unicode-han-tra... | | 0 + unicode-transla... | | 2 + util-linux | [] [] [] | 20 + vorbis-tools | [] [] | 11 + wastesedge | | 1 + wdiff | [] [] | 22 + wget | [] [] [] | 19 + xchat | [] [] [] [] | 29 + xkeyboard-config | [] [] [] [] | 11 + xpad | [] [] [] | 14 + +---------------------------------------------------+ + 77 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu + 170 domains 0 1 1 77 39 0 136 10 1 48 5 54 0 2028 + + Some counters in the preceding matrix are higher than the number of +visible blocks let us expect. This is because a few extra PO files are +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and +distributed as such by its maintainer. There might be an observable +lag between the mere existence a PO file and its wide availability in a +distribution. + + If October 2006 seems to be old, you may fetch a more recent copy of +this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date +matrix with full percentage details can be found at +`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. + +1.6 Using `gettext' in new packages +=================================== + +If you are writing a freely available program and want to +internationalize it you are welcome to use GNU `gettext' in your +package. Of course you have to respect the GNU Library General Public +License which covers the use of the GNU `gettext' library. This means +in particular that even non-free programs can use `libintl' as a shared +library, whereas only free software can use `libintl' as a static +library or use modified versions of `libintl'. + + Once the sources are changed appropriately and the setup can handle +the use of `gettext' the only thing missing are the translations. The +Free Translation Project is also available for packages which are not +developed inside the GNU project. Therefore the information given above +applies also for every other Free Software Project. Contact +`translation@iro.umontreal.ca' to make the `.pot' files available to +the translation teams. + diff --git a/guile18/ANNOUNCE b/guile18/ANNOUNCE new file mode 100644 index 0000000000..bfbda73162 --- /dev/null +++ b/guile18/ANNOUNCE @@ -0,0 +1,60 @@ +We are pleased to announce the release of Guile 1.8.0. It can be +found here: + + ftp://ftp.gnu.org/gnu/guile/guile-1.8.0.tar.gz + +Its SHA1 checksum is + + 22462680feeda1e5400195c01dee666162503d66 guile-1.8.0.tar.gz + +We already know about some issues with 1.8.0, please check the mailing +lists: + + http://www.gnu.org/software/guile/mail/mail.html + +The NEWS file is quite long. Here are the most interesting entries: + + Changes since 1.6: + + * Guile is now licensed with the GNU Lesser General Public License. + + * The manual is now licensed with the GNU Free Documentation License. + + * We now use GNU MP for bignums. + + * We now have exact rationals, such as 1/3. + + * We now use native POSIX threads for real concurrent threads. + + * There is a new way to initalize Guile that allows one to use Guile + from threads that have not been created by Guile. + + * Mutexes and condition variables are now always fair. A recursive + mutex must be requested explicitly. + + * The low-level thread API has been removed. + + * There is now support for copy-on-write substrings and + mutation-sharing substrings. + + * A new family of functions for converting between C values and + Scheme values has been added that is future-proof and thread-safe. + + * The INUM macros like SCM_MAKINUM have been deprecated. + + * The macros SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_LENGTH, + SCM_SYMBOL_CHARS, and SCM_SYMBOL_LENGTH have been deprecated. + + * There is a new way to deal with non-local exits and re-entries in + C code, which is nicer than scm_internal_dynamic_wind. + + * There are new malloc-like functions that work better than + scm_must_malloc, etc. + + * There is a new way to access all kinds of vectors and arrays from + C that is efficient and thread-safe. + + * The concept of dynamic roots has been factored into continuation + barriers and dynamic states. + +See NEWS and the manual for more details. diff --git a/guile18/AUTHORS b/guile18/AUTHORS new file mode 100644 index 0000000000..ed2adbab72 --- /dev/null +++ b/guile18/AUTHORS @@ -0,0 +1,345 @@ +To find out what should go in this file, see "Information For +Maintainers of GNU Software" (maintain.texi), the section called +"Recording Changes". + + +Aubrey Jaffer: +is the author of SCM, the Scheme interpreter upon which Guile is +based. Guile started from SCM version 4e1 in November -94 and is +still largely composed of the original SCM code. + +George Carrette: +wrote files present in Siod version 2.3, released in December of 1989. +Siod was the starting point for SCM. The major innovations taken from +Siod are the evaluator's use of the C-stack and being able to garbage +collect off the C-stack + +Radey Shouman: +In the subdirectory libguile, wrote: + gsubr.c ramap.c unif.c + gsubr.h ramap.h unif.h + +Gary Houston: +In the subdirectory libguile, wrote: + rw.c +In the subdirectory ice-9, wrote: + expect.scm networking.scm popen.scm posix.scm rw.scm +In the subdirectory doc, changes to: + data-rep.texi expect.texi guile-tut.texi + posix.texi r5rs.texi scheme-io.texi +Many other changes throughout. + +Jim Blandy: Many changes throughout. +In the subdirectory libguile, wrote: + script.c (partially) +In the subdirectory doc, wrote: + data-rep.texi env.texi mbapi.texi + mltext.texi hacks.el +In the subdirectory doc/example-smob, wrote: + image-type.c image-type.h myguile.c + +Tom Lord: Many changes throughout. +In the subdirectory ice-9, wrote: + Makefile.in configure.in lineio.scm poe.scm + boot-9.scm hcons.scm mapping.scm + +Anthony Green: wrote the following files in libguile: + coop-defs.h coop-threads.h fsu-pthreads.h mit-pthreads.h threads.h + coop-threads.c coop.c mit-pthreads.c threads.c +and ice-9/threads.scm. + +Mikael Djurfeldt: +In the subdirectory ice-9, wrote: + documentation.scm emacs.scm stack-catch.scm + null.scm r5rs.scm safe-r5rs.scm safe.scm + receive.scm occam-channel.scm syncase.scm +In the subdirectory ice-9, changes to: + boot-9.scm psyntax.ss slib.scm threads.scm +In the subdirectory oop, wrote: + goops.scm +In the subdirectory oop/goops, wrote: + compile.scm dispatch.scm internal.scm old-define-method.scm save.scm + stklos.scm util.scm +In the subdirectory oop/goops, rewrote files from STKlos: + active-slot.scm composite-slot.scm describe.scm +In the subdirectory libguile, wrote: + backtrace.c debug.c options.c root.c srcprop.c stacks.c + backtrace.h debug.h options.h root.h srcprop.h stacks.h + iselect.c gdbint.c objects.c objprop.c stackchk.c modules.c + iselect.h gdbint.h objects.h objprop.h stackchk.h modules.h + random.c futures.c evalext.c goops.c hooks.c macros.c + random.h futures.h evalext.h goops.h hooks.h macros.h + gdb_interface.h +In the subdirectory libguile, rewrote: + coop-threads.c coop.c mit-pthreads.c threads.c print.c + coop-threads.h fsu-pthreads.h mit-pthreads.h threads.h print.h +In the subdirectory srfi, wrote: + srfi.c + srfi.h +In the subdirectory doc, wrote: + goops-tutorial.texi hierarchy.eps + hierarchy.txt mop.txt oldfmt.c +In the subdirectory doc, changes to: + data-rep.texi gh.texi goops.texi +Many other changes throughout. + +Mark Galassi: +Designed and implemented the high-level libguile API (the @code{gh_} +interface), based largely on the defunct @code{gscm_} interface. In the +subdirectory libguile, wrote: +gh.h gh_funcs.c gh_list.c gh_test_repl.c +gh_data.c gh_init.c gh_predicates.c +gh_eval.c gh_io.c gh_test_c.c +In the subdirectory doc, wrote: + appendices.texi gh.texi guile-tut.texi + +Marius Vollmer: Many changes throughout. +In the subdirectory libguile, wrote: + fluids.c fluids.h extensions.h + deprecation.h deprecation.c extensions.c +In the subdirectory libguile, rewrote: + dynl.c dynl-dl.c dynl-shl.c + dynl.h dynl-dld.c +In the subdirectory doc, changes to: + data-rep.texi intro.texi posix.texi + scheme-modules.texi +In the subdirectory ice-9, wrote + and-let-star-compat.scm + +R. Kent Dybvig: +In the subdirectory ice-9, wrote: + psyntax.ss + +Roland Orre: +In the subdirectory libguile, wrote: + sort.c + sort.h +In the subdirectory ice-9, wrote: + session.scm + +Michael Livshin: Some changes throughout. +Implemented support for double-word heap cells and converted some +smobs to use them. +In the subdirectory libguile, wrote: + guardians.c guardians.h filter-doc-snarfage.c + guile-snarf-docs.in guile-snarf-docs-texi.in +In the subdirectory libguile, changed extensively: + gc.c gc.h +In the subdirectory ice-9, wrote: + streams.scm and-let*.scm +In the subdirectory scripts, wrote: + snarf-check-and-output-texi + +Tim Pierce: +In the subdirectory libguile, wrote: + regex-posix.c + regex-posix.h +In the subdirectory doc, changes to: + appendices.texi posix.texi + +Rob Browning: + wrote initial srfi/srfi-2.scm. + wrote initial srfi/srfi-6.scm. + wrote initial srfi/srfi-8.scm. + wrote initial srfi/srfi-11.scm. + ported srfi/srfi-19.scm to Guile. + and many other changes throughout. + +Martin Grabmueller: +In the subdirectory libguile, changes to: + backtrace.c eval.c strorder.c script.c + strop.c strop.h struct.c macros.c + numbers.c posix.h posix.c symbols.c + gh_data.c strports.h strports.c validate.h + read.c + and many docstrings changes throughout. +In the subdirectory srfi, wrote: + srfi-1.scm srfi-9.scm srfi-10.scm + srfi-13.scm srfi-14.scm srfi-13.c + srfi-14.c srfi-13.h srfi-14.h + srfi-16.scm srfi-4.c srfi-4.h + srfi-4.scm +In the subdirectory scripts, wrote: + doc-snarf +In the subdirectory doc, wrote: + script-getopt.texi srfi-modules.texi + repl-modules.texi misc-modules.texi +In the subdirectory doc, changes to: + guile.texi intro.texi posix.texi + scheme-binding.texi scheme-control.texi + scheme-data.texi scheme-evaluation.texi + scheme-indices.texi scheme-io.texi + scheme-memory.texi scheme-modules.texi + scheme-options.texi scheme-procedures.texi + scheme-scheduling.texi scheme-utility.texi +In the subdirectory example, wrote + scripts modules safe + box box-module box-dynamic +In the subdirectory test-suite/tests, wrote: + srfi-4.test srfi-9.test srfi-10.test + srfi-13.test + +Will Fitzgerald: + wrote initial srfi/srfi-19.scm. + +Jost Boekemeier: +In the subdirectory libguile, wrote: + environments.c, environments.h + +Dirk Herrmann: +In the subdirectory doc, changes to: + data-rep.texi, scm.texi +In the subdirectory libguile, rewrote: + environments.c, environments.h +In the subdirectory libguile, changes to: + error.c, gc.c, gc.h, numbers.c, strings.c, symbols.c +In the subdirectory test-suite, rewrote: + lib.scm +In the subdirectory test-suite/tests, wrote: + bit-operations.test, common-list.test, environments.test, eval.test, + gc.test, list.test, numbers.test, symbols.test, syntax.test +Many other changes throughout. + +Greg Badros: +In the subdirectory doc, changes to: + data-rep.texi +Many changes throughout. + +Neil Jerram: +In the subdirectory ice-9, wrote: + buffered-input.scm +In the subdirectory doc, wrote: + deprecated.texi goops.texi scheme-ideas.texi + scheme-reading.texi +In the subdirectory doc, changes to: + appendices.texi data-rep.texi expect.texi + extend.texi gh.texi guile-tut.texi + guile.texi indices.texi intro.texi + posix.texi preface.texi r5rs.texi + scheme-binding.texi scheme-modules.texi + scheme-control.texi scheme-data.texi + scheme-debug.texi scheme-evaluation.texi + scheme-ideas.texi scheme-indices.texi + scheme-intro.texi scheme-io.texi + scheme-memory.texi scheme-options.texi + scheme-procedures.texi scheme-scheduling.texi + scheme-translation.texi scheme-utility.texi + scm.texi scripts.texi script-getopt.texi +In the subdirectory doc/maint, wrote: + docstring.el + +Thien-Thi Nguyen: +In the top-level directory, wrote: + check-guile.in guile-tools.in +In the subdirectory ice-9, changes to: + boot-9.scm documentation.scm emacs.scm + ls.scm session.scm string-fun.scm + threads.scm getopt-long.scm +In the subdirectory scripts, wrote: + Makefile.am PROGRAM + display-commentary generate-autoload + punify read-scheme-source + use2dot +In the subdirectory scripts, changes to: + doc-snarf +In the subdirectory libguile, changes to: + guile-doc-snarf.in regex-posix.c +In the subdirectory doc, changes to: + intro.texi preface.texi + scheme-modules.texi scheme-procedures.texi + scheme-scheduling.texi +In the subdirectory test-suite, changes to: + guile-test lib.scm +In the subdirectory test-suite/tests, wrote: + exceptions.test getopt-long.test +In the subdirectory test-suite/tests, changes to: + eval.test + +Robert Merkel: +In the subdirectory doc, co-wrote: + guile.1 + +Marc Feeley: +In the subdirectory doc, wrote: + pretty-print.scm + +Matthias Koeppe: +In the subdirectory test-suite/tests, wrote: + format.test, srfi-19.test, optargs.test +In the subdirectory test-suite/tests, changes to: + ports.test + +The file libguile/gc_os_dep.c is from the Boehm-Weiser conservative +collector. A lot of people have contributed to it, but probably not +all to the code in gc_os_dep.c: + + The SPARC specific code was contributed by Mark Weiser + (weiser@parc.xerox.com). The Encore Multimax modifications were + supplied by Kevin Kenny (kenny@m.cs.uiuc.edu). The adaptation to + the RT is largely due to Vernon Lee (scorpion@rice.edu), on + machines made available by IBM. Much of the HP specific code and + a number of good suggestions for improving the generic code are + due to Walter Underwood (wunder@hp-ses.sde.hp.com). Robert + Brazile (brazile@diamond.bbn.com) originally supplied the ULTRIX + code. Al Dosser (dosser@src.dec.com) and Regis Cridlig + (Regis.Cridlig@cl.cam.ac.uk) subsequently provided updates and + information on variation between ULTRIX systems. Parag Patel + (parag@netcom.com) supplied the A/UX code. Jesper + Peterson(jep@mtiame.mtia.oz.au), Michel Schinz, and Martin + Tauchmann (martintauchmann@bigfoot.com) supplied the Amiga port. + Thomas Funke (thf@zelator.in-berlin.de(?)) and Brian D.Carlstrom + (bdc@clark.lcs.mit.edu) supplied the NeXT ports. Douglas Steel + (doug@wg.icl.co.uk) provided ICL DRS6000 code. Bill Janssen + (janssen@parc.xerox.com) supplied the SunOS dynamic loader + specific code. Manuel Serrano (serrano@cornas.inria.fr) supplied + linux and Sony News specific code. Al Dosser provided Alpha/OSF/1 + code. He and Dave Detlefs(detlefs@src.dec.com) also provided + several generic bug fixes. Alistair G. Crooks(agc@uts.amdahl.com) + supplied the NetBSD and 386BSD ports. Jeffrey Hsu + (hsu@soda.berkeley.edu) provided the FreeBSD port. Brent Benson + (brent@jade.ssd.csd.harris.com) ported the collector to a Motorola + 88K processor running CX/UX (Harris NightHawk). Ari Huttunen + (Ari.Huttunen@hut.fi) generalized the OS/2 port to nonIBM + development environments (a nontrivial task). Patrick Beard + (beard@cs.ucdavis.edu) provided the initial MacOS port. David + Chase, then at Olivetti Research, suggested several improvements. + Scott Schwartz (schwartz@groucho.cse.psu.edu) supplied some of the + code to save and print call stacks for leak detection on a SPARC. + Jesse Hull and John Ellis supplied the C++ interface code. Zhong + Shao performed much of the experimentation that led to the current + typed allocation facility. (His dynamic type inference code + hasn't made it into the released version of the collector, yet.) + (Blame for misinstallation of these modifications goes to the + first author, however.) + +Keisuke Nishida: [added by ttn; kei, please review] +In the top-level directory, changes to: + libguile.h +In the subdirectory ice-9, wrote: + channel.scm history.scm time.scm + match.scm +In the subdirectory ice-9, changes to: + boot-9.scm receive.scm safe-r5rs.scm + common-list.scm +In the subdirectory emacs, wrote: + guile.el guile-scheme.el guile-emacs.scm +In the subdirectory libguile, changes to: + goops.c vectors.h vectors.c + eval.c hashtab.h hashtab.c + environments.c smob.h smob.c + keywords.c list.c strports.c + tag.c Makefile.am guile-snarf.awk.in +Many other changes throughout. + +Stefan Jahn: +In the subdirectory libguile, changes to: + continuations.h + continuations.c + gc.c + +John W. Eaton, based on code from AT&T Bell Laboratories and Bellcore: + The complex number division method in libguile/numbers.c. + +Gregory Marton: +In the subdirectory test-suite/tests, changes to: + hash.test diff --git a/guile18/COPYING.LESSER b/guile18/COPYING.LESSER new file mode 100644 index 0000000000..8add30ad59 --- /dev/null +++ b/guile18/COPYING.LESSER @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/guile18/ChangeLog b/guile18/ChangeLog new file mode 100644 index 0000000000..10501f33f6 --- /dev/null +++ b/guile18/ChangeLog @@ -0,0 +1,17 @@ +-*- text -*- + +Starting from September 1st, 2008, the Guile project no longer stores +change logs in `ChangeLog' files. Instead, changes are detailed in the +version control system's logs. They can be seen by downloading a copy +of the Git repository: + + $ git clone git://git.sv.gnu.org/guile.git + $ git whatchanged + +Alternatively, they can be seen on the web, using the Gitweb interface +at: + + http://git.sv.gnu.org/gitweb/?p=guile.git + +Change logs up to September 1st, 2008, are still available in the files +named `ChangeLog-2008'. diff --git a/guile18/ChangeLog-2008 b/guile18/ChangeLog-2008 new file mode 100644 index 0000000000..3d8b7e8dbd --- /dev/null +++ b/guile18/ChangeLog-2008 @@ -0,0 +1,3315 @@ +2008-08-20 Ludovic Courtès + + * configure.in: Use `AC_USE_SYSTEM_EXTENSIONS' instead of the + obsolete `AC_AIX', `AC_ISC_POSIX' and `AC_MINIX'. As a side + effect, this will define `_POSIX_PTHREAD_SEMANTICS' on Solaris, + which provides a standard-conforming version of `readdir_r ()' + for instance; it also allows the use of Autoconf 2.62. + +2008-08-14 Ludovic Courtès + + * configure.in: Remove incorrect and pointless + `AC_CONFIG_MACRO_DIR' invocation. Reported as Gentoo bug + #220339. + +2008-08-07 Neil Jerram + + * configure.in (SCM_I_GSC_STACK_GROWS_UP): Remove use of + AC_CACHE_CHECK, which was inadvertently causing + SCM_I_GSC_STACK_GROWS_UP _always_ to be 0. + +2008-07-17 Neil Jerram + + * configure.in: Update stack direction test to be like that in + Autoconf _AC_LIBOBJ_ALLOCA and Gnulib; specifically in involving a + function calling itself. + +2008-07-16 Ludovic Courtès + + * configure.in: Look for `struct dirent64' and `readdir64_r ()', + not available on HP-UX 11.11. + +2008-07-06 Ludovic Courtès + + * configure.in: Update to Autoconf 2.61. + +2008-06-28 Ludovic Courtès + + * configure.in: Use Automake with `-Wall -Wno-override'. + +2008-05-07 Ludovic Courtès + + Guile 1.8.5 released. + + * GUILE-VERSION (LIBGUILE_INTERFACE_CURRENT): Increment due to + the addition of an inlined version of `scm getc ()' and friends. + (LIBGUILE_INTERFACE_AGE): Increment. + (LIBGUILE_INTERFACE_REVISION): Zeroed. + (LIBGUILE_SRFI_SRFI_1_INTERFACE_REVISION): Increment. + +2008-05-04 Ludovic Courtès + + Add `pkg-config' support. Suggested by Aaron VanDevender, Greg + Troxel, and others. + + * configure.in: Substitute `sitedir', produce `guile-1.8.pc'. + * Makefile.am (EXTRA_DIST): Add `guile-1.8.pc.in'. + (pkgconfigdir, pkgconfig_DATA): New. + +2008-04-26 Ludovic Courtès + + * configure.in (BUILD_PTHREAD_SUPPORT): New Automake + conditional. + +2008-04-26 Ludovic Courtès + + * Makefile.am (EXTRA_DIST): Remove `ANON-CVS' and `SNAPSHOTS'. + +2008-03-12 Neil Jerram + + * configure.in (AC_CONFIG_FILES): Add emacs/Makefile and + ice-9/debugging/Makefile. + + * Makefile.am (SUBDIRS): Add emacs. + +2008-02-23 Neil Jerram + + * FAQ: New file. + + * Makefile.am (EXTRA_DIST): Add FAQ + +2008-02-22 Ludovic Courtès + + * configure.in: Check whether `strncasecmp' is declared. + +2008-02-16 Ludovic Courtès + + Guile 1.8.4 released. + + * GUILE-VERSION (LIBGUILE_INTERFACE_REVISION): Increment. + (GUILE_MICRO_VERSION): Increment. + + * configure.in (GUILE_CFLAGS): Include `$CPPFLAGS' since they + may include required `-I' flags (e.g., `-I/path/to/gmp'), so + that "guile-config compile" reports all the needed flags. + +2008-02-15 Neil Jerram + + * autogen.sh: Copy versions of config.guess and config.sub from + Guile CVS to build-aux and guile-readline. + +2008-02-14 Neil Jerram + + * HACKING: Note need for libtool >= 1.5.26. + + * config.rpath, build-aux/config.rpath: Updated to latest upstream + version. + + * config.guess, config.sub: 2008-01-07 versions added to Guile + CVS, to ensure that Guile developers are using new enough versions + (in particular for AIX 6.1 support). + +2008-02-11 Neil Jerram + + * configure.in (--without-64-calls): Use AC_MSG_CHECKING and + AC_MSG_RESULT instead of just echo. + (GUILE_I): New programs to try using _Complex_I or 1.0fi for the + imaginary unit. + +2008-02-06 Neil Jerram + + * configure.in: Default to --without-64-calls for + powerpc-ibm-aix*. Thanks to Rainer Tammer for reporting that the + 64 calls are a problem on that OS. + +2008-02-06 Ludovic Courtès + + * NEWS: Mention Sun Studio compilation fix. + +2008-02-05 Neil Jerram + + * configure.in (--without-64-calls): New option. + +2008-01-30 Neil Jerram + + * pre-inst-guile.in (dyld_prefix), pre-inst-guile-env.in + (dyld_prefix): Construct and export dyld_prefix in a similar way + to ltdl_prefix, to allow pre-install dynamic linking to work on + MacOS. Thanks to Roger Mc Murtrie for reporting this problem. + +2008-01-22 Neil Jerram + + * README: Should say version 1.8.3, not 1.8.2. + + * LICENSE: Change COPYING.LIB to COPYING.LESSER. + + * COPYING.LESSER: Renamed, previously COPYING.LIB. + + * COPYING: Removed. + + * libguile.h: Update copyright statement to LGPL. + +2007-12-04 Ludovic Courtès + + * NEWS: Mention `accept' and `scm_c_{read,write}' bug fixes. + +2007-12-03 Ludovic Courtès + + * NEWS: Add SRFI-69. + +2007-10-17 Ludovic Courtès + + * NEWS: Mention reader bug-fix. + +2007-10-16 Ludovic Courtès + + Guile 1.8.3 released. + + * GUILE-VERSION (GUILE_MICRO_VERSION): Incremented. + (LIBGUILE_INTERFACE_REVISION): Incremented. + +2007-10-10 Ludovic Courtès + + * configure.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT): + New substituted variable. + Use `-Werror' when using GCC and checking for + `PTHREAD_ONCE_INIT'. Add check for braces around + `PTHREAD_MUTEX_INITIALIZER'. + * NEWS: Mention build fix for IRIX. + +2007-10-02 Ludovic Courtès + + * NEWS: Mention `(ice-9 slib)' fix and threading fix. + +2007-09-03 Ludovic Courtès + + * NEWS: Mention alignment-related bug fixes. + +2007-09-03 Kevin Ryde + + * configure.in (AC_CHECK_FUNCS): Add clog and cexp. + +2007-09-02 Ludovic Courtès + + * NEWS: Mention memory leak fix in `make-socket-address'. + +2007-09-01 Ludovic Courtès + + * NEWS: Mention duplicate binding warnings to stderr. + +2007-08-23 Ludovic Courtès + + * NEWS: Mention Solaris bug fixes. + +2007-08-11 Ludovic Courtès + + * NEWS: Mention SRFI-35 and the new reader. + + * configure.in: Check for and `strncasecmp ()'. + +2007-08-08 Ludovic Courtès + + * NEWS: Mention changes to `record-accessor' and + `record-modifier'. + +2007-08-03 Ludovic Courtès + + * configure.in: Use `build-aux' as `AC_CONFIG_AUX_DIR', and `m4' + as `AC_CONFIG_MACRO_DIR'. Use Automake's `gnu' and `check-news' + options. + +2007-07-25 Ludovic Courtès + + * NEWS: Mention bug fix for "(set! 'x #f)". + +2007-07-18 Ludovic Courtès + + * NEWS: Mention SRFI-37. + +2007-07-15 Ludovic Courtès + + Guile 1.8.2 released. + + * NEWS: Mention HP-UX/IA64 build fixes. + + * THANKS: Added people who reported bugs or sent patches since + 1.8.1. Converted to UTF-8. + + * README: Updated version number. + + * Makefile.am (EXTRA_DIST): Removed `BUGS' (was outdated). + + * ANON-CVS, HACKING, SNAPSHOTS: New, from the `workbook' + directory of the CVS repository. + + * autogen.sh: Removed dependency on the `workbook' CVS + directory. + + * GUILE-VERSION (GUILE_MICRO_VERSION): Set to 2. + (LIBGUILE_INTERFACE_CURRENT): Incremented due to new symbols. + (LIBGUILE_INTERFACE_REVISION): Set to 0. + (LIBGUILE_INTERFACE_AGE): Incremented. + (LIBGUILE_SRFI_SRFI_60_INTERFACE_REVISION): Incremented due to + bug fixes. + +2007-07-11 Ludovic Courtès + + * NEWS: Mention GOOPS `method-more-specific?' bug fix. + +2007-07-09 Ludovic Courtès + + * NEWS: Mention SRFI-19 `date->julian-day' bug fix. + +2007-06-26 Ludovic Courtès + + * NEWS: Mention fixed memory leaks. + +2007-06-13 Ludovic Courtès + + * NEWS: Mention top-level define incompatible change. + +2007-06-12 Ludovic Courtès + + * NEWS: Mention `inet-ntop' bug fix. + +2007-05-09 Ludovic Courtès + + * NEWS: Mention SRFI-19 `time-process' bug fix. + +2007-02-20 Neil Jerram + + * config.rpath (Module): New (from gettext package). + + * INSTALL: New upstream version. + + * ABOUT-NLS: New upstream version. + +2007-01-28 Neil Jerram + + IA64 HP-UX patch from Hrvoje NikÅ¡ić. (Thanks!) + + * configure.in: New check for uca lib (needed for IA64 on HP-UX). + +2007-01-23 Kevin Ryde + + * configure.in (isinf, isnan): Use a volatile global to stop gcc + optimizing out the test. In particular this fixes solaris where there + isn't an isinf or isnan (though gcc still optimizes as if there is). + Reported by Hugh Sasse. + (AC_C_VOLATILE): New. + +2007-01-22 Kevin Ryde + + * configure.in (AC_INIT): Don't use "echo -n", it's not portable and + in particular fails on solaris (resulting in literal "-n"s going into + the output, making the resulting configure unusable). Reported by + Hugh Sasse. + +2006-12-27 Kevin Ryde + + * configure.in (pthread_get_stackaddr_np, pthread_sigmask): New tests. + +2006-12-24 Han-Wen Nienhuys + + * autogen.sh (mscripts): only execute render-bugs if it exists. + +2006-12-23 Kevin Ryde + + * configure.in (-lm): No need to suppress libm on mingw, it's not + needed because it's empty, but including it does no harm. + (-lm): Look for "cos" instead of "main", since cos and friends are the + purpose of looking for libm. + (winsock etc): Test $host = *-*-mingw* rather than $MINGW32, autoconf + regards the latter as obsolete. + (AC_MINGW32): Remove test, $MINGW32 now unused. + (uint32_t): Look at HAVE_NETDB_H rather than hard-coding __MINGW32__ + in the test program. + +2006-12-15 Kevin Ryde + + * configure.in (process.h, pipe, _pipe): New checks. + +2006-12-14 Kevin Ryde + + * configure.in (struct timespec, pthread.h): Look for struct timespec + in as well as , it's in pthread.h on mingw. + Reported by Nils Durner. + +2006-12-03 Kevin Ryde + + * Makefile.am (AUTOMAKE_OPTIONS): Bump to automake 1.10 required, so + that config.rpath from gettext will go into the dist (and give an + error if not). + + * configure.in (AM_PROG_CC_C_O): New macro, needed by automake 1.10 + for per-target cflags in libguile/Makefile.am. + +2006-11-08 Ludovic Courtès + + * configure.in: Pass `bug-guile@gnu.org' as a third argument to + `AC_INIT'. + +2006-10-06 Rob Browning + + Guile 1.8.1 released. + + * GUILE-VERSION (GUILE_MICRO_VERSION): Increment for release. + (LIBGUILE_INTERFACE_REVISION): Increment for release. + (LIBGUILE_SRFI_SRFI_1_INTERFACE_REVISION): Increment for release. + (LIBGUILE_SRFI_SRFI_4_INTERFACE_REVISION): Increment for release. + (LIBGUILE_SRFI_SRFI_13_14_INTERFACE_REVISION): Increment for release. + (LIBGUILE_SRFI_SRFI_60_INTERFACE_REVISION): Increment for release. + + * Makefile.am (EXTRA_DIST): Add LICENSE. + +2006-09-28 Kevin Ryde + + * configure.in (chsize, ftruncate, truncate): New tests, for mingw. + +2006-09-27 Kevin Ryde + + * configure.in (clog10): New test, not in mingw. + +2006-09-23 Kevin Ryde + + * configure.in (complex.h, complex double, csqrt): New tests. + +2006-09-20 Ludovic Courtès + + * configure.in: Check for `isblank ()'. + + * NEWS: Mentioned the interaction between `setlocale' and SRFI-14 + standard char sets. + +2006-08-22 Kevin Ryde + + * configure.in: Test if need braces around PTHREAD_ONCE_INIT, set + AC_OUTPUT of SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT. + +2006-07-25 Kevin Ryde + + * configure.in (AC_CHECK_FUNCS): Add pthread_getattr_np. + +2006-07-24 Kevin Ryde + + * configure.in (AC_CHECK_DECLS): Add sethostname for Solaris 10. + (AC_CHECK_FUNCS): Remove dirfd, it's a macro. + Reported by Claes Wallin. + +2006-06-25 Kevin Ryde + + * configure.in (AC_CHECK_MEMBERS): Test struct tm.tm_gmtoff. + +2006-06-13 Ludovic Courtès + + * NEWS: Mentioned the new behavior of `equal?' for structures. + +2006-06-06 Neil Jerram + + * acinclude.m4 (ACX_PTHREAD): Update to latest definition from + autoconf macro archive, to fix pthread linking problem on Solaris + 10, reported by Charles Gagnon. + +2006-05-28 Kevin Ryde + + * configure.in (isnan): Remove "#ifdef __MINGW32__, #define isnan + _isnan". Mingw provides isnan as a macro (in math.h), the test + already detects it just fine with no special case. + +2006-05-26 Kevin Ryde + + * configure.in (AC_CHECK_FUNCS): Add ioctl. + (pthread_attr_getstack): Restrict test to pthreads case, to avoid + AC_TRY_RUN when cross-compiling --without-threads. + +2006-05-20 Kevin Ryde + + * configure.in (S_ISLNK): Remove test, leave it to #ifdef in the .c + files. + +2006-05-16 Kevin Ryde + + * configure.in (struct stat st_blocks): Change AC_STRUCT_ST_BLOCKS to + a plain AC_CHECK_MEMBERS, we don't want AC_LIBOBJ(fileblocks) which + the former gives. Remove the commented-out code that was to have + munged fileblocks out of LIBOBJS. This fixes mingw, where the lack of + st_blocks and absense of the fileblocks.c replacement caused build + failure. Reported by "The Senator". + (struct stat st_rdev, st_blksize): Combine into a single + AC_CHECK_MEMBERS. + +2006-04-18 Rob Browning + + * configure.in: Add AC_CONFIG_AUX_DIR([.]) as suggested in the + autotools documentation. + +2006-04-16 Kevin Ryde + + * configure.in (stat64, off_t): New tests. + +2006-03-31 Kevin Ryde + + * configure.in (socklen_t): Enhance test for this type, coping with + need for on MacOS X. Reported by Michael Tuexen and + Jay Cotton. + +2006-03-26 Marius Vollmer + + * configure.in: Added check that defines + PTHREAD_ATTR_GETSTACK_WORKS when pthread_attr_getstack works for + the main thread. + +2006-02-26 Kevin Ryde + + * configure.in (AC_CHECK_FUNCS): Add dirfd. + +2006-02-20 Marius Vollmer + + Released 1.8.0. + + * GUILE-VERSION: Set version. + +2006-02-06 Marius Vollmer + + Branched for 1.8 series. + + * GUILE-VERSION: Bumped version numbers. + + * configure.in: Removed --enable-arrays option. + +2005-12-14 Neil Jerram + + * NEWS: Remove entry claiming that breakpoints have been added, + because breakpoints are now implemented outside the core distro. + Add entries on obsolescence of the 'cheap option and on tweaking + support in evaluator trap calls. Finally, correct outline level + of item about make-keyword-from-dash-symbol. + +2005-07-09 Neil Jerram + + * configure.in (AC_CONFIG_FILES): Removed emacs/Makefile and + ice-9/debugger/breakpoints/Makefile. + + * Makefile.am (SUBDIRS): Removed emacs. + +2005-06-05 Marius Vollmer + + From Jan Nieuwenhuizen . Thanks! + + * configure.in: Add tests for socklen_t and ip_mreq. + +2005-03-13 Kevin Ryde + + * configure.in, GUILE-VERSION (LIBGUILE_SRFI_SRFI_60): New defines. + +2005-03-09 Marius Vollmer + + Guile 1.7.2 has been released. + + * GUILE-VERSION (GUILE_MICRO_VERSION): Incremented to "2". + +2005-03-08 Marius Vollmer + + libltdl is no longer distributed. We expect it to be installed + already. + + * configure.in: Do not call AC_LIBLTDL_INSTALLABLE. Use + AC_CHECK_LIB instead. Do not subst LTDLINCL and LIBLTDL. Do not + add "-DLIBLTDL_DLL_IMPORT" on MINGW32. + + * Makefile.am (SUBDIRS): Removed libltdl. + + * README: Talk about required external packages. + + * autogen.sh: Do not call libtoolize. + +2005-03-02 Marius Vollmer + + * configure.in: Do not check for fast or recursive mutexes. Check + for pthread_attr_getstack. + (SCM_I_GSC_USE_COOP_THREADS): Dot not subst. + (pthread_mutexattr_settype): Do not check for it. + +2005-02-28 Marius Vollmer + + * autogen.sh: Add '--verbose' option to autoreconf invocation. + Thanks to Bruno Haible. + +2005-01-02 Marius Vollmer + + * configure.in (SCM_I_GSC_HAVE_ARRAYS): Removed '--disable-arrays' + option. + +2004-11-28 Kevin Ryde + + * configure.in (AC_SUBST): Correction, LTDLINC should be LTDLINCL, the + latter is what libtool defines. + +2004-10-27 Marius Vollmer + + * libguile.h: Include "libguile/srfi-4.h". + +2004-10-25 Marius Vollmer + + * autogen.sh: Added explicit invocation of libtoolize before + autoreconf so that libltdl/ is updated as well. + +2004-10-22 Marius Vollmer + + Removed usage of libguile-ltdl. + + * configure.in: Call AC_LIBLTDL_INSTALLABLE instead of + AC_LIB_LTDL. + (AC_CONFIG_SUBDIRS): Added libltdl. + (DLPREOPEN, LTDLINC, LIBLTDL): Moved AC_SUBST near other libtool + stuff. Also subst LTDLINC instead of INCLTDL. + (AC_CONFIG_FILES): Removed libguile-ltdl/Makefile and + libguile-ltdl/upstream/Makefile. + + * Makefile.am (SUBDIRS): Replaced libguile-ltdl with libltdl. + +2004-09-28 Marius Vollmer + + * ABOUT-NLS: New, from gettext 0.14.1. + + * configure.in: Do use AM_GNU_GETTEXT, since gettextize is not run + with autoconf 2.59. + +2004-09-25 Marius Vollmer + + * configure.in: Do not use AM_GNU_GETTEXT for now, it causes + gettextize to run during autogen.sh, which we do not want. + Explicitely check for libintl, gettext, bindtextdomain, and + textdomain instead. + +2004-09-24 Marius Vollmer + + * libguile.h: Include outside of extern "C" block. + (Note that numbers.h still includes gmp.h to make it + self-contained.) + + * configure.in: Do not include PTHREAD_CFLAGS in CFLAGS, CFLAGS is + for the user and is often overwritten temporarily. + (GUILE_CFLAGS): New, include PTHREAD_CFLAGS here. + (GUILE_LIBS): Remove THREAD_LIBS_INSTALLED, which is unused now. + +2004-09-22 Marius Vollmer + + * configure.in: Add AM_GNU_GETTEXT invocation. From Bruno Haible. + +2004-09-21 Marius Vollmer + + * acinclude.m4 (ACX_PTHREAD): New. + * configure.in: Use it instead of simply looking for -lpthread. + Thanks to Andreas Vögele! + +2004-09-08 Marius Vollmer + + * configure.in: Fail when alloca can not be found natively. + +2004-09-03 Stefan Jahn + + * configure.in (isinf): Let configure find the isinf() function + on MinGW32 systems. + +2004-08-27 Kevin Ryde + + * configure.in (AC_CHECK_MEMBERS): Add struct sockaddr.sin_len and + struct sockaddr_in6.sin6_len. Reported by Michael Tuexen. + +2004-08-27 Marius Vollmer + + Guile 1.7.1 as been released. + +2004-08-26 Marius Vollmer + + * GUILE-VERSION: Bumped all versions for the 1.7.1 release. Added + LIBGUILE_*_MAJOR variables for inclusion in the names of shared + libraries such as "libguile-srfi-srfi-1-v-MAJOR.la". Removed + LIBQTHREADS_*. + * configure.in: Updated for the new set of variables defined in + GUILE-VERSION. + +2004-08-25 Marius Vollmer + + * libguile.h: Include srfi-13.h and srfi-14.h, do not include + strop.h. + +2004-08-02 Marius Vollmer + + * README: Document the new --disable-discouraged option. + + * configure.in (SCM_I_GSC_ENABLE_DISCOURAGED): New, for the new + --enable-discouraged option. + + * libguile.h: Include libguile/discouraged.h. + +2004-07-29 Marius Vollmer + + * configure.in: Bugfix: logic in detecting ptrdiff_t was inverted; + assume ptrdiff_t is available when its size is non-zero, not when + it is zero. Do no longer define SCM_I_GSC_*_LIMITS macros. Check + for sizes of size_t and intmax_t. + +2004-07-09 Marius Vollmer + + * configure.in: Bugfix: set SCM_I_GSC_T_UINTMAX, not + SCM_I_GSC_T_INTMAX in two places. Thanks to Andreas Vögele! + +2004-07-07 Marius Vollmer + + * configure.in: When checking for suitable types for scm_t_int8, + etc, try int8_t first, so that we pick them up when they are + defined. Also, substitute limit macros like INT8_MIN into the + configure header for all these types. + +2004-07-05 Kevin Ryde + + * configure.in (isinf, isnan): Detect macro versions as well as + functions, since C99 specifies them as macros and that's all HP-UX + has. Reported by Andreas Voegele. + +2004-06-28 Marius Vollmer + + * configure.in: Removed code for --enable-htmldoc; support for + HTML is now included in automake. + +2004-06-16 Rob Browning + + * pre-inst-guile.in: modify to handle move of readline.scm to + ice-9 subdir of guile-readline. + + * pre-inst-guile-env.in: modify to handle move of readline.scm to + ice-9 subdir of guile-readline. + + * configure.in: move package and version args to AC_INIT as is now + recommended. This also requires m4_esyscmd to read GUILE-VERSION + given the way AC_INIT handles its args. + +2004-04-22 Kevin Ryde + + * configure.in (AC_CHECK_HEADERS): Add fenv.h. + (AC_CHECK_FUNCS): Add fesetround. + +2004-04-18 Kevin Ryde + + * configure.in (AC_CHECK_FUNCS): Add readdir_r. + +2004-03-23 Kevin Ryde + + * configure.in (AC_CHECK_FUNCS): Add sysconf. + (AC_CHECK_HEADERS): Add netdb.h and sys/param.h. + +2004-03-21 Kevin Ryde + + * configure.in (AC_CHECK_FUNCS): Add gmtime_r. + +2004-03-14 Kevin Ryde + + * configure.in (strptime): Use #define _GNU_SOURCE to get the + prototype from glibc, use AC_CHECK_DECLS rather than AC_EGREP_HEADER. + +2004-02-29 Kevin Ryde + + * configure.in: Use AC_COPYRIGHT and AH_TOP to get copyright notice + into generated configure and config.h.in. + + * configure.in (AC_CHECK_FUNCS): Add DINFINITY and DQNAN. + +2004-02-21 Kevin Ryde + + * configure.in (crypt): Test with AC_SEARCH_LIBS, for the benefit of + HP-UX. Define HAVE_CRYPT rather than HAVE_LIBCRYPT. Reported by + Andreas Voegele. + +2004-02-18 Kevin Ryde + + * configure.in (AC_CHECK_HEADERS): Add crt_externs.h. + (AC_CHECK_FUNCS): Add _NSGetEnviron. + +2004-02-15 Mikael Djurfeldt + + * configure.in: Use AC_PROG_LIBTOOL instead of AM_PROG_LIBTOOL. + +2004-01-25 Neil Jerram + + * configure.in (GUILE_FUNC_DECLARED), acinclude.m4 + (GUILE_STRUCT_UTIMBUF, GUILE_NAMED_CHECK_FUNC): Correctly quote + macros being defined. + +2003-12-26 Marius Vollmer + + * configure.in: Find a suitable type for the new scm_t_intmax and + scm_t_uintmax. + +2003-11-17 Rob Browning + + * configure.in: rewrite ALLOCA related code as multiple lines so + it doesn't break with current autoconf substitutions. + +2003-11-15 Kevin Ryde + + * configure.in (--with-guile-for-build): Remove this option, it's not + normal style for --with. + (GUILE_FOR_BUILD): Use AC_ARG_VAR. + * README (Cross building Guile): Describe GUILE_FOR_BUILD rather than + --with-guile-for-build. + +2003-11-11 Neil Jerram + + * .cvsignore: Add elisp-comp. + +2003-10-30 Neil Jerram + + * configure.in (AC_CONFIG_FILES): Add `emacs/Makefile'. + (AM_PATH_LISPDIR): Added. + + * Makefile.am (SUBDIRS): Add `emacs'. + +2003-07-27 Marius Vollmer + + * configure.in: Look for sched_yield in -lrt; this is needed for + Solaris. Thanks to Matthias Koeppe! + (setgroups): Check for it. + + * configure.in (__libc_stack_end): Actually use the value in + __libc_stack_end for something so that the access doesn't get + optimized away. Thanks to Matthias Koeppe! + +2003-07-08 Kevin Ryde + + * configure.in (AC_CHECK_FUNCS): Add sincos. + +2003-06-21 Kevin Ryde + + * configure.in (AC_CHECK_FUNCS): Add asinh, acosh, atanh and trunc. + +2003-06-19 Marius Vollmer + + * configure.in: use "-Werror" only with GCC. Thanks to Matthias + Koeppe! + +2003-06-19 Kevin Ryde + + * README (Guile Documentation): Update to manuals now available, + remove notes about the reference manual being in progress. + +2003-06-14 Stefan Jahn + + * configure.in: Checking for __int64 as possible candidate for + the SCM_I_GSC_T_INT64 define. + +2003-05-30 Stefan Jahn + + * configure.in: Checking for unsetenv(). + +2003-05-29 Stefan Jahn + + * configure.in: Removed -lm check and added a cached check for + __libc_stack_end to get it building for mingw32 hosts. + +2003-05-19 Kevin Ryde + + * README (Cross building Guile): Remove --with-cc-for-build in favour + of CC_FOR_BUILD. + +2003-05-16 Kevin Ryde + + * configure.in (--with-cc-for-build): Remove this option, CC_FOR_BUILD + variable is more or less standard, and is adequate for the task. + +2003-05-12 Kevin Ryde + + * configure.in (CC_FOR_BUILD): Use AC_ARG_VAR. + + * configure.in (SCM_SINGLES): Use AC_CHECK_SIZEOF(float), to + eliminate guess-yes when cross compiling. + + * configure.in (SCM_I_GSC_STACK_GROWS_UP): Fix missing comma in + AC_TRY_RUN. + +2003-04-20 Dirk Herrmann + + * libguile.h: Removed uses of DEBUG_EXTENSIONS to fix compile + errors with --disable-deprecated. + +2003-04-07 Rob Browning + + * pre-inst-guile-env.in: new script -- can be used to run commands + in an envt set up using the development libs, Guile, etc. + + * configure.in: handle pre-inst-guile-env and add + test-suite/standalone/Makefile. + +2003-04-06 Marius Vollmer + + * configure.in: Check for mpz_import, which is required but only + available in GMP 4.1. + +2003-04-05 Marius Vollmer + + * Changed license terms to the plain LGPL thru-out. + +2003-04-04 Rob Browning + + * configure.in: add GMP test (require GMP). + +2003-03-26 Marius Vollmer + + * libguile.h: Include "libguile/deprecated.h". + +2003-03-25 Rob Browning + + * configure.in: big overhaul to shift us to have separate private, + config.h, and public, scmconfig.h, configuration headers. Added a + fair amount of code to track down new required types: scm_t_uint8, + scm_t_uint16, scm_t_uint32, scm_t_int8, scm_t_int16, scm_t_int32, + and to detect optional types scm_t_uint64, scm_t_in64, long long, + unsigned long long, scm_t_ptrdiff, intptr_t, and uintptr_t. + (SCM_I_GSC_T_PTRDIFF): gen-scmconfig.h.in AC_SUBST var. + (SCM_I_GSC_NEEDS_INTTYPES_H): gen-scmconfig.h.in AC_SUBST var. + (SCM_I_GSC_NEEDS_STDINT_H): gen-scmconfig.h.in AC_SUBST var. + (SCM_I_GSC_T_UINT8): gen-scmconfig.h.in AC_SUBST var. + (SCM_I_GSC_T_UINT16): gen-scmconfig.h.in AC_SUBST var. + (SCM_I_GSC_T_UINT32): gen-scmconfig.h.in AC_SUBST var. + (SCM_I_GSC_T_UINT64): gen-scmconfig.h.in AC_SUBST var. + (SCM_I_GSC_T_INT8): gen-scmconfig.h.in AC_SUBST var. + (SCM_I_GSC_T_INT16): gen-scmconfig.h.in AC_SUBST var. + (SCM_I_GSC_T_INT32): gen-scmconfig.h.in AC_SUBST var. + (SCM_I_GSC_T_INT64): gen-scmconfig.h.in AC_SUBST var. + (USE_PTHREAD_THREADS): removed - handled by gen-scmconfig.c. + (USE_NULL_THREADS): removed - handled by gen-scmconfig.c. + (USE_COOP_THREADS): removed - handled by gen-scmconfig.c. + (SCM_I_GSC_USE_PTHREAD_THREADS): gen-scmconfig.h.in AC_SUBST var. + (SCM_I_GSC_USE_NULL_THREADS): gen-scmconfig.h.in AC_SUBST var. + (SCM_I_GSC_USE_COOP_THREADS): gen-scmconfig.h.in AC_SUBST var. + (STACK_GROWS_UP): removed - handled by gen-scmconfig.c. + (SCM_I_GSC_STACK_GROWS_UP): gen-scmconfig.h.in AC_SUBST var. + (GUILE_DEBUG_FREELIST): removed - handled by gen-scmconfig.c. + (SCM_I_GSC_GUILE_DEBUG_FREELIST): gen-scmconfig.h.in AC_SUBST var. + (GUILE_DEBUG): removed - handled by gen-scmconfig.c. + (SCM_I_GSC_GUILE_DEBUG): gen-scmconfig.h.in AC_SUBST var. + (SCM_ENABLE_DEPRECATED): removed - handled by gen-scmconfig.c. + (SCM_I_GSC_ENABLE_DEPRECATED): gen-scmconfig.h.in AC_SUBST var. + (HAVE_ARRAYS): removed - handled by gen-scmconfig.c. + (SCM_I_GSC_HAVE_ARRAYS): gen-scmconfig.h.in AC_SUBST var. + (SCM_ENABLE_ELISP): removed - handled by gen-scmconfig.c. + (SCM_I_GSC_ENABLE_ELISP): gen-scmconfig.h.in AC_SUBST var. + (SCM_I_GSC_C_INLINE): gen-scmconfig.h.in AC_SUBST var. + (DEBUG_EXTENSIONS): removed - handled by gen-scmconfig.c. + (READER_EXTENSIONS): removed - handled by gen-scmconfig.c. + (USE_THREADS): removed - handled by gen-scmconfig.c. + (GUILE_ISELECT): removed - handled by gen-scmconfig.c. + (DYNAMIC_LINKING): removed - handled by gen-scmconfig.c. + + * README: merge information from INSTALL and remove at least some + of the stale bits. + + * LICENSE: new file -- we should change this to the LGPL soon and + add COPYING.LIB to the distribution. + + * autogen.sh: call autoreconf with --force. This may fix the + "order" problem below without having to have two calls. + + * INSTALL: use the automake installed INSTALL file. The Guile + specific instructions are now in README. + +2003-03-21 Marius Vollmer + + * autogen.sh: Invoke autoreconf twice since the required files do + not seem to be generated in the right order. XXX - investigate + further. + +2003-03-19 Marius Vollmer + + * guile-tools.in (guileversion): Use $GUILE_EFFECTIVE_VERSION + instead of $GUILE_VERSION. Thanks to Kevin Ryde! + +2003-02-27 Rob Browning + + * configure.in (AC_CONFIG_SRCDIR): use GUILE-VERSION. + (AM_CONFIG_HEADER): change to config.h + + * Makefile.am (EXTRA_DIST): remove $(ACLOCAL). + (ACLOCAL_AMFLAGS): replaces ACLOCAL. + + * autogen.sh: switch to autoreconf -- see how it goes. remove + call to guile-aclocal.sh -- we now do the same thing with an + automake setting. + + * guile-aclocal.sh: deleted in favor of ACLOCAL_AMFLAGS in + Makefile.am. + +2003-02-26 Rob Browning + + * configure.in: change our config header from libguile/scmconfig.h + to be the traditional ./config.h. libguile/scmconfig.h is now + built from that during the build process. More changes coming... + +2003-01-23 Mikael Djurfeldt + + * libguile.h: #include "futures.h" + +2002-12-16 Mikael Djurfeldt + + * configure.in: Test if pthread.h declares + pthread_mutexattr_settype (). + +2002-12-15 Mikael Djurfeldt + + * configure.in (SCM_MUTEX_FAST, SCM_MUTEX_RECURSIVE): Test for + ways to get fast and recursive mutexes. + +2002-12-10 Mikael Djurfeldt + + * configure.in (_THREAD_SAFE): Define when pthreads are enabled in + order to get thread safe versions of glibc functions. + +2002-12-09 Mikael Djurfeldt + + * configure.in: Temporarily replaced "copt" threads option with new + option "pthreads". + (USE_PTHREAD_THREADS): Define if pthreads configured. + +2002-12-08 Rob Browning + + * configure.in (GUILE_EFFECTIVE_VERSION): AC_SUBST it. + (AC_CONFIG_FILES): separate out the files that need to be chmodded + at the end of config.status. Our "default" approach using + AC_CONFIG_COMMANDS quit working (and would have needed to be + changed to AC_CONFIG_COMMANDS(,,CMDS) rather than our previous + AC_CONFIG_COMMANDS(default,CMDS), but I the new approach, using + per-file AC_CONFIG_FILES calls appears to be more "correct" in the + current autoconf docs. + + * GUILE-VERSION (GUILE_EFFECTIVE_VERSION): new variable. + +2002-12-02 Marius Vollmer + + * Makefile.am (SUBDIRS): Removed qt. + + * configure.in: Do not configure QTHREADS. Do not define + USE_COOP_THREADS. Changed logic for thread package selection so + that the default is "coop-pthread" when -lpthread is found, "null" + otherwise. + +2002-12-01 Mikael Djurfeldt + + * GUILE-VERSION: Added versioning info for srfi 1. + + * configure.in (LIBGUILE_SRFI_SRFI_1_INTERFACE_CURRENT, + LIBGUILE_SRFI_SRFI_1_INTERFACE_REVISION, + LIBGUILE_SRFI_SRFI_1_INTERFACE_AGE, + LIBGUILE_SRFI_SRFI_1_INTERFACE): New AC_SUBST. + +2002-11-10 Marius Vollmer + + * configure.in (USE_THREADS, GUILE_ISELECT): Define always. We + define them with AC_DEFINE and not in some header file so that + they are visible exactly in the same way as they used to be. + +2002-11-03 Marius Vollmer + + * configure.in: Do not add "threads.o" to the libobjs, it is now + always compiled. + (USE_THREADS, GUILE_ISELECT): Do not define. + +2002-10-27 Marius Vollmer + + * configure.in: Handle thread package "coop-pthread" with alias + "copt" and define USE_COPT_THREADS when it is selected. + Always define GUILE_ISELECT. + +2002-10-26 Neil Jerram + + * configure.in (AC_CONFIG_FILES): Add ice-9/debugger/Makefile and + ice-9/debugger/breakpoints/Makefile. + +2002-10-21 Marius Vollmer + + * configure.in: Changed logic in thread support configuration such + that --with-threads=no is equivalent to --with-threads=null. On + platforms that are not supported by QuickThreads, we also use the + null-threads. Thus, USE_THREADS is always defined now. + +2002-10-16 Marius Vollmer + + * configure.in: Shuffled around and extended the thread + configuration code to allow the "null" thread package to be + selected. Define USE_NULL_THREADS in that case. + +2002-10-13 Gary Houston + + * autogen.sh (ac_version): try automake 1.7 too. + +2002-10-05 Marius Vollmer + + * autogen.sh: Make sure that $autoheader is always set. When we + would use the plain "autoconf", $autoheader would end up empty and + libguile/scmconfig.h.in would not be updated. + +2002-10-04 Rob Browning + + * libltdl: moved to libguile-ltdl. + + * Makefile.am (SUBDIRS): remove libltdl. + + * autogen.sh: remove support for libltdl sub-configure. + (ac_version): widen support check to any 2.5? autoconf version. + 2.54 is out now. + + * configure.in: turn on -Werror by default. We're now clean. I'd + like to stay that way. If we want, we can turn it off by default + when we make the stable release, but I caught a lot of bugs this + way. Accomodate libguile-ltdl -- therea are some ltdl things that + are commented out now INCLTDL and LIBLTDL. I think we may not + need them anymore, but I'll leave them until we're sure. We also + killed off the libltdl dir and related options including the + AC_CONFIG_SUBDIRS. I also added some explicit tests for some + headers and functions that weren't listed but were in + scmconfig.h.in. though this may have been unnecessary. + +2002-10-04 Marius Vollmer + + * configure.in: Use AC_LIBLTDL_CONVENIENCE instead of + AC_LIBLTDL_INSTALLABLE. + +2002-10-03 Marius Vollmer + + * autogen.sh: Do not instruct libtoolize to copy libltdl into our + sources. Do not patch it. We have our own version now that is + only being used as a convenience library. + +2002-08-24 Marius Vollmer + + * configure.in: Check for __libc_stack_end. + +2002-08-05 Han-Wen Nienhuys + + * configure.in: add snprintf + +2002-08-04 Han-Wen + + * NEWS: add entries for GC and vector WB. + +2002-07-22 Han-Wen + + * autogen.sh (mscripts): find and check version number of + automake. Complain if 1.6 is not found. + +2002-07-20 Han-Wen + + * autogen.sh (mscripts): find and check version number of + autoconf. Complain if 2.53 is not found. + +2002-07-20 Dirk Herrmann + + * benchmark-guile.in: Copied from check-guile.in and adapted for + use with benchmarks. + + * Makefile.am: Recurse into the benchmark-suite subdir. + + * configure.in: Added benchmarking files. + +2002-07-12 Gary Houston + + * configure.in: check dynamic linking before modules. Add dynl.c + if dynamic linking is available, i.e., unless --with-modules=no + was given to configure. + +2002-07-09 Marius Vollmer + + * autogen.sh: Patch libltdl/ltdl.c to avoid a nasty bug in + libtool-1.4.2. + +2002-07-07 Marius Vollmer + + * autogen.sh: Do not copy INSTALL from workbook since it is not + uniform across branches. + * INSTALL: Re-added to repository. + + Crosscompiling and Cygwin fixes from Jan Nieuwenhuizen. Thanks! + + * autogen.sh: Only fix libltdl/configure.in if it exists. Current + libtool CVS does not need this fix. + + * configure.in (AC_LIBTOOL_WIN32_DLL): Add for shared Cygwin + build. + Add --with-cc-for-build option to re-enable cross building. + Add --with-guile-for-build option to re-enable cross building. + +2002-06-30 Gary Houston + + * autogen.sh: Changed the path to the scripts directory. + In libltdl, run aclocal before autoconf and automake: this + eliminated various warnings after upgrading to newer automake. + +2002-05-22 Marius Vollmer + + From John W. Eaton + + * configure.in (AC_CHECK_FUNCS): Check for copysign. + +2002-05-10 Marius Vollmer + + * libguile.h: Added inclusion of "extensions.h". + +2002-05-06 Marius Vollmer + + * configure.in: Include before when + checking vor IPv6. This is for NetBSD 1.5. Thanks to Greg + Troxel! + + From John W. Eaton. + + * configure.in (AC_CHECK_HEADERS): Check for floatingpoint.h + ieeefp.h, and nan.h. + (AC_CHECK_FUNCS): Check for finite, isinf, and isnan. + +2002-05-01 Thien-Thi Nguyen + + * autogen.sh: Add call to $mscripts/render-bugs + to create BUGS file. + + * BUGS: bye bye + +2002-04-27 Thien-Thi Nguyen + + * Makefile.am (EXTRA_DIST): Remove qthreads.m4. + +2002-04-26 Marius Vollmer + + * guile-aclocal.sh: Replaced with a simple invocation of "aclocal + -I guile-config". This works as of automake 1.5. + * qthreads.m4: Moved to guile-config/. + +2002-04-18 Marius Vollmer + + * autogen.sh: Call automake twice for guile-core so that two + copies of mdate-sh get a chance of being installed (one in + doc/ref/ and one in doc/tutorial/). + +2002-04-16 Marius Vollmer + + * Makefile.am (AUTOMAKE_OPTIONS): New, to request version 1.5. + (EXTRA_DIST): Don't distribute acconfig.h, which is gone. + (dist-hook): Removed. + (DISTCLEANFILES): Added check-guile.log. + (EXTRA_DIST): Don't distribute TODO. + + * configure.in: Bump required autoconf version to 2.53. Move uses + of AC_LIBOBJ after AC_PROG_CC. AC_LIBOBJ needs OBJEXT which is + set by AC_PROG_CC. + +2002-04-10 Rob Browning + + * configure.in: updates for new autoconf -- add definitions to + AC_DEFINE calls, and convert occurences of LIBOBJS to AC_LIBOBJ + calls. + + * acinclude.m4: add definitions to AC_DEFINE calls for new + autoconf. + + * acconfig.h: removed -- newer autoconf doesn't like it, and now + we don't need it. + + * .cvsignore: add autom4te.cache and pre-inst-guile. + +2002-04-03 Thien-Thi Nguyen + + * RELEASE: bye bye + +2002-03-31 Thien-Thi Nguyen + + * Makefile.am: Update copyright. + (dist-hook): Add, including related am/maintainers-dirs, + surrounded by "if MAINTAINER_MODE". + + * TODO: bye bye + + * autogen.sh: Add usage comment. + Add workbook specification. + Add dist-files symlinking. + + * ANON-CVS, HACKING, INSTALL, SNAPSHOTS: bye bye + +2002-03-06 Thien-Thi Nguyen + + * guile-tools.in: Handle "--source" option. + +2002-03-04 Thien-Thi Nguyen + + * configure.in (top_srcdir_absolute): New AC_SUBST var. + + * pre-inst-guile.in, check-guile.in (top_srcdir): + Use `top_srcdir_absolute' AC_SUBST var. + + * pre-inst-guile.in (top_srcdir): Fix ref bug: Force absolute. + +2002-02-27 Thien-Thi Nguyen + + * pre-inst-guile.in: Typofix; nfc. + +2002-02-27 Stefan Jahn + + * Makefile.am (SUBDIRS): Added the `am' directory. + +2002-02-26 Thien-Thi Nguyen + + * pre-inst-guile.in: New file. + + * pre-inst-guile, pre-inst-guile.am: bye bye + + * configure.in (top_builddir_absolute): New AC_SUBST var. + (AC_CONFIG_FILES): Add am/Makefile, pre-inst-guile. + (AC_CONFIG_COMMANDS): Also chmod +x pre-inst-guile. + + * check-guile.in (top_builddir): Use AC_SUBST var + `top_builddir_absolute'. + (guile): Look for pre-inst-guile in $top_builddir. + + * Makefile.am (EXTRA_DIST): Remove pre-inst-guile, + pre-inst-guile.am. + +2002-02-24 Rob Browning + + * GUILE-VERSION: move all but guile-readline library versioning + information here. guile-readline is still standalone. Bump + CURRENT interfaces to 15 to allow some headroom for 1.6 release at + Thi-Thien's request. + + * configure.in: AC_SUBST the centralized shared lib versioning + variables from ./GUILE-VERSION. + (LIBQTHREADS_INTERFACE_CURRENT): new AC_SUBST. + (LIBQTHREADS_INTERFACE_REVISION): new AC_SUBST. + (LIBQTHREADS_INTERFACE_AGE): new AC_SUBST. + (LIBQTHREADS_INTERFACE): new AC_SUBST. + (LIBGUILE_INTERFACE_CURRENT): new AC_SUBST. + (LIBGUILE_INTERFACE_REVISION): new AC_SUBST. + (LIBGUILE_INTERFACE_AGE): new AC_SUBST. + (LIBGUILE_INTERFACE): new AC_SUBST. + (LIBGUILE_SRFI_SRFI_4_INTERFACE_CURRENT): new AC_SUBST. + (LIBGUILE_SRFI_SRFI_4_INTERFACE_REVISION): new AC_SUBST. + (LIBGUILE_SRFI_SRFI_4_INTERFACE_AGE): new AC_SUBST. + (LIBGUILE_SRFI_SRFI_4_INTERFACE): new AC_SUBST. + (LIBGUILE_SRFI_SRFI_13_14_INTERFACE_CURRENT): new AC_SUBST. + (LIBGUILE_SRFI_SRFI_13_14_INTERFACE_REVISION): new AC_SUBST. + (LIBGUILE_SRFI_SRFI_13_14_INTERFACE_AGE): new AC_SUBST. + (LIBGUILE_SRFI_SRFI_13_14_INTERFACE): new AC_SUBST. + + * autogen.sh: make absolutely sure we can't have stale files from + old versions lying around the libltdl dir since libtoolize + doesn't. Also hack libltdl's configure.in to require autoconf 2.5 + so the main tree and libltdl can't get out of sync again. + + * RELEASE: update release building instructions. + +2002-02-21 Neil Jerram + + * acinclude.m4 (GUILE_HEADER_LIBC_WITH_UNISTD): Use [] rather than + "" for multiword string. Thanks to Christopher Cramer for + pointing this out. + +2002-02-11 Marius Vollmer + + * acconfig.h (GUILE_DEBUG_MALLOC): Refer to scm_gc_malloc, etc, + instead of to scm_must_malloc. + +2002-02-07 Marius Vollmer + + * Makefile.am (EXTRA_DIST): Added pre-inst-guile and + pre-inst-guile.am. + +2002-02-05 Thien-Thi Nguyen + + * pre-inst-guile.am, pre-inst-guile: New files. + + * check-guile.in (srcdir): Delete var. + (top_builddir, top_srcdir, guile_opts): New vars. + + Use "set -e". + No longer set LTDL_LIBRARY_PATH. + Use ${top_srcdir}/pre-inst-guile instead of libguile/guile. + + * configure.in (libguile/guile-snarf-docs-texi): Remove + from `AC_CONFIG_FILES' and `AC_CONFIG_COMMANDS'. + + * check-guile.in (top_builddir): Fix bug: Use cwd. + (TEST_SUITE_DIR): Fix bug: Use `top_srcdir'. + (GUILE_LOAD_PATH): No longer include $top_srcdir. + + * pre-inst-guile: Fix bug: Use ":" in `case' pattern to prevent + prefix aliasing. + +2002-01-31 Stefan Jahn + + * configure.in: Add -DLIBLTDL_DLL_IMPORT to INCLTDL when using + `libltdl.dll'. + +2002-01-28 Stefan Jahn + + * configure.in (guile_cv_have_uint32_t): Look also in + `stdint.h' for uint32_t. + +2002-01-13 Neil Jerram + + * Makefile.am (SUBDIRS): Added lang. + + * configure.in (AC_CONFIG_FILES): Added Makefiles in lang, + lang/elisp, lang/elisp/internals and lang/elisp/primitives. + +2002-01-11 Neil Jerram + + * acconfig.h (SCM_ENABLE_ELISP): New conditional. + + * configure.in (SCM_ENABLE_ELISP): Define this conditional (or + not) according to absence (or presence) of `--disable-elisp' + in the configure args. + +2001-12-31 Dirk Herrmann + + * TODO: Added two items. + +2001-12-26 Marius Vollmer + + * configure.in (HAVE_MAKEINFO): Check for the makeinfo program and + set this conditional accordingly. + +2001-12-01 Thien-Thi Nguyen + + * README: Fix virulent typo. + +2001-11-25 Marius Vollmer + + * acconfig.h (HAVE_INLINE): Added template. + * configure.in (HAVE_INLINE): Define it when the compiler supports + inline functions. + + * libguile.h: Include "libguile/inline.h". + +2001-11-22 Gary Houston + + * HACKING: Modified the Hacking It Yourself section. Removed the + version numbers from the tools. + HACKING, README, ANON-CVS: updates. + +2001-11-21 Gary Houston + + * HACKING: Removed reference to no longer practiced * in ChangeLog + convention. + +2001-11-19 Thien-Thi Nguyen + + * BUGS (11): Set "fixed: no-need". + + * TODO (write emacs/patch.el): New item, self-assigned. + +2001-11-19 Rob Browning + + * configure.in: switch to AC_LIBLTDL_INSTALLABLE so we'll use the + system libltdl when it's available. Aside from the normal reasons + to prefer installed shared libs, this means other apps that link + with libguile and also use libltdl will be more likely to work + right. + +2001-11-17 Dirk Herrmann + + * BUGS (4): Set "fixed: 2001-11-17 (1.7.x)". + +2001-11-15 Thien-Thi Nguyen + + * guile-tools.in: Handle command "list" specially: list scripts dir. + + (help): Make more informative. + +2001-11-12 Marius Vollmer + + * autogen.sh: Recurse into libltdl directory and invoke autoconf + there. + +2001-11-11 Thien-Thi Nguyen + + * HACKING: Restrict documentation change log + waiver to only apply to ChangeLog files. + +2001-11-12 Marius Vollmer + + * configure.in: Check for sizes of short, size_t, uintptr_t, and + ptrdiff_t. Checking for a size also checks automatically for the + existence of the type, so we don't check for the existence of + uintptr_t, ptrdiff_t and long long ourselves. + +2001-11-10 Thien-Thi Nguyen + + * BUGS (11): New. + +2001-11-07 Stefan Jahn + + * configure.in: Include `win32-socket.o' in the list of object + files if networking is enabled on Win32. + +2001-11-06 Thien-Thi Nguyen + + * TODO (sync srfi-modules.texi): New, done. + + * BUGS (9, 10): New. + +2001-11-04 Stefan Jahn + + * NEWS: Corrected remarks about SCM_API. + + * configure.in: Defining USE_DLL_IMPORT definition to indicate + usage of DLL import macros in `libguile/__scm.h'. + (LIBOBJS): Removed `fileblocks.o' from the list of object files. + Somehow Jim Blandy's patch from 1997 did not survive. + +2001-11-02 Marius Vollmer + + Support for native Win32. Thanks to Stefan Jahn! + + * check-guile.in: Replaced `ln -s' by `@LN_S@' to supports + build systems which do not have symbolic links. + * configure.in: Define AC_LIBTOOL_WIN32_DLL to build clean dlls + on Win32 platforms. + Checking for `ws2_32.dll', `winsock2.h', add `win32-uname.o' + and `win32-dirent.o' and define extra compiler flags necessary + to build clean dlls. + Check for `regcomp()' inside `-lregex'. + +2001-10-26 Thien-Thi Nguyen + + * BUGS (7, 8): New. + +2001-10-25 Thien-Thi Nguyen + + * BUGS: Expand on file format description. + + (1): Update "fixed" field. + (2, 3, 4, 5, 6): New. + +2001-10-14 Gary Houston + + * configure.in: include sys/types.h when testing uint32_t. + thanks to Bill Schottstaedt. + +2001-10-14 Marius Vollmer + + * configure.in: Do not use an absolute path for when + checking for return type of usleep. Thanks to Michael Carmack. + +2001-09-30 Thien-Thi Nguyen + + * BUGS: New file. + * Makefile.am (EXTRA_DIST): Add BUGS file. + +2001-09-25 Thien-Thi Nguyen + + * TODO: Add bugfix item to "Eventually". + +2001-09-20 Rob Browning + + * configure.in (AC_CONFIG_FILES): add libguile/version.h. + +2001-09-11 Rob Browning + + * RELEASE: Deleted Ian Grant and Julian Satchell's addresses from + the testing list since they're no longer functional. + +2001-09-04 Thien-Thi Nguyen + + * TODO: + Use outline mode instead of text. + Reword protocol explanation. + Add "make error-signalling functions more consistent" to Eventually. + Move some C-related GOOPS tasks to 1.8.0, take ownership. + +2001-08-31 Thien-Thi Nguyen + + * HACKING (Sample GDB Initialization File): New section. + + * TODO (1.8.0): Add "move .gdbinit" entry. + +2001-08-31 Dirk Herrmann + + * TODO: Added some points, and eliminated all done items. + + * acconfig.h, configure.in (SCM_DEBUG_DEPRECATED, + SCM_ENABLE_DEPRECATED): Renamed SCM_DEBUG_DEPRECATED to + SCM_ENABLE_DEPRECATED with the logic reversed. + +2001-08-31 Dirk Herrmann + + * libguile.h: Removed bogus comment, rearranged includes, removed + deprecated definitions. + + (LIBGUILEH, SCM_LIBGUILE_H): Renamed H to SCM__H. + +2001-08-30 Thien-Thi Nguyen + + * HACKING: Mention libtool ./configure-regeneration requirement. + +2001-08-27 Marius Vollmer + + * check-guile.in: Do not include ".libs" in LTDL_LIBRARY_PATH, + libltdl provides it itself. + +2001-08-24 Neil Jerram + + * configure.in (AC_CONFIG_FILES): Add per-manual doc directory + Makefiles. + +2001-08-15 Rob Browning + + * configure.in + (LIBGUILE_INTERFACE_CURRENT): use libtool versioning scheme. + (LIBGUILE_INTERFACE_REVISION): use libtool versioning scheme. + (LIBGUILE_INTERFACE_AGE): use libtool versioning scheme. + (LIBGUILE_INTERFACE): use libtool versioning scheme. + (LIBGUILEQTHREADS_INTERFACE_CURRENT): use libtool versioning scheme. + (LIBGUILEQTHREADS_INTERFACE_REVISION): use libtool versioning scheme. + (LIBGUILEQTHREADS_INTERFACE_AGE): use libtool versioning scheme. + (LIBGUILEQTHREADS_INTERFACE): use libtool versioning scheme. + + * GUILE-VERSION (GUILE_MINOR_VERSION): bump for new unstable. + (GUILE_MICRO_VERSION): reset for new unstable. + (LIBGUILE_INTERFACE_CURRENT): use libtool versioning scheme. + (LIBGUILE_INTERFACE_REVISION): use libtool versioning scheme. + (LIBGUILE_INTERFACE_AGE): use libtool versioning scheme. + (LIBGUILE_INTERFACE): use libtool versioning scheme. + (LIBGUILEQTHREADS_INTERFACE_CURRENT): use libtool versioning scheme. + (LIBGUILEQTHREADS_INTERFACE_REVISION): use libtool versioning scheme. + (LIBGUILEQTHREADS_INTERFACE_AGE): use libtool versioning scheme. + (LIBGUILEQTHREADS_INTERFACE): use libtool versioning scheme. + +2001-08-07 Marius Vollmer + + * Makefile.am (EXTRA_DIST, SUBDIRS): Move test-suite from + EXTRA_DIST to SUBDIRS. + + * configure.in: Added "test-suite/Makefile". + +2001-08-01 Marius Vollmer + + * configure.in: Added `--disable-linuxthreads' option and do not + define GUILE_PTHREAD_COMPAT nor link with -lpthread when it is + given. Thanks to Cris Cramer! + +2001-07-23 Marius Vollmer + + * Makefile.am (SUBDIRS): Build libguile before ice-9. + +2001-07-22 Marius Vollmer + + * configure.in: Check for "inttypes.h". + +2001-07-19 Rob Browning + + * configure.in: add checks for setitimer and getitimer. + Add --enable-error-on-warning. + +2001-07-18 Martin Grabmueller + + * INSTALL, Makefile.am, configure.in: Updated copyright notice. + +2001-07-15 Thien-Thi Nguyen + + * HACKING: Remove onerous authorship-info deletion clause. + +2001-07-13 Keisuke Nishida + + * autogen.sh: Call libtoolize with --force. + +2001-07-10 Thien-Thi Nguyen + + * INSTALL: Point to HACKING for tool versions. + +2001-07-08 Rob Browning + + * TODO: updated to include relevant itemized post-1.6-RELEASE + tasks that are distributable so we can check them off as they are + done, and delete 1.6.0 tasks. + + * RELEASE: add a note that the RELEASE instructions are out of + date now that we're using branches. + + * AUTHORS: add "many files throughout" for myself. + +2001-06-28 Thien-Thi Nguyen + + * README: Also mention guile-tools. + + * README: Mention libguile-srfi-*, oop/*, scripts/* and srfi/*. + +2001-06-27 Thien-Thi Nguyen + + * RELEASE: Move todo items to file TODO. + + * TODO: Initial revision + + * Makefile.am (EXTRA_DIST): Add TODO. + + * HACKING: Refer to TODO and SNAPSHOTS. + No longer refer to devel/tasks.text. + + * SNAPSHOTS: Fix reference bug; recommended tool + versions are in HACKING. + + * TODO: Add completion and ownership protocol to header comments. + + * RELEASE: Add TODO-processing to spiffing checklist. + + * HACKING: Update deprecation procedure to refer to TODO. + +2001-06-27 Michael Livshin + + * autogen.sh: don't run flex here. + + * HACKING: clarify that newer versions of flex should be just + fine. + +2001-06-26 Martin Grabmueller + + * HACKING, ANON-CVS: Removed mentioning of guile-doc CVS module. + + * configure.in: Added some header and function checks. + +2001-06-25 Neil Jerram + + * autogen.sh: Quoting fix for `--enable-maintainer-mode'. + +2001-06-25 Marius Vollmer + + * autogen.sh: Added message about what to do next. Tell them to + use `--enable-maintainer-mode'. + +2001-06-25 Michael Livshin + + * HACKING: mention flex. + + * autogen.sh: generate libguile/c-tokenize.c. + +2001-06-20 Martin Grabmueller + + * libguile.h: Removed inclusion of libguile/tag.h. + +2001-06-16 Marius Vollmer + + * libguile.h (scm_cond_t, scm_key_t, scm_mutex_t): Only define + these when using threads. + +2001-06-14 Marius Vollmer + + * libguile.h: Added deprecated section with the olde type names. + + * configure.in: Check for header . Check for uintptr_t + type. Use AC_CHECK_TYPES for this. Do not caus ptrdiff_t to be + `#defined'. + + * acconfig.h (ptrdiff_t): Removed. + +2001-06-05 Martin Grabmueller + + * configure.in: Generate examples/box-dynamic-module/Makefile. + +2001-06-03 Marius Vollmer + + * configure.in (AC_CONFIG_FILES, AC_CONFIG_COMMANDS): Add + guile-snarf. + +2001-06-02 Rob Browning + + * configure.in: changes for autoconf 2.50. + (AC_PREREQ): require at least autoconf 2.50. + (AC_INIT): no longer takes an arg. + (AC_CONFIG_SRCDIR): takes arg AC_INIT used to take. + (AC_STRUCT_ST_RDEV): changed -> AC_CHECK_MEMBERS. + (AC_STRUCT_ST_BLKSIZE): deprecated -> AC_CHECK_MEMBERS. + (AC_STRUCT_ST_BLOCKS): use it rather than our version. + (AC_CONFIG_FILES): now generated files go here, not in AC_OUTPUT. + (AC_CONFIG_COMMANDS): now actions go here, not in AC_OUTPUT. + (AC_OUTPUT): no longer takes args. + + * acinclude.m4: AC_LANG not a variable now -- use __cplusplus + unconditionally . + +2001-06-02 Marius Vollmer + + * configure.in: Check for mkstemp via AC_REPLACE_FUNCS. Thanks to + I. N. Golubev! + +2001-06-01 Martin Grabmueller + + * configure.in: Generate examples/box-dynamic/Makefile. + +2001-05-31 Martin Grabmueller + + * Makefile.am (EXTRA_DIST): New subdirectory `examples'. + + * configure.in: Added all Makefiles in the `examples' directory to + AC_OUTPUT. + +2001-05-31 Michael Livshin + + * configure.in: generate guile-snarf-docs & guile-snarf-docs-texi. + don't generate guile-snarf.awk. + + * Makefile.am (EXTRA_DIST): add test-suite. + +2001-05-28 Michael Livshin + + * check-guile.in: fix to be runnable when srcdir!=builddir. + +2001-05-26 Michael Livshin + + revert the controversial part of the 2001-05-23 changes + +2001-05-23 Michael Livshin + + * configure.in: configury for SCM_[U]BITS_T, some more sizeofs. + also, make sure that the integral type choosen to represent an SCM + has exactly the same size as a void pointer. + + * acconfig.h: add undefs for SCM_BITS_T, SCM_UBITS_T, + SCM_SIZEOF_BITS_T, ptrdiff_t. + +2001-05-16 Rob Browning + + * configure.in: add AC_SUBST for GUILE_MICRO_VERSION. + + * GUILE-VERSION + (GUILE_VERSION): now MAJOR.MINOR.MICRO + (GUILE_MICRO_VERSION): new variable, records final revision. + i.e. the 5 in 1.6.5. MINOR_VERSION is now just the middle number, + i.e. the 6. + +2001-05-16 Dirk Herrmann + + * acconfig.h, configure.in: Renamed + GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT. + +2001-05-15 Marius Vollmer + + * acinclude.m4: Removed copy of "libtool.m4". + +2001-05-14 Dirk Herrmann + + * configure.in (SCM_DEBUG_DEPRECATED): Always defined. + +2001-05-13 Thien-Thi Nguyen + + * AUTHORS (Martin Grabmueller, Thien-Thi Nguyen): Update. + + * HACKING: Update copyright. + Add blurb pointing to devel/tasks.text. + +2001-05-11 Thien-Thi Nguyen + + * check-guile.in: For SRFI testing, set and export env + var `LTDL_LIBRARY_PATH'. + +2001-05-07 Neil Jerram + + * AUTHORS: Add docs-related authorship details. + +2001-05-05 Marius Vollmer + + * configure.in (--enable-deprecated): Recognize "shutup" option + argument and turn it into the default warning level "no". + +2001-05-05 Gary Houston + + * acconfig.h: add HAVE_IPV6. + * configure.in: check whether we can compile with IPv6 support. + +2001-05-04 Thien-Thi Nguyen + + * guile-tools.in: New file. + + * configure.in (AC_OUTPUT): Add guile-tools, and make + executable. + + * Makefile.am (bin_SCRIPTS): New var. + +2001-05-04 Gary Houston + + * configure.in: check whether uint32_t is defined when netdb.h + is included. + acconfig.h: added HAVE_UINT32_T. + +2001-05-02 Marius Vollmer + + * configure.in: Added handling of `--enable-deprecated'. + + * acconfig.h (SCM_DEBUG_DEPRECATED, + GUILE_WARN_DEPRECATED_DEFAULT): Added. + +2001-04-29 Thien-Thi Nguyen + + * Makefile.am (SUBDIRS): Add "scripts". + + * configure.in (AC_OUTPUT): Add scripts/Makefile. + +2001-04-29 Gary Houston + + * libguile.h: include rw.h. + +2001-04-27 Rob Browning + + * GUILE-VERSION (GUILE_MINOR_VERSION): change to 5.0, switching to + the new odd/even ustable/stable version numbering scheme. + (LIBGUILEQTHREADS_MAJOR_VERSION): change to 10 to match Debian and + libguile. In the future, libguile and libguileqthreads may not + stay in sync. This still doesn't appear to affect + libguileqthreads, but we'll fix that next. + +2001-04-25 Martin Grabmueller + + * configure.in: Don't treat srfi directory specially, just create + the Makefile there (thanks to Neil Jerram for the patch). + +2001-04-23 Martin Grabmueller + + * Makefile.am (SUBDIRS): Added `srfi'. + + * configure.in: Added subdirectory `srfi' to build process. + + * libguile.h: Added inclusion of `values.h'. + +2001-04-22 Gary Houston + + * configure.in: check for inet_pton and inet_ntop. + +2001-04-20 Gary Houston + + * acconfig.h: include HAVE_SIN6_SCOPE_ID. + * configure.in: check for sin6_scope_id in sockaddr_in6. + +2001-04-19 Mikael Djurfeldt + + * RELEASE: Added deprecated macro SCM_ARRAY_CONTIGUOUS + +2001-04-17 Gary Houston + + * configure.in: run the autoconf BIGENDIAN check. + +2001-04-12 Niibe Yutaka + + * GUILE-VERSION (LIBGUILEQTHREADS_MAJOR_VERSION, + LIBGUILEQTHREADS_MINOR_VERSION, LIBGUILEQTHREADS_REVISION_VERSION, + LIBGUILEQTHREADS_VERSION): Added libguileqthreads version info. + + * configure.in: Likewise. + +2001-04-11 Keisuke Nishida + + * configure.in (AC_CHECK_FUNCS): Don't check bzero. + (GUILE_FUNC_DECLARED): Removed checking of bzero. + Thanks to NIIBE Yutaka. + +2001-04-10 Mikael Djurfeldt + + * Undeprecated scm_init_oop_goopscore_module. + +2001-03-25 Thien-Thi Nguyen + + * check-guile.in: Fix sh standard conformance bug: Replace + "test -e" with "test -f". Thanks to Alexander Klimov. + +2001-03-19 Gary Houston + + * check-guile.in: rename $parent to $srcdir. if it's equal to "." + set it to `pwd`. + + * check-guile.in: 16 documentation tests were failing if "make + check" was run before Guile had been installed with the current + --prefix. made various changes to the script so that it runs + without a cd to the test-suite directory. For the -i option, + don't point GUILE_LOAD_PATH to the current directory, but let it + use it's own scheme library. + +2001-03-18 Gary Houston + + * check-guile.in: use @srcdir@ instead of @test_suite_dir@. use + the current directory (build dir) not srcdir to find guile + executable. otherwise "make check" doesn't work with a separate + build directory. create the test log in + $build_dir/check-guile.log instead of in srcdir/test-suite + directory. + * configure.in: don't define or substitute test_suite_dir. + +2001-03-17 Gary Houston + + * configure.in: don't append threads.doc to EXTRA_DOT_DOC_FILES, + since EXTRA_DOT_DOC_FILES is redefined later. define + EXTRA_DOT_X_FILES and hand it to AC_SUBST. + +2001-03-09 Martin Grabmueller + + * configure.in: Added header checks for crypt.h, sys/resource.h + and sys/file.h, function checks for chroot, flock, getlogin, + cuserid, getpriority, setpriority, getpass, sethostname, + gethostname, and for crypt() in libcrypt. + +2001-03-09 Neil Jerram + + * configure.in (htmldoc): Merge handling of `--enable-htmldoc' + option from guile-doc/configure.in. + +2001-03-06 Dirk Herrmann + + * libguile.h: Removed #include "libguile/dump.h". + +2001-02-02 Keisuke Nishida + + * libguile.h: Added #include "libguile/dump.h". + +2001-01-29 Mikael Djurfeldt + + * libguile.h: Added #include "libguile/rdelim.h". + +2001-01-26 Dirk Herrmann + + The following patch was sent by Thien-Thi Nguyen. + + * check-guile.in: New file. + + * Makefile.am: Add TESTS rule. + + * configure.in: Add support for "make check". + +2000-11-21 Dirk Herrmann + + * acconfig.h: Removed bogus #ifndef. Thanks to Lars J. Aas. + +2000-10-25 Mikael Djurfeldt + + * GUILE-VERSION (LIBGUILE_MAJOR_VERSION): Incremented major + version number to 10 due to the merge of GOOPS. + + * oop: New directory. + +2000-09-20 Keisuke Nishida + + * libguile.h: #include "libguile/properties.h". + +2000-09-17 Gary Houston + + * configure.in, acconfig.h: remove the GCSE test: it doesn't seem + to be reliable on all platforms. + +2000-08-18 Gary Houston + + * acconfig.h: added BROKEN_GCSE. + * configure.in: check for a gcc GCSE optimisation bug. + +2000-07-31 Gary Houston + + * acconfig.h: added HAVE_H_ERRNO + * configure.in: removed some dnl'd & obsolete cygwin stuff. + added a test for h_errno. + +2000-06-21 Mikael Djurfeldt + + * Guile 1.4 released. + +2000-06-20 Mikael Djurfeldt + + * GUILE-VERSION: Changed to work also when included by a Makefile + (e.g. debian/rules). (Thanks to Karl M. Hegbloom.) + (LIBGUILE_MAJOR_VERSION): Bumped to 9. + (GUILE_MINOR_VERSION): Bumped to 4. + +2000-06-12 Mikael Djurfeldt + + * libguile.h: Removed #include "libguile/kw.h". + + * Makefile.am (ACLOCAL): Define as ./guile-aclocal.sh. + (The rule will cd to $(top_srcdir).) + + * configure.in (EXTRA_DOT_DOC_FILES): Create from LIBOBJS and + substitute it into libguile/Makefile. + + * HACKING: Updated recommended libtool version to be 1.3.5. + + * RELEASE: Say that we should update HACKING to reflect the + versions of the tools we're using rather than README. + +2000-06-02 Mikael Djurfeldt + + * NOTES: Removed. + + * TODO: Moved to devel/. + +2000-06-01 Craig Brozefsky + + * GUILE-VERSION: added defnitions for LIBGUILE_MAJOR_VERSION, + LIBGUILE_MINOR_VERSION, LIBGUILE_REVISION_VERSION so that we now + define libguile.so version in a well-lit place. + + * configure.in: added AC_SUBST lines for the new LIBGUILE version + variables. + +2000-06-01 Michael Livshin + + * autogen.sh: call ./guile-aclocal.sh instead of aclocal. + + * guile-aclocal.sh: new file, works around aclocal problems. + +2000-05-30 Dirk Herrmann + + * acconfig.h (USE_FSU_PTHREADS, USE_MIT_PTHREADS, + USE_PCTHREADS_PTHREADS): Removed. + +2000-05-01 Gary Houston + + * Makefile.am: add include_HEADERS. + libguile.h: moved from libguile directory. maybe libguile.h should + be installed in $prefix/include/libguile/libguile.h instead? + +2000-04-21 Mikael Djurfeldt + + * qthreads.m4: Removed THREADS_CPPFLAGS. + + * acinclude.m4: Removed qthreads macros. They are provided in + qthreads.m4, so these were redundant. + + * acconfig.h (GUILE_DEBUG_MALLOC): New. + + * configure.in: New --enable-debug-malloc configuration option. + +2000-03-29 Mikael Djurfeldt + + * acconfig.h (GUILE_PTHREAD_COMPAT): New config variable. + + * configure.in: Enable workaround for COOP-linuxthreads + compatibility on Linux systems. + +2000-03-19 Mikael Djurfeldt + + * devel: New directory. Intended to carry documentation related + to Guile development (as opposed to the doc directory which + contains documentation related to the use of the current Guile). + This directory (devel) is not included in the Guile distribution, + but is accessible via anonymous CVS. + +2000-03-13 Mikael Djurfeldt + + * configure.in: Don't add iselect.o to LIBOBJS. + +2000-03-13 Mikael Djurfeldt + + * configure.in: Added end-tag for local variables. (Thanks to + Thien-Thi Nguyen.) + +2000-03-12 Gary Houston + + * README (Guile Documentation, About This Distribution): updated. + +2000-03-12 Mikael Djurfeldt + + * configure.in (ac_cv_struct_timespec): Added test for struct + timespec. + + * acconfig.h (HAVE_STRUCT_TIMESPEC): Added. + +2000-01-25 Marius Vollmer + + * autogen.sh: Call libtoolize. Pass --add-missing option to + automake. Do not decent into libltdl directory. The libltdl + directory is now populated by libtoolize and does not need any + further autogeneration. + +2000-01-23 Gary Houston + + * configure.in: check for fchown. + +Tue Jan 18 12:55:15 2000 Mikael Djurfeldt + + * acinclude.m4 (AC_LIBLTDL_CONVENIENCE): Add $(top_srcdir)/libltdl + instead of $(top_builddir)/libltdl to includepath. + +2000-01-18 Mikael Djurfeldt + + * emacs: New subdirectory for elisp tools. + +2000-01-15 Marius Vollmer + + * README, HACKING: Moved "Hacking it yourself" section from README + to HACKING. Updated recommended libtool version to be 1.3.4. + +2000-01-14 Gary Houston + + * configure.in: needs to have --disable-networking, not + --disable-net. + +2000-01-12 Mikael Djurfeldt + + * libltdl/acconfig.h: New file: Needed by autogen.sh. + +Tue Jan 11 13:42:35 2000 Greg J. Badros + + * autogen.sh: Added messages as we run autogen in subdirectories. + + * configure.in: Output libugile/guile-func-name-check script, and + chmod +x it. + +2000-01-11 Marius Vollmer + + * libltdl/autogen.sh: New file. + * autogen.sh: Invoke libltdl/autogen.sh. + +2000-01-09 Marius Vollmer + + Finally applied the libltdl patch from Thomas Tanner, with slight + modifications. All code copied from the libtool package is from + libtool-1.3.4. + + * configure.in: Make "--with-modules=yes" the default. Do not + clear INCLTDL, LIBLTDL prior to processing "--with-modules". + + 1999-07-25 Thomas Tanner + + * Makefile.am: add libltdl to SUBDIRS, automake automatically + includes ltconfig, ltmain.sh and acconfig.h in EXTRA_DIST + * acinclude.m4: remove GUILE_DLSYM_USCORE, add libtool.m4 + (no need to install libtool any more) + * configure.in: replace --enable-dynamic-linking with + --with-modules, required modules can be specified using + --with-modules="/path/to/mod.la" and will be linked + statically on platforms that don't support dynamic loading, + configure libltdl, configure libtool for dlopening + * libltdl: added using libtoolize -c --ltdl + +2000-01-09 Gary Houston + + * configure.in: check whether localtime caches TZ. copied from + Emacs 20.5. + * acconfig.h: add LOCALTIME_CACHE. + +Tue Dec 14 09:12:22 1999 Greg J. Badros + + * configure.in: Make it be guile-snarf.awk, since we'll be + switching names for guile-doc-snarf. (I wouldn't have changed + this, but I was getting ready to commit this way when the below + change was committed). + +1999-12-14 Mikael Djurfeldt + + * configure.in: Create guile-doc-snarf.awk. + +1999-12-12 Greg J. Badros + + * configure.in: Create guile-doc-snarf, chmod +x that script after + AC_OUTPUTted. + +1999-12-10 Greg J. Badros + + * NEWS: More complete description for --enable-debug-freelist. + +1999-12-09 Gary Houston + + * configure.in (CFLAGS): don't add -Wpointer-arith, since it + causes numerous spurious warnings with recent gcc and/or glibc + versions. + +1999-11-19 Gary Houston + + * acconfig.h: add HAVE_ARRAYS. + + * configure.in: add --disable-arrays option, probably temporary. + +1999-11-17 Gary Houston + + * configure.in: check for hstrerror. + +1999-10-05 Jim Blandy + + * autogen.sh: Don't call autoreconf at all; it's not reliable. + Instead, call the various tools explicitly. Invoke + guile-readline's autogen.sh script. + + Straighten up the situation regarding guile.m4 and qthreads.m4. + + We can't have .m4 files which are installed where aclocal can + see them, but also used by guile's own configure.in, because + aclocal will read both copies, complain about duplicate macro + definitions, and refuse to generate aclocal.m4 at all. This + happens if you invoke it as `aclocal -I .', as autoreconf does. + This is probably a flaw in the autotools, but Guile doesn't need + that flaw fixed immediately. + + guile.m4 is intended for use by people linking against guile, so + it needs to be installed. But Guile itself doesn't use it. So + move guile.m4 into guile-config. That makes sense, since + guile.m4's GUILE_FLAGS macro is just an easy way to call + guile-config. + + qthreads.m4 is indented to help configure a qthreads tree. It's + only useful to a package which actually includes a qthreads tree, + and it's intimately related to that tree, so it's not useful to + install this. So don't install it. + + * guile.m4: Moved to guile-config. + * Makefile.am (aclocaldir, aclocal_DATA): Delete. + (EXTRA_DIST): Move qthreads.m4 here. + + Don't store generated files in the repository any more. Instead, + require people to run autogen.sh on trees from snapshots and CVS. + * Makefile.in, aclocal.m4, configure: Deleted. + * autogen.sh: New file. + * ANON-CVS, SNAPSHOTS: Updated instructions. + +1999-10-02 Jim Blandy + + * acconfig.h (HAVE_POSIX, HAVE_NETWORKING): Add comments. + +1999-09-27 Greg J. Badros + + * configure.in: Added --enable-debug-freelist option. + + * acconfig.h: Added GUILE_DEBUG_FREELIST. + +1999-09-23 Gary Houston + + * acconfig.h: add HAVE_POSIX, HAVE_NETWORKING. remove FD_SETTER, + FILE_CNT_FIELD, FILE_CNT_GPTR, FILE_CNT_READPTR. + + * configure.in: new options --disable-posix, --disable-net + and --disable-regex + export HAVE_POSIX and HAVE_NETWORKING definitions. + don't add regex-posix.o to LIBOBJS if regex disabled. + + LIBOBJS: add filesys.c, posix.c, net_db.c, socket.c, + conditionally. + +1999-09-25 Jim Blandy + + * Guile 1.3.4 released. + +1999-09-22 Jim Blandy + + * configure.in: Call AM_PROG_CC_STDC before AM_PROG_LIBTOOL, so + libtool knows how to get ANSI C behavior from the compiler. + * configure: Regenerated. + +1999-09-20 Gary Houston + + * configure.in: check availability of siginterrupt. + +1999-09-18 Gary Houston + + * configure.in: use AC_SYS_RESTARTABLE_SYSCALLS instead of + testing for SA_RESTART. + +1999-09-12 Mikael Djurfeldt + + * configure.in: Removed ice-9/version.scm from AC_OUTPUT. + +1999-09-11 Jim Blandy + + * configure.in (GUILE_STAMP): Don't set this variable, or + substitute it into anything. Full explanation in ice-9/ChangeLog. + * configure, Makefile.in: Regenerated. + +1999-09-06 James Blandy + + Propagate the changes of 2 Sept the rest of the way through. + * configure: Regenerated. + * Makefile.in: Regenerated. Not sure why this diff is so big. + +1999-09-02 Jim Blandy + + * acinclude.m4 (GUILE_HEADER_LIBC_WITH_UNISTD): Fix typo in + variable name. (Thanks to Bill Schottstaedt.) + * aclocal.m4: Regenerated. + +1999-09-02 Mikael Djurfeldt + + * configure.in: Test for presence of function on_exit. + +1999-09-01 James Blandy + + * configure.in: Use AC_REPLACE_FUNCS to grab libguile/memmove.c if + the system doesn't have memmove. Don't test for memmove and bcopy + with AC_CHECK_FUNCS. + * configure: Regenerated. + +1999-08-30 Mikael Djurfeldt + + * configure.in: Test for atexit. + +1999-08-29 Mikael Djurfeldt + + * acinclude.m4: Updated. (Thanks to Karl Eichwalder.) + + * configure.in: Test for presence of S_ISLNK in sys/stat.h. + (Thanks to Bernard Urban.) + Test for memmove and bcopy. (Thanks to + suzukis@file.phys.tohoku.ac.jp.) + + * acconfig.h: Added HAVE_S_ISLNK. + +1999-08-20 James Blandy + + * Guile 1.3.2 released. + + * Makefile.in: Regenerated. + +1999-07-24 Mikael Djurfeldt + + * README, config.guess, config.sub, liconfig, ltmain.sh: Switched + to libtool-1.3.3. + +1999-07-22 Marius Vollmer + + Added guile-readline subdirectory with the removed readline + support. + * guile-readline: New directory, see ChangeLog there. + * configure.in: Cause configure to descend into guile-readline + dir. + * Makefile.am: Likewise for make. + * NEWS: Explain how to activate the readline support. + * configure, Makefile.in: Regenerated. + +1999-07-19 Jim Blandy + + Fixes for EMX from Mikael StÃ¥ldal. + + * configure.in: Check for . + * configure: Regenerated. + +1999-07-18 Jim Blandy + + * qthreads.m4 (QTHREADS_CONFIGURE): 'alpha' in a configuration + name can have suffixes, like alphaev56-unknown-linux-gnu. + * aclocal.m4, configure: Rebuilt. + (Thanks to Sebastien Villemot.) + +1999-07-04 Gary Houston + + * configure.in: don't check for ways to violate stdio abstraction. + +1999-05-02 Jim Blandy + + * configure.in (AC_CHECK_FUNCS): Fill in list of functions that + libguile/net_db.h wants to use. (Add setprotoent, setservent.) + +1999-04-17 Jim Blandy + + Remove all automatic readline support, to avoid copyright + confusion. + * INSTALL: Update text. + * NEWS: Explain the situation. + * configure.in: Remove configury for readline and its supporting + libraries. + * configure: Regenerated. + + * README: Change URL's for automake and autoconf. + + * Makefile.in, configure: Regenerated with autoconf 2.13, automake + 1.4, libtool 1.2f (1.385 1999/03/15 17:24:54). I've upgraded to + all the right tools, according to README, but I'm still getting + different results than Mikael is. Hmm. + +1999-03-22 Mikael Djurfeldt + + * New libtool: 1.2f + * ltmain.sh, ltconfig, config.guess, config.sub: New versions. + * README: Mention new version number of libtool. + +1999-03-04 Mikael Djurfeldt + + New automake: 1.4 + * config.guess, config.sub, install-sh, mdate-sh, missing, + mkinstalldirs: New versions. + * Makefile.in, aclocal.m4, configure: Regenerated. + * README: Mention new version numbers on autoconf and automake. + +1999-02-12 Jim Blandy + + * configure.in: Add --with-readline flag. + * configure: Rebuilt. + +1999-02-09 Maciej Stachowiak + + * NEWS: Added entry for optargs module. + +1999-02-06 Jim Blandy + + * configure: Regenerated using autoconf 2.12. + +1999-01-26 Mikael Djurfeldt + + * configure.in: Removed test AC_C_BIGENDIAN. (This test was + considered to encourage bad coding style.) + +1999-01-21 Mikael Djurfeldt + + * configure.in: Added test AC_C_BIGENDIAN. + +1999-01-11 Jim Blandy + + * configure.in: Remove quotes around ac_cv_lib_readline_main and + ac_cv_var_rl_getc_function. They should both always be set to + non-null values; this way, we get error messages. + * configure: Regenerated. + +1999-01-10 Jim Blandy + + * configure.in: Cite the variable ac_cv_lib_readline_main, not + ac_cv_lib_readline_readline; the latter isn't set any more, since + we look for 'main' in libreadline now. Add quotes around + reference to the variable references, too, so this will work even + when a variable's value is the empty string. + * configure: Regenerated. + +1999-01-07 Mikael Djurfeldt + + * acconfig.h: Added HAVE_LONG_LONGS. + + * configure.in: Added AC_CHECK_SIZEOF(long), AC_CHECK_SIZEOF(int); + Added check for long longs. + +1998-12-14 Jim Blandy + + * configure.in: Check for tgoto in ncurses, then termcap. + S.u.S.E. Linux doesn't have a termcap. (Thanks to Karl + Eichwalder.) + * configure: Regenerated. + +1998-10-24 Jim Blandy + + * configure.in: Call AM_PROG_CC_STDC, to see what flags we should + pass the compiler to make it support ANSI. (Thanks to Bernard + Urban.) + * aclocal.m4, configure: Regenerated. + +1998-10-20 Jim Blandy + + * Guile 1.3 released. + +1998-10-19 Jim Blandy + + * GUILE-VERSION: Bump to 1.3. + + * Makefile.am (EXTRA_DIST): Don't omit ANON-CVS and SNAPSHOTS. + * Makefile.in: Regenerated. + +1998-10-16 Jim Blandy + + * qthreads.m4 (QTHREADS_CONFIGURE): On NetBSD, pass through a flag + to the Makefile which explicitly tells it to pass assembly files + through the preprocessor. (Thanks to Perry Metzger.) + * aclocal.m4, configure, Makefile.in: Regenerated. + +1998-10-14 Jim Blandy + + * configure.in: Define SCM_SINGLES whenever a float can fit in a + long, not only when a float is the same size as a long. This gets + us SCM_SINGLES defined on alphas. (Thanks to Clark McGrew.) + * configure: Regenerated. + + * configure.in: Construct libguile/versiondat.h here; see + log entry in libguile/ChangeLog for details. + * configure: Regenerated. + + * configure.in: Allow tabs and whitespace between `void' and + `usleep'. (Thanks to Harvey J. Stein.) + * configure: Regenerated. + + Don't redefine sleep/usleep. + * configure.in: Remove tests for usleep's argument type; we only + need that if we're going to replace it. + + * acconfig.h (USLEEP_ARG_TYPE): Delete. All the other SLEEP + garbage is needed just to use usleep and sleep without compiler + warnings. + * configure: Regenerated. + +1998-10-12 Jim Blandy + + * configure: Regenerated. + + * configure.in (GUILE_FUNC_DECLARED): Name the cache variables + starting with guile_cv_; ac_cv_ is autoconf's namespace. + + The type of the argument to usleep varies from system to system, + as does the return type. We really shouldn't be redefining usleep + at all, but I don't have time to clean that up before the 1.3 + release. It's on the schedule for afterwards. + * configure.in: Cache results from usleep return value test. + Test for the type of the usleep argument, and cache that too. + * acconfig.h (USLEEP_ARG_TYPE): New macro. + +1998-10-11 Jim Blandy + + * acconfig.h (HAVE_RL_GETC_FUNCTION): Fix this entry. + +1998-10-10 Jim Blandy + + * GUILE-VERSION: bump to 1.2.91, since we're doing snapshots again. + + * Guile 1.2.90 released --- beta. + * GUILE-VERSION: Set to 1.2.90. This would appear to be a + regression from 1.3a, but everyone knows that the next release is + 1.3, I want to switch to a more coherent version numbering system, + and now is the time. + +1998-10-09 Jim Blandy + + * configure.in: Call AC_C_INLINE, so we can use inline happily in + libguile. + * configure: Regenerated. + +1998-10-07 Jim Blandy + + * configure.in: Don't forget to #define HAVE_RL_GETC_FUNCTION if + we do find the rl_getc_function variable in the readline library; + AC_CHECK_FUNCS used to do this for us, but we're not using it any + more. + * acconfig.h: Add an entry for HAVE_RL_GETC_FUNCTION. + + * configure.in: Properly test for the presence of rl_getc_function; + it's a variable, not a function. + * configure: Regenerated. + + * doc: New subdirectory. + * Makefile.am (SUBDIRS): List it. + * configure.in (AC_OUTPUT): Build its Makefile. + * configure, Makefile.in: Regenerated. + + * guile.m4 (GUILE_FLAGS): New macro. + + * guile.m4 (AM_INIT_GUILE_MODULE): Deleted; it doesn't do anything + terribly helpful any more, nobody's using it, and this is not + really the way I want to handle modules anyway. + +1998-10-03 Jim Blandy + + * configure.in (FD_SETTER, FILE_CNT_GPTR): New cases for SCO's + stdio implementation. (Thanks to David Tillman.) + * configure: Rebuilt. + + * guile-config: Renamed from `build'. + * Makefile.am (SUBDIRS): Mention `guile-config', not `build'. + * configure.in: Create `guile-config/Makefile.in', not + `build/Makefile.in'. Doc fix, too. + + * qthreads.m4: Doc fix. + * Makefile.in, aclocal.m4, configure: Regeneranegerederadea. + +1998-10-03 + + * configure.in: Check for a missing `sleep' declaration. + * acconfig.h (MISSING_SLEEP_DECL): Provide some text for this. + * configure: Regenerated. + + * configure.in: Don't use the canonical host name to decide + whether `bzero' and `usleep' have declarations --- that's going + back to the bad old days before autoconf. Remove the call to + AC_CANONICAL_HOST and the subsequent case statement. + (GUILE_FUNC_DECLARED): New m4 macro. Use it to check for + declarations for `bzero', `usleep', and (new!) `strptime'. + * acconfig.h: (DECLARE_BZERO, DECLARE_USLEEP): Removed. + (MISSING_BZERO_DECL, MISSING_USLEEP_DECL, MISSING_STRPTIME_DECL): + Added. I think this naming convention is more consistent with the + rest of autoconf; names generally describes the system, not what + the package should do to accomodate the system. + * configure: Regenerated. + +1998-09-05 Jim Blandy + + * configure.in: Remove --disable-debug option. The debugging + support is pretty stable now, and it's confusing people. + * configure: Regenerated. + + * HACKING: Remove -Wstrict-prototypes from the list of requested + flags (to match 1998-07-30 change). + +1998-07-30 Jim Blandy + + * configure.in: Don't use -Wstrict-prototypes after all. + * configure: Regenerated. + +1998-07-29 Jim Blandy + + * configure.in: Request more warnings. + * configure: Regenerated. + * HACKING: Ask people not to make changes that introduce those + warnings. Now I have to go through the code and actually bring it + up to standards... :( + + * Makefile.in, aclocal.m4, configure: Regenerated using the last + public version of automake, not the hacked Cygnus version. + * config.guess, config.sub, ltconfig, ltmain.sh: New versions from + libtool. + + * configure.in, qthreads.m4: Display a message about how the + threads configuration went. + * aclocal.m4, configure: Regenerated. + +1998-07-28 Jim Blandy + + Remove the TOTORO kludge. We're not doing snapshots any more, so + totoro is completely uninvolved. (Poor Totoro!) + * configure.in: Remove code to check the hostname and #define + TOTORO. + * acconfig.h: Remove comments for TOTORO symbol. + * configure, Makefile.in: Regenerated. + + * qthreads.m4 (QTHREADS_CONFIGURE): We *can* use AC_REQUIRE here + to get AC_PROG_LN_S. + * aclocal.m4, configure: Regenerated. + +1998-07-26 Jim Blandy + + Clean up thread configuration. + * qthreads.m4: New file, which knows how to configure the qthreads + library. + * configure.in: Replace all thread package selection code. Do the + --with-threads argument processing here. Enable the appropriate + thread interface files in libguile. Remove all qthreads + configuration code; call QTHREADS_CONFIGURE instead. Set + GUILE_LIBS using the info provided by QTHREADS_CONFIGURE. + * threads.m4: Removed; not used any more. + * Makefile.am (aclocal_DATA): Mention qthreads.m4, not threads.m4. + * Makefile.in, aclocal.m4, configure: Rgnrtd. (Sv th vwls!) + Note that these were regenerated with the tools available from + Cygnus's source tree, which have patches not available to the + general public. I'm not sure this was a good idea; feel free to + revert them to the latest released versions of the tools. + + Upgrade to the version of libtool available at Cygnus. See note + above. + * config.guess, config.sub, ltconfig, ltmain.sh: Upgraded. + +1998-07-12 Mikael Djurfeldt + + * configure.in: Changed variable HOSTNAME --> PROG_HOSTNAME in + totoro kludge. + +Sat Jul 11 21:54:29 1998 Mikael Djurfeldt + + * acconfig.h, configure.in: Define TOTORO if configuring on + totoro.red-bean.com. + + * configure.in: Check for strdup. + +1998-05-19 Mikael Djurfeldt + + * configure.in: Check for rl_cleanup_after_signal. + +1998-05-11 Mikael Djurfeldt + + * configure.in: Added test for rl_getc_function. Warn if + libreadline is found but not this function. + +1998-05-06 Mikael Djurfeldt + + * configure.in: Replaced some AC_CHECK_FUNC --> AC_CHECK_FUNCS so + that suitable HAVE_ symbols get defined. + +1998-04-25 Mikael Djurfeldt + + * configure.in: Define USLEEP_RETURNS_VOID on some systems. + (Thanks to Julian Satchell.) + +1998-04-20 Mikael Djurfeldt + + * configure.in: Check for usleep; Define DECLARE_BZERO and + DECLARE_USLEEP on Solaris 2.5 since it supplies those functions + without declaring them. + + * acconfig.h: Added DECLARE_BZERO, DECLARE_USLEEP + +1998-04-19 Mikael Djurfeldt + + * configure.in: Define HAVE_DLOPEN also when HAVE_LIBDL is + defined. + +1998-04-18 Mikael Djurfeldt + + * configure.in (GUILE_LIBS): New variable. Contains libraries + which libguile needs to be linked with. Substituted into + libpath.h. + + * threads.m4 (threads_package): Don't add $LDFLAGS and $LIBS to + $cy_cv_threads_libs. + +1998-04-11 Mikael Djurfeldt + + New libtool: 1.2 + * ltconfig, ltmain.sh, config.sub, config.guess: Updated. + New automake: 1.3 + * Makefile.in, aclocal.m4, configure: Regenerated. + * README: Mention new version numbers on libtool and automake. + +1997-12-11 Tim Pierce + + * HACKING: Note that SSH is mandatory for CVS access. + +Sun Dec 7 06:11:24 1997 Gary Houston + + * README: using Automake 1.2d + * configure.in: AC_CHECK_FUNCS: add "system". + +1997-12-01 Tim Pierce + + * acconfig.h: Add USCORE. + +1997-11-27 Mikael Djurfeldt + + * configure.in: Added code to enable GUILE_ISELECT on systems + which have the necessary functions (gettimeofday, select). + + * acconfig.h: Added GUILE_ISELECT. + +1997-11-24 Tim Pierce + + * acinclude.m4: Assume dlsym does not add underscore if + cross-compiling. + * aclocal.m4, configure: Regenderated. + +1997-11-21 Tim Pierce + + * acinclude.m4 (GUILE_DLSYM_USCORE): New macro, thanks Dan Hagerty + . + * configure.in: Use it. + * configure: Regenerated. + * acconfig.h (DLSYM_ADDS_USCORE): New #define. + +1997-10-26 Mikael Djurfeldt + + * README (libtool): Tell people to use version 1.0e. + +Sat Oct 25 02:50:43 1997 Jim Blandy + + Call the QuickThreads library libqthreads.a, not libqt.a. The old + name conflicts with the Qt user interface toolkit. + * threads.m4 (CY_AC_WITH_THREADS): Use new library name. + * configure.in: Same. + * aclocal.m4, configure: Regenerated. + +Thu Oct 23 00:58:06 1997 Jim Blandy + + * configure.in: Check for the readline library, and the termcap + library (on which readline relies). + * configure: Regenerated. + +Wed Oct 22 16:55:57 1997 Jim Blandy + + New libtool: 1.0e + * ltconfig, ltmain.sh, config.sub, config.guess: Updated. + * configure, aclocal.m4: Regenerated. + +1997-10-02 Marius Vollmer + + Make dynamic linking work on Dec Unix. (Thanks to Clark McGrew) + * configure.in: Check whether dlopen can be found without -ldl. + +Mon Sep 29 23:52:52 1997 Jim Blandy + + * Makefile.in: Regenerated with automake 1.2c. + +Sat Sep 27 23:01:58 1997 Jim Blandy + + * Makefile.am: Add new `build' subdirectory to SUBDIRS. + * configure.in: Add build/Makefile to AC_OUTPUT clause. + * Makefile.in, configure: Regenerated. + + * Makefile.in, aclocal.m4: Regenerated with automake 1.2a. + +Tue Sep 16 00:19:46 1997 Mikael Djurfeldt + + * README, ltconfig, ltmain.sh: New libtool: 1.0c. + +Thu Sep 11 11:28:24 1997 Mikael Djurfeldt + + * ltmain.sh: Added a missing '\' before \n on line 32. + +Thu Aug 28 23:40:43 1997 Jim Blandy + + New libtool: 1.0b. + * ltconfig, ltmain.sh, config.guess: Freshly libtoolized. + * Makefile.in, aclocal.m4, configure: Regenerated, salamander-style. + +Wed Aug 27 11:35:09 1997 Jim Blandy + + * Makefile.in: Regenerated, so it uses "tar", not "gtar". + + * configure.in: Use the QuickThreads assembler fragment with Irix + dynamic linking support for Irix 6 as well as Irix 5. Thanks to + Jesse Glick. + * configure: Regenerated. + +Sun Aug 24 15:51:12 1997 Mikael Djurfeldt + + * acinclude.m4 (GUILE_NAMED_CHECK_FUNC): New macro: Tagged test, + so that test for the same function can be performed multiple + times. + + * configure.in (AC_CHECK_HEADERS): Test for rxposix.h, + rx/rxposix.h. Add library rx only if regcomp can't be found + without it. + + * acconfig.h (HAVE_REGCOMP): Added it here since autoheader misses + it for some reason! + +Fri Aug 22 21:21:49 1997 Jim Blandy + + * THANKS: New file. + * Makefile.in, aclocal.m4, configure: Regenerated. + +Wed Jul 23 20:24:27 1997 Mikael Djurfeldt + + * configure.in: Added thread support for the alpha architecture. + configure: Regenerated. + +Thu Jul 17 07:56:05 1997 Gary Houston + + * configure.in: use AC_CHECK_FUNCS for sethostent etc., + so scmconfig.h is updated with the test results. this may + disable one of the cygwin hacks. + +Fri Jul 11 00:18:19 1997 Jim Blandy + + Changes to compile under gnu-win32, from Marcus Daniels: + * configure.in: When sys/un.h exists, define HAVE_UNIX_DOMAIN_SOCKETS + to indicate that Unix domain sockets will work. + Check for socketpair, getgroups, setwent, pause, and tzset + (cygwin currently lacks these them). + Check for sethostent endhostent getnetent setnetent endnetent + getprotoent endprotoent getservent endservent getnetbyaddr + getnetbyname inet_lnaof inet_makeaddr inet_netof (cygwin currently + lacks them). In the case of cygwin, temporarily prefix these + functions with "cygwin32_", the way that netdb.h does. + Don't define HAVE_REGCOMP unless both regcomp and regex.h are + available (cygwin b18 came distributed without a working regex.h + file). + * acconfig.h (HAVE_UNIX_DOMAIN_SOCKETS): Add this. + * configure: Regenerated. + +Wed Jul 2 12:28:40 1997 Tim Pierce + + * ltmain.sh: Remove any trailing colon on $shlibpath_var + (i.e. LD_LIBRARY_PATH) for braindamaged linkers that choke on it. + Patch sent to bug-libtool. + +Sat Jun 28 16:13:43 1997 Tim Pierce + + * configure.in: Add alloca.o explicitly to LIBOBJS (thanks Eric + Backus for reporting this problem and suggesting a fix). + * configure: Regenerated. + +Thu Jun 26 20:43:31 1997 Jim Blandy + + * Guile 1.2 released. + + * configure.in: Check for librx after libm; fundamentals need to + come first. + * configure: Regenerated. + +Tue Jun 24 13:34:20 1997 Tim Pierce + + * aclocal.m4 (AM_PATH_PROG_LD): Change `ac_cv_path_LD' typo to + `am_cv_path_LD'. + * configure: Regenerated. + +Sun Jun 22 15:43:07 1997 Jim Blandy + + Try to detect when people are using one version of libguile and a + different version of ice-9. People have been skewing things and + sending in bug reports. + * configure.in: Provide libguile its version information through a + separate header file generated by the Makefile, not through + scmconfig.h. + (GUILE_MAJOR_VERSION, GUILE_MINOR_VERSION, GUILE_VERSION): + AC_SUBST these, instead of AC_DEFINE'ing them. + (GUILE_STAMP): New AC_SUBST: the time we configured the tree. + (AC_OUTPUT): Create ice-9/version.scm. + * acconfig.h (GUILE_MAJOR_VERSION, GUILE_MINOR_VERSION, + GUILE_VERSION): Deleted. + * Makefile.in: Regenerated. + + * aclocal.m4: Regenerated, using the libtool 0.9h m4 macros. + + * Makefile.am (EXTRA_DIST): Include acconfig.h in the + distribution. + * Makefile.in: Regenerated. + +Sat Jun 21 00:14:07 1997 Jim Blandy + + * ltmain.sh (line 1191): Don't forget 'test' in if statement. + + * ltconfig, ltmain.sh: libtoolized, using libtool 0.9h. + +Wed Jun 11 00:34:01 1997 Jim Blandy + + * ltconfig, ltmain.sh, config.guess: New files from libtool 0.9g. + + * configure.in: By default, include functions in Guile to allow + linking with dynamic libraries at run-time. In other words, + --enable-dynamic-linking is now the default. + * configure: Rebuilt. + + * configure.in: Remove space between AC_CHECK_LIB and opening + paren in check for Rx. + * configure: Regenerated. + + * configure.in: Remove all mention of xtra_PLUGIN_guile_libs. + It's never used. + * configure, Makefile.in: Regenerated. + +Tue Jun 10 23:37:12 1997 Jim Blandy + + * configure.in: Move checks for libraries (-lm, -lnsl, -lsocket, + -dl, -dld) before checks for functions. + * configure: Regenerated. + +Mon Jun 9 02:35:46 1997 Tim Pierce + + * config.guess: New copy from autoconf-2.12, which recognizes + OpenBSD. + +Tue Jun 3 16:34:19 1997 Jim Blandy + + * configure.in: Check for Rx, so we will use its routines (which I + pretty much trust) if it is installed. + * configure: Regenerated. + +Sat May 31 03:48:45 1997 Gary Houston + + * acconfig.h: mention HAVE_RESTARTS. + * configure.in: check for sigaction and restartable system calls. + +Tue May 27 22:47:52 1997 Tim Pierce + + * configure.in: Check for presence of regcomp. + * configure: Regenerated. + +Mon May 26 12:14:20 1997 Jim Blandy + + * COPYING: New address for FSF. + + * configure.in: We don't need to add fileblocks.o to LIBOBJS if + struct stat doesn't have the st_blocks field. We take care of + that case in the code. Replace AC_STRUCT_ST_BLOCKS with its + definition, edited appropriately. (Bernard URBAN) + * configure: Regenerated. + +Sat May 17 13:49:28 1997 Jim Blandy + + * configure.in: Don't link against -lnsl or -lsocket unless we + actually need to. This causes trouble on Irix. (Thanks to Larry + Schwimmer.) + + * config.sub: Get newer version, that recognizes the i686. + +Fri May 16 17:26:10 1997 Jim Blandy + + * README: Changed Mikael's threads work attribution in order + to sooth Anthony's enormous, but wounded, ego. + +Fri May 16 17:26:53 1997 Jim Blandy + + Just kidding!!! + +Fri May 16 04:24:48 1997 Jim Blandy + + Guile 1.1 released. + * GUILE-VERSION: Bump to 1.1. + +Tue May 13 16:34:40 1997 Jim Blandy + + Switch to automake-1.1p. + * Makefile.in, aclocal.m4, configure: Regenerated. + +Mon May 12 18:29:45 1997 Jim Blandy + + * threads.m4: Copy Anthony's change here, so it'll actually + survive. + +Thu May 8 11:48:40 1997 Anthony Green + + * aclocal.m4: Fixes for building with coop threads in a + seperate compilation directory. + * configure: Rebuilt. + +Fri May 2 16:24:15 1997 Jim Blandy + + Upgrade to libtool 0.9e. + * ltconfig, ltmain.sh, config.guess, config.sub: New versions, + supplied by libtool. + + * configure.in: When configuring qt, sunos needs the underscore + files; Solaris and Linux both need the normal files. + * configure: Reebilt. + +Thu May 1 15:35:49 1997 Jim Blandy + + * configure.in: Get the paths for qt's md files right, so it can + build correctly when using a separate compilation directory. + * configure: Regenerated. + +Thu Apr 24 01:20:34 1997 Jim Blandy + + Get threads to work again. + * Makefile.am (SUBDIRS): List libguile last, so qt gets built + first. + * Makefile.in: Regenerated. + * aclocal.m4, configure: Regenerate, with modern definition of + CY_AC_WITH_THREADS. Where did the old text come from? Creepy... + + Reduced Guile distribution: one configure script, no plugins. + * configure.in: Merged the old text from qt/configure.in and + libguile/configure.in; Tom Tromey says automake only wants one + configure.in script. This seems fishy, but... + * Makefile.am: List the subdirectories explicitly; no more PLUGIN + gubbish. + * acconfig.h, acinclude.m4: Moved here from libguile, since + libguile's configure script lives here now. + * AUTHORS, INSTALL, README: Updated. + * Makefile.in, aclocal.m4 configure: Regenerated. Just like + amputated amphibian limbs. + +Tue Apr 22 16:57:38 1997 Jim Blandy + + * newdoc/ref/Makefile.am (dist_texis): Distribute the index files. + * newdoc/ref/Makefile.in: Regenerated. + +Mon Apr 14 18:51:25 1997 Jim Blandy + + * threads.m4 (CY_AC_WITH_THREADS): When using coop threads, no + need to link against libthreads; the files it used to contain + are now a part of libguile. + +Sun Apr 13 22:14:10 1997 Jim Blandy + + * guile.m4: Revert change of Mar 15, and use the new 'no-define' + argument to the AM_INIT_AUTOMAKE macro. + +Fri Apr 11 15:43:07 1997 Jim Blandy + + * ltconfig, ltmain.sh: Upgraded libtool files to 0.9d. + * README: Say where to find libtool 0.9d. + +Wed Apr 9 17:51:13 1997 Jim Blandy + + Changes to work with automake-1.1n, which has better libtool + support. Also use libtool 0.8. + * README: Note new version numbers for automake and libtool. + * missing: New file required by new automake. + * Makefile.in: Regenerated. + +Sat Apr 5 16:48:38 1997 Jim Blandy + + * newdoc/ref/scheme.texi (set-object-property!): Fix function name. + + * Makefile.am: Omit doc subtree. + * configure.in: Omit makefiles in doc subtree. + * Makefile.in, configure: Rebuilt. + +Sat Mar 15 01:11:44 1997 Mikael Djurfeldt + + * guile.m4 (AM_INIT_GUILE_MODULE): Replaced AM_INIT_AUTOMAKE macro + with its definition and commented out definition of PACKAGE. This + changed seemed necessary after having removed PACKAGE from + libguile/acconfig.h. + +Mon Feb 24 21:43:26 1997 Mikael Djurfeldt + + * ltconfig, ltmain.sh: New versions from libtool-0.9. + + * configure.in: Added AM_MAINTAINER_MODE + +Fri Feb 7 17:57:46 1997 Jim Blandy + + * config.sub, config.guess: New versions, that handle i686, etc. + +Thu Jan 23 07:06:15 1997 Mark Galassi + + * newdoc/tutorial/guile-tut.texi: started checking in the Guile + tutorial rewrite, but have not merged much into it yet. + +Tue Jan 21 17:28:40 1997 Mark Galassi + + * newdoc/ref/guile-ref.texi: started checking in parts of the + reference manual re-write. + +Sat Jan 11 14:40:17 1997 Marius Vollmer + + * ltconfig, ltmain.sh: New files for libtool support. libguile, + rx, gh and gtcltk-lib can now be build as shared libraries. + * Makefile.am (EXTRA_DIST): Added ltconfig and ltmain.sh + +Sun Jan 5 16:57:10 1997 Jim Blandy + + * Guile 1.0 released. This is the first release by the Free + Software Foundation; Cygnus has also released earlier versions of + Guile. + + * GUILE-VERSION: Updated version number. + * NEWS: Added comments for all the user-visible changes marked in + the ChangeLogs. + * README: Updated for release. + +Thu Dec 12 00:14:32 1996 Gary Houston + + * scsh: new directory. + +Mon Dec 2 17:33:04 1996 Tom Tromey + + * configure.in: Generate doc/guile-programmer/Makefile and + doc/guile-user/Makefile. + +Sat Nov 30 23:45:54 1996 Tom Tromey + + * aclocal.m4: Now automatically generated by aclocal. + * threads.m4: New file. + * guile.m4: New file. + * Makefile.am, doc/Makefile.am: New files. + * configure.in: Updated for Automake. Avoid excessively verbose + "greet" messages. + +Wed Oct 16 07:32:14 1996 Mark Galassi + + * lgh: directory renamed to gh, along with all prefixes of the + high level library procedures. + +Thu Oct 10 14:37:43 1996 Jim Blandy + + * Makefile.in (TAGS tags): Find the source files in $srcdir. + +Wed Oct 9 19:37:14 1996 Jim Blandy + + * Makefile.in (DISTFILES): Add AUTHORS and aclocal.m4. + +Tue Oct 1 00:13:55 1996 Mikael Djurfeldt + + * configure.in: Added some configuration magic from the Cygnus + distribution. + + * aclocal.m4: New file. For now used for thread support + configuration. + +Fri Sep 13 14:39:30 1996 Mark Galassi + + * Makefile.in (DISTFILES): added mkinstalldirs to the DISTFILES + + * PLUGIN: changed the PLUGIN/REQ files in the ice-9 and lgh + directories, to arrange for lgh to the last thing + configured/built. + +Wed Sep 11 21:11:33 1996 Mark Galassi + + * lgh/: added the directory in which I implement the high level + libguile library (lgh_) for this release of Guile. See the + ChangeLog in there for further details. + +Wed Sep 11 16:12:53 1996 Mark Galassi + + * doc/ (guile-user and guile-programmer): added the guile-user and + guile-programmer directories which contain the user and programmer + manuals. See the ChangeLog entries there for detail. + +Wed Sep 11 14:33:49 1996 Jim Blandy + + * Makefile.in (distclean): Don't forget to delete doc/Makefile. + + * Makefile.in (distclean): Don't forget to delete + config.build-subdirs. + +Thu Sep 5 17:36:15 1996 Jim Blandy + + * Makefile.in (tags): New name for `TAGS' target, which will + always run the commands. + +Thu Sep 5 09:56:50 1996 Jim Blandy + + * README: Doc fixes. + +Fri Aug 30 16:56:27 1996 Jim Blandy + + * Makefile.in (TAGS): Produce a single tags file for all of Guile. + +Thu Aug 15 19:03:03 1996 Jim Blandy + + * configure.in: Check for -ldl, so the check for Tcl won't fail + spuriously. + +Thu Aug 15 01:29:29 1996 Jim Blandy + + Change the way we decide whether to build gtcltk-lib, so that it's + omitted from the build process when appropriate, but never from + the dist process. + * configure.in: Don't edit all_subdirs depending on the + availability of Tk; let that be the list of all PLUGIN + subdirectories present, as it used to be. Instead, edit a new + variable, build_subdirs; write its final value, the list of + subdirs we do want to compile in, to config.build-subdirs. + Substitute that into the top-level Makefile too. + * Makefile.in (subdirs): Set this to @build_subdirs@, so we only + recurse on the subdirectories we should build. + (distdirs): Set this to @existingdirs@, so it includes the subdirs + we decided not to build. + + * doc/gtcltk.texi: File resurrected from old Guile releases. + * doc/Makefile.in (info): Build the gtcltk documentation. + (DIST_FILES): Include it in the distribution. + + * configure.in: If we can find the library for tcl7.5, build + gtcltk-lib. Call AC_PROG_CC, to help run that test with the right + compiler (not sure this is necessary). + +Mon Aug 12 15:09:37 1996 Jim Blandy + + * NEWS: Fix bug reporting address. + +Fri Aug 9 15:58:42 1996 Jim Blandy + + * AUTHORS: New file, in accordance with the GNU maintainers' + standards. + +Tue Aug 6 14:40:44 1996 Jim Blandy + + * README: Renamed from ANNOUNCE; include bug report address, + description, and short tour. + * INSTALL: Renamed from BUILDING. + * NEWS: New file. + * Makefile.in (DISTFILES): Update appropriately. + +Thu Aug 1 02:31:53 1996 Jim Blandy + + * doc/Makefile.in: Added pattern targets for creating DVI and + PostScript files. + (%.ps, %.dvi, %.txt): New targets. + (DVIPS, TEXI2DVI): New variables. + + * GUILE-VERSION: Updated to 1.0b3. + + Rehashed distribution system, in preparation for nightly + snapshots. Other changes in subdirectories. + * Makefile.in (dist): Rewritten --- the old target was out of + date, dependent on files that we don't have, and relied on GNU + tar. The new target is simpler. + (VERSION, srcdir, dist_dirs): New variables. + (DISTFILES): Renamed from localfiles. Added GUILE-VERSION and + TODO. + (localtreats): Variable removed. We don't have this file. + (info): cd to doc and make info there; don't make info in every + ${subdir}; those Makefiles don't know what to do. + (distname, distdir, treats, announcefile): Variables removed. + (manifest-file): Target removed. + (dist-dir): New target, responsible for distributable files in + this directory. + (GZIP, GZIP_EXT, TAR_VERBOSE, DIST_NAME): New variables, + controlling the 'dist' target. + * configure.in: Substitute GUILE-VERSION into the top-level + Makefile. Build doc/Makefile from doc/Makefile.in. + + * doc/Makefile.in: New file. + + +;; Local Variables: +;; coding: utf-8 +;; End: diff --git a/guile18/GUILE-VERSION b/guile18/GUILE-VERSION new file mode 100644 index 0000000000..020f95e31d --- /dev/null +++ b/guile18/GUILE-VERSION @@ -0,0 +1,56 @@ +# -*-shell-script-*- + +GUILE_MAJOR_VERSION=1 +GUILE_MINOR_VERSION=8 +GUILE_MICRO_VERSION=8 + +GUILE_EFFECTIVE_VERSION=${GUILE_MAJOR_VERSION}.${GUILE_MINOR_VERSION} +GUILE_VERSION=${GUILE_EFFECTIVE_VERSION}.${GUILE_MICRO_VERSION} + +# For automake. +VERSION=${GUILE_VERSION} +PACKAGE=guile + +# All of the shared lib versioning info. Right now, for this to work +# properly, you'll also need to add AC_SUBST calls to the right place +# in configure.in, add the right -version-info statement to your +# Makefile.am The only library not handled here is +# guile-readline/libguile-readline. It is handled in +# ./guile-readline/LIBGUILEREADLINE-VERSION. + +# See libtool info pages for more information on how and when to +# change these. + +LIBGUILE_INTERFACE_CURRENT=21 +LIBGUILE_INTERFACE_REVISION=0 +LIBGUILE_INTERFACE_AGE=4 +LIBGUILE_INTERFACE="${LIBGUILE_INTERFACE_CURRENT}:${LIBGUILE_INTERFACE_REVISION}:${LIBGUILE_INTERFACE_AGE}" + +# NOTE: You must edit each corresponding .scm file (the one that +# dynamic-links the relevant lib) if you change the versioning +# information here to make sure the dynamic-link explicitly loads the +# right shared lib version. + +LIBGUILE_SRFI_SRFI_1_MAJOR=3 +LIBGUILE_SRFI_SRFI_1_INTERFACE_CURRENT=3 +LIBGUILE_SRFI_SRFI_1_INTERFACE_REVISION=2 +LIBGUILE_SRFI_SRFI_1_INTERFACE_AGE=0 +LIBGUILE_SRFI_SRFI_1_INTERFACE="${LIBGUILE_SRFI_SRFI_1_INTERFACE_CURRENT}:${LIBGUILE_SRFI_SRFI_1_INTERFACE_REVISION}:${LIBGUILE_SRFI_SRFI_1_INTERFACE_AGE}" + +LIBGUILE_SRFI_SRFI_4_MAJOR=3 +LIBGUILE_SRFI_SRFI_4_INTERFACE_CURRENT=3 +LIBGUILE_SRFI_SRFI_4_INTERFACE_REVISION=1 +LIBGUILE_SRFI_SRFI_4_INTERFACE_AGE=0 +LIBGUILE_SRFI_SRFI_4_INTERFACE="${LIBGUILE_SRFI_SRFI_4_INTERFACE_CURRENT}:${LIBGUILE_SRFI_SRFI_4_INTERFACE_REVISION}:${LIBGUILE_SRFI_SRFI_4_INTERFACE_AGE}" + +LIBGUILE_SRFI_SRFI_13_14_MAJOR=3 +LIBGUILE_SRFI_SRFI_13_14_INTERFACE_CURRENT=3 +LIBGUILE_SRFI_SRFI_13_14_INTERFACE_REVISION=1 +LIBGUILE_SRFI_SRFI_13_14_INTERFACE_AGE=0 +LIBGUILE_SRFI_SRFI_13_14_INTERFACE="${LIBGUILE_SRFI_SRFI_13_14_INTERFACE_CURRENT}:${LIBGUILE_SRFI_SRFI_13_14_INTERFACE_REVISION}:${LIBGUILE_SRFI_SRFI_13_14_INTERFACE_AGE}" + +LIBGUILE_SRFI_SRFI_60_MAJOR=2 +LIBGUILE_SRFI_SRFI_60_INTERFACE_CURRENT=2 +LIBGUILE_SRFI_SRFI_60_INTERFACE_REVISION=2 +LIBGUILE_SRFI_SRFI_60_INTERFACE_AGE=0 +LIBGUILE_SRFI_SRFI_60_INTERFACE="${LIBGUILE_SRFI_SRFI_60_INTERFACE_CURRENT}:${LIBGUILE_SRFI_SRFI_60_INTERFACE_REVISION}:${LIBGUILE_SRFI_SRFI_60_INTERFACE_AGE}" diff --git a/guile18/HACKING b/guile18/HACKING new file mode 100644 index 0000000000..f6d5185311 --- /dev/null +++ b/guile18/HACKING @@ -0,0 +1,339 @@ +-*-text-*- +Guile Hacking Guide +Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2008 Free software Foundation, Inc. + + Permission is granted to anyone to make or distribute verbatim copies + of this document as received, in any medium, provided that the + copyright notice and permission notice are preserved, + and that the distributor grants the recipient permission + for further redistribution as permitted by this notice. + + Permission is granted to distribute modified versions + of this document, or of portions of it, + under the above conditions, provided also that they + carry prominent notices stating who last changed them, + and that any new or changed statements about the activities + of the Free Software Foundation are approved by the Foundation. + + +What to Hack ========================================================= + +You can hack whatever you want, thank GNU. + +However, to see what others have indicated as their interest (and avoid +potential wasteful duplication of effort), see file TODO. Note that +the version you find may be out of date; a CVS checkout is recommended: +see below for details (see also the files ANON-CVS and SNAPSHOTS). + +It's also a good idea to join the guile-devel@gnu.org mailing list. +See http://www.gnu.org/software/guile/mail/mail.html for more info. + + +Hacking It Yourself ================================================== + +When Guile is obtained from Git, a few extra steps must be taken +before the usual configure, make, make install. You will need to have +up-to-date versions of the tools as listed below, correctly installed. + +Sometimes older or newer versions will work. (See below for versions +to avoid.) + +Then you must run the autogen.sh script, as described below. + +The same procedure can be used to regenerate the files in released +versions of Guile. In that case the headers of the original generated +files (e.g., configure, Makefile.in, ltmain.sh) can be used to +identify which tool versions may be required. + +Autoconf --- a system for automatically generating `configure' + scripts from templates which list the non-portable features a + program would like to use. Available in + "ftp://ftp.gnu.org/pub/gnu/autoconf" + +Automake --- a system for automatically generating Makefiles that + conform to the (rather Byzantine) GNU coding standards. The + nice thing is that it takes care of hairy targets like 'make + dist' and 'make distclean', and automatically generates + Makefile dependencies. Automake is available in + "ftp://ftp.gnu.org/pub/gnu/automake" + +libtool --- a system for managing the zillion hairy options needed + on various systems to produce shared libraries. Available in + "ftp://ftp.gnu.org/pub/gnu/libtool". Version 1.5.26 (or + later) is needed for correct AIX support. + +gettext --- a system for rigging a program so that it can output its + messages in the local tongue. Guile presently only exports + the gettext functionality to Scheme, it does not use it + itself. + +flex --- a scanner generator. It's probably not essential to have the + latest version. + +One false move and you will be lost in a little maze of automatically +generated files, all different. + +Here is the authoritative list of tool/version/platform tuples that +have been known to cause problems, and a short description of the problem. + +- automake 1.4 adds extraneous rules to the top-level Makefile if + you specify specific Makefiles to rebuild on the command line. + +- automake 1.4-p4 (debian "1:1.4-p4-1.1") all platforms + automake "include" facility does not recognize filenames w/ "-". + +- libtool 1.4 uses acconfig.h, which is deprecated by newest autoconf + (which constructs the equivalent through 3rd arg of AC_DEFINE forms). + +- autoreconf from autoconf prior to 2.59 will run gettextize, which + will mess up the Guile tree. + +- (add here.) + + +Sample GDB Initialization File========================================= + +Here is a sample .gdbinit posted by Bill Schottstaedt (modified to +use `set' instead of `call' in some places): + + define gp + set gdb_print($arg0) + print gdb_output + end + document gp + Executes (object->string arg) + end + + define ge + call gdb_read($arg0) + call gdb_eval(gdb_result) + set gdb_print(gdb_result) + print gdb_output + end + document ge + Executes (print (eval (read arg))): ge "(+ 1 2)" => 3 + end + + define gh + call g_help(scm_str2symbol($arg0), 20) + set gdb_print($1) + print gdb_output + end + document gh + Prints help string for arg: gh "enved-target" + end + +Bill further writes: + + so in gdb if you see something useless like: + + #32 0x081ae8f4 in scm_primitive_load (filename=1112137128) at load.c:129 + + You can get the file name with gp: + + (gdb) gp 1112137128 + $1 = 0x40853fac "\"/home/bil/test/share/guile/1.5.0/ice-9/session.scm\"" + + +Contributing Your Changes ============================================ + +- If you have put together a change that meets the coding standards +described below, we encourage you to submit it to Guile. Post your +patch to guile-devel@gnu.org. + +- We prefer patches generated using 'git format-patch'. + +- Provide a description in the commit message, like so: + + 1-line description of change + + More extensive discussion of your change. Document why you are + changing things. + + * filename (function name): file specific change comments. + +- For proper credit, also make sure you update the AUTHORS file +(for new files for which you've assigned copyright to the FSF), or +the THANKS file (for everything else). + + +Coding standards ===================================================== + +- As for any part of Project GNU, changes to Guile should follow the +GNU coding standards. The standards are available via anonymous FTP +from prep.ai.mit.edu, as /pub/gnu/standards/standards.texi and +make-stds.texi. + +- The Guile tree should compile without warnings under the following +GCC switches, which are the default in the current configure script: + + -O2 -Wall -Wpointer-arith -Wmissing-prototypes + +To make sure of this, you can use the --enable-error-on-warning option +to configure. This option will make GCC fail if it hits a warning. + +Note that the warnings generated vary from one version of GCC to the +next, and from one architecture to the next (apparently). To provide +a concrete common standard, Guile should compile without warnings from +GCC 2.7.2.3 in a Red Hat 5.2 i386 Linux machine. Furthermore, each +developer should pursue any additional warnings noted by on their +compiler. This means that people using more stringent compilers will +have more work to do, and assures that everyone won't switch to the +most lenient compiler they can find. :) + +- If you add code which uses functions or other features that are not +entirely portable, please make sure the rest of Guile will still +function properly on systems where they are missing. This usually +entails adding a test to configure.in, and then adding #ifdefs to your +code to disable it if the system's features are missing. + +- The normal way of removing a function, macro or variable is to mark +it as "deprecated", keep it for a while, and remove it in a later +release. If a function or macro is marked as "deprecated" it +indicates that people shouldn't use it in new programs, and should try +to remove it in old. Make sure that an alternative exists unless it +is our purpose to remove functionality. Don't deprecate definitions +if it is unclear when they will be removed. (This is to ensure that a +valid way of implementing some functionality always exists.) + +When deprecating a definition, always follow this procedure: + +1. Mark the definition using + + #if (SCM_DEBUG_DEPRECATED == 0) + ... + #endif + + or, for Scheme code, wrap it using + + (begin-deprecated + ...) + +2. Make the deprecated code issue a warning when it is used, by using + scm_c_issue_deprecation_warning (in C) or issue-deprecation-warning + (in Scheme). + +3. Write a comment at the definition explaining how a programmer can + manage without the deprecated definition. + +4. Add an entry that the definition has been deprecated in NEWS and + explain what do do instead. + +5. In file TODO, there is a list of releases with reminders about what + to do at each release. Add a reminder about the removal of the + deprecated defintion at the appropriate release. + +- Write commit messages for functions written in C using the +functions' C names, and write entries for functions written in Scheme +using the functions' Scheme names. For example, + + * foo.c: Moved scm_procedure_documentation from eval.c. + +is preferred over + + * foo.c: Moved procedure-documentation from eval.c. + +Changes like adding this line are special: + + SCM_PROC (s_map_in_order, "map-in-order", 2, 0, 1, scm_map); + +Since the change here is about the name itself --- we're adding a new +alias for scm_map that guarantees the order in which we process list +elements, but we're not changing scm_map at all --- it's appropriate +to use the Scheme name in the commit message. + +- Make sure you have papers from people before integrating their +changes or contributions. This is very frustrating, but very +important to do right. From maintain.texi, "Information for +Maintainers of GNU Software": + + When incorporating changes from other people, make sure to follow the + correct procedures. Doing this ensures that the FSF has the legal + right to distribute and defend GNU software. + + For the sake of registering the copyright on later versions ofthe + software you need to keep track of each person who makes significant + changes. A change of ten lines or so, or a few such changes, in a + large program is not significant. + + *Before* incorporating significant changes, make sure that the person + has signed copyright papers, and that the Free Software Foundation has + received them. + +If you receive contributions you want to use from someone, let me know +and I'll take care of the administrivia. Put the contributions aside +until we have the necessary papers. + +Once you accept a contribution, be sure to keep the files AUTHORS and +THANKS uptodate. + +- When you make substantial changes to a file, add the current year to +the list of years in the copyright notice at the top of the file. + +- When you get bug reports or patches from people, be sure to list +them in THANKS. + + +Naming conventions ================================================= + +We use certain naming conventions to structure the considerable number +of global identifiers. All identifiers should be either all lower +case or all upper case. Syllables are separated by underscores `_'. +All non-static identifiers should start with scm_ or SCM_. Then might +follow zero or more syllables giving the category of the identifier. +The currently used category identifiers are + + t - type name + + c,C - something with a interface suited for C use. This is used + to name functions that behave like Scheme primitives but + have a more C friendly calling convention. + + i,I - internal to libguile. It is global, but not considered part + of the libguile API. + + f - a SCM variable pointing to a Scheme function object. + + F - a bit mask for a flag. + + m - a macro transformer procedure + + n,N - a count of something + + s - a constant C string + + k - a SCM variable pointing to a keyword. + + sym - a SCM variable pointing to a symbol. + + var - a SCM variable pointing to a variable object. + +The follwing syllables also have a technical meaning: + + str - this denotes a zero terminated C string + + mem - a C string with an explicit count + + +See also the file `devel/names.text'. + + +Helpful hints ======================================================== + +- [From Mikael Djurfeldt] When working on the Guile internals, it is +quite often practical to implement a scheme-level procedure which +helps you examine the feature you're working on. + +Examples of such procedures are: pt-size, debug-hand and +current-pstate. + +I've now put #ifdef GUILE_DEBUG around all such procedures, so that +they are not compiled into the "normal" Guile library. Please do the +same when you add new procedures/C functions for debugging purpose. + +You can define the GUILE_DEBUG flag by passing --enable-guile-debug to +the configure script. + + +Jim Blandy, and others + diff --git a/guile18/LICENSE b/guile18/LICENSE new file mode 100644 index 0000000000..dda451e613 --- /dev/null +++ b/guile18/LICENSE @@ -0,0 +1,2 @@ +Guile is covered under the terms of the GNU Lesser General Public +License, version 2.1 or later. See COPYING.LESSER. diff --git a/guile18/Makefile.am b/guile18/Makefile.am new file mode 100644 index 0000000000..1193b0c270 --- /dev/null +++ b/guile18/Makefile.am @@ -0,0 +1,46 @@ +## Process this file with automake to produce Makefile.in. +## +## Copyright (C) 1998, 1999, 2000, 2001, 2002, 2006, 2007, 2008 Free Software Foundation, Inc. +## +## This file is part of GUILE. +## +## GUILE is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2, or +## (at your option) any later version. +## +## GUILE is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public +## License along with GUILE; see the file COPYING. If not, write +## to the Free Software Foundation, Inc., 51 Franklin Street, Fifth +## Floor, Boston, MA 02110-1301 USA + +# want automake 1.10 or higher so that AM_GNU_GETTEXT can tell automake that +# config.rpath is needed +# +AUTOMAKE_OPTIONS = 1.10 + +SUBDIRS = oop libguile ice-9 guile-config guile-readline emacs \ + scripts srfi doc examples test-suite benchmark-suite lang am + +bin_SCRIPTS = guile-tools + +include_HEADERS = libguile.h + +EXTRA_DIST = LICENSE HACKING GUILE-VERSION guile-1.8.pc.in \ + ChangeLog-2008 m4/autobuild.m4 + +TESTS = check-guile + +ACLOCAL_AMFLAGS = -I m4 + +DISTCLEANFILES = check-guile.log + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = guile-1.8.pc + +# Makefile.am ends here diff --git a/guile18/NEWS b/guile18/NEWS new file mode 100644 index 0000000000..9fce2152b1 --- /dev/null +++ b/guile18/NEWS @@ -0,0 +1,7432 @@ +Guile NEWS --- history of user-visible changes. +Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +See the end for copying conditions. + +Please send Guile bug reports to bug-guile@gnu.org. + + +Changes in 1.8.8 (since 1.8.7) + +* Bugs fixed + +** Fix possible buffer overruns when parsing numbers +** Fix random number generator on 64-bit platforms + +Previously the `scm_c_random' function would crash or return only 32-bit +worth of randomness. In addition, the new `scm_c_random64' function +explicitly returns 64 bits of randomness. + +** Add missing range checks in `vector-move-left!' and `vector-move-right!' + +Previously these procedures could write past the end of a vector. + +** Avoid clash with system setjmp/longjmp on IA64 +** Don't dynamically link an extension that is already registered +** Fix `wrong type arg' exceptions with IPv6 addresses +** Fix typos in `(srfi srfi-19)' +** Have `(srfi srfi-35)' provide named struct vtables +** Fix C documentation extraction ("snarfing") with recent GCC versions +** Fix some Interix build problems +** Fix Tru64 build problems +** Fix GC-related build issues on Solaris 10 x86 with Sun Studio 12 +** Several small documentation fixes + + +Changes in 1.8.7 (since 1.8.6) + +* Bugs fixed + +** Fix compilation with `--disable-deprecated' +** Fix %fast-slot-ref/set!, to avoid possible segmentation fault +** Fix MinGW build problem caused by HAVE_STRUCT_TIMESPEC confusion +** Fix build problem when scm_t_timespec is different from struct timespec +** Fix build when compiled with -Wundef -Werror +** More build fixes for `alphaev56-dec-osf5.1b' (Tru64) +** Build fixes for `powerpc-ibm-aix5.3.0.0' (AIX 5.3) +** With GCC, always compile with `-mieee' on `alpha*' and `sh*' +** Better diagnose broken `(strftime "%z" ...)' in `time.test' (bug #24130) +** Fix parsing of SRFI-88/postfix keywords longer than 128 characters +** Fix reading of complex numbers where both parts are inexact decimals + +** Allow @ macro to work with (ice-9 syncase) + +Previously, use of the @ macro in a module whose code is being +transformed by (ice-9 syncase) would cause an "Invalid syntax" error. +Now it works as you would expect (giving the value of the specified +module binding). + +** Have `scm_take_locale_symbol ()' return an interned symbol (bug #25865) +** Fix potential deadlocks when running on multiple threads + +** Fix problems building with the i586-mingw32msvc cross-compiler + +It's now possible to build Guile for Windows by using the +i586-mingw32msvc cross-compiler on GNU/Linux. This kind of build +produces DLLs and a main program that can be copied to and used on a +Windows PC. For how to do this, see the `Cross building Guile' +section in `README'. + + +Changes in 1.8.6 (since 1.8.5) + +* New features (see the manual for details) + +** New convenience function `scm_c_symbol_length ()' + +** Single stepping through code from Emacs + +When you use GDS to evaluate Scheme code from Emacs, you can now use +`C-u' to indicate that you want to single step through that code. See +`Evaluating Scheme Code' in the manual for more details. + +** New "guile(1)" man page! + +* Changes to the distribution + +** Automake's `AM_MAINTAINER_MODE' is no longer used + +Thus, the `--enable-maintainer-mode' configure option is no longer +available: Guile is now always configured in "maintainer mode". + +** `ChangeLog' files are no longer updated + +Instead, changes are detailed in the version control system's logs. See +the top-level `ChangeLog' files for details. + + +* Bugs fixed + +** `symbol->string' now returns a read-only string, as per R5RS +** Fix incorrect handling of the FLAGS argument of `fold-matches' +** `guile-config link' now prints `-L$libdir' before `-lguile' +** Fix memory corruption involving GOOPS' `class-redefinition' +** Fix possible deadlock in `mutex-lock' +** Fix build issue on Tru64 and ia64-hp-hpux11.23 (`SCM_UNPACK' macro) +** Fix build issue on mips, mipsel, powerpc and ia64 (stack direction) +** Fix build issue on hppa2.0w-hp-hpux11.11 (`dirent64' and `readdir64_r') +** Fix build issue on i386-unknown-freebsd7.0 ("break strict-aliasing rules") +** Fix misleading output from `(help rationalize)' +** Fix build failure on Debian hppa architecture (bad stack growth detection) +** Fix `gcd' when called with a single, negative argument. +** Fix `Stack overflow' errors seen when building on some platforms +** Fix bug when `scm_with_guile ()' was called several times from the + same thread +** The handler of SRFI-34 `with-exception-handler' is now invoked in the + dynamic environment of the call to `raise' +** Fix potential deadlock in `make-struct' +** Fix compilation problem with libltdl from Libtool 2.2.x +** Fix sloppy bound checking in `string-{ref,set!}' with the empty string + + +Changes in 1.8.5 (since 1.8.4) + +* Infrastructure changes + +** Guile repository switched from CVS to Git + +The new repository can be accessed using +"git-clone git://git.sv.gnu.org/guile.git", or can be browsed on-line at +http://git.sv.gnu.org/gitweb/?p=guile.git . See `README' for details. + +** Add support for `pkg-config' + +See "Autoconf Support" in the manual for details. + +* New modules (see the manual for details) + +** `(srfi srfi-88)' + +* New features (see the manual for details) + +** New `postfix' read option, for SRFI-88 keyword syntax +** Some I/O primitives have been inlined, which improves I/O performance +** New object-based traps infrastructure + +This is a GOOPS-based infrastructure that builds on Guile's low-level +evaluator trap calls and facilitates the development of debugging +features like single-stepping, breakpoints, tracing and profiling. +See the `Traps' node of the manual for details. + +** New support for working on Guile code from within Emacs + +Guile now incorporates the `GDS' library (previously distributed +separately) for working on Guile code from within Emacs. See the +`Using Guile In Emacs' node of the manual for details. + +* Bugs fixed + +** `scm_add_slot ()' no longer segfaults (fixes bug #22369) +** Fixed `(ice-9 match)' for patterns like `((_ ...) ...)' + +Previously, expressions like `(match '((foo) (bar)) (((_ ...) ...) #t))' +would trigger an unbound variable error for `match:andmap'. + +** `(oop goops describe)' now properly provides the `describe' feature +** Fixed `args-fold' from `(srfi srfi-37)' + +Previously, parsing short option names of argument-less options would +lead to a stack overflow. + +** `(srfi srfi-35)' is now visible through `cond-expand' +** Fixed type-checking for the second argument of `eval' +** Fixed type-checking for SRFI-1 `partition' +** Fixed `struct-ref' and `struct-set!' on "light structs" +** Honor struct field access rights in GOOPS +** Changed the storage strategy of source properties, which fixes a deadlock +** Allow compilation of Guile-using programs in C99 mode with GCC 4.3 and later +** Fixed build issue for GNU/Linux on IA64 +** Fixed build issues on NetBSD 1.6 +** Fixed build issue on Solaris 2.10 x86_64 +** Fixed build issue with DEC/Compaq/HP's compiler +** Fixed `scm_from_complex_double' build issue on FreeBSD +** Fixed `alloca' build issue on FreeBSD 6 +** Removed use of non-portable makefile constructs +** Fixed shadowing of libc's on Tru64, which broke compilation +** Make sure all tests honor `$TMPDIR' + + +Changes in 1.8.4 (since 1.8.3) + +* Bugs fixed + +** CR (ASCII 0x0d) is (again) recognized as a token delimiter by the reader +** Fixed a segmentation fault which occurred when displaying the +backtrace of a stack with a promise object (made by `delay') in it. +** Make `accept' leave guile mode while blocking +** `scm_c_read ()' and `scm_c_write ()' now type-check their port argument +** Fixed a build problem on AIX (use of func_data identifier) +** Fixed a segmentation fault which occurred when hashx-ref or hashx-set! was +called with an associator proc that returns neither a pair nor #f. +** Secondary threads now always return a valid module for (current-module). +** Avoid MacOS build problems caused by incorrect combination of "64" +system and library calls. +** `guile-snarf' now honors `$TMPDIR' +** `guile-config compile' now reports CPPFLAGS used at compile-time +** Fixed build with Sun Studio (Solaris 9) +** Fixed wrong-type-arg errors when creating zero length SRFI-4 +uniform vectors on AIX. +** Fixed a deadlock that occurs upon GC with multiple threads. +** Fixed compile problem with GCC on Solaris and AIX (use of _Complex_I) +** Fixed autotool-derived build problems on AIX 6.1. +** Fixed NetBSD/alpha support +** Fixed MacOS build problem caused by use of rl_get_keymap(_name) + +* New modules (see the manual for details) + +** `(srfi srfi-69)' + +* Documentation fixes and improvements + +** Removed premature breakpoint documentation + +The features described are not available in the series of 1.8.x +releases, so the documentation was misleading and has been removed. + +** More about Guile's default *random-state* variable + +** GOOPS: more about how to use `next-method' + +* Changes to the distribution + +** Corrected a few files that referred incorrectly to the old GPL + special exception licence + +In fact Guile since 1.8.0 has been licensed with the GNU Lesser +General Public License, and the few incorrect files have now been +fixed to agree with the rest of the Guile distribution. + +** Removed unnecessary extra copies of COPYING* + +The distribution now contains a single COPYING.LESSER at its top level. + + +Changes in 1.8.3 (since 1.8.2) + +* New modules (see the manual for details) + +** `(srfi srfi-35)' +** `(srfi srfi-37)' + +* Bugs fixed + +** The `(ice-9 slib)' module now works as expected +** Expressions like "(set! 'x #t)" no longer yield a crash +** Warnings about duplicate bindings now go to stderr +** A memory leak in `make-socket-address' was fixed +** Alignment issues (e.g., on SPARC) in network routines were fixed +** A threading issue that showed up at least on NetBSD was fixed +** Build problems on Solaris and IRIX fixed + +* Implementation improvements + +** The reader is now faster, which reduces startup time +** Procedures returned by `record-accessor' and `record-modifier' are faster + + +Changes in 1.8.2 (since 1.8.1): + +* New procedures (see the manual for details) + +** set-program-arguments +** make-vtable + +* Incompatible changes + +** The body of a top-level `define' no longer sees the binding being created + +In a top-level `define', the binding being created is no longer visible +from the `define' body. This breaks code like +"(define foo (begin (set! foo 1) (+ foo 1)))", where `foo' is now +unbound in the body. However, such code was not R5RS-compliant anyway, +per Section 5.2.1. + +* Bugs fixed + +** Fractions were not `equal?' if stored in unreduced form. +(A subtle problem, since printing a value reduced it, making it work.) +** srfi-60 `copy-bit' failed on 64-bit systems +** "guile --use-srfi" option at the REPL can replace core functions +(Programs run with that option were ok, but in the interactive REPL +the core bindings got priority, preventing SRFI replacements or +extensions.) +** `regexp-exec' doesn't abort() on #\nul in the input or bad flags arg +** `kill' on mingw throws an error for a PID other than oneself +** Procedure names are attached to procedure-with-setters +** Array read syntax works with negative lower bound +** `array-in-bounds?' fix if an array has different lower bounds on each index +** `*' returns exact 0 for "(* inexact 0)" +This follows what it always did for "(* 0 inexact)". +** SRFI-19: Value returned by `(current-time time-process)' was incorrect +** SRFI-19: `date->julian-day' did not account for timezone offset +** `ttyname' no longer crashes when passed a non-tty argument +** `inet-ntop' no longer crashes on SPARC when passed an `AF_INET' address +** Small memory leaks have been fixed in `make-fluid' and `add-history' +** GOOPS: Fixed a bug in `method-more-specific?' +** Build problems on Solaris fixed +** Build problems on HP-UX IA64 fixed +** Build problems on MinGW fixed + + +Changes in 1.8.1 (since 1.8.0): + +* LFS functions are now used to access 64-bit files on 32-bit systems. + +* New procedures (see the manual for details) + +** primitive-_exit - [Scheme] the-root-module +** scm_primitive__exit - [C] +** make-completion-function - [Scheme] (ice-9 readline) +** scm_c_locale_stringn_to_number - [C] +** scm_srfi1_append_reverse [C] +** scm_srfi1_append_reverse_x [C] +** scm_log - [C] +** scm_log10 - [C] +** scm_exp - [C] +** scm_sqrt - [C] + +* Bugs fixed + +** Build problems have been fixed on MacOS, SunOS, and QNX. + +** `strftime' fix sign of %z timezone offset. + +** A one-dimensional array can now be 'equal?' to a vector. + +** Structures, records, and SRFI-9 records can now be compared with `equal?'. + +** SRFI-14 standard char sets are recomputed upon a successful `setlocale'. + +** `record-accessor' and `record-modifier' now have strict type checks. + +Record accessor and modifier procedures now throw an error if the +record type of the record they're given is not the type expected. +(Previously accessors returned #f and modifiers silently did nothing). + +** It is now OK to use both autoload and use-modules on a given module. + +** `apply' checks the number of arguments more carefully on "0 or 1" funcs. + +Previously there was no checking on primatives like make-vector that +accept "one or two" arguments. Now there is. + +** The srfi-1 assoc function now calls its equality predicate properly. + +Previously srfi-1 assoc would call the equality predicate with the key +last. According to the SRFI, the key should be first. + +** A bug in n-par-for-each and n-for-each-par-map has been fixed. + +** The array-set! procedure no longer segfaults when given a bit vector. + +** Bugs in make-shared-array have been fixed. + +** stringinexact should no longer overflow when given certain large fractions. + +** srfi-9 accessor and modifier procedures now have strict record type checks. + +This matches the srfi-9 specification. + +** (ice-9 ftw) procedures won't ignore different files with same inode number. + +Previously the (ice-9 ftw) procedures would ignore any file that had +the same inode number as a file they had already seen, even if that +file was on a different device. + + +Changes in 1.8.0 (changes since the 1.6.x series): + +* Changes to the distribution + +** Guile is now licensed with the GNU Lesser General Public License. + +** The manual is now licensed with the GNU Free Documentation License. + +** Guile now requires GNU MP (http://swox.com/gmp). + +Guile now uses the GNU MP library for arbitrary precision arithmetic. + +** Guile now has separate private and public configuration headers. + +That is, things like HAVE_STRING_H no longer leak from Guile's +headers. + +** Guile now provides and uses an "effective" version number. + +Guile now provides scm_effective_version and effective-version +functions which return the "effective" version number. This is just +the normal full version string without the final micro-version number, +so the current effective-version is "1.8". The effective version +should remain unchanged during a stable series, and should be used for +items like the versioned share directory name +i.e. /usr/share/guile/1.8. + +Providing an unchanging version number during a stable release for +things like the versioned share directory can be particularly +important for Guile "add-on" packages, since it provides a directory +that they can install to that won't be changed out from under them +with each micro release during a stable series. + +** Thread implementation has changed. + +When you configure "--with-threads=null", you will get the usual +threading API (call-with-new-thread, make-mutex, etc), but you can't +actually create new threads. Also, "--with-threads=no" is now +equivalent to "--with-threads=null". This means that the thread API +is always present, although you might not be able to create new +threads. + +When you configure "--with-threads=pthreads" or "--with-threads=yes", +you will get threads that are implemented with the portable POSIX +threads. These threads can run concurrently (unlike the previous +"coop" thread implementation), but need to cooperate for things like +the GC. + +The default is "pthreads", unless your platform doesn't have pthreads, +in which case "null" threads are used. + +See the manual for details, nodes "Initialization", "Multi-Threading", +"Blocking", and others. + +** There is the new notion of 'discouraged' features. + +This is a milder form of deprecation. + +Things that are discouraged should not be used in new code, but it is +OK to leave them in old code for now. When a discouraged feature is +used, no warning message is printed like there is for 'deprecated' +features. Also, things that are merely discouraged are nevertheless +implemented efficiently, while deprecated features can be very slow. + +You can omit discouraged features from libguile by configuring it with +the '--disable-discouraged' option. + +** Deprecation warnings can be controlled at run-time. + +(debug-enable 'warn-deprecated) switches them on and (debug-disable +'warn-deprecated) switches them off. + +** Support for SRFI 61, extended cond syntax for multiple values has + been added. + +This SRFI is always available. + +** Support for require-extension, SRFI-55, has been added. + +The SRFI-55 special form `require-extension' has been added. It is +available at startup, and provides a portable way to load Scheme +extensions. SRFI-55 only requires support for one type of extension, +"srfi"; so a set of SRFIs may be loaded via (require-extension (srfi 1 +13 14)). + +** New module (srfi srfi-26) provides support for `cut' and `cute'. + +The (srfi srfi-26) module is an implementation of SRFI-26 which +provides the `cut' and `cute' syntax. These may be used to specialize +parameters without currying. + +** New module (srfi srfi-31) + +This is an implementation of SRFI-31 which provides a special form +`rec' for recursive evaluation. + +** The modules (srfi srfi-13), (srfi srfi-14) and (srfi srfi-4) have + been merged with the core, making their functionality always + available. + +The modules are still available, tho, and you could use them together +with a renaming import, for example. + +** Guile no longer includes its own version of libltdl. + +The official version is good enough now. + +** The --enable-htmldoc option has been removed from 'configure'. + +Support for translating the documentation into HTML is now always +provided. Use 'make html'. + +** New module (ice-9 serialize): + +(serialize FORM1 ...) and (parallelize FORM1 ...) are useful when you +don't trust the thread safety of most of your program, but where you +have some section(s) of code which you consider can run in parallel to +other sections. See ice-9/serialize.scm for more information. + +** The configure option '--disable-arrays' has been removed. + +Support for arrays and uniform numeric arrays is now always included +in Guile. + +* Changes to the stand-alone interpreter + +** New command line option `-L'. + +This option adds a directory to the front of the load path. + +** New command line option `--no-debug'. + +Specifying `--no-debug' on the command line will keep the debugging +evaluator turned off, even for interactive sessions. + +** User-init file ~/.guile is now loaded with the debugging evaluator. + +Previously, the normal evaluator would have been used. Using the +debugging evaluator gives better error messages. + +** The '-e' option now 'read's its argument. + +This is to allow the new '(@ MODULE-NAME VARIABLE-NAME)' construct to +be used with '-e'. For example, you can now write a script like + + #! /bin/sh + exec guile -e '(@ (demo) main)' -s "$0" "$@" + !# + + (define-module (demo) + :export (main)) + + (define (main args) + (format #t "Demo: ~a~%" args)) + + +* Changes to Scheme functions and syntax + +** Guardians have changed back to their original semantics + +Guardians now behave like described in the paper by Dybvig et al. In +particular, they no longer make guarantees about the order in which +they return objects, and they can no longer be greedy. + +They no longer drop cyclic data structures. + +The C function scm_make_guardian has been changed incompatibly and no +longer takes the 'greedy_p' argument. + +** New function hashx-remove! + +This function completes the set of 'hashx' functions. + +** The concept of dynamic roots has been factored into continuation + barriers and dynamic states. + +Each thread has a current dynamic state that carries the values of the +fluids. You can create and copy dynamic states and use them as the +second argument for 'eval'. See "Fluids and Dynamic States" in the +manual. + +To restrict the influence that captured continuations can have on the +control flow, you can errect continuation barriers. See "Continuation +Barriers" in the manual. + +The function call-with-dynamic-root now essentially temporarily +installs a new dynamic state and errects a continuation barrier. + +** The default load path no longer includes "." at the end. + +Automatically loading modules from the current directory should not +happen by default. If you want to allow it in a more controlled +manner, set the environment variable GUILE_LOAD_PATH or the Scheme +variable %load-path. + +** The uniform vector and array support has been overhauled. + +It now complies with SRFI-4 and the weird prototype based uniform +array creation has been deprecated. See the manual for more details. + +Some non-compatible changes have been made: + - characters can no longer be stored into byte arrays. + - strings and bit vectors are no longer considered to be uniform numeric + vectors. + - array-rank throws an error for non-arrays instead of returning zero. + - array-ref does no longer accept non-arrays when no indices are given. + +There is the new notion of 'generalized vectors' and corresponding +procedures like 'generalized-vector-ref'. Generalized vectors include +strings, bitvectors, ordinary vectors, and uniform numeric vectors. + +Arrays use generalized vectors as their storage, so that you still +have arrays of characters, bits, etc. However, uniform-array-read! +and uniform-array-write can no longer read/write strings and +bitvectors. + +** There is now support for copy-on-write substrings, mutation-sharing + substrings and read-only strings. + +Three new procedures are related to this: substring/shared, +substring/copy, and substring/read-only. See the manual for more +information. + +** Backtraces will now highlight the value that caused the error. + +By default, these values are enclosed in "{...}", such as in this +example: + + guile> (car 'a) + + Backtrace: + In current input: + 1: 0* [car {a}] + + :1:1: In procedure car in expression (car (quote a)): + :1:1: Wrong type (expecting pair): a + ABORT: (wrong-type-arg) + +The prefix and suffix used for highlighting can be set via the two new +printer options 'highlight-prefix' and 'highlight-suffix'. For +example, putting this into ~/.guile will output the bad value in bold +on an ANSI terminal: + + (print-set! highlight-prefix "\x1b[1m") + (print-set! highlight-suffix "\x1b[22m") + + +** 'gettext' support for internationalization has been added. + +See the manual for details. + +** New syntax '@' and '@@': + +You can now directly refer to variables exported from a module by +writing + + (@ MODULE-NAME VARIABLE-NAME) + +For example (@ (ice-9 pretty-print) pretty-print) will directly access +the pretty-print variable exported from the (ice-9 pretty-print) +module. You don't need to 'use' that module first. You can also use +'@' as a target of 'set!', as in (set! (@ mod var) val). + +The related syntax (@@ MODULE-NAME VARIABLE-NAME) works just like '@', +but it can also access variables that have not been exported. It is +intended only for kluges and temporary fixes and for debugging, not +for ordinary code. + +** Keyword syntax has been made more disciplined. + +Previously, the name of a keyword was read as a 'token' but printed as +a symbol. Now, it is read as a general Scheme datum which must be a +symbol. + +Previously: + + guile> #:12 + #:#{12}# + guile> #:#{12}# + #:#{\#{12}\#}# + guile> #:(a b c) + #:#{}# + ERROR: In expression (a b c): + Unbound variable: a + guile> #: foo + #:#{}# + ERROR: Unbound variable: foo + +Now: + + guile> #:12 + ERROR: Wrong type (expecting symbol): 12 + guile> #:#{12}# + #:#{12}# + guile> #:(a b c) + ERROR: Wrong type (expecting symbol): (a b c) + guile> #: foo + #:foo + +** The printing of symbols that might look like keywords can be + controlled. + +The new printer option 'quote-keywordish-symbols' controls how symbols +are printed that have a colon as their first or last character. The +default now is to only quote a symbol with #{...}# when the read +option 'keywords' is not '#f'. Thus: + + guile> (define foo (string->symbol ":foo")) + guile> (read-set! keywords #f) + guile> foo + :foo + guile> (read-set! keywords 'prefix) + guile> foo + #{:foo}# + guile> (print-set! quote-keywordish-symbols #f) + guile> foo + :foo + +** 'while' now provides 'break' and 'continue' + +break and continue were previously bound in a while loop, but not +documented, and continue didn't quite work properly. The undocumented +parameter to break which gave a return value for the while has been +dropped. + +** 'call-with-current-continuation' is now also available under the name + 'call/cc'. + +** The module system now checks for duplicate bindings. + +The module system now can check for name conflicts among imported +bindings. + +The behavior can be controlled by specifying one or more 'duplicates' +handlers. For example, to make Guile return an error for every name +collision, write: + +(define-module (foo) + :use-module (bar) + :use-module (baz) + :duplicates check) + +The new default behavior of the module system when a name collision +has been detected is to + + 1. Give priority to bindings marked as a replacement. + 2. Issue a warning (different warning if overriding core binding). + 3. Give priority to the last encountered binding (this corresponds to + the old behavior). + +If you want the old behavior back without replacements or warnings you +can add the line: + + (default-duplicate-binding-handler 'last) + +to your .guile init file. + +** New define-module option: :replace + +:replace works as :export, but, in addition, marks the binding as a +replacement. + +A typical example is `format' in (ice-9 format) which is a replacement +for the core binding `format'. + +** Adding prefixes to imported bindings in the module system + +There is now a new :use-module option :prefix. It can be used to add +a prefix to all imported bindings. + + (define-module (foo) + :use-module ((bar) :prefix bar:)) + +will import all bindings exported from bar, but rename them by adding +the prefix `bar:'. + +** Conflicting generic functions can be automatically merged. + +When two imported bindings conflict and they are both generic +functions, the two functions can now be merged automatically. This is +activated with the 'duplicates' handler 'merge-generics'. + +** New function: effective-version + +Returns the "effective" version number. This is just the normal full +version string without the final micro-version number. See "Changes +to the distribution" above. + +** New threading functions: parallel, letpar, par-map, and friends + +These are convenient ways to run calculations in parallel in new +threads. See "Parallel forms" in the manual for details. + +** New function 'try-mutex'. + +This function will attempt to lock a mutex but will return immediately +instead of blocking and indicate failure. + +** Waiting on a condition variable can have a timeout. + +The function 'wait-condition-variable' now takes a third, optional +argument that specifies the point in time where the waiting should be +aborted. + +** New function 'broadcast-condition-variable'. + +** New functions 'all-threads' and 'current-thread'. + +** Signals and system asyncs work better with threads. + +The function 'sigaction' now takes a fourth, optional, argument that +specifies the thread that the handler should run in. When the +argument is omitted, the handler will run in the thread that called +'sigaction'. + +Likewise, 'system-async-mark' takes a second, optional, argument that +specifies the thread that the async should run in. When it is +omitted, the async will run in the thread that called +'system-async-mark'. + +C code can use the new functions scm_sigaction_for_thread and +scm_system_async_mark_for_thread to pass the new thread argument. + +When a thread blocks on a mutex, a condition variable or is waiting +for IO to be possible, it will still execute system asyncs. This can +be used to interrupt such a thread by making it execute a 'throw', for +example. + +** The function 'system-async' is deprecated. + +You can now pass any zero-argument procedure to 'system-async-mark'. +The function 'system-async' will just return its argument unchanged +now. + +** New functions 'call-with-blocked-asyncs' and + 'call-with-unblocked-asyncs' + +The expression (call-with-blocked-asyncs PROC) will call PROC and will +block execution of system asyncs for the current thread by one level +while PROC runs. Likewise, call-with-unblocked-asyncs will call a +procedure and will unblock the execution of system asyncs by one +level for the current thread. + +Only system asyncs are affected by these functions. + +** The functions 'mask-signals' and 'unmask-signals' are deprecated. + +Use 'call-with-blocked-asyncs' or 'call-with-unblocked-asyncs' +instead. Those functions are easier to use correctly and can be +nested. + +** New function 'unsetenv'. + +** New macro 'define-syntax-public'. + +It works like 'define-syntax' and also exports the defined macro (but +only on top-level). + +** There is support for Infinity and NaNs. + +Following PLT Scheme, Guile can now work with infinite numbers, and +'not-a-numbers'. + +There is new syntax for numbers: "+inf.0" (infinity), "-inf.0" +(negative infinity), "+nan.0" (not-a-number), and "-nan.0" (same as +"+nan.0"). These numbers are inexact and have no exact counterpart. + +Dividing by an inexact zero returns +inf.0 or -inf.0, depending on the +sign of the dividend. The infinities are integers, and they answer #t +for both 'even?' and 'odd?'. The +nan.0 value is not an integer and is +not '=' to itself, but '+nan.0' is 'eqv?' to itself. + +For example + + (/ 1 0.0) + => +inf.0 + + (/ 0 0.0) + => +nan.0 + + (/ 0) + ERROR: Numerical overflow + +Two new predicates 'inf?' and 'nan?' can be used to test for the +special values. + +** Inexact zero can have a sign. + +Guile can now distinguish between plus and minus inexact zero, if your +platform supports this, too. The two zeros are equal according to +'=', but not according to 'eqv?'. For example + + (- 0.0) + => -0.0 + + (= 0.0 (- 0.0)) + => #t + + (eqv? 0.0 (- 0.0)) + => #f + +** Guile now has exact rationals. + +Guile can now represent fractions such as 1/3 exactly. Computing with +them is also done exactly, of course: + + (* 1/3 3/2) + => 1/2 + +** 'floor', 'ceiling', 'round' and 'truncate' now return exact numbers + for exact arguments. + +For example: (floor 2) now returns an exact 2 where in the past it +returned an inexact 2.0. Likewise, (floor 5/4) returns an exact 1. + +** inexact->exact no longer returns only integers. + +Without exact rationals, the closest exact number was always an +integer, but now inexact->exact returns the fraction that is exactly +equal to a floating point number. For example: + + (inexact->exact 1.234) + => 694680242521899/562949953421312 + +When you want the old behavior, use 'round' explicitly: + + (inexact->exact (round 1.234)) + => 1 + +** New function 'rationalize'. + +This function finds a simple fraction that is close to a given real +number. For example (and compare with inexact->exact above): + + (rationalize (inexact->exact 1.234) 1/2000) + => 58/47 + +Note that, as required by R5RS, rationalize returns only then an exact +result when both its arguments are exact. + +** 'odd?' and 'even?' work also for inexact integers. + +Previously, (odd? 1.0) would signal an error since only exact integers +were recognized as integers. Now (odd? 1.0) returns #t, (odd? 2.0) +returns #f and (odd? 1.5) signals an error. + +** Guile now has uninterned symbols. + +The new function 'make-symbol' will return an uninterned symbol. This +is a symbol that is unique and is guaranteed to remain unique. +However, uninterned symbols can not yet be read back in. + +Use the new function 'symbol-interned?' to check whether a symbol is +interned or not. + +** pretty-print has more options. + +The function pretty-print from the (ice-9 pretty-print) module can now +also be invoked with keyword arguments that control things like +maximum output width. See the manual for details. + +** Variables have no longer a special behavior for `equal?'. + +Previously, comparing two variables with `equal?' would recursivly +compare their values. This is no longer done. Variables are now only +`equal?' if they are `eq?'. + +** `(begin)' is now valid. + +You can now use an empty `begin' form. It will yield # +when evaluated and simply be ignored in a definition context. + +** Deprecated: procedure->macro + +Change your code to use 'define-macro' or r5rs macros. Also, be aware +that macro expansion will not be done during evaluation, but prior to +evaluation. + +** Soft ports now allow a `char-ready?' procedure + +The vector argument to `make-soft-port' can now have a length of +either 5 or 6. (Previously the length had to be 5.) The optional 6th +element is interpreted as an `input-waiting' thunk -- i.e. a thunk +that returns the number of characters that can be read immediately +without the soft port blocking. + +** Deprecated: undefine + +There is no replacement for undefine. + +** The functions make-keyword-from-dash-symbol and keyword-dash-symbol + have been discouraged. + +They are relics from a time where a keyword like #:foo was used +directly as a Tcl option "-foo" and thus keywords were internally +stored as a symbol with a starting dash. We now store a symbol +without the dash. + +Use symbol->keyword and keyword->symbol instead. + +** The `cheap' debug option is now obsolete + +Evaluator trap calls are now unconditionally "cheap" - in other words, +they pass a debug object to the trap handler rather than a full +continuation. The trap handler code can capture a full continuation +by using `call-with-current-continuation' in the usual way, if it so +desires. + +The `cheap' option is retained for now so as not to break existing +code which gets or sets it, but setting it now has no effect. It will +be removed in the next major Guile release. + +** Evaluator trap calls now support `tweaking' + +`Tweaking' means that the trap handler code can modify the Scheme +expression that is about to be evaluated (in the case of an +enter-frame trap) or the value that is being returned (in the case of +an exit-frame trap). The trap handler code indicates that it wants to +do this by returning a pair whose car is the symbol 'instead and whose +cdr is the modified expression or return value. + +* Changes to the C interface + +** The functions scm_hash_fn_remove_x and scm_hashx_remove_x no longer + take a 'delete' function argument. + +This argument makes no sense since the delete function is used to +remove a pair from an alist, and this must not be configurable. + +This is an incompatible change. + +** The GH interface is now subject to the deprecation mechanism + +The GH interface has been deprecated for quite some time but now it is +actually removed from Guile when it is configured with +--disable-deprecated. + +See the manual "Transitioning away from GH" for more information. + +** A new family of functions for converting between C values and + Scheme values has been added. + +These functions follow a common naming scheme and are designed to be +easier to use, thread-safe and more future-proof than the older +alternatives. + + - int scm_is_* (...) + + These are predicates that return a C boolean: 1 or 0. Instead of + SCM_NFALSEP, you can now use scm_is_true, for example. + + - scm_to_ (SCM val, ...) + + These are functions that convert a Scheme value into an appropriate + C value. For example, you can use scm_to_int to safely convert from + a SCM to an int. + + - SCM scm_from_ ( val, ...) + + These functions convert from a C type to a SCM value; for example, + scm_from_int for ints. + +There is a huge number of these functions, for numbers, strings, +symbols, vectors, etc. They are documented in the reference manual in +the API section together with the types that they apply to. + +** New functions for dealing with complex numbers in C have been added. + +The new functions are scm_c_make_rectangular, scm_c_make_polar, +scm_c_real_part, scm_c_imag_part, scm_c_magnitude and scm_c_angle. +They work like scm_make_rectangular etc but take or return doubles +directly. + +** The function scm_make_complex has been discouraged. + +Use scm_c_make_rectangular instead. + +** The INUM macros have been deprecated. + +A lot of code uses these macros to do general integer conversions, +although the macros only work correctly with fixnums. Use the +following alternatives. + + SCM_INUMP -> scm_is_integer or similar + SCM_NINUMP -> !scm_is_integer or similar + SCM_MAKINUM -> scm_from_int or similar + SCM_INUM -> scm_to_int or similar + + SCM_VALIDATE_INUM_* -> Do not use these; scm_to_int, etc. will + do the validating for you. + +** The scm_num2 and scm_2num functions and scm_make_real + have been discouraged. + +Use the newer scm_to_ and scm_from_ functions instead for +new code. The functions have been discouraged since they don't fit +the naming scheme. + +** The 'boolean' macros SCM_FALSEP etc have been discouraged. + +They have strange names, especially SCM_NFALSEP, and SCM_BOOLP +evaluates its argument twice. Use scm_is_true, etc. instead for new +code. + +** The macro SCM_EQ_P has been discouraged. + +Use scm_is_eq for new code, which fits better into the naming +conventions. + +** The macros SCM_CONSP, SCM_NCONSP, SCM_NULLP, and SCM_NNULLP have + been discouraged. + +Use the function scm_is_pair or scm_is_null instead. + +** The functions scm_round and scm_truncate have been deprecated and + are now available as scm_c_round and scm_c_truncate, respectively. + +These functions occupy the names that scm_round_number and +scm_truncate_number should have. + +** The functions scm_c_string2str, scm_c_substring2str, and + scm_c_symbol2str have been deprecated. + +Use scm_to_locale_stringbuf or similar instead, maybe together with +scm_substring. + +** New functions scm_c_make_string, scm_c_string_length, + scm_c_string_ref, scm_c_string_set_x, scm_c_substring, + scm_c_substring_shared, scm_c_substring_copy. + +These are like scm_make_string, scm_length, etc. but are slightly +easier to use from C. + +** The macros SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_LENGTH, + SCM_SYMBOL_CHARS, and SCM_SYMBOL_LENGTH have been deprecated. + +They export too many assumptions about the implementation of strings +and symbols that are no longer true in the presence of +mutation-sharing substrings and when Guile switches to some form of +Unicode. + +When working with strings, it is often best to use the normal string +functions provided by Guile, such as scm_c_string_ref, +scm_c_string_set_x, scm_string_append, etc. Be sure to look in the +manual since many more such functions are now provided than +previously. + +When you want to convert a SCM string to a C string, use the +scm_to_locale_string function or similar instead. For symbols, use +scm_symbol_to_string and then work with that string. Because of the +new string representation, scm_symbol_to_string does not need to copy +and is thus quite efficient. + +** Some string, symbol and keyword functions have been discouraged. + +They don't fit into the uniform naming scheme and are not explicit +about the character encoding. + +Replace according to the following table: + + scm_allocate_string -> scm_c_make_string + scm_take_str -> scm_take_locale_stringn + scm_take0str -> scm_take_locale_string + scm_mem2string -> scm_from_locale_stringn + scm_str2string -> scm_from_locale_string + scm_makfrom0str -> scm_from_locale_string + scm_mem2symbol -> scm_from_locale_symboln + scm_mem2uninterned_symbol -> scm_from_locale_stringn + scm_make_symbol + scm_str2symbol -> scm_from_locale_symbol + + SCM_SYMBOL_HASH -> scm_hashq + SCM_SYMBOL_INTERNED_P -> scm_symbol_interned_p + + scm_c_make_keyword -> scm_from_locale_keyword + +** The functions scm_keyword_to_symbol and sym_symbol_to_keyword are + now also available to C code. + +** SCM_KEYWORDP and SCM_KEYWORDSYM have been deprecated. + +Use scm_is_keyword and scm_keyword_to_symbol instead, but note that +the latter returns the true name of the keyword, not the 'dash name', +as SCM_KEYWORDSYM used to do. + +** A new way to access arrays in a thread-safe and efficient way has + been added. + +See the manual, node "Accessing Arrays From C". + +** The old uniform vector and bitvector implementations have been + unceremoniously removed. + +This implementation exposed the details of the tagging system of +Guile. Use the new C API explained in the manual in node "Uniform +Numeric Vectors" and "Bit Vectors", respectively. + +The following macros are gone: SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE, +SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG, +SCM_SET_UVECTOR_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE, +SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH, +SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG, +SCM_SET_BITVECTOR_LENGTH, SCM_BITVEC_REF, SCM_BITVEC_SET, +SCM_BITVEC_CLR. + +** The macros dealing with vectors have been deprecated. + +Use the new functions scm_is_vector, scm_vector_elements, +scm_vector_writable_elements, etc, or scm_is_simple_vector, +SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET, etc instead. See the +manual for more details. + +Deprecated are SCM_VECTORP, SCM_VELTS, SCM_VECTOR_MAX_LENGTH, +SCM_VECTOR_LENGTH, SCM_VECTOR_REF, SCM_VECTOR_SET, SCM_WRITABLE_VELTS. + +The following macros have been removed: SCM_VECTOR_BASE, +SCM_SET_VECTOR_BASE, SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH, +SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS. + +** Some C functions and macros related to arrays have been deprecated. + +Migrate according to the following table: + + scm_make_uve -> scm_make_typed_array, scm_make_u8vector etc. + scm_make_ra -> scm_make_array + scm_shap2ra -> scm_make_array + scm_cvref -> scm_c_generalized_vector_ref + scm_ra_set_contp -> do not use + scm_aind -> scm_array_handle_pos + scm_raprin1 -> scm_display or scm_write + + SCM_ARRAYP -> scm_is_array + SCM_ARRAY_NDIM -> scm_c_array_rank + SCM_ARRAY_DIMS -> scm_array_handle_dims + SCM_ARRAY_CONTP -> do not use + SCM_ARRAY_MEM -> do not use + SCM_ARRAY_V -> scm_array_handle_elements or similar + SCM_ARRAY_BASE -> do not use + +** SCM_CELL_WORD_LOC has been deprecated. + +Use the new macro SCM_CELL_OBJECT_LOC instead, which returns a pointer +to a SCM, as opposed to a pointer to a scm_t_bits. + +This was done to allow the correct use of pointers into the Scheme +heap. Previously, the heap words were of type scm_t_bits and local +variables and function arguments were of type SCM, making it +non-standards-conformant to have a pointer that can point to both. + +** New macros SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, etc. + +These macros should be used instead of SCM_CELL_WORD_2/3 to access the +second and third words of double smobs. Likewise for +SCM_SET_SMOB_DATA_2 and SCM_SET_SMOB_DATA_3. + +Also, there is SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS that should be +used to get and set the 16 exra bits in the zeroth word of a smob. + +And finally, there is SCM_SMOB_OBJECT and SCM_SMOB_SET_OBJECT for +accesing the first immediate word of a smob as a SCM value, and there +is SCM_SMOB_OBJECT_LOC for getting a pointer to the first immediate +smob word. Like wise for SCM_SMOB_OBJECT_2, etc. + +** New way to deal with non-local exits and re-entries. + +There is a new set of functions that essentially do what +scm_internal_dynamic_wind does, but in a way that is more convenient +for C code in some situations. Here is a quick example of how to +prevent a potential memory leak: + + void + foo () + { + char *mem; + + scm_dynwind_begin (0); + + mem = scm_malloc (100); + scm_dynwind_unwind_handler (free, mem, SCM_F_WIND_EXPLICITLY); + + /* MEM would leak if BAR throws an error. + SCM_DYNWIND_UNWIND_HANDLER frees it nevertheless. + */ + + bar (); + + scm_dynwind_end (); + + /* Because of SCM_F_WIND_EXPLICITLY, MEM will be freed by + SCM_DYNWIND_END as well. + */ + } + +For full documentation, see the node "Dynamic Wind" in the manual. + +** New function scm_dynwind_free + +This function calls 'free' on a given pointer when a dynwind context +is left. Thus the call to scm_dynwind_unwind_handler above could be +replaced with simply scm_dynwind_free (mem). + +** New functions scm_c_call_with_blocked_asyncs and + scm_c_call_with_unblocked_asyncs + +Like scm_call_with_blocked_asyncs etc. but for C functions. + +** New functions scm_dynwind_block_asyncs and scm_dynwind_unblock_asyncs + +In addition to scm_c_call_with_blocked_asyncs you can now also use +scm_dynwind_block_asyncs in a 'dynwind context' (see above). Likewise for +scm_c_call_with_unblocked_asyncs and scm_dynwind_unblock_asyncs. + +** The macros SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS, + SCM_REALLOW_INTS have been deprecated. + +They do no longer fulfill their original role of blocking signal +delivery. Depending on what you want to achieve, replace a pair of +SCM_DEFER_INTS and SCM_ALLOW_INTS with a dynwind context that locks a +mutex, blocks asyncs, or both. See node "Critical Sections" in the +manual. + +** The value 'scm_mask_ints' is no longer writable. + +Previously, you could set scm_mask_ints directly. This is no longer +possible. Use scm_c_call_with_blocked_asyncs and +scm_c_call_with_unblocked_asyncs instead. + +** New way to temporarily set the current input, output or error ports + +C code can now use scm_dynwind_current__port in a 'dynwind +context' (see above). is one of "input", "output" or "error". + +** New way to temporarily set fluids + +C code can now use scm_dynwind_fluid in a 'dynwind context' (see +above) to temporarily set the value of a fluid. + +** New types scm_t_intmax and scm_t_uintmax. + +On platforms that have them, these types are identical to intmax_t and +uintmax_t, respectively. On other platforms, they are identical to +the largest integer types that Guile knows about. + +** The functions scm_unmemocopy and scm_unmemoize have been removed. + +You should not have used them. + +** Many public #defines with generic names have been made private. + +#defines with generic names like HAVE_FOO or SIZEOF_FOO have been made +private or renamed with a more suitable public name. + +** The macro SCM_TYP16S has been deprecated. + +This macro is not intended for public use. + +** The macro SCM_SLOPPY_INEXACTP has been deprecated. + +Use scm_is_true (scm_inexact_p (...)) instead. + +** The macro SCM_SLOPPY_REALP has been deprecated. + +Use scm_is_real instead. + +** The macro SCM_SLOPPY_COMPLEXP has been deprecated. + +Use scm_is_complex instead. + +** Some preprocessor defines have been deprecated. + +These defines indicated whether a certain feature was present in Guile +or not. Going forward, assume that the features are always present. + +The macros are: USE_THREADS, GUILE_ISELECT, READER_EXTENSIONS, +DEBUG_EXTENSIONS, DYNAMIC_LINKING. + +The following macros have been removed completely: MEMOIZE_LOCALS, +SCM_RECKLESS, SCM_CAUTIOUS. + +** The preprocessor define STACK_DIRECTION has been deprecated. + +There should be no need to know about the stack direction for ordinary +programs. + +** New function: scm_effective_version + +Returns the "effective" version number. This is just the normal full +version string without the final micro-version number. See "Changes +to the distribution" above. + +** The function scm_call_with_new_thread has a new prototype. + +Instead of taking a list with the thunk and handler, these two +arguments are now passed directly: + + SCM scm_call_with_new_thread (SCM thunk, SCM handler); + +This is an incompatible change. + +** New snarfer macro SCM_DEFINE_PUBLIC. + +This is like SCM_DEFINE, but also calls scm_c_export for the defined +function in the init section. + +** The snarfer macro SCM_SNARF_INIT is now officially supported. + +** Garbage collector rewrite. + +The garbage collector is cleaned up a lot, and now uses lazy +sweeping. This is reflected in the output of (gc-stats); since cells +are being freed when they are allocated, the cells-allocated field +stays roughly constant. + +For malloc related triggers, the behavior is changed. It uses the same +heuristic as the cell-triggered collections. It may be tuned with the +environment variables GUILE_MIN_YIELD_MALLOC. This is the percentage +for minimum yield of malloc related triggers. The default is 40. +GUILE_INIT_MALLOC_LIMIT sets the initial trigger for doing a GC. The +default is 200 kb. + +Debugging operations for the freelist have been deprecated, along with +the C variables that control garbage collection. The environment +variables GUILE_MAX_SEGMENT_SIZE, GUILE_INIT_SEGMENT_SIZE_2, +GUILE_INIT_SEGMENT_SIZE_1, and GUILE_MIN_YIELD_2 should be used. + +For understanding the memory usage of a GUILE program, the routine +gc-live-object-stats returns an alist containing the number of live +objects for every type. + + +** The function scm_definedp has been renamed to scm_defined_p + +The name scm_definedp is deprecated. + +** The struct scm_cell type has been renamed to scm_t_cell + +This is in accordance to Guile's naming scheme for types. Note that +the name scm_cell is now used for a function that allocates and +initializes a new cell (see below). + +** New functions for memory management + +A new set of functions for memory management has been added since the +old way (scm_must_malloc, scm_must_free, etc) was error prone and +indeed, Guile itself contained some long standing bugs that could +cause aborts in long running programs. + +The new functions are more symmetrical and do not need cooperation +from smob free routines, among other improvements. + +The new functions are scm_malloc, scm_realloc, scm_calloc, scm_strdup, +scm_strndup, scm_gc_malloc, scm_gc_calloc, scm_gc_realloc, +scm_gc_free, scm_gc_register_collectable_memory, and +scm_gc_unregister_collectable_memory. Refer to the manual for more +details and for upgrading instructions. + +The old functions for memory management have been deprecated. They +are: scm_must_malloc, scm_must_realloc, scm_must_free, +scm_must_strdup, scm_must_strndup, scm_done_malloc, scm_done_free. + +** Declarations of exported features are marked with SCM_API. + +Every declaration of a feature that belongs to the exported Guile API +has been marked by adding the macro "SCM_API" to the start of the +declaration. This macro can expand into different things, the most +common of which is just "extern" for Unix platforms. On Win32, it can +be used to control which symbols are exported from a DLL. + +If you `#define SCM_IMPORT' before including , SCM_API +will expand into "__declspec (dllimport) extern", which is needed for +linking to the Guile DLL in Windows. + +There are also SCM_RL_IMPORT, SCM_SRFI1314_IMPORT, and +SCM_SRFI4_IMPORT, for the corresponding libraries. + +** SCM_NEWCELL and SCM_NEWCELL2 have been deprecated. + +Use the new functions scm_cell and scm_double_cell instead. The old +macros had problems because with them allocation and initialization +was separated and the GC could sometimes observe half initialized +cells. Only careful coding by the user of SCM_NEWCELL and +SCM_NEWCELL2 could make this safe and efficient. + +** CHECK_ENTRY, CHECK_APPLY and CHECK_EXIT have been deprecated. + +Use the variables scm_check_entry_p, scm_check_apply_p and scm_check_exit_p +instead. + +** SRCBRKP has been deprecated. + +Use scm_c_source_property_breakpoint_p instead. + +** Deprecated: scm_makmacro + +Change your code to use either scm_makmmacro or to define macros in +Scheme, using 'define-macro'. + +** New function scm_c_port_for_each. + +This function is like scm_port_for_each but takes a pointer to a C +function as the callback instead of a SCM value. + +** The names scm_internal_select, scm_thread_sleep, and + scm_thread_usleep have been discouraged. + +Use scm_std_select, scm_std_sleep, scm_std_usleep instead. + +** The GC can no longer be blocked. + +The global flags scm_gc_heap_lock and scm_block_gc have been removed. +The GC can now run (partially) concurrently with other code and thus +blocking it is not well defined. + +** Many definitions have been removed that were previously deprecated. + +scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify, s_t_ify, +scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify, scm_m_0_ify, s_1_ify, +scm_m_1_ify, scm_debug_newcell, scm_debug_newcell2, +scm_tc16_allocated, SCM_SET_SYMBOL_HASH, SCM_IM_NIL_IFY, SCM_IM_T_IFY, +SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY, SCM_GC_SET_ALLOCATED, +scm_debug_newcell, scm_debug_newcell2, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, +SCM_FPE_SIGNAL, SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, +SCM_GC_SIGNAL, SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, +SCM_NUM_SIGS, scm_top_level_lookup_closure_var, +*top-level-lookup-closure*, scm_system_transformer, scm_eval_3, +scm_eval2, root_module_lookup_closure, SCM_SLOPPY_STRINGP, +SCM_RWSTRINGP, scm_read_only_string_p, scm_make_shared_substring, +scm_tc7_substring, sym_huh, SCM_VARVCELL, SCM_UDVARIABLEP, +SCM_DEFVARIABLEP, scm_mkbig, scm_big2inum, scm_adjbig, scm_normbig, +scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl, SCM_FIXNUM_BIT, +SCM_SETCHARS, SCM_SLOPPY_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, +SCM_LENGTH_MAX, SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, +SCM_ROCHARS, SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, +scm_sym2vcell, scm_intern, scm_intern0, scm_sysintern, scm_sysintern0, +scm_sysintern0_no_module_lookup, scm_init_symbols_deprecated, +scm_vector_set_length_x, scm_contregs, scm_debug_info, +scm_debug_frame, SCM_DSIDEVAL, SCM_CONST_LONG, SCM_VCELL, +SCM_GLOBAL_VCELL, SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT, +SCM_HUGE_LENGTH, SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING, +SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY, +SCM_VALIDATE_RWSTRING, DIGITS, scm_small_istr2int, scm_istr2int, +scm_istr2flo, scm_istring2number, scm_istr2int, scm_istr2flo, +scm_istring2number, scm_vtable_index_vcell, scm_si_vcell, SCM_ECONSP, +SCM_NECONSP, SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, +SCM_GLOC_VAL_LOC, scm_make_gloc, scm_gloc_p, scm_tc16_variable, +SCM_CHARS, SCM_LENGTH, SCM_SET_STRING_CHARS, SCM_SET_STRING_LENGTH. + +* Changes to bundled modules + +** (ice-9 debug) + +Using the (ice-9 debug) module no longer automatically switches Guile +to use the debugging evaluator. If you want to switch to the +debugging evaluator (which is needed for backtrace information if you +hit an error), please add an explicit "(debug-enable 'debug)" to your +code just after the code to use (ice-9 debug). + + +Changes since Guile 1.4: + +* Changes to the distribution + +** A top-level TODO file is included. + +** Guile now uses a versioning scheme similar to that of the Linux kernel. + +Guile now always uses three numbers to represent the version, +i.e. "1.6.5". The first number, 1, is the major version number, the +second number, 6, is the minor version number, and the third number, +5, is the micro version number. Changes in major version number +indicate major changes in Guile. + +Minor version numbers that are even denote stable releases, and odd +minor version numbers denote development versions (which may be +unstable). The micro version number indicates a minor sub-revision of +a given MAJOR.MINOR release. + +In keeping with the new scheme, (minor-version) and scm_minor_version +no longer return everything but the major version number. They now +just return the minor version number. Two new functions +(micro-version) and scm_micro_version have been added to report the +micro version number. + +In addition, ./GUILE-VERSION now defines GUILE_MICRO_VERSION. + +** New preprocessor definitions are available for checking versions. + +version.h now #defines SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and +SCM_MICRO_VERSION to the appropriate integer values. + +** Guile now actively warns about deprecated features. + +The new configure option `--enable-deprecated=LEVEL' and the +environment variable GUILE_WARN_DEPRECATED control this mechanism. +See INSTALL and README for more information. + +** Guile is much more likely to work on 64-bit architectures. + +Guile now compiles and passes "make check" with only two UNRESOLVED GC +cases on Alpha and ia64 based machines now. Thanks to John Goerzen +for the use of a test machine, and thanks to Stefan Jahn for ia64 +patches. + +** New functions: setitimer and getitimer. + +These implement a fairly direct interface to the libc functions of the +same name. + +** The #. reader extension is now disabled by default. + +For safety reasons, #. evaluation is disabled by default. To +re-enable it, set the fluid read-eval? to #t. For example: + + (fluid-set! read-eval? #t) + +but make sure you realize the potential security risks involved. With +read-eval? enabled, reading a data file from an untrusted source can +be dangerous. + +** New SRFI modules have been added: + +SRFI-0 `cond-expand' is now supported in Guile, without requiring +using a module. + +(srfi srfi-1) is a library containing many useful pair- and list-processing + procedures. + +(srfi srfi-2) exports and-let*. + +(srfi srfi-4) implements homogeneous numeric vector datatypes. + +(srfi srfi-6) is a dummy module for now, since guile already provides + all of the srfi-6 procedures by default: open-input-string, + open-output-string, get-output-string. + +(srfi srfi-8) exports receive. + +(srfi srfi-9) exports define-record-type. + +(srfi srfi-10) exports define-reader-ctor and implements the reader + extension #,(). + +(srfi srfi-11) exports let-values and let*-values. + +(srfi srfi-13) implements the SRFI String Library. + +(srfi srfi-14) implements the SRFI Character-Set Library. + +(srfi srfi-17) implements setter and getter-with-setter and redefines + some accessor procedures as procedures with getters. (such as car, + cdr, vector-ref etc.) + +(srfi srfi-19) implements the SRFI Time/Date Library. + +** New scripts / "executable modules" + +Subdirectory "scripts" contains Scheme modules that are packaged to +also be executable as scripts. At this time, these scripts are available: + + display-commentary + doc-snarf + generate-autoload + punify + read-scheme-source + use2dot + +See README there for more info. + +These scripts can be invoked from the shell with the new program +"guile-tools", which keeps track of installation directory for you. +For example: + + $ guile-tools display-commentary srfi/*.scm + +guile-tools is copied to the standard $bindir on "make install". + +** New module (ice-9 stack-catch): + +stack-catch is like catch, but saves the current state of the stack in +the fluid the-last-stack. This fluid can be useful when using the +debugger and when re-throwing an error. + +** The module (ice-9 and-let*) has been renamed to (ice-9 and-let-star) + +This has been done to prevent problems on lesser operating systems +that can't tolerate `*'s in file names. The exported macro continues +to be named `and-let*', of course. + +On systems that support it, there is also a compatibility module named +(ice-9 and-let*). It will go away in the next release. + +** New modules (oop goops) etc.: + + (oop goops) + (oop goops describe) + (oop goops save) + (oop goops active-slot) + (oop goops composite-slot) + +The Guile Object Oriented Programming System (GOOPS) has been +integrated into Guile. For further information, consult the GOOPS +manual and tutorial in the `doc' directory. + +** New module (ice-9 rdelim). + +This exports the following procedures which were previously defined +in the default environment: + +read-line read-line! read-delimited read-delimited! %read-delimited! +%read-line write-line + +For backwards compatibility the definitions are still imported into the +default environment in this version of Guile. However you should add: + +(use-modules (ice-9 rdelim)) + +to any program which uses the definitions, since this may change in +future. + +Alternatively, if guile-scsh is installed, the (scsh rdelim) module +can be used for similar functionality. + +** New module (ice-9 rw) + +This is a subset of the (scsh rw) module from guile-scsh. Currently +it defines two procedures: + +*** New function: read-string!/partial str [port_or_fdes [start [end]]] + + Read characters from a port or file descriptor into a string STR. + A port must have an underlying file descriptor -- a so-called + fport. This procedure is scsh-compatible and can efficiently read + large strings. + +*** New function: write-string/partial str [port_or_fdes [start [end]]] + + Write characters from a string STR to a port or file descriptor. + A port must have an underlying file descriptor -- a so-called + fport. This procedure is mostly compatible and can efficiently + write large strings. + +** New module (ice-9 match) + +This module includes Andrew K. Wright's pattern matcher. See +ice-9/match.scm for brief description or + + http://www.star-lab.com/wright/code.html + +for complete documentation. + +** New module (ice-9 buffered-input) + +This module provides procedures to construct an input port from an +underlying source of input that reads and returns its input in chunks. +The underlying input source is a Scheme procedure, specified by the +caller, which the port invokes whenever it needs more input. + +This is useful when building an input port whose back end is Readline +or a UI element such as the GtkEntry widget. + +** Documentation + +The reference and tutorial documentation that was previously +distributed separately, as `guile-doc', is now included in the core +Guile distribution. The documentation consists of the following +manuals. + +- The Guile Tutorial (guile-tut.texi) contains a tutorial introduction + to using Guile. + +- The Guile Reference Manual (guile.texi) contains (or is intended to + contain) reference documentation on all aspects of Guile. + +- The GOOPS Manual (goops.texi) contains both tutorial-style and + reference documentation for using GOOPS, Guile's Object Oriented + Programming System. + +- The Revised^5 Report on the Algorithmic Language Scheme + (r5rs.texi). + +See the README file in the `doc' directory for more details. + +** There are a couple of examples in the examples/ directory now. + +* Changes to the stand-alone interpreter + +** New command line option `--use-srfi' + +Using this option, SRFI modules can be loaded on startup and be +available right from the beginning. This makes programming portable +Scheme programs easier. + +The option `--use-srfi' expects a comma-separated list of numbers, +each representing a SRFI number to be loaded into the interpreter +before starting evaluating a script file or the REPL. Additionally, +the feature identifier for the loaded SRFIs is recognized by +`cond-expand' when using this option. + +Example: +$ guile --use-srfi=8,13 +guile> (receive (x z) (values 1 2) (+ 1 2)) +3 +guile> (string-pad "bla" 20) +" bla" + +** Guile now always starts up in the `(guile-user)' module. + +Previously, scripts executed via the `-s' option would run in the +`(guile)' module and the repl would run in the `(guile-user)' module. +Now every user action takes place in the `(guile-user)' module by +default. + +* Changes to Scheme functions and syntax + +** Character classifiers work for non-ASCII characters. + +The predicates `char-alphabetic?', `char-numeric?', +`char-whitespace?', `char-lower?', `char-upper?' and `char-is-both?' +no longer check whether their arguments are ASCII characters. +Previously, a character would only be considered alphabetic when it +was also ASCII, for example. + +** Previously deprecated Scheme functions have been removed: + + tag - no replacement. + fseek - replaced by seek. + list* - replaced by cons*. + +** It's now possible to create modules with controlled environments + +Example: + +(use-modules (ice-9 safe)) +(define m (make-safe-module)) +;;; m will now be a module containing only a safe subset of R5RS +(eval '(+ 1 2) m) --> 3 +(eval 'load m) --> ERROR: Unbound variable: load + +** Evaluation of "()", the empty list, is now an error. + +Previously, the expression "()" evaluated to the empty list. This has +been changed to signal a "missing expression" error. The correct way +to write the empty list as a literal constant is to use quote: "'()". + +** New concept of `Guile Extensions'. + +A Guile Extension is just a ordinary shared library that can be linked +at run-time. We found it advantageous to give this simple concept a +dedicated name to distinguish the issues related to shared libraries +from the issues related to the module system. + +*** New function: load-extension + +Executing (load-extension lib init) is mostly equivalent to + + (dynamic-call init (dynamic-link lib)) + +except when scm_register_extension has been called previously. +Whenever appropriate, you should use `load-extension' instead of +dynamic-link and dynamic-call. + +*** New C function: scm_c_register_extension + +This function registers a initialization function for use by +`load-extension'. Use it when you don't want specific extensions to +be loaded as shared libraries (for example on platforms that don't +support dynamic linking). + +** Auto-loading of compiled-code modules is deprecated. + +Guile used to be able to automatically find and link a shared +library to satisfy requests for a module. For example, the module +`(foo bar)' could be implemented by placing a shared library named +"foo/libbar.so" (or with a different extension) in a directory on the +load path of Guile. + +This has been found to be too tricky, and is no longer supported. The +shared libraries are now called "extensions". You should now write a +small Scheme file that calls `load-extension' to load the shared +library and initialize it explicitly. + +The shared libraries themselves should be installed in the usual +places for shared libraries, with names like "libguile-foo-bar". + +For example, place this into a file "foo/bar.scm" + + (define-module (foo bar)) + + (load-extension "libguile-foo-bar" "foobar_init") + +** Backward incompatible change: eval EXP ENVIRONMENT-SPECIFIER + +`eval' is now R5RS, that is it takes two arguments. +The second argument is an environment specifier, i.e. either + + (scheme-report-environment 5) + (null-environment 5) + (interaction-environment) + +or + + any module. + +** The module system has been made more disciplined. + +The function `eval' will save and restore the current module around +the evaluation of the specified expression. While this expression is +evaluated, `(current-module)' will now return the right module, which +is the module specified as the second argument to `eval'. + +A consequence of this change is that `eval' is not particularly +useful when you want allow the evaluated code to change what module is +designated as the current module and have this change persist from one +call to `eval' to the next. The read-eval-print-loop is an example +where `eval' is now inadequate. To compensate, there is a new +function `primitive-eval' that does not take a module specifier and +that does not save/restore the current module. You should use this +function together with `set-current-module', `current-module', etc +when you want to have more control over the state that is carried from +one eval to the next. + +Additionally, it has been made sure that forms that are evaluated at +the top level are always evaluated with respect to the current module. +Previously, subforms of top-level forms such as `begin', `case', +etc. did not respect changes to the current module although these +subforms are at the top-level as well. + +To prevent strange behavior, the forms `define-module', +`use-modules', `use-syntax', and `export' have been restricted to only +work on the top level. The forms `define-public' and +`defmacro-public' only export the new binding on the top level. They +behave just like `define' and `defmacro', respectively, when they are +used in a lexical environment. + +Also, `export' will no longer silently re-export bindings imported +from a used module. It will emit a `deprecation' warning and will +cease to perform any re-export in the next version. If you actually +want to re-export bindings, use the new `re-export' in place of +`export'. The new `re-export' will not make copies of variables when +rexporting them, as `export' did wrongly. + +** Module system now allows selection and renaming of imported bindings + +Previously, when using `use-modules' or the `#:use-module' clause in +the `define-module' form, all the bindings (association of symbols to +values) for imported modules were added to the "current module" on an +as-is basis. This has been changed to allow finer control through two +new facilities: selection and renaming. + +You can now select which of the imported module's bindings are to be +visible in the current module by using the `:select' clause. This +clause also can be used to rename individual bindings. For example: + + ;; import all bindings no questions asked + (use-modules (ice-9 common-list)) + + ;; import four bindings, renaming two of them; + ;; the current module sees: every some zonk-y zonk-n + (use-modules ((ice-9 common-list) + :select (every some + (remove-if . zonk-y) + (remove-if-not . zonk-n)))) + +You can also programmatically rename all selected bindings using the +`:renamer' clause, which specifies a proc that takes a symbol and +returns another symbol. Because it is common practice to use a prefix, +we now provide the convenience procedure `symbol-prefix-proc'. For +example: + + ;; import four bindings, renaming two of them specifically, + ;; and all four w/ prefix "CL:"; + ;; the current module sees: CL:every CL:some CL:zonk-y CL:zonk-n + (use-modules ((ice-9 common-list) + :select (every some + (remove-if . zonk-y) + (remove-if-not . zonk-n)) + :renamer (symbol-prefix-proc 'CL:))) + + ;; import four bindings, renaming two of them specifically, + ;; and all four by upcasing. + ;; the current module sees: EVERY SOME ZONK-Y ZONK-N + (define (upcase-symbol sym) + (string->symbol (string-upcase (symbol->string sym)))) + + (use-modules ((ice-9 common-list) + :select (every some + (remove-if . zonk-y) + (remove-if-not . zonk-n)) + :renamer upcase-symbol)) + +Note that programmatic renaming is done *after* individual renaming. +Also, the above examples show `use-modules', but the same facilities are +available for the `#:use-module' clause of `define-module'. + +See manual for more info. + +** The semantics of guardians have changed. + +The changes are for the most part compatible. An important criterion +was to keep the typical usage of guardians as simple as before, but to +make the semantics safer and (as a result) more useful. + +*** All objects returned from guardians are now properly alive. + +It is now guaranteed that any object referenced by an object returned +from a guardian is alive. It's now impossible for a guardian to +return a "contained" object before its "containing" object. + +One incompatible (but probably not very important) change resulting +from this is that it is no longer possible to guard objects that +indirectly reference themselves (i.e. are parts of cycles). If you do +so accidentally, you'll get a warning. + +*** There are now two types of guardians: greedy and sharing. + +If you call (make-guardian #t) or just (make-guardian), you'll get a +greedy guardian, and for (make-guardian #f) a sharing guardian. + +Greedy guardians are the default because they are more "defensive". +You can only greedily guard an object once. If you guard an object +more than once, once in a greedy guardian and the rest of times in +sharing guardians, then it is guaranteed that the object won't be +returned from sharing guardians as long as it is greedily guarded +and/or alive. + +Guardians returned by calls to `make-guardian' can now take one more +optional parameter, which says whether to throw an error in case an +attempt is made to greedily guard an object that is already greedily +guarded. The default is true, i.e. throw an error. If the parameter +is false, the guardian invocation returns #t if guarding was +successful and #f if it wasn't. + +Also, since greedy guarding is, in effect, a side-effecting operation +on objects, a new function is introduced: `destroy-guardian!'. +Invoking this function on a guardian renders it unoperative and, if +the guardian is greedy, clears the "greedily guarded" property of the +objects that were guarded by it, thus undoing the side effect. + +Note that all this hair is hardly very important, since guardian +objects are usually permanent. + +** Continuations created by call-with-current-continuation now accept +any number of arguments, as required by R5RS. + +** New function `issue-deprecation-warning' + +This function is used to display the deprecation messages that are +controlled by GUILE_WARN_DEPRECATION as explained in the README. + + (define (id x) + (issue-deprecation-warning "`id' is deprecated. Use `identity' instead.") + (identity x)) + + guile> (id 1) + ;; `id' is deprecated. Use `identity' instead. + 1 + guile> (id 1) + 1 + +** New syntax `begin-deprecated' + +When deprecated features are included (as determined by the configure +option --enable-deprecated), `begin-deprecated' is identical to +`begin'. When deprecated features are excluded, it always evaluates +to `#f', ignoring the body forms. + +** New function `make-object-property' + +This function returns a new `procedure with setter' P that can be used +to attach a property to objects. When calling P as + + (set! (P obj) val) + +where `obj' is any kind of object, it attaches `val' to `obj' in such +a way that it can be retrieved by calling P as + + (P obj) + +This function will replace procedure properties, symbol properties and +source properties eventually. + +** Module (ice-9 optargs) now uses keywords instead of `#&'. + +Instead of #&optional, #&key, etc you should now use #:optional, +#:key, etc. Since #:optional is a keyword, you can write it as just +:optional when (read-set! keywords 'prefix) is active. + +The old reader syntax `#&' is still supported, but deprecated. It +will be removed in the next release. + +** New define-module option: pure + +Tells the module system not to include any bindings from the root +module. + +Example: + +(define-module (totally-empty-module) + :pure) + +** New define-module option: export NAME1 ... + +Export names NAME1 ... + +This option is required if you want to be able to export bindings from +a module which doesn't import one of `define-public' or `export'. + +Example: + + (define-module (foo) + :pure + :use-module (ice-9 r5rs) + :export (bar)) + + ;;; Note that we're pure R5RS below this point! + + (define (bar) + ...) + +** New function: object->string OBJ + +Return a Scheme string obtained by printing a given object. + +** New function: port? X + +Returns a boolean indicating whether X is a port. Equivalent to +`(or (input-port? X) (output-port? X))'. + +** New function: file-port? + +Determines whether a given object is a port that is related to a file. + +** New function: port-for-each proc + +Apply PROC to each port in the Guile port table in turn. The return +value is unspecified. More specifically, PROC is applied exactly once +to every port that exists in the system at the time PORT-FOR-EACH is +invoked. Changes to the port table while PORT-FOR-EACH is running +have no effect as far as PORT-FOR-EACH is concerned. + +** New function: dup2 oldfd newfd + +A simple wrapper for the `dup2' system call. Copies the file +descriptor OLDFD to descriptor number NEWFD, replacing the +previous meaning of NEWFD. Both OLDFD and NEWFD must be integers. +Unlike for dup->fdes or primitive-move->fdes, no attempt is made +to move away ports which are using NEWFD. The return value is +unspecified. + +** New function: close-fdes fd + +A simple wrapper for the `close' system call. Close file +descriptor FD, which must be an integer. Unlike close (*note +close: Ports and File Descriptors.), the file descriptor will be +closed even if a port is using it. The return value is +unspecified. + +** New function: crypt password salt + +Encrypts `password' using the standard unix password encryption +algorithm. + +** New function: chroot path + +Change the root directory of the running process to `path'. + +** New functions: getlogin, cuserid + +Return the login name or the user name of the current effective user +id, respectively. + +** New functions: getpriority which who, setpriority which who prio + +Get or set the priority of the running process. + +** New function: getpass prompt + +Read a password from the terminal, first displaying `prompt' and +disabling echoing. + +** New function: flock file operation + +Set/remove an advisory shared or exclusive lock on `file'. + +** New functions: sethostname name, gethostname + +Set or get the hostname of the machine the current process is running +on. + +** New function: mkstemp! tmpl + +mkstemp creates a new unique file in the file system and returns a +new buffered port open for reading and writing to the file. TMPL +is a string specifying where the file should be created: it must +end with `XXXXXX' and will be changed in place to return the name +of the temporary file. + +** New function: open-input-string string + +Return an input string port which delivers the characters from +`string'. This procedure, together with `open-output-string' and +`get-output-string' implements SRFI-6. + +** New function: open-output-string + +Return an output string port which collects all data written to it. +The data can then be retrieved by `get-output-string'. + +** New function: get-output-string + +Return the contents of an output string port. + +** New function: identity + +Return the argument. + +** socket, connect, accept etc., now have support for IPv6. IPv6 addresses + are represented in Scheme as integers with normal host byte ordering. + +** New function: inet-pton family address + +Convert a printable string network address into an integer. Note that +unlike the C version of this function, the result is an integer with +normal host byte ordering. FAMILY can be `AF_INET' or `AF_INET6'. +e.g., + + (inet-pton AF_INET "127.0.0.1") => 2130706433 + (inet-pton AF_INET6 "::1") => 1 + +** New function: inet-ntop family address + +Convert an integer network address into a printable string. Note that +unlike the C version of this function, the input is an integer with +normal host byte ordering. FAMILY can be `AF_INET' or `AF_INET6'. +e.g., + + (inet-ntop AF_INET 2130706433) => "127.0.0.1" + (inet-ntop AF_INET6 (- (expt 2 128) 1)) => + ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff + +** Deprecated: id + +Use `identity' instead. + +** Deprecated: -1+ + +Use `1-' instead. + +** Deprecated: return-it + +Do without it. + +** Deprecated: string-character-length + +Use `string-length' instead. + +** Deprecated: flags + +Use `logior' instead. + +** Deprecated: close-all-ports-except. + +This was intended for closing ports in a child process after a fork, +but it has the undesirable side effect of flushing buffers. +port-for-each is more flexible. + +** The (ice-9 popen) module now attempts to set up file descriptors in +the child process from the current Scheme ports, instead of using the +current values of file descriptors 0, 1, and 2 in the parent process. + +** Removed function: builtin-weak-bindings + +There is no such concept as a weak binding any more. + +** Removed constants: bignum-radix, scm-line-incrementors + +** define-method: New syntax mandatory. + +The new method syntax is now mandatory: + +(define-method (NAME ARG-SPEC ...) BODY ...) +(define-method (NAME ARG-SPEC ... . REST-ARG) BODY ...) + + ARG-SPEC ::= ARG-NAME | (ARG-NAME TYPE) + REST-ARG ::= ARG-NAME + +If you have old code using the old syntax, import +(oop goops old-define-method) before (oop goops) as in: + + (use-modules (oop goops old-define-method) (oop goops)) + +** Deprecated function: builtin-variable + Removed function: builtin-bindings + +There is no longer a distinction between builtin or other variables. +Use module system operations for all variables. + +** Lazy-catch handlers are no longer allowed to return. + +That is, a call to `throw', `error', etc is now guaranteed to not +return. + +** Bugfixes for (ice-9 getopt-long) + +This module is now tested using test-suite/tests/getopt-long.test. +The following bugs have been fixed: + +*** Parsing for options that are specified to have `optional' args now checks +if the next element is an option instead of unconditionally taking it as the +option arg. + +*** An error is now thrown for `--opt=val' when the option description +does not specify `(value #t)' or `(value optional)'. This condition used to +be accepted w/o error, contrary to the documentation. + +*** The error message for unrecognized options is now more informative. +It used to be "not a record", an artifact of the implementation. + +*** The error message for `--opt' terminating the arg list (no value), when +`(value #t)' is specified, is now more informative. It used to be "not enough +args". + +*** "Clumped" single-char args now preserve trailing string, use it as arg. +The expansion used to be like so: + + ("-abc5d" "--xyz") => ("-a" "-b" "-c" "--xyz") + +Note that the "5d" is dropped. Now it is like so: + + ("-abc5d" "--xyz") => ("-a" "-b" "-c" "5d" "--xyz") + +This enables single-char options to have adjoining arguments as long as their +constituent characters are not potential single-char options. + +** (ice-9 session) procedure `arity' now works with (ice-9 optargs) `lambda*' + +The `lambda*' and derivative forms in (ice-9 optargs) now set a procedure +property `arglist', which can be retrieved by `arity'. The result is that +`arity' can give more detailed information than before: + +Before: + + guile> (use-modules (ice-9 optargs)) + guile> (define* (foo #:optional a b c) a) + guile> (arity foo) + 0 or more arguments in `lambda*:G0'. + +After: + + guile> (arity foo) + 3 optional arguments: `a', `b' and `c'. + guile> (define* (bar a b #:key c d #:allow-other-keys) a) + guile> (arity bar) + 2 required arguments: `a' and `b', 2 keyword arguments: `c' + and `d', other keywords allowed. + guile> (define* (baz a b #:optional c #:rest r) a) + guile> (arity baz) + 2 required arguments: `a' and `b', 1 optional argument: `c', + the rest in `r'. + +* Changes to the C interface + +** Types have been renamed from scm_*_t to scm_t_*. + +This has been done for POSIX sake. It reserves identifiers ending +with "_t". What a concept. + +The old names are still available with status `deprecated'. + +** scm_t_bits (former scm_bits_t) is now a unsigned type. + +** Deprecated features have been removed. + +*** Macros removed + + SCM_INPORTP, SCM_OUTPORTP SCM_ICHRP, SCM_ICHR, SCM_MAKICHR + SCM_SETJMPBUF SCM_NSTRINGP SCM_NRWSTRINGP SCM_NVECTORP SCM_DOUBLE_CELLP + +*** C Functions removed + + scm_sysmissing scm_tag scm_tc16_flo scm_tc_flo + scm_fseek - replaced by scm_seek. + gc-thunk - replaced by after-gc-hook. + gh_int2scmb - replaced by gh_bool2scm. + scm_tc_dblr - replaced by scm_tc16_real. + scm_tc_dblc - replaced by scm_tc16_complex. + scm_list_star - replaced by scm_cons_star. + +** Deprecated: scm_makfromstr + +Use scm_mem2string instead. + +** Deprecated: scm_make_shared_substring + +Explicit shared substrings will disappear from Guile. + +Instead, "normal" strings will be implemented using sharing +internally, combined with a copy-on-write strategy. + +** Deprecated: scm_read_only_string_p + +The concept of read-only strings will disappear in next release of +Guile. + +** Deprecated: scm_sloppy_memq, scm_sloppy_memv, scm_sloppy_member + +Instead, use scm_c_memq or scm_memq, scm_memv, scm_member. + +** New functions: scm_call_0, scm_call_1, scm_call_2, scm_call_3 + +Call a procedure with the indicated number of arguments. See "Fly +Evaluation" in the manual. + +** New functions: scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3 + +Call a procedure with the indicated number of arguments and a list of +further arguments. See "Fly Evaluation" in the manual. + +** New functions: scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5 + +Create a list of the given number of elements. See "List +Constructors" in the manual. + +** Renamed function: scm_listify has been replaced by scm_list_n. + +** Deprecated macros: SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, +SCM_LIST5, SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9. + +Use functions scm_list_N instead. + +** New function: scm_c_read (SCM port, void *buffer, scm_sizet size) + +Used by an application to read arbitrary number of bytes from a port. +Same semantics as libc read, except that scm_c_read only returns less +than SIZE bytes if at end-of-file. + +Warning: Doesn't update port line and column counts! + +** New function: scm_c_write (SCM port, const void *ptr, scm_sizet size) + +Used by an application to write arbitrary number of bytes to an SCM +port. Similar semantics as libc write. However, unlike libc +write, scm_c_write writes the requested number of bytes and has no +return value. + +Warning: Doesn't update port line and column counts! + +** New function: scm_init_guile () + +In contrast to scm_boot_guile, scm_init_guile will return normally +after initializing Guile. It is not available on all systems, tho. + +** New functions: scm_str2symbol, scm_mem2symbol + +The function scm_str2symbol takes a const char* pointing to a zero-terminated +field of characters and creates a scheme symbol object from that C string. +The function scm_mem2symbol takes a const char* and a number of characters and +creates a symbol from the characters in that memory area. + +** New functions: scm_primitive_make_property + scm_primitive_property_ref + scm_primitive_property_set_x + scm_primitive_property_del_x + +These functions implement a new way to deal with object properties. +See libguile/properties.c for their documentation. + +** New function: scm_done_free (long size) + +This function is the inverse of scm_done_malloc. Use it to report the +amount of smob memory you free. The previous method, which involved +calling scm_done_malloc with negative argument, was somewhat +unintuitive (and is still available, of course). + +** New function: scm_c_memq (SCM obj, SCM list) + +This function provides a fast C level alternative for scm_memq for the case +that the list parameter is known to be a proper list. The function is a +replacement for scm_sloppy_memq, but is stricter in its requirements on its +list input parameter, since for anything else but a proper list the function's +behaviour is undefined - it may even crash or loop endlessly. Further, for +the case that the object is not found in the list, scm_c_memq returns #f which +is similar to scm_memq, but different from scm_sloppy_memq's behaviour. + +** New functions: scm_remember_upto_here_1, scm_remember_upto_here_2, +scm_remember_upto_here + +These functions replace the function scm_remember. + +** Deprecated function: scm_remember + +Use one of the new functions scm_remember_upto_here_1, +scm_remember_upto_here_2 or scm_remember_upto_here instead. + +** New function: scm_allocate_string + +This function replaces the function scm_makstr. + +** Deprecated function: scm_makstr + +Use the new function scm_allocate_string instead. + +** New global variable scm_gc_running_p introduced. + +Use this variable to find out if garbage collection is being executed. Up to +now applications have used scm_gc_heap_lock to test if garbage collection was +running, which also works because of the fact that up to know only the garbage +collector has set this variable. But, this is an implementation detail that +may change. Further, scm_gc_heap_lock is not set throughout gc, thus the use +of this variable is (and has been) not fully safe anyway. + +** New macros: SCM_BITVECTOR_MAX_LENGTH, SCM_UVECTOR_MAX_LENGTH + +Use these instead of SCM_LENGTH_MAX. + +** New macros: SCM_CONTINUATION_LENGTH, SCM_CCLO_LENGTH, SCM_STACK_LENGTH, +SCM_STRING_LENGTH, SCM_SYMBOL_LENGTH, SCM_UVECTOR_LENGTH, +SCM_BITVECTOR_LENGTH, SCM_VECTOR_LENGTH. + +Use these instead of SCM_LENGTH. + +** New macros: SCM_SET_CONTINUATION_LENGTH, SCM_SET_STRING_LENGTH, +SCM_SET_SYMBOL_LENGTH, SCM_SET_VECTOR_LENGTH, SCM_SET_UVECTOR_LENGTH, +SCM_SET_BITVECTOR_LENGTH + +Use these instead of SCM_SETLENGTH + +** New macros: SCM_STRING_CHARS, SCM_SYMBOL_CHARS, SCM_CCLO_BASE, +SCM_VECTOR_BASE, SCM_UVECTOR_BASE, SCM_BITVECTOR_BASE, SCM_COMPLEX_MEM, +SCM_ARRAY_MEM + +Use these instead of SCM_CHARS, SCM_UCHARS, SCM_ROCHARS, SCM_ROUCHARS or +SCM_VELTS. + +** New macros: SCM_SET_BIGNUM_BASE, SCM_SET_STRING_CHARS, +SCM_SET_SYMBOL_CHARS, SCM_SET_UVECTOR_BASE, SCM_SET_BITVECTOR_BASE, +SCM_SET_VECTOR_BASE + +Use these instead of SCM_SETCHARS. + +** New macro: SCM_BITVECTOR_P + +** New macro: SCM_STRING_COERCE_0TERMINATION_X + +Use instead of SCM_COERCE_SUBSTR. + +** New macros: SCM_DIR_OPEN_P, SCM_DIR_FLAG_OPEN + +For directory objects, use these instead of SCM_OPDIRP and SCM_OPN. + +** Deprecated macros: SCM_OUTOFRANGE, SCM_NALLOC, SCM_HUP_SIGNAL, +SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, +SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL, SCM_SIG_ORD, +SCM_ORD_SIG, SCM_NUM_SIGS, SCM_SYMBOL_SLOTS, SCM_SLOTS, SCM_SLOPPY_STRINGP, +SCM_VALIDATE_STRINGORSUBSTR, SCM_FREEP, SCM_NFREEP, SCM_CHARS, SCM_UCHARS, +SCM_VALIDATE_ROSTRING, SCM_VALIDATE_ROSTRING_COPY, +SCM_VALIDATE_NULLORROSTRING_COPY, SCM_ROLENGTH, SCM_LENGTH, SCM_HUGE_LENGTH, +SCM_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_COERCE_SUBSTR, +SCM_ROSTRINGP, SCM_RWSTRINGP, SCM_VALIDATE_RWSTRING, SCM_ROCHARS, +SCM_ROUCHARS, SCM_SETLENGTH, SCM_SETCHARS, SCM_LENGTH_MAX, SCM_GC8MARKP, +SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16, SCM_GCCDR, SCM_SUBR_DOC, +SCM_OPDIRP, SCM_VALIDATE_OPDIR, SCM_WTA, RETURN_SCM_WTA, SCM_CONST_LONG, +SCM_WNA, SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY, +SCM_VALIDATE_NUMBER_DEF_COPY, SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, +SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_SETAND_CAR, SCM_SETOR_CAR + +Use SCM_ASSERT_RANGE or SCM_VALIDATE_XXX_RANGE instead of SCM_OUTOFRANGE. +Use scm_memory_error instead of SCM_NALLOC. +Use SCM_STRINGP instead of SCM_SLOPPY_STRINGP. +Use SCM_VALIDATE_STRING instead of SCM_VALIDATE_STRINGORSUBSTR. +Use SCM_FREE_CELL_P instead of SCM_FREEP/SCM_NFREEP +Use a type specific accessor macro instead of SCM_CHARS/SCM_UCHARS. +Use a type specific accessor instead of SCM(_|_RO|_HUGE_)LENGTH. +Use SCM_VALIDATE_(SYMBOL|STRING) instead of SCM_VALIDATE_ROSTRING. +Use SCM_STRING_COERCE_0TERMINATION_X instead of SCM_COERCE_SUBSTR. +Use SCM_STRINGP or SCM_SYMBOLP instead of SCM_ROSTRINGP. +Use SCM_STRINGP instead of SCM_RWSTRINGP. +Use SCM_VALIDATE_STRING instead of SCM_VALIDATE_RWSTRING. +Use SCM_STRING_CHARS instead of SCM_ROCHARS. +Use SCM_STRING_UCHARS instead of SCM_ROUCHARS. +Use a type specific setter macro instead of SCM_SETLENGTH. +Use a type specific setter macro instead of SCM_SETCHARS. +Use a type specific length macro instead of SCM_LENGTH_MAX. +Use SCM_GCMARKP instead of SCM_GC8MARKP. +Use SCM_SETGCMARK instead of SCM_SETGC8MARK. +Use SCM_CLRGCMARK instead of SCM_CLRGC8MARK. +Use SCM_TYP16 instead of SCM_GCTYP16. +Use SCM_CDR instead of SCM_GCCDR. +Use SCM_DIR_OPEN_P instead of SCM_OPDIRP. +Use SCM_MISC_ERROR or SCM_WRONG_TYPE_ARG instead of SCM_WTA. +Use SCM_MISC_ERROR or SCM_WRONG_TYPE_ARG instead of RETURN_SCM_WTA. +Use SCM_VCELL_INIT instead of SCM_CONST_LONG. +Use SCM_WRONG_NUM_ARGS instead of SCM_WNA. +Use SCM_CONSP instead of SCM_SLOPPY_CONSP. +Use !SCM_CONSP instead of SCM_SLOPPY_NCONSP. + +** Removed function: scm_struct_init + +** Removed variable: scm_symhash_dim + +** Renamed function: scm_make_cont has been replaced by +scm_make_continuation, which has a different interface. + +** Deprecated function: scm_call_catching_errors + +Use scm_catch or scm_lazy_catch from throw.[ch] instead. + +** Deprecated function: scm_strhash + +Use scm_string_hash instead. + +** Deprecated function: scm_vector_set_length_x + +Instead, create a fresh vector of the desired size and copy the contents. + +** scm_gensym has changed prototype + +scm_gensym now only takes one argument. + +** Deprecated type tags: scm_tc7_ssymbol, scm_tc7_msymbol, scm_tcs_symbols, +scm_tc7_lvector + +There is now only a single symbol type scm_tc7_symbol. +The tag scm_tc7_lvector was not used anyway. + +** Deprecated function: scm_make_smob_type_mfpe, scm_set_smob_mfpe. + +Use scm_make_smob_type and scm_set_smob_XXX instead. + +** New function scm_set_smob_apply. + +This can be used to set an apply function to a smob type. + +** Deprecated function: scm_strprint_obj + +Use scm_object_to_string instead. + +** Deprecated function: scm_wta + +Use scm_wrong_type_arg, or another appropriate error signalling function +instead. + +** Explicit support for obarrays has been deprecated. + +Use `scm_str2symbol' and the generic hashtable functions instead. + +** The concept of `vcells' has been deprecated. + +The data type `variable' is now used exclusively. `Vcells' have been +a low-level concept so you are likely not affected by this change. + +*** Deprecated functions: scm_sym2vcell, scm_sysintern, + scm_sysintern0, scm_symbol_value0, scm_intern, scm_intern0. + +Use scm_c_define or scm_c_lookup instead, as appropriate. + +*** New functions: scm_c_module_lookup, scm_c_lookup, + scm_c_module_define, scm_c_define, scm_module_lookup, scm_lookup, + scm_module_define, scm_define. + +These functions work with variables instead of with vcells. + +** New functions for creating and defining `subr's and `gsubr's. + +The new functions more clearly distinguish between creating a subr (or +gsubr) object and adding it to the current module. + +These new functions are available: scm_c_make_subr, scm_c_define_subr, +scm_c_make_subr_with_generic, scm_c_define_subr_with_generic, +scm_c_make_gsubr, scm_c_define_gsubr, scm_c_make_gsubr_with_generic, +scm_c_define_gsubr_with_generic. + +** Deprecated functions: scm_make_subr, scm_make_subr_opt, + scm_make_subr_with_generic, scm_make_gsubr, + scm_make_gsubr_with_generic. + +Use the new ones from above instead. + +** C interface to the module system has changed. + +While we suggest that you avoid as many explicit module system +operations from C as possible for the time being, the C interface has +been made more similar to the high-level Scheme module system. + +*** New functions: scm_c_define_module, scm_c_use_module, + scm_c_export, scm_c_resolve_module. + +They mostly work like their Scheme namesakes. scm_c_define_module +takes a function that is called a context where the new module is +current. + +*** Deprecated functions: scm_the_root_module, scm_make_module, + scm_ensure_user_module, scm_load_scheme_module. + +Use the new functions instead. + +** Renamed function: scm_internal_with_fluids becomes + scm_c_with_fluids. + +scm_internal_with_fluids is available as a deprecated function. + +** New function: scm_c_with_fluid. + +Just like scm_c_with_fluids, but takes one fluid and one value instead +of lists of same. + +** Deprecated typedefs: long_long, ulong_long. + +They are of questionable utility and they pollute the global +namespace. + +** Deprecated typedef: scm_sizet + +It is of questionable utility now that Guile requires ANSI C, and is +oddly named. + +** Deprecated typedefs: scm_port_rw_active, scm_port, + scm_ptob_descriptor, scm_debug_info, scm_debug_frame, scm_fport, + scm_option, scm_rstate, scm_rng, scm_array, scm_array_dim. + +Made more compliant with the naming policy by adding a _t at the end. + +** Deprecated functions: scm_mkbig, scm_big2num, scm_adjbig, + scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl + +With the exception of the mysterious scm_2ulong2big, they are still +available under new names (scm_i_mkbig etc). These functions are not +intended to be used in user code. You should avoid dealing with +bignums directly, and should deal with numbers in general (which can +be bignums). + +** Change in behavior: scm_num2long, scm_num2ulong + +The scm_num2[u]long functions don't any longer accept an inexact +argument. This change in behavior is motivated by concordance with +R5RS: It is more common that a primitive doesn't want to accept an +inexact for an exact. + +** New functions: scm_short2num, scm_ushort2num, scm_int2num, + scm_uint2num, scm_size2num, scm_ptrdiff2num, scm_num2short, + scm_num2ushort, scm_num2int, scm_num2uint, scm_num2ptrdiff, + scm_num2size. + +These are conversion functions between the various ANSI C integral +types and Scheme numbers. NOTE: The scm_num2xxx functions don't +accept an inexact argument. + +** New functions: scm_float2num, scm_double2num, + scm_num2float, scm_num2double. + +These are conversion functions between the two ANSI C float types and +Scheme numbers. + +** New number validation macros: + SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,INT,UINT}[_DEF] + +See above. + +** New functions: scm_gc_protect_object, scm_gc_unprotect_object + +These are just nicer-named old scm_protect_object and +scm_unprotect_object. + +** Deprecated functions: scm_protect_object, scm_unprotect_object + +** New functions: scm_gc_[un]register_root, scm_gc_[un]register_roots + +These functions can be used to register pointers to locations that +hold SCM values. + +** Deprecated function: scm_create_hook. + +Its sins are: misleading name, non-modularity and lack of general +usefulness. + + +Changes since Guile 1.3.4: + +* Changes to the distribution + +** Trees from nightly snapshots and CVS now require you to run autogen.sh. + +We've changed the way we handle generated files in the Guile source +repository. As a result, the procedure for building trees obtained +from the nightly FTP snapshots or via CVS has changed: +- You must have appropriate versions of autoconf, automake, and + libtool installed on your system. See README for info on how to + obtain these programs. +- Before configuring the tree, you must first run the script + `autogen.sh' at the top of the source tree. + +The Guile repository used to contain not only source files, written by +humans, but also some generated files, like configure scripts and +Makefile.in files. Even though the contents of these files could be +derived mechanically from other files present, we thought it would +make the tree easier to build if we checked them into CVS. + +However, this approach means that minor differences between +developer's installed tools and habits affected the whole team. +So we have removed the generated files from the repository, and +added the autogen.sh script, which will reconstruct them +appropriately. + + +** configure now has experimental options to remove support for certain +features: + +--disable-arrays omit array and uniform array support +--disable-posix omit posix interfaces +--disable-networking omit networking interfaces +--disable-regex omit regular expression interfaces + +These are likely to become separate modules some day. + +** New configure option --enable-debug-freelist + +This enables a debugging version of SCM_NEWCELL(), and also registers +an extra primitive, the setter `gc-set-debug-check-freelist!'. + +Configure with the --enable-debug-freelist option to enable +the gc-set-debug-check-freelist! primitive, and then use: + +(gc-set-debug-check-freelist! #t) # turn on checking of the freelist +(gc-set-debug-check-freelist! #f) # turn off checking + +Checking of the freelist forces a traversal of the freelist and +a garbage collection before each allocation of a cell. This can +slow down the interpreter dramatically, so the setter should be used to +turn on this extra processing only when necessary. + +** New configure option --enable-debug-malloc + +Include code for debugging of calls to scm_must_malloc/realloc/free. + +Checks that + +1. objects freed by scm_must_free has been mallocated by scm_must_malloc +2. objects reallocated by scm_must_realloc has been allocated by + scm_must_malloc +3. reallocated objects are reallocated with the same what string + +But, most importantly, it records the number of allocated objects of +each kind. This is useful when searching for memory leaks. + +A Guile compiled with this option provides the primitive +`malloc-stats' which returns an alist with pairs of kind and the +number of objects of that kind. + +** All includes are now referenced relative to the root directory + +Since some users have had problems with mixups between Guile and +system headers, we have decided to always refer to Guile headers via +their parent directories. This essentially creates a "private name +space" for Guile headers. This means that the compiler only is given +-I options for the root build and root source directory. + +** Header files kw.h and genio.h have been removed. + +** The module (ice-9 getopt-gnu-style) has been removed. + +** New module (ice-9 documentation) + +Implements the interface to documentation strings associated with +objects. + +** New module (ice-9 time) + +Provides a macro `time', which displays execution time of a given form. + +** New module (ice-9 history) + +Loading this module enables value history in the repl. + +* Changes to the stand-alone interpreter + +** New command line option --debug + +Start Guile with debugging evaluator and backtraces enabled. + +This is useful when debugging your .guile init file or scripts. + +** New help facility + +Usage: (help NAME) gives documentation about objects named NAME (a symbol) + (help REGEXP) ditto for objects with names matching REGEXP (a string) + (help 'NAME) gives documentation for NAME, even if it is not an object + (help ,EXPR) gives documentation for object returned by EXPR + (help (my module)) gives module commentary for `(my module)' + (help) gives this text + +`help' searches among bindings exported from loaded modules, while +`apropos' searches among bindings visible from the "current" module. + +Examples: (help help) + (help cons) + (help "output-string") + +** `help' and `apropos' now prints full module names + +** Dynamic linking now uses libltdl from the libtool package. + +The old system dependent code for doing dynamic linking has been +replaced with calls to the libltdl functions which do all the hairy +details for us. + +The major improvement is that you can now directly pass libtool +library names like "libfoo.la" to `dynamic-link' and `dynamic-link' +will be able to do the best shared library job you can get, via +libltdl. + +The way dynamic libraries are found has changed and is not really +portable across platforms, probably. It is therefore recommended to +use absolute filenames when possible. + +If you pass a filename without an extension to `dynamic-link', it will +try a few appropriate ones. Thus, the most platform ignorant way is +to specify a name like "libfoo", without any directories and +extensions. + +** Guile COOP threads are now compatible with LinuxThreads + +Previously, COOP threading wasn't possible in applications linked with +Linux POSIX threads due to their use of the stack pointer to find the +thread context. This has now been fixed with a workaround which uses +the pthreads to allocate the stack. + +** New primitives: `pkgdata-dir', `site-dir', `library-dir' + +** Positions of erring expression in scripts + +With version 1.3.4, the location of the erring expression in Guile +scipts is no longer automatically reported. (This should have been +documented before the 1.3.4 release.) + +You can get this information by enabling recording of positions of +source expressions and running the debugging evaluator. Put this at +the top of your script (or in your "site" file): + + (read-enable 'positions) + (debug-enable 'debug) + +** Backtraces in scripts + +It is now possible to get backtraces in scripts. + +Put + + (debug-enable 'debug 'backtrace) + +at the top of the script. + +(The first options enables the debugging evaluator. + The second enables backtraces.) + +** Part of module system symbol lookup now implemented in C + +The eval closure of most modules is now implemented in C. Since this +was one of the bottlenecks for loading speed, Guile now loads code +substantially faster than before. + +** Attempting to get the value of an unbound variable now produces +an exception with a key of 'unbound-variable instead of 'misc-error. + +** The initial default output port is now unbuffered if it's using a +tty device. Previously in this situation it was line-buffered. + +** New hook: after-gc-hook + +after-gc-hook takes over the role of gc-thunk. This hook is run at +the first SCM_TICK after a GC. (Thus, the code is run at the same +point during evaluation as signal handlers.) + +Note that this hook should be used only for diagnostic and debugging +purposes. It is not certain that it will continue to be well-defined +when this hook is run in the future. + +C programmers: Note the new C level hooks scm_before_gc_c_hook, +scm_before_sweep_c_hook, scm_after_gc_c_hook. + +** Improvements to garbage collector + +Guile 1.4 has a new policy for triggering heap allocation and +determining the sizes of heap segments. It fixes a number of problems +in the old GC. + +1. The new policy can handle two separate pools of cells + (2-word/4-word) better. (The old policy would run wild, allocating + more and more memory for certain programs.) + +2. The old code would sometimes allocate far too much heap so that the + Guile process became gigantic. The new code avoids this. + +3. The old code would sometimes allocate too little so that few cells + were freed at GC so that, in turn, too much time was spent in GC. + +4. The old code would often trigger heap allocation several times in a + row. (The new scheme predicts how large the segments needs to be + in order not to need further allocation.) + +All in all, the new GC policy will make larger applications more +efficient. + +The new GC scheme also is prepared for POSIX threading. Threads can +allocate private pools of cells ("clusters") with just a single +function call. Allocation of single cells from such a cluster can +then proceed without any need of inter-thread synchronization. + +** New environment variables controlling GC parameters + +GUILE_MAX_SEGMENT_SIZE Maximal segment size + (default = 2097000) + +Allocation of 2-word cell heaps: + +GUILE_INIT_SEGMENT_SIZE_1 Size of initial heap segment in bytes + (default = 360000) + +GUILE_MIN_YIELD_1 Minimum number of freed cells at each + GC in percent of total heap size + (default = 40) + +Allocation of 4-word cell heaps +(used for real numbers and misc other objects): + +GUILE_INIT_SEGMENT_SIZE_2, GUILE_MIN_YIELD_2 + +(See entry "Way for application to customize GC parameters" under + section "Changes to the scm_ interface" below.) + +** Guile now implements reals using 4-word cells + +This speeds up computation with reals. (They were earlier allocated +with `malloc'.) There is still some room for optimizations, however. + +** Some further steps toward POSIX thread support have been taken + +*** Guile's critical sections (SCM_DEFER/ALLOW_INTS) +don't have much effect any longer, and many of them will be removed in +next release. + +*** Signals +are only handled at the top of the evaluator loop, immediately after +I/O, and in scm_equalp. + +*** The GC can allocate thread private pools of pairs. + +* Changes to Scheme functions and syntax + +** close-input-port and close-output-port are now R5RS + +These procedures have been turned into primitives and have R5RS behaviour. + +** New procedure: simple-format PORT MESSAGE ARG1 ... + +(ice-9 boot) makes `format' an alias for `simple-format' until possibly +extended by the more sophisticated version in (ice-9 format) + +(simple-format port message . args) +Write MESSAGE to DESTINATION, defaulting to `current-output-port'. +MESSAGE can contain ~A (was %s) and ~S (was %S) escapes. When printed, +the escapes are replaced with corresponding members of ARGS: +~A formats using `display' and ~S formats using `write'. +If DESTINATION is #t, then use the `current-output-port', +if DESTINATION is #f, then return a string containing the formatted text. +Does not add a trailing newline." + +** string-ref: the second argument is no longer optional. + +** string, list->string: no longer accept strings in their arguments, +only characters, for compatibility with R5RS. + +** New procedure: port-closed? PORT +Returns #t if PORT is closed or #f if it is open. + +** Deprecated: list* + +The list* functionality is now provided by cons* (SRFI-1 compliant) + +** New procedure: cons* ARG1 ARG2 ... ARGn + +Like `list', but the last arg provides the tail of the constructed list, +returning (cons ARG1 (cons ARG2 (cons ... ARGn))). + +Requires at least one argument. If given one argument, that argument +is returned as result. + +This function is called `list*' in some other Schemes and in Common LISP. + +** Removed deprecated: serial-map, serial-array-copy!, serial-array-map! + +** New procedure: object-documentation OBJECT + +Returns the documentation string associated with OBJECT. The +procedure uses a caching mechanism so that subsequent lookups are +faster. + +Exported by (ice-9 documentation). + +** module-name now returns full names of modules + +Previously, only the last part of the name was returned (`session' for +`(ice-9 session)'). Ex: `(ice-9 session)'. + +* Changes to the gh_ interface + +** Deprecated: gh_int2scmb + +Use gh_bool2scm instead. + +* Changes to the scm_ interface + +** Guile primitives now carry docstrings! + +Thanks to Greg Badros! + +** Guile primitives are defined in a new way: SCM_DEFINE/SCM_DEFINE1/SCM_PROC + +Now Guile primitives are defined using the SCM_DEFINE/SCM_DEFINE1/SCM_PROC +macros and must contain a docstring that is extracted into foo.doc using a new +guile-doc-snarf script (that uses guile-doc-snarf.awk). + +However, a major overhaul of these macros is scheduled for the next release of +guile. + +** Guile primitives use a new technique for validation of arguments + +SCM_VALIDATE_* macros are defined to ease the redundancy and improve +the readability of argument checking. + +** All (nearly?) K&R prototypes for functions replaced with ANSI C equivalents. + +** New macros: SCM_PACK, SCM_UNPACK + +Compose/decompose an SCM value. + +The SCM type is now treated as an abstract data type and may be defined as a +long, a void* or as a struct, depending on the architecture and compile time +options. This makes it easier to find several types of bugs, for example when +SCM values are treated as integers without conversion. Values of the SCM type +should be treated as "atomic" values. These macros are used when +composing/decomposing an SCM value, either because you want to access +individual bits, or because you want to treat it as an integer value. + +E.g., in order to set bit 7 in an SCM value x, use the expression + + SCM_PACK (SCM_UNPACK (x) | 0x80) + +** The name property of hooks is deprecated. +Thus, the use of SCM_HOOK_NAME and scm_make_hook_with_name is deprecated. + +You can emulate this feature by using object properties. + +** Deprecated macros: SCM_INPORTP, SCM_OUTPORTP, SCM_CRDY, SCM_ICHRP, +SCM_ICHR, SCM_MAKICHR, SCM_SETJMPBUF, SCM_NSTRINGP, SCM_NRWSTRINGP, +SCM_NVECTORP + +These macros will be removed in a future release of Guile. + +** The following types, functions and macros from numbers.h are deprecated: +scm_dblproc, SCM_UNEGFIXABLE, SCM_FLOBUFLEN, SCM_INEXP, SCM_CPLXP, SCM_REAL, +SCM_IMAG, SCM_REALPART, scm_makdbl, SCM_SINGP, SCM_NUM2DBL, SCM_NO_BIGDIG + +** Port internals: the rw_random variable in the scm_port structure +must be set to non-zero in any random access port. In recent Guile +releases it was only set for bidirectional random-access ports. + +** Port internals: the seek ptob procedure is now responsible for +resetting the buffers if required. The change was made so that in the +special case of reading the current position (i.e., seek p 0 SEEK_CUR) +the fport and strport ptobs can avoid resetting the buffers, +in particular to avoid discarding unread chars. An existing port +type can be fixed by adding something like the following to the +beginning of the ptob seek procedure: + + if (pt->rw_active == SCM_PORT_READ) + scm_end_input (object); + else if (pt->rw_active == SCM_PORT_WRITE) + ptob->flush (object); + +although to actually avoid resetting the buffers and discard unread +chars requires further hacking that depends on the characteristics +of the ptob. + +** Deprecated functions: scm_fseek, scm_tag + +These functions are no longer used and will be removed in a future version. + +** The scm_sysmissing procedure is no longer used in libguile. +Unless it turns out to be unexpectedly useful to somebody, it will be +removed in a future version. + +** The format of error message strings has changed + +The two C procedures: scm_display_error and scm_error, as well as the +primitive `scm-error', now use scm_simple_format to do their work. +This means that the message strings of all code must be updated to use +~A where %s was used before, and ~S where %S was used before. + +During the period when there still are a lot of old Guiles out there, +you might want to support both old and new versions of Guile. + +There are basically two methods to achieve this. Both methods use +autoconf. Put + + AC_CHECK_FUNCS(scm_simple_format) + +in your configure.in. + +Method 1: Use the string concatenation features of ANSI C's + preprocessor. + +In C: + +#ifdef HAVE_SCM_SIMPLE_FORMAT +#define FMT_S "~S" +#else +#define FMT_S "%S" +#endif + +Then represent each of your error messages using a preprocessor macro: + +#define E_SPIDER_ERROR "There's a spider in your " ## FMT_S ## "!!!" + +In Scheme: + +(define fmt-s (if (defined? 'simple-format) "~S" "%S")) +(define make-message string-append) + +(define e-spider-error (make-message "There's a spider in your " fmt-s "!!!")) + +Method 2: Use the oldfmt function found in doc/oldfmt.c. + +In C: + +scm_misc_error ("picnic", scm_c_oldfmt0 ("There's a spider in your ~S!!!"), + ...); + +In Scheme: + +(scm-error 'misc-error "picnic" (oldfmt "There's a spider in your ~S!!!") + ...) + + +** Deprecated: coop_mutex_init, coop_condition_variable_init + +Don't use the functions coop_mutex_init and +coop_condition_variable_init. They will change. + +Use scm_mutex_init and scm_cond_init instead. + +** New function: int scm_cond_timedwait (scm_cond_t *COND, scm_mutex_t *MUTEX, const struct timespec *ABSTIME) + `scm_cond_timedwait' atomically unlocks MUTEX and waits on + COND, as `scm_cond_wait' does, but it also bounds the duration + of the wait. If COND has not been signaled before time ABSTIME, + the mutex MUTEX is re-acquired and `scm_cond_timedwait' + returns the error code `ETIMEDOUT'. + + The ABSTIME parameter specifies an absolute time, with the same + origin as `time' and `gettimeofday': an ABSTIME of 0 corresponds + to 00:00:00 GMT, January 1, 1970. + +** New function: scm_cond_broadcast (scm_cond_t *COND) + `scm_cond_broadcast' restarts all the threads that are waiting + on the condition variable COND. Nothing happens if no threads are + waiting on COND. + +** New function: scm_key_create (scm_key_t *KEY, void (*destr_function) (void *)) + `scm_key_create' allocates a new TSD key. The key is stored in + the location pointed to by KEY. There is no limit on the number + of keys allocated at a given time. The value initially associated + with the returned key is `NULL' in all currently executing threads. + + The DESTR_FUNCTION argument, if not `NULL', specifies a destructor + function associated with the key. When a thread terminates, + DESTR_FUNCTION is called on the value associated with the key in + that thread. The DESTR_FUNCTION is not called if a key is deleted + with `scm_key_delete' or a value is changed with + `scm_setspecific'. The order in which destructor functions are + called at thread termination time is unspecified. + + Destructors are not yet implemented. + +** New function: scm_setspecific (scm_key_t KEY, const void *POINTER) + `scm_setspecific' changes the value associated with KEY in the + calling thread, storing the given POINTER instead. + +** New function: scm_getspecific (scm_key_t KEY) + `scm_getspecific' returns the value currently associated with + KEY in the calling thread. + +** New function: scm_key_delete (scm_key_t KEY) + `scm_key_delete' deallocates a TSD key. It does not check + whether non-`NULL' values are associated with that key in the + currently executing threads, nor call the destructor function + associated with the key. + +** New function: scm_c_hook_init (scm_c_hook_t *HOOK, void *HOOK_DATA, scm_c_hook_type_t TYPE) + +Initialize a C level hook HOOK with associated HOOK_DATA and type +TYPE. (See scm_c_hook_run ().) + +** New function: scm_c_hook_add (scm_c_hook_t *HOOK, scm_c_hook_function_t FUNC, void *FUNC_DATA, int APPENDP) + +Add hook function FUNC with associated FUNC_DATA to HOOK. If APPENDP +is true, add it last, otherwise first. The same FUNC can be added +multiple times if FUNC_DATA differ and vice versa. + +** New function: scm_c_hook_remove (scm_c_hook_t *HOOK, scm_c_hook_function_t FUNC, void *FUNC_DATA) + +Remove hook function FUNC with associated FUNC_DATA from HOOK. A +function is only removed if both FUNC and FUNC_DATA matches. + +** New function: void *scm_c_hook_run (scm_c_hook_t *HOOK, void *DATA) + +Run hook HOOK passing DATA to the hook functions. + +If TYPE is SCM_C_HOOK_NORMAL, all hook functions are run. The value +returned is undefined. + +If TYPE is SCM_C_HOOK_OR, hook functions are run until a function +returns a non-NULL value. This value is returned as the result of +scm_c_hook_run. If all functions return NULL, NULL is returned. + +If TYPE is SCM_C_HOOK_AND, hook functions are run until a function +returns a NULL value, and NULL is returned. If all functions returns +a non-NULL value, the last value is returned. + +** New C level GC hooks + +Five new C level hooks has been added to the garbage collector. + + scm_before_gc_c_hook + scm_after_gc_c_hook + +are run before locking and after unlocking the heap. The system is +thus in a mode where evaluation can take place. (Except that +scm_before_gc_c_hook must not allocate new cells.) + + scm_before_mark_c_hook + scm_before_sweep_c_hook + scm_after_sweep_c_hook + +are run when the heap is locked. These are intended for extension of +the GC in a modular fashion. Examples are the weaks and guardians +modules. + +** Way for application to customize GC parameters + +The application can set up other default values for the GC heap +allocation parameters + + GUILE_INIT_HEAP_SIZE_1, GUILE_MIN_YIELD_1, + GUILE_INIT_HEAP_SIZE_2, GUILE_MIN_YIELD_2, + GUILE_MAX_SEGMENT_SIZE, + +by setting + + scm_default_init_heap_size_1, scm_default_min_yield_1, + scm_default_init_heap_size_2, scm_default_min_yield_2, + scm_default_max_segment_size + +respectively before callong scm_boot_guile. + +(See entry "New environment variables ..." in section +"Changes to the stand-alone interpreter" above.) + +** scm_protect_object/scm_unprotect_object now nest + +This means that you can call scm_protect_object multiple times on an +object and count on the object being protected until +scm_unprotect_object has been call the same number of times. + +The functions also have better time complexity. + +Still, it is usually possible to structure the application in a way +that you don't need to use these functions. For example, if you use a +protected standard Guile list to keep track of live objects rather +than some custom data type, objects will die a natural death when they +are no longer needed. + +** Deprecated type tags: scm_tc16_flo, scm_tc_flo, scm_tc_dblr, scm_tc_dblc + +Guile does not provide the float representation for inexact real numbers any +more. Now, only doubles are used to represent inexact real numbers. Further, +the tag names scm_tc_dblr and scm_tc_dblc have been changed to scm_tc16_real +and scm_tc16_complex, respectively. + +** Removed deprecated type scm_smobfuns + +** Removed deprecated function scm_newsmob + +** Warning: scm_make_smob_type_mfpe might become deprecated in a future release + +There is an ongoing discussion among the developers whether to +deprecate `scm_make_smob_type_mfpe' or not. Please use the current +standard interface (scm_make_smob_type, scm_set_smob_XXX) in new code +until this issue has been settled. + +** Removed deprecated type tag scm_tc16_kw + +** Added type tag scm_tc16_keyword + +(This was introduced already in release 1.3.4 but was not documented + until now.) + +** gdb_print now prints "*** Guile not initialized ***" until Guile initialized + +* Changes to system call interfaces: + +** The "select" procedure now tests port buffers for the ability to +provide input or accept output. Previously only the underlying file +descriptors were checked. + +** New variable PIPE_BUF: the maximum number of bytes that can be +atomically written to a pipe. + +** If a facility is not available on the system when Guile is +compiled, the corresponding primitive procedure will not be defined. +Previously it would have been defined but would throw a system-error +exception if called. Exception handlers which catch this case may +need minor modification: an error will be thrown with key +'unbound-variable instead of 'system-error. Alternatively it's +now possible to use `defined?' to check whether the facility is +available. + +** Procedures which depend on the timezone should now give the correct +result on systems which cache the TZ environment variable, even if TZ +is changed without calling tzset. + +* Changes to the networking interfaces: + +** New functions: htons, ntohs, htonl, ntohl: for converting short and +long integers between network and host format. For now, it's not +particularly convenient to do this kind of thing, but consider: + +(define write-network-long + (lambda (value port) + (let ((v (make-uniform-vector 1 1 0))) + (uniform-vector-set! v 0 (htonl value)) + (uniform-vector-write v port)))) + +(define read-network-long + (lambda (port) + (let ((v (make-uniform-vector 1 1 0))) + (uniform-vector-read! v port) + (ntohl (uniform-vector-ref v 0))))) + +** If inet-aton fails, it now throws an error with key 'misc-error +instead of 'system-error, since errno is not relevant. + +** Certain gethostbyname/gethostbyaddr failures now throw errors with +specific keys instead of 'system-error. The latter is inappropriate +since errno will not have been set. The keys are: +'host-not-found, 'try-again, 'no-recovery and 'no-data. + +** sethostent, setnetent, setprotoent, setservent: now take an +optional argument STAYOPEN, which specifies whether the database +remains open after a database entry is accessed randomly (e.g., using +gethostbyname for the hosts database.) The default is #f. Previously +#t was always used. + + +Changes since Guile 1.3.2: + +* Changes to the stand-alone interpreter + +** Debugger + +An initial version of the Guile debugger written by Chris Hanson has +been added. The debugger is still under development but is included +in the distribution anyway since it is already quite useful. + +Type + + (debug) + +after an error to enter the debugger. Type `help' inside the debugger +for a description of available commands. + +If you prefer to have stack frames numbered and printed in +anti-chronological order and prefer up in the stack to be down on the +screen as is the case in gdb, you can put + + (debug-enable 'backwards) + +in your .guile startup file. (However, this means that Guile can't +use indentation to indicate stack level.) + +The debugger is autoloaded into Guile at the first use. + +** Further enhancements to backtraces + +There is a new debug option `width' which controls the maximum width +on the screen of printed stack frames. Fancy printing parameters +("level" and "length" as in Common LISP) are adaptively adjusted for +each stack frame to give maximum information while still fitting +within the bounds. If the stack frame can't be made to fit by +adjusting parameters, it is simply cut off at the end. This is marked +with a `$'. + +** Some modules are now only loaded when the repl is started + +The modules (ice-9 debug), (ice-9 session), (ice-9 threads) and (ice-9 +regex) are now loaded into (guile-user) only if the repl has been +started. The effect is that the startup time for scripts has been +reduced to 30% of what it was previously. + +Correctly written scripts load the modules they require at the top of +the file and should not be affected by this change. + +** Hooks are now represented as smobs + +* Changes to Scheme functions and syntax + +** Readline support has changed again. + +The old (readline-activator) module is gone. Use (ice-9 readline) +instead, which now contains all readline functionality. So the code +to activate readline is now + + (use-modules (ice-9 readline)) + (activate-readline) + +This should work at any time, including from the guile prompt. + +To avoid confusion about the terms of Guile's license, please only +enable readline for your personal use; please don't make it the +default for others. Here is why we make this rather odd-sounding +request: + +Guile is normally licensed under a weakened form of the GNU General +Public License, which allows you to link code with Guile without +placing that code under the GPL. This exception is important to some +people. + +However, since readline is distributed under the GNU General Public +License, when you link Guile with readline, either statically or +dynamically, you effectively change Guile's license to the strict GPL. +Whenever you link any strictly GPL'd code into Guile, uses of Guile +which are normally permitted become forbidden. This is a rather +non-obvious consequence of the licensing terms. + +So, to make sure things remain clear, please let people choose for +themselves whether to link GPL'd libraries like readline with Guile. + +** regexp-substitute/global has changed slightly, but incompatibly. + +If you include a function in the item list, the string of the match +object it receives is the same string passed to +regexp-substitute/global, not some suffix of that string. +Correspondingly, the match's positions are relative to the entire +string, not the suffix. + +If the regexp can match the empty string, the way matches are chosen +from the string has changed. regexp-substitute/global recognizes the +same set of matches that list-matches does; see below. + +** New function: list-matches REGEXP STRING [FLAGS] + +Return a list of match objects, one for every non-overlapping, maximal +match of REGEXP in STRING. The matches appear in left-to-right order. +list-matches only reports matches of the empty string if there are no +other matches which begin on, end at, or include the empty match's +position. + +If present, FLAGS is passed as the FLAGS argument to regexp-exec. + +** New function: fold-matches REGEXP STRING INIT PROC [FLAGS] + +For each match of REGEXP in STRING, apply PROC to the match object, +and the last value PROC returned, or INIT for the first call. Return +the last value returned by PROC. We apply PROC to the matches as they +appear from left to right. + +This function recognizes matches according to the same criteria as +list-matches. + +Thus, you could define list-matches like this: + + (define (list-matches regexp string . flags) + (reverse! (apply fold-matches regexp string '() cons flags))) + +If present, FLAGS is passed as the FLAGS argument to regexp-exec. + +** Hooks + +*** New function: hook? OBJ + +Return #t if OBJ is a hook, otherwise #f. + +*** New function: make-hook-with-name NAME [ARITY] + +Return a hook with name NAME and arity ARITY. The default value for +ARITY is 0. The only effect of NAME is that it will appear when the +hook object is printed to ease debugging. + +*** New function: hook-empty? HOOK + +Return #t if HOOK doesn't contain any procedures, otherwise #f. + +*** New function: hook->list HOOK + +Return a list of the procedures that are called when run-hook is +applied to HOOK. + +** `map' signals an error if its argument lists are not all the same length. + +This is the behavior required by R5RS, so this change is really a bug +fix. But it seems to affect a lot of people's code, so we're +mentioning it here anyway. + +** Print-state handling has been made more transparent + +Under certain circumstances, ports are represented as a port with an +associated print state. Earlier, this pair was represented as a pair +(see "Some magic has been added to the printer" below). It is now +indistinguishable (almost; see `get-print-state') from a port on the +user level. + +*** New function: port-with-print-state OUTPUT-PORT PRINT-STATE + +Return a new port with the associated print state PRINT-STATE. + +*** New function: get-print-state OUTPUT-PORT + +Return the print state associated with this port if it exists, +otherwise return #f. + +*** New function: directory-stream? OBJECT + +Returns true iff OBJECT is a directory stream --- the sort of object +returned by `opendir'. + +** New function: using-readline? + +Return #t if readline is in use in the current repl. + +** structs will be removed in 1.4 + +Structs will be replaced in Guile 1.4. We will merge GOOPS into Guile +and use GOOPS objects as the fundamental record type. + +* Changes to the scm_ interface + +** structs will be removed in 1.4 + +The entire current struct interface (struct.c, struct.h) will be +replaced in Guile 1.4. We will merge GOOPS into libguile and use +GOOPS objects as the fundamental record type. + +** The internal representation of subr's has changed + +Instead of giving a hint to the subr name, the CAR field of the subr +now contains an index to a subr entry in scm_subr_table. + +*** New variable: scm_subr_table + +An array of subr entries. A subr entry contains the name, properties +and documentation associated with the subr. The properties and +documentation slots are not yet used. + +** A new scheme for "forwarding" calls to a builtin to a generic function + +It is now possible to extend the functionality of some Guile +primitives by letting them defer a call to a GOOPS generic function on +argument mismatch. This means that there is no loss of efficiency in +normal evaluation. + +Example: + + (use-modules (oop goops)) ; Must be GOOPS version 0.2. + (define-method + ((x ) (y )) + (string-append x y)) + ++ will still be as efficient as usual in numerical calculations, but +can also be used for concatenating strings. + +Who will be the first one to extend Guile's numerical tower to +rationals? :) [OK, there a few other things to fix before this can +be made in a clean way.] + +*** New snarf macros for defining primitives: SCM_GPROC, SCM_GPROC1 + + New macro: SCM_GPROC (CNAME, SNAME, REQ, OPT, VAR, CFUNC, GENERIC) + + New macro: SCM_GPROC1 (CNAME, SNAME, TYPE, CFUNC, GENERIC) + +These do the same job as SCM_PROC and SCM_PROC1, but they also define +a variable GENERIC which can be used by the dispatch macros below. + +[This is experimental code which may change soon.] + +*** New macros for forwarding control to a generic on arg type error + + New macro: SCM_WTA_DISPATCH_1 (GENERIC, ARG1, POS, SUBR) + + New macro: SCM_WTA_DISPATCH_2 (GENERIC, ARG1, ARG2, POS, SUBR) + +These correspond to the scm_wta function call, and have the same +behaviour until the user has called the GOOPS primitive +`enable-primitive-generic!'. After that, these macros will apply the +generic function GENERIC to the argument(s) instead of calling +scm_wta. + +[This is experimental code which may change soon.] + +*** New macros for argument testing with generic dispatch + + New macro: SCM_GASSERT1 (COND, GENERIC, ARG1, POS, SUBR) + + New macro: SCM_GASSERT2 (COND, GENERIC, ARG1, ARG2, POS, SUBR) + +These correspond to the SCM_ASSERT macro, but will defer control to +GENERIC on error after `enable-primitive-generic!' has been called. + +[This is experimental code which may change soon.] + +** New function: SCM scm_eval_body (SCM body, SCM env) + +Evaluates the body of a special form. + +** The internal representation of struct's has changed + +Previously, four slots were allocated for the procedure(s) of entities +and operators. The motivation for this representation had to do with +the structure of the evaluator, the wish to support tail-recursive +generic functions, and efficiency. Since the generic function +dispatch mechanism has changed, there is no longer a need for such an +expensive representation, and the representation has been simplified. + +This should not make any difference for most users. + +** GOOPS support has been cleaned up. + +Some code has been moved from eval.c to objects.c and code in both of +these compilation units has been cleaned up and better structured. + +*** New functions for applying generic functions + + New function: SCM scm_apply_generic (GENERIC, ARGS) + New function: SCM scm_call_generic_0 (GENERIC) + New function: SCM scm_call_generic_1 (GENERIC, ARG1) + New function: SCM scm_call_generic_2 (GENERIC, ARG1, ARG2) + New function: SCM scm_call_generic_3 (GENERIC, ARG1, ARG2, ARG3) + +** Deprecated function: scm_make_named_hook + +It is now replaced by: + +** New function: SCM scm_create_hook (const char *name, int arity) + +Creates a hook in the same way as make-hook above but also +binds a variable named NAME to it. + +This is the typical way of creating a hook from C code. + +Currently, the variable is created in the "current" module. +This might change when we get the new module system. + +[The behaviour is identical to scm_make_named_hook.] + + + +Changes since Guile 1.3: + +* Changes to mailing lists + +** Some of the Guile mailing lists have moved to sourceware.cygnus.com. + +See the README file to find current addresses for all the Guile +mailing lists. + +* Changes to the distribution + +** Readline support is no longer included with Guile by default. + +Based on the different license terms of Guile and Readline, we +concluded that Guile should not *by default* cause the linking of +Readline into an application program. Readline support is now offered +as a separate module, which is linked into an application only when +you explicitly specify it. + +Although Guile is GNU software, its distribution terms add a special +exception to the usual GNU General Public License (GPL). Guile's +license includes a clause that allows you to link Guile with non-free +programs. We add this exception so as not to put Guile at a +disadvantage vis-a-vis other extensibility packages that support other +languages. + +In contrast, the GNU Readline library is distributed under the GNU +General Public License pure and simple. This means that you may not +link Readline, even dynamically, into an application unless it is +distributed under a free software license that is compatible the GPL. + +Because of this difference in distribution terms, an application that +can use Guile may not be able to use Readline. Now users will be +explicitly offered two independent decisions about the use of these +two packages. + +You can activate the readline support by issuing + + (use-modules (readline-activator)) + (activate-readline) + +from your ".guile" file, for example. + +* Changes to the stand-alone interpreter + +** All builtins now print as primitives. +Previously builtin procedures not belonging to the fundamental subr +types printed as #>. +Now, they print as #. + +** Backtraces slightly more intelligible. +gsubr-apply and macro transformer application frames no longer appear +in backtraces. + +* Changes to Scheme functions and syntax + +** Guile now correctly handles internal defines by rewriting them into +their equivalent letrec. Previously, internal defines would +incrementally add to the innermost environment, without checking +whether the restrictions specified in RnRS were met. This lead to the +correct behaviour when these restriction actually were met, but didn't +catch all illegal uses. Such an illegal use could lead to crashes of +the Guile interpreter or or other unwanted results. An example of +incorrect internal defines that made Guile behave erratically: + + (let () + (define a 1) + (define (b) a) + (define c (1+ (b))) + (define d 3) + + (b)) + + => 2 + +The problem with this example is that the definition of `c' uses the +value of `b' directly. This confuses the meoization machine of Guile +so that the second call of `b' (this time in a larger environment that +also contains bindings for `c' and `d') refers to the binding of `c' +instead of `a'. You could also make Guile crash with a variation on +this theme: + + (define (foo flag) + (define a 1) + (define (b flag) (if flag a 1)) + (define c (1+ (b flag))) + (define d 3) + + (b #t)) + + (foo #f) + (foo #t) + +From now on, Guile will issue an `Unbound variable: b' error message +for both examples. + +** Hooks + +A hook contains a list of functions which should be called on +particular occasions in an existing program. Hooks are used for +customization. + +A window manager might have a hook before-window-map-hook. The window +manager uses the function run-hooks to call all functions stored in +before-window-map-hook each time a window is mapped. The user can +store functions in the hook using add-hook!. + +In Guile, hooks are first class objects. + +*** New function: make-hook [N_ARGS] + +Return a hook for hook functions which can take N_ARGS arguments. +The default value for N_ARGS is 0. + +(See also scm_make_named_hook below.) + +*** New function: add-hook! HOOK PROC [APPEND_P] + +Put PROC at the beginning of the list of functions stored in HOOK. +If APPEND_P is supplied, and non-false, put PROC at the end instead. + +PROC must be able to take the number of arguments specified when the +hook was created. + +If PROC already exists in HOOK, then remove it first. + +*** New function: remove-hook! HOOK PROC + +Remove PROC from the list of functions in HOOK. + +*** New function: reset-hook! HOOK + +Clear the list of hook functions stored in HOOK. + +*** New function: run-hook HOOK ARG1 ... + +Run all hook functions stored in HOOK with arguments ARG1 ... . +The number of arguments supplied must correspond to the number given +when the hook was created. + +** The function `dynamic-link' now takes optional keyword arguments. + The only keyword argument that is currently defined is `:global + BOOL'. With it, you can control whether the shared library will be + linked in global mode or not. In global mode, the symbols from the + linked library can be used to resolve references from other + dynamically linked libraries. In non-global mode, the linked + library is essentially invisible and can only be accessed via + `dynamic-func', etc. The default is now to link in global mode. + Previously, the default has been non-global mode. + + The `#:global' keyword is only effective on platforms that support + the dlopen family of functions. + +** New function `provided?' + + - Function: provided? FEATURE + Return true iff FEATURE is supported by this installation of + Guile. FEATURE must be a symbol naming a feature; the global + variable `*features*' is a list of available features. + +** Changes to the module (ice-9 expect): + +*** The expect-strings macro now matches `$' in a regular expression + only at a line-break or end-of-file by default. Previously it would + match the end of the string accumulated so far. The old behaviour + can be obtained by setting the variable `expect-strings-exec-flags' + to 0. + +*** The expect-strings macro now uses a variable `expect-strings-exec-flags' + for the regexp-exec flags. If `regexp/noteol' is included, then `$' + in a regular expression will still match before a line-break or + end-of-file. The default is `regexp/noteol'. + +*** The expect-strings macro now uses a variable + `expect-strings-compile-flags' for the flags to be supplied to + `make-regexp'. The default is `regexp/newline', which was previously + hard-coded. + +*** The expect macro now supplies two arguments to a match procedure: + the current accumulated string and a flag to indicate whether + end-of-file has been reached. Previously only the string was supplied. + If end-of-file is reached, the match procedure will be called an + additional time with the same accumulated string as the previous call + but with the flag set. + +** New module (ice-9 format), implementing the Common Lisp `format' function. + +This code, and the documentation for it that appears here, was +borrowed from SLIB, with minor adaptations for Guile. + + - Function: format DESTINATION FORMAT-STRING . ARGUMENTS + An almost complete implementation of Common LISP format description + according to the CL reference book `Common LISP' from Guy L. + Steele, Digital Press. Backward compatible to most of the + available Scheme format implementations. + + Returns `#t', `#f' or a string; has side effect of printing + according to FORMAT-STRING. If DESTINATION is `#t', the output is + to the current output port and `#t' is returned. If DESTINATION + is `#f', a formatted string is returned as the result of the call. + NEW: If DESTINATION is a string, DESTINATION is regarded as the + format string; FORMAT-STRING is then the first argument and the + output is returned as a string. If DESTINATION is a number, the + output is to the current error port if available by the + implementation. Otherwise DESTINATION must be an output port and + `#t' is returned. + + FORMAT-STRING must be a string. In case of a formatting error + format returns `#f' and prints a message on the current output or + error port. Characters are output as if the string were output by + the `display' function with the exception of those prefixed by a + tilde (~). For a detailed description of the FORMAT-STRING syntax + please consult a Common LISP format reference manual. For a test + suite to verify this format implementation load `formatst.scm'. + Please send bug reports to `lutzeb@cs.tu-berlin.de'. + + Note: `format' is not reentrant, i.e. only one `format'-call may + be executed at a time. + + +*** Format Specification (Format version 3.0) + + Please consult a Common LISP format reference manual for a detailed +description of the format string syntax. For a demonstration of the +implemented directives see `formatst.scm'. + + This implementation supports directive parameters and modifiers (`:' +and `@' characters). Multiple parameters must be separated by a comma +(`,'). Parameters can be numerical parameters (positive or negative), +character parameters (prefixed by a quote character (`''), variable +parameters (`v'), number of rest arguments parameter (`#'), empty and +default parameters. Directive characters are case independent. The +general form of a directive is: + +DIRECTIVE ::= ~{DIRECTIVE-PARAMETER,}[:][@]DIRECTIVE-CHARACTER + +DIRECTIVE-PARAMETER ::= [ [-|+]{0-9}+ | 'CHARACTER | v | # ] + +*** Implemented CL Format Control Directives + + Documentation syntax: Uppercase characters represent the +corresponding control directive characters. Lowercase characters +represent control directive parameter descriptions. + +`~A' + Any (print as `display' does). + `~@A' + left pad. + + `~MINCOL,COLINC,MINPAD,PADCHARA' + full padding. + +`~S' + S-expression (print as `write' does). + `~@S' + left pad. + + `~MINCOL,COLINC,MINPAD,PADCHARS' + full padding. + +`~D' + Decimal. + `~@D' + print number sign always. + + `~:D' + print comma separated. + + `~MINCOL,PADCHAR,COMMACHARD' + padding. + +`~X' + Hexadecimal. + `~@X' + print number sign always. + + `~:X' + print comma separated. + + `~MINCOL,PADCHAR,COMMACHARX' + padding. + +`~O' + Octal. + `~@O' + print number sign always. + + `~:O' + print comma separated. + + `~MINCOL,PADCHAR,COMMACHARO' + padding. + +`~B' + Binary. + `~@B' + print number sign always. + + `~:B' + print comma separated. + + `~MINCOL,PADCHAR,COMMACHARB' + padding. + +`~NR' + Radix N. + `~N,MINCOL,PADCHAR,COMMACHARR' + padding. + +`~@R' + print a number as a Roman numeral. + +`~:@R' + print a number as an "old fashioned" Roman numeral. + +`~:R' + print a number as an ordinal English number. + +`~:@R' + print a number as a cardinal English number. + +`~P' + Plural. + `~@P' + prints `y' and `ies'. + + `~:P' + as `~P but jumps 1 argument backward.' + + `~:@P' + as `~@P but jumps 1 argument backward.' + +`~C' + Character. + `~@C' + prints a character as the reader can understand it (i.e. `#\' + prefixing). + + `~:C' + prints a character as emacs does (eg. `^C' for ASCII 03). + +`~F' + Fixed-format floating-point (prints a flonum like MMM.NNN). + `~WIDTH,DIGITS,SCALE,OVERFLOWCHAR,PADCHARF' + `~@F' + If the number is positive a plus sign is printed. + +`~E' + Exponential floating-point (prints a flonum like MMM.NNN`E'EE). + `~WIDTH,DIGITS,EXPONENTDIGITS,SCALE,OVERFLOWCHAR,PADCHAR,EXPONENTCHARE' + `~@E' + If the number is positive a plus sign is printed. + +`~G' + General floating-point (prints a flonum either fixed or + exponential). + `~WIDTH,DIGITS,EXPONENTDIGITS,SCALE,OVERFLOWCHAR,PADCHAR,EXPONENTCHARG' + `~@G' + If the number is positive a plus sign is printed. + +`~$' + Dollars floating-point (prints a flonum in fixed with signs + separated). + `~DIGITS,SCALE,WIDTH,PADCHAR$' + `~@$' + If the number is positive a plus sign is printed. + + `~:@$' + A sign is always printed and appears before the padding. + + `~:$' + The sign appears before the padding. + +`~%' + Newline. + `~N%' + print N newlines. + +`~&' + print newline if not at the beginning of the output line. + `~N&' + prints `~&' and then N-1 newlines. + +`~|' + Page Separator. + `~N|' + print N page separators. + +`~~' + Tilde. + `~N~' + print N tildes. + +`~' + Continuation Line. + `~:' + newline is ignored, white space left. + + `~@' + newline is left, white space ignored. + +`~T' + Tabulation. + `~@T' + relative tabulation. + + `~COLNUM,COLINCT' + full tabulation. + +`~?' + Indirection (expects indirect arguments as a list). + `~@?' + extracts indirect arguments from format arguments. + +`~(STR~)' + Case conversion (converts by `string-downcase'). + `~:(STR~)' + converts by `string-capitalize'. + + `~@(STR~)' + converts by `string-capitalize-first'. + + `~:@(STR~)' + converts by `string-upcase'. + +`~*' + Argument Jumping (jumps 1 argument forward). + `~N*' + jumps N arguments forward. + + `~:*' + jumps 1 argument backward. + + `~N:*' + jumps N arguments backward. + + `~@*' + jumps to the 0th argument. + + `~N@*' + jumps to the Nth argument (beginning from 0) + +`~[STR0~;STR1~;...~;STRN~]' + Conditional Expression (numerical clause conditional). + `~N[' + take argument from N. + + `~@[' + true test conditional. + + `~:[' + if-else-then conditional. + + `~;' + clause separator. + + `~:;' + default clause follows. + +`~{STR~}' + Iteration (args come from the next argument (a list)). + `~N{' + at most N iterations. + + `~:{' + args from next arg (a list of lists). + + `~@{' + args from the rest of arguments. + + `~:@{' + args from the rest args (lists). + +`~^' + Up and out. + `~N^' + aborts if N = 0 + + `~N,M^' + aborts if N = M + + `~N,M,K^' + aborts if N <= M <= K + +*** Not Implemented CL Format Control Directives + +`~:A' + print `#f' as an empty list (see below). + +`~:S' + print `#f' as an empty list (see below). + +`~<~>' + Justification. + +`~:^' + (sorry I don't understand its semantics completely) + +*** Extended, Replaced and Additional Control Directives + +`~MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHD' +`~MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHX' +`~MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHO' +`~MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHB' +`~N,MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHR' + COMMAWIDTH is the number of characters between two comma + characters. + +`~I' + print a R4RS complex number as `~F~@Fi' with passed parameters for + `~F'. + +`~Y' + Pretty print formatting of an argument for scheme code lists. + +`~K' + Same as `~?.' + +`~!' + Flushes the output if format DESTINATION is a port. + +`~_' + Print a `#\space' character + `~N_' + print N `#\space' characters. + +`~/' + Print a `#\tab' character + `~N/' + print N `#\tab' characters. + +`~NC' + Takes N as an integer representation for a character. No arguments + are consumed. N is converted to a character by `integer->char'. N + must be a positive decimal number. + +`~:S' + Print out readproof. Prints out internal objects represented as + `#<...>' as strings `"#<...>"' so that the format output can always + be processed by `read'. + +`~:A' + Print out readproof. Prints out internal objects represented as + `#<...>' as strings `"#<...>"' so that the format output can always + be processed by `read'. + +`~Q' + Prints information and a copyright notice on the format + implementation. + `~:Q' + prints format version. + +`~F, ~E, ~G, ~$' + may also print number strings, i.e. passing a number as a string + and format it accordingly. + +*** Configuration Variables + + The format module exports some configuration variables to suit the +systems and users needs. There should be no modification necessary for +the configuration that comes with Guile. Format detects automatically +if the running scheme system implements floating point numbers and +complex numbers. + +format:symbol-case-conv + Symbols are converted by `symbol->string' so the case type of the + printed symbols is implementation dependent. + `format:symbol-case-conv' is a one arg closure which is either + `#f' (no conversion), `string-upcase', `string-downcase' or + `string-capitalize'. (default `#f') + +format:iobj-case-conv + As FORMAT:SYMBOL-CASE-CONV but applies for the representation of + implementation internal objects. (default `#f') + +format:expch + The character prefixing the exponent value in `~E' printing. + (default `#\E') + +*** Compatibility With Other Format Implementations + +SLIB format 2.x: + See `format.doc'. + +SLIB format 1.4: + Downward compatible except for padding support and `~A', `~S', + `~P', `~X' uppercase printing. SLIB format 1.4 uses C-style + `printf' padding support which is completely replaced by the CL + `format' padding style. + +MIT C-Scheme 7.1: + Downward compatible except for `~', which is not documented + (ignores all characters inside the format string up to a newline + character). (7.1 implements `~a', `~s', ~NEWLINE, `~~', `~%', + numerical and variable parameters and `:/@' modifiers in the CL + sense). + +Elk 1.5/2.0: + Downward compatible except for `~A' and `~S' which print in + uppercase. (Elk implements `~a', `~s', `~~', and `~%' (no + directive parameters or modifiers)). + +Scheme->C 01nov91: + Downward compatible except for an optional destination parameter: + S2C accepts a format call without a destination which returns a + formatted string. This is equivalent to a #f destination in S2C. + (S2C implements `~a', `~s', `~c', `~%', and `~~' (no directive + parameters or modifiers)). + + +** Changes to string-handling functions. + +These functions were added to support the (ice-9 format) module, above. + +*** New function: string-upcase STRING +*** New function: string-downcase STRING + +These are non-destructive versions of the existing string-upcase! and +string-downcase! functions. + +*** New function: string-capitalize! STRING +*** New function: string-capitalize STRING + +These functions convert the first letter of each word in the string to +upper case. Thus: + + (string-capitalize "howdy there") + => "Howdy There" + +As with the other functions, string-capitalize! modifies the string in +place, while string-capitalize returns a modified copy of its argument. + +*** New function: string-ci->symbol STRING + +Return a symbol whose name is STRING, but having the same case as if +the symbol had be read by `read'. + +Guile can be configured to be sensitive or insensitive to case +differences in Scheme identifiers. If Guile is case-insensitive, all +symbols are converted to lower case on input. The `string-ci->symbol' +function returns a symbol whose name in STRING, transformed as Guile +would if STRING were input. + +*** New function: substring-move! STRING1 START END STRING2 START + +Copy the substring of STRING1 from START (inclusive) to END +(exclusive) to STRING2 at START. STRING1 and STRING2 may be the same +string, and the source and destination areas may overlap; in all +cases, the function behaves as if all the characters were copied +simultanously. + +*** Extended functions: substring-move-left! substring-move-right! + +These functions now correctly copy arbitrarily overlapping substrings; +they are both synonyms for substring-move!. + + +** New module (ice-9 getopt-long), with the function `getopt-long'. + +getopt-long is a function for parsing command-line arguments in a +manner consistent with other GNU programs. + +(getopt-long ARGS GRAMMAR) +Parse the arguments ARGS according to the argument list grammar GRAMMAR. + +ARGS should be a list of strings. Its first element should be the +name of the program; subsequent elements should be the arguments +that were passed to the program on the command line. The +`program-arguments' procedure returns a list of this form. + +GRAMMAR is a list of the form: +((OPTION (PROPERTY VALUE) ...) ...) + +Each OPTION should be a symbol. `getopt-long' will accept a +command-line option named `--OPTION'. +Each option can have the following (PROPERTY VALUE) pairs: + + (single-char CHAR) --- Accept `-CHAR' as a single-character + equivalent to `--OPTION'. This is how to specify traditional + Unix-style flags. + (required? BOOL) --- If BOOL is true, the option is required. + getopt-long will raise an error if it is not found in ARGS. + (value BOOL) --- If BOOL is #t, the option accepts a value; if + it is #f, it does not; and if it is the symbol + `optional', the option may appear in ARGS with or + without a value. + (predicate FUNC) --- If the option accepts a value (i.e. you + specified `(value #t)' for this option), then getopt + will apply FUNC to the value, and throw an exception + if it returns #f. FUNC should be a procedure which + accepts a string and returns a boolean value; you may + need to use quasiquotes to get it into GRAMMAR. + +The (PROPERTY VALUE) pairs may occur in any order, but each +property may occur only once. By default, options do not have +single-character equivalents, are not required, and do not take +values. + +In ARGS, single-character options may be combined, in the usual +Unix fashion: ("-x" "-y") is equivalent to ("-xy"). If an option +accepts values, then it must be the last option in the +combination; the value is the next argument. So, for example, using +the following grammar: + ((apples (single-char #\a)) + (blimps (single-char #\b) (value #t)) + (catalexis (single-char #\c) (value #t))) +the following argument lists would be acceptable: + ("-a" "-b" "bang" "-c" "couth") ("bang" and "couth" are the values + for "blimps" and "catalexis") + ("-ab" "bang" "-c" "couth") (same) + ("-ac" "couth" "-b" "bang") (same) + ("-abc" "couth" "bang") (an error, since `-b' is not the + last option in its combination) + +If an option's value is optional, then `getopt-long' decides +whether it has a value by looking at what follows it in ARGS. If +the next element is a string, and it does not appear to be an +option itself, then that string is the option's value. + +The value of a long option can appear as the next element in ARGS, +or it can follow the option name, separated by an `=' character. +Thus, using the same grammar as above, the following argument lists +are equivalent: + ("--apples" "Braeburn" "--blimps" "Goodyear") + ("--apples=Braeburn" "--blimps" "Goodyear") + ("--blimps" "Goodyear" "--apples=Braeburn") + +If the option "--" appears in ARGS, argument parsing stops there; +subsequent arguments are returned as ordinary arguments, even if +they resemble options. So, in the argument list: + ("--apples" "Granny Smith" "--" "--blimp" "Goodyear") +`getopt-long' will recognize the `apples' option as having the +value "Granny Smith", but it will not recognize the `blimp' +option; it will return the strings "--blimp" and "Goodyear" as +ordinary argument strings. + +The `getopt-long' function returns the parsed argument list as an +assocation list, mapping option names --- the symbols from GRAMMAR +--- onto their values, or #t if the option does not accept a value. +Unused options do not appear in the alist. + +All arguments that are not the value of any option are returned +as a list, associated with the empty list. + +`getopt-long' throws an exception if: +- it finds an unrecognized option in ARGS +- a required option is omitted +- an option that requires an argument doesn't get one +- an option that doesn't accept an argument does get one (this can + only happen using the long option `--opt=value' syntax) +- an option predicate fails + +So, for example: + +(define grammar + `((lockfile-dir (required? #t) + (value #t) + (single-char #\k) + (predicate ,file-is-directory?)) + (verbose (required? #f) + (single-char #\v) + (value #f)) + (x-includes (single-char #\x)) + (rnet-server (single-char #\y) + (predicate ,string?)))) + +(getopt-long '("my-prog" "-vk" "/tmp" "foo1" "--x-includes=/usr/include" + "--rnet-server=lamprod" "--" "-fred" "foo2" "foo3") + grammar) +=> ((() "foo1" "-fred" "foo2" "foo3") + (rnet-server . "lamprod") + (x-includes . "/usr/include") + (lockfile-dir . "/tmp") + (verbose . #t)) + +** The (ice-9 getopt-gnu-style) module is obsolete; use (ice-9 getopt-long). + +It will be removed in a few releases. + +** New syntax: lambda* +** New syntax: define* +** New syntax: define*-public +** New syntax: defmacro* +** New syntax: defmacro*-public +Guile now supports optional arguments. + +`lambda*', `define*', `define*-public', `defmacro*' and +`defmacro*-public' are identical to the non-* versions except that +they use an extended type of parameter list that has the following BNF +syntax (parentheses are literal, square brackets indicate grouping, +and `*', `+' and `?' have the usual meaning): + + ext-param-list ::= ( [identifier]* [#&optional [ext-var-decl]+]? + [#&key [ext-var-decl]+ [#&allow-other-keys]?]? + [[#&rest identifier]|[. identifier]]? ) | [identifier] + + ext-var-decl ::= identifier | ( identifier expression ) + +The semantics are best illustrated with the following documentation +and examples for `lambda*': + + lambda* args . body + lambda extended for optional and keyword arguments + + lambda* creates a procedure that takes optional arguments. These + are specified by putting them inside brackets at the end of the + paramater list, but before any dotted rest argument. For example, + (lambda* (a b #&optional c d . e) '()) + creates a procedure with fixed arguments a and b, optional arguments c + and d, and rest argument e. If the optional arguments are omitted + in a call, the variables for them are unbound in the procedure. This + can be checked with the bound? macro. + + lambda* can also take keyword arguments. For example, a procedure + defined like this: + (lambda* (#&key xyzzy larch) '()) + can be called with any of the argument lists (#:xyzzy 11) + (#:larch 13) (#:larch 42 #:xyzzy 19) (). Whichever arguments + are given as keywords are bound to values. + + Optional and keyword arguments can also be given default values + which they take on when they are not present in a call, by giving a + two-item list in place of an optional argument, for example in: + (lambda* (foo #&optional (bar 42) #&key (baz 73)) (list foo bar baz)) + foo is a fixed argument, bar is an optional argument with default + value 42, and baz is a keyword argument with default value 73. + Default value expressions are not evaluated unless they are needed + and until the procedure is called. + + lambda* now supports two more special parameter list keywords. + + lambda*-defined procedures now throw an error by default if a + keyword other than one of those specified is found in the actual + passed arguments. However, specifying #&allow-other-keys + immediately after the kyword argument declarations restores the + previous behavior of ignoring unknown keywords. lambda* also now + guarantees that if the same keyword is passed more than once, the + last one passed is the one that takes effect. For example, + ((lambda* (#&key (heads 0) (tails 0)) (display (list heads tails))) + #:heads 37 #:tails 42 #:heads 99) + would result in (99 47) being displayed. + + #&rest is also now provided as a synonym for the dotted syntax rest + argument. The argument lists (a . b) and (a #&rest b) are equivalent in + all respects to lambda*. This is provided for more similarity to DSSSL, + MIT-Scheme and Kawa among others, as well as for refugees from other + Lisp dialects. + +Further documentation may be found in the optargs.scm file itself. + +The optional argument module also exports the macros `let-optional', +`let-optional*', `let-keywords', `let-keywords*' and `bound?'. These +are not documented here because they may be removed in the future, but +full documentation is still available in optargs.scm. + +** New syntax: and-let* +Guile now supports the `and-let*' form, described in the draft SRFI-2. + +Syntax: (land* ( ...) ...) +Each should have one of the following forms: + ( ) + () + +Each or should be an identifier. Each + should be a valid expression. The should be a +possibly empty sequence of expressions, like the of a +lambda form. + +Semantics: A LAND* expression is evaluated by evaluating the + or of each of the s from +left to right. The value of the first or + that evaluates to a false value is returned; the +remaining s and s are not evaluated. +The forms are evaluated iff all the s and +s evaluate to true values. + +The s and the are evaluated in an environment +binding each of the preceding ( ) +clauses to the value of the . Later bindings +shadow earlier bindings. + +Guile's and-let* macro was contributed by Michael Livshin. + +** New sorting functions + +*** New function: sorted? SEQUENCE LESS? +Returns `#t' when the sequence argument is in non-decreasing order +according to LESS? (that is, there is no adjacent pair `... x y +...' for which `(less? y x)'). + +Returns `#f' when the sequence contains at least one out-of-order +pair. It is an error if the sequence is neither a list nor a +vector. + +*** New function: merge LIST1 LIST2 LESS? +LIST1 and LIST2 are sorted lists. +Returns the sorted list of all elements in LIST1 and LIST2. + +Assume that the elements a and b1 in LIST1 and b2 in LIST2 are "equal" +in the sense that (LESS? x y) --> #f for x, y in {a, b1, b2}, +and that a < b1 in LIST1. Then a < b1 < b2 in the result. +(Here "<" should read "comes before".) + +*** New procedure: merge! LIST1 LIST2 LESS? +Merges two lists, re-using the pairs of LIST1 and LIST2 to build +the result. If the code is compiled, and LESS? constructs no new +pairs, no pairs at all will be allocated. The first pair of the +result will be either the first pair of LIST1 or the first pair of +LIST2. + +*** New function: sort SEQUENCE LESS? +Accepts either a list or a vector, and returns a new sequence +which is sorted. The new sequence is the same type as the input. +Always `(sorted? (sort sequence less?) less?)'. The original +sequence is not altered in any way. The new sequence shares its +elements with the old one; no elements are copied. + +*** New procedure: sort! SEQUENCE LESS +Returns its sorted result in the original boxes. No new storage is +allocated at all. Proper usage: (set! slist (sort! slist <)) + +*** New function: stable-sort SEQUENCE LESS? +Similar to `sort' but stable. That is, if "equal" elements are +ordered a < b in the original sequence, they will have the same order +in the result. + +*** New function: stable-sort! SEQUENCE LESS? +Similar to `sort!' but stable. +Uses temporary storage when sorting vectors. + +*** New functions: sort-list, sort-list! +Added for compatibility with scsh. + +** New built-in random number support + +*** New function: random N [STATE] +Accepts a positive integer or real N and returns a number of the +same type between zero (inclusive) and N (exclusive). The values +returned have a uniform distribution. + +The optional argument STATE must be of the type produced by +`copy-random-state' or `seed->random-state'. It defaults to the value +of the variable `*random-state*'. This object is used to maintain the +state of the pseudo-random-number generator and is altered as a side +effect of the `random' operation. + +*** New variable: *random-state* +Holds a data structure that encodes the internal state of the +random-number generator that `random' uses by default. The nature +of this data structure is implementation-dependent. It may be +printed out and successfully read back in, but may or may not +function correctly as a random-number state object in another +implementation. + +*** New function: copy-random-state [STATE] +Returns a new object of type suitable for use as the value of the +variable `*random-state*' and as a second argument to `random'. +If argument STATE is given, a copy of it is returned. Otherwise a +copy of `*random-state*' is returned. + +*** New function: seed->random-state SEED +Returns a new object of type suitable for use as the value of the +variable `*random-state*' and as a second argument to `random'. +SEED is a string or a number. A new state is generated and +initialized using SEED. + +*** New function: random:uniform [STATE] +Returns an uniformly distributed inexact real random number in the +range between 0 and 1. + +*** New procedure: random:solid-sphere! VECT [STATE] +Fills VECT with inexact real random numbers the sum of whose +squares is less than 1.0. Thinking of VECT as coordinates in +space of dimension N = `(vector-length VECT)', the coordinates are +uniformly distributed within the unit N-shere. The sum of the +squares of the numbers is returned. VECT can be either a vector +or a uniform vector of doubles. + +*** New procedure: random:hollow-sphere! VECT [STATE] +Fills VECT with inexact real random numbers the sum of whose squares +is equal to 1.0. Thinking of VECT as coordinates in space of +dimension n = `(vector-length VECT)', the coordinates are uniformly +distributed over the surface of the unit n-shere. VECT can be either +a vector or a uniform vector of doubles. + +*** New function: random:normal [STATE] +Returns an inexact real in a normal distribution with mean 0 and +standard deviation 1. For a normal distribution with mean M and +standard deviation D use `(+ M (* D (random:normal)))'. + +*** New procedure: random:normal-vector! VECT [STATE] +Fills VECT with inexact real random numbers which are independent and +standard normally distributed (i.e., with mean 0 and variance 1). +VECT can be either a vector or a uniform vector of doubles. + +*** New function: random:exp STATE +Returns an inexact real in an exponential distribution with mean 1. +For an exponential distribution with mean U use (* U (random:exp)). + +** The range of logand, logior, logxor, logtest, and logbit? have changed. + +These functions now operate on numbers in the range of a C unsigned +long. + +These functions used to operate on numbers in the range of a C signed +long; however, this seems inappropriate, because Guile integers don't +overflow. + +** New function: make-guardian +This is an implementation of guardians as described in +R. Kent Dybvig, Carl Bruggeman, and David Eby (1993) "Guardians in a +Generation-Based Garbage Collector" ACM SIGPLAN Conference on +Programming Language Design and Implementation, June 1993 +ftp://ftp.cs.indiana.edu/pub/scheme-repository/doc/pubs/guardians.ps.gz + +** New functions: delq1!, delv1!, delete1! +These procedures behave similar to delq! and friends but delete only +one object if at all. + +** New function: unread-string STRING PORT +Unread STRING to PORT, that is, push it back onto the port so that +next read operation will work on the pushed back characters. + +** unread-char can now be called multiple times +If unread-char is called multiple times, the unread characters will be +read again in last-in first-out order. + +** the procedures uniform-array-read! and uniform-array-write! now +work on any kind of port, not just ports which are open on a file. + +** Now 'l' in a port mode requests line buffering. + +** The procedure truncate-file now works on string ports as well +as file ports. If the size argument is omitted, the current +file position is used. + +** new procedure: seek PORT/FDES OFFSET WHENCE +The arguments are the same as for the old fseek procedure, but it +works on string ports as well as random-access file ports. + +** the fseek procedure now works on string ports, since it has been +redefined using seek. + +** the setvbuf procedure now uses a default size if mode is _IOFBF and +size is not supplied. + +** the newline procedure no longer flushes the port if it's not +line-buffered: previously it did if it was the current output port. + +** open-pipe and close-pipe are no longer primitive procedures, but +an emulation can be obtained using `(use-modules (ice-9 popen))'. + +** the freopen procedure has been removed. + +** new procedure: drain-input PORT +Drains PORT's read buffers (including any pushed-back characters) +and returns the contents as a single string. + +** New function: map-in-order PROC LIST1 LIST2 ... +Version of `map' which guarantees that the procedure is applied to the +lists in serial order. + +** Renamed `serial-array-copy!' and `serial-array-map!' to +`array-copy-in-order!' and `array-map-in-order!'. The old names are +now obsolete and will go away in release 1.5. + +** New syntax: collect BODY1 ... +Version of `begin' which returns a list of the results of the body +forms instead of the result of the last body form. In contrast to +`begin', `collect' allows an empty body. + +** New functions: read-history FILENAME, write-history FILENAME +Read/write command line history from/to file. Returns #t on success +and #f if an error occured. + +** `ls' and `lls' in module (ice-9 ls) now handle no arguments. + +These procedures return a list of definitions available in the specified +argument, a relative module reference. In the case of no argument, +`(current-module)' is now consulted for definitions to return, instead +of simply returning #f, the former behavior. + +** The #/ syntax for lists is no longer supported. + +Earlier versions of Scheme accepted this syntax, but printed a +warning. + +** Guile no longer consults the SCHEME_LOAD_PATH environment variable. + +Instead, you should set GUILE_LOAD_PATH to tell Guile where to find +modules. + +* Changes to the gh_ interface + +** gh_scm2doubles + +Now takes a second argument which is the result array. If this +pointer is NULL, a new array is malloced (the old behaviour). + +** gh_chars2byvect, gh_shorts2svect, gh_floats2fvect, gh_scm2chars, + gh_scm2shorts, gh_scm2longs, gh_scm2floats + +New functions. + +* Changes to the scm_ interface + +** Function: scm_make_named_hook (char* name, int n_args) + +Creates a hook in the same way as make-hook above but also +binds a variable named NAME to it. + +This is the typical way of creating a hook from C code. + +Currently, the variable is created in the "current" module. This +might change when we get the new module system. + +** The smob interface + +The interface for creating smobs has changed. For documentation, see +data-rep.info (made from guile-core/doc/data-rep.texi). + +*** Deprecated function: SCM scm_newsmob (scm_smobfuns *) + +>>> This function will be removed in 1.3.4. <<< + +It is replaced by: + +*** Function: SCM scm_make_smob_type (const char *name, scm_sizet size) +This function adds a new smob type, named NAME, with instance size +SIZE to the system. The return value is a tag that is used in +creating instances of the type. If SIZE is 0, then no memory will +be allocated when instances of the smob are created, and nothing +will be freed by the default free function. + +*** Function: void scm_set_smob_mark (long tc, SCM (*mark) (SCM)) +This function sets the smob marking procedure for the smob type +specified by the tag TC. TC is the tag returned by +`scm_make_smob_type'. + +*** Function: void scm_set_smob_free (long tc, SCM (*mark) (SCM)) +This function sets the smob freeing procedure for the smob type +specified by the tag TC. TC is the tag returned by +`scm_make_smob_type'. + +*** Function: void scm_set_smob_print (tc, print) + + - Function: void scm_set_smob_print (long tc, + scm_sizet (*print) (SCM, + SCM, + scm_print_state *)) + +This function sets the smob printing procedure for the smob type +specified by the tag TC. TC is the tag returned by +`scm_make_smob_type'. + +*** Function: void scm_set_smob_equalp (long tc, SCM (*equalp) (SCM, SCM)) +This function sets the smob equality-testing predicate for the +smob type specified by the tag TC. TC is the tag returned by +`scm_make_smob_type'. + +*** Macro: void SCM_NEWSMOB (SCM var, long tc, void *data) +Make VALUE contain a smob instance of the type with type code TC and +smob data DATA. VALUE must be previously declared as C type `SCM'. + +*** Macro: fn_returns SCM_RETURN_NEWSMOB (long tc, void *data) +This macro expands to a block of code that creates a smob instance +of the type with type code TC and smob data DATA, and returns that +`SCM' value. It should be the last piece of code in a block. + +** The interfaces for using I/O ports and implementing port types +(ptobs) have changed significantly. The new interface is based on +shared access to buffers and a new set of ptob procedures. + +*** scm_newptob has been removed + +It is replaced by: + +*** Function: SCM scm_make_port_type (type_name, fill_buffer, write_flush) + +- Function: SCM scm_make_port_type (char *type_name, + int (*fill_buffer) (SCM port), + void (*write_flush) (SCM port)); + +Similarly to the new smob interface, there is a set of function +setters by which the user can customize the behaviour of his port +type. See ports.h (scm_set_port_XXX). + +** scm_strport_to_string: New function: creates a new string from +a string port's buffer. + +** Plug in interface for random number generators +The variable `scm_the_rng' in random.c contains a value and three +function pointers which together define the current random number +generator being used by the Scheme level interface and the random +number library functions. + +The user is free to replace the default generator with the generator +of his own choice. + +*** Variable: size_t scm_the_rng.rstate_size +The size of the random state type used by the current RNG +measured in chars. + +*** Function: unsigned long scm_the_rng.random_bits (scm_rstate *STATE) +Given the random STATE, return 32 random bits. + +*** Function: void scm_the_rng.init_rstate (scm_rstate *STATE, chars *S, int N) +Seed random state STATE using string S of length N. + +*** Function: scm_rstate *scm_the_rng.copy_rstate (scm_rstate *STATE) +Given random state STATE, return a malloced copy. + +** Default RNG +The default RNG is the MWC (Multiply With Carry) random number +generator described by George Marsaglia at the Department of +Statistics and Supercomputer Computations Research Institute, The +Florida State University (http://stat.fsu.edu/~geo). + +It uses 64 bits, has a period of 4578426017172946943 (4.6e18), and +passes all tests in the DIEHARD test suite +(http://stat.fsu.edu/~geo/diehard.html). The generation of 32 bits +costs one multiply and one add on platforms which either supports long +longs (gcc does this on most systems) or have 64 bit longs. The cost +is four multiply on other systems but this can be optimized by writing +scm_i_uniform32 in assembler. + +These functions are provided through the scm_the_rng interface for use +by libguile and the application. + +*** Function: unsigned long scm_i_uniform32 (scm_i_rstate *STATE) +Given the random STATE, return 32 random bits. +Don't use this function directly. Instead go through the plugin +interface (see "Plug in interface" above). + +*** Function: void scm_i_init_rstate (scm_i_rstate *STATE, char *SEED, int N) +Initialize STATE using SEED of length N. + +*** Function: scm_i_rstate *scm_i_copy_rstate (scm_i_rstate *STATE) +Return a malloc:ed copy of STATE. This function can easily be re-used +in the interfaces to other RNGs. + +** Random number library functions +These functions use the current RNG through the scm_the_rng interface. +It might be a good idea to use these functions from your C code so +that only one random generator is used by all code in your program. + +The default random state is stored in: + +*** Variable: SCM scm_var_random_state +Contains the vcell of the Scheme variable "*random-state*" which is +used as default state by all random number functions in the Scheme +level interface. + +Example: + + double x = scm_c_uniform01 (SCM_RSTATE (SCM_CDR (scm_var_random_state))); + +*** Function: scm_rstate *scm_c_default_rstate (void) +This is a convenience function which returns the value of +scm_var_random_state. An error message is generated if this value +isn't a random state. + +*** Function: scm_rstate *scm_c_make_rstate (char *SEED, int LENGTH) +Make a new random state from the string SEED of length LENGTH. + +It is generally not a good idea to use multiple random states in a +program. While subsequent random numbers generated from one random +state are guaranteed to be reasonably independent, there is no such +guarantee for numbers generated from different random states. + +*** Macro: unsigned long scm_c_uniform32 (scm_rstate *STATE) +Return 32 random bits. + +*** Function: double scm_c_uniform01 (scm_rstate *STATE) +Return a sample from the uniform(0,1) distribution. + +*** Function: double scm_c_normal01 (scm_rstate *STATE) +Return a sample from the normal(0,1) distribution. + +*** Function: double scm_c_exp1 (scm_rstate *STATE) +Return a sample from the exp(1) distribution. + +*** Function: unsigned long scm_c_random (scm_rstate *STATE, unsigned long M) +Return a sample from the discrete uniform(0,M) distribution. + +*** Function: SCM scm_c_random_bignum (scm_rstate *STATE, SCM M) +Return a sample from the discrete uniform(0,M) distribution. +M must be a bignum object. The returned value may be an INUM. + + + +Changes in Guile 1.3 (released Monday, October 19, 1998): + +* Changes to the distribution + +** We renamed the SCHEME_LOAD_PATH environment variable to GUILE_LOAD_PATH. +To avoid conflicts, programs should name environment variables after +themselves, except when there's a common practice establishing some +other convention. + +For now, Guile supports both GUILE_LOAD_PATH and SCHEME_LOAD_PATH, +giving the former precedence, and printing a warning message if the +latter is set. Guile 1.4 will not recognize SCHEME_LOAD_PATH at all. + +** The header files related to multi-byte characters have been removed. +They were: libguile/extchrs.h and libguile/mbstrings.h. Any C code +which referred to these explicitly will probably need to be rewritten, +since the support for the variant string types has been removed; see +below. + +** The header files append.h and sequences.h have been removed. These +files implemented non-R4RS operations which would encourage +non-portable programming style and less easy-to-read code. + +* Changes to the stand-alone interpreter + +** New procedures have been added to implement a "batch mode": + +*** Function: batch-mode? + + Returns a boolean indicating whether the interpreter is in batch + mode. + +*** Function: set-batch-mode?! ARG + + If ARG is true, switches the interpreter to batch mode. The `#f' + case has not been implemented. + +** Guile now provides full command-line editing, when run interactively. +To use this feature, you must have the readline library installed. +The Guile build process will notice it, and automatically include +support for it. + +The readline library is available via anonymous FTP from any GNU +mirror site; the canonical location is "ftp://prep.ai.mit.edu/pub/gnu". + +** the-last-stack is now a fluid. + +* Changes to the procedure for linking libguile with your programs + +** You can now use the `guile-config' utility to build programs that use Guile. + +Guile now includes a command-line utility called `guile-config', which +can provide information about how to compile and link programs that +use Guile. + +*** `guile-config compile' prints any C compiler flags needed to use Guile. +You should include this command's output on the command line you use +to compile C or C++ code that #includes the Guile header files. It's +usually just a `-I' flag to help the compiler find the Guile headers. + + +*** `guile-config link' prints any linker flags necessary to link with Guile. + +This command writes to its standard output a list of flags which you +must pass to the linker to link your code against the Guile library. +The flags include '-lguile' itself, any other libraries the Guile +library depends upon, and any `-L' flags needed to help the linker +find those libraries. + +For example, here is a Makefile rule that builds a program named 'foo' +from the object files ${FOO_OBJECTS}, and links them against Guile: + + foo: ${FOO_OBJECTS} + ${CC} ${CFLAGS} ${FOO_OBJECTS} `guile-config link` -o foo + +Previous Guile releases recommended that you use autoconf to detect +which of a predefined set of libraries were present on your system. +It is more robust to use `guile-config', since it records exactly which +libraries the installed Guile library requires. + +This was originally called `build-guile', but was renamed to +`guile-config' before Guile 1.3 was released, to be consistent with +the analogous script for the GTK+ GUI toolkit, which is called +`gtk-config'. + + +** Use the GUILE_FLAGS macro in your configure.in file to find Guile. + +If you are using the GNU autoconf package to configure your program, +you can use the GUILE_FLAGS autoconf macro to call `guile-config' +(described above) and gather the necessary values for use in your +Makefiles. + +The GUILE_FLAGS macro expands to configure script code which runs the +`guile-config' script, to find out where Guile's header files and +libraries are installed. It sets two variables, marked for +substitution, as by AC_SUBST. + + GUILE_CFLAGS --- flags to pass to a C or C++ compiler to build + code that uses Guile header files. This is almost always just a + -I flag. + + GUILE_LDFLAGS --- flags to pass to the linker to link a + program against Guile. This includes `-lguile' for the Guile + library itself, any libraries that Guile itself requires (like + -lqthreads), and so on. It may also include a -L flag to tell the + compiler where to find the libraries. + +GUILE_FLAGS is defined in the file guile.m4, in the top-level +directory of the Guile distribution. You can copy it into your +package's aclocal.m4 file, and then use it in your configure.in file. + +If you are using the `aclocal' program, distributed with GNU automake, +to maintain your aclocal.m4 file, the Guile installation process +installs guile.m4 where aclocal will find it. All you need to do is +use GUILE_FLAGS in your configure.in file, and then run `aclocal'; +this will copy the definition of GUILE_FLAGS into your aclocal.m4 +file. + + +* Changes to Scheme functions and syntax + +** Multi-byte strings have been removed, as have multi-byte and wide +ports. We felt that these were the wrong approach to +internationalization support. + +** New function: readline [PROMPT] +Read a line from the terminal, and allow the user to edit it, +prompting with PROMPT. READLINE provides a large set of Emacs-like +editing commands, lets the user recall previously typed lines, and +works on almost every kind of terminal, including dumb terminals. + +READLINE assumes that the cursor is at the beginning of the line when +it is invoked. Thus, you can't print a prompt yourself, and then call +READLINE; you need to package up your prompt as a string, pass it to +the function, and let READLINE print the prompt itself. This is +because READLINE needs to know the prompt's screen width. + +For Guile to provide this function, you must have the readline +library, version 2.1 or later, installed on your system. Readline is +available via anonymous FTP from prep.ai.mit.edu in pub/gnu, or from +any GNU mirror site. + +See also ADD-HISTORY function. + +** New function: add-history STRING +Add STRING as the most recent line in the history used by the READLINE +command. READLINE does not add lines to the history itself; you must +call ADD-HISTORY to make previous input available to the user. + +** The behavior of the read-line function has changed. + +This function now uses standard C library functions to read the line, +for speed. This means that it doesn not respect the value of +scm-line-incrementors; it assumes that lines are delimited with +#\newline. + +(Note that this is read-line, the function that reads a line of text +from a port, not readline, the function that reads a line from a +terminal, providing full editing capabilities.) + +** New module (ice-9 getopt-gnu-style): Parse command-line arguments. + +This module provides some simple argument parsing. It exports one +function: + +Function: getopt-gnu-style ARG-LS + Parse a list of program arguments into an alist of option + descriptions. + + Each item in the list of program arguments is examined to see if + it meets the syntax of a GNU long-named option. An argument like + `--MUMBLE' produces an element of the form (MUMBLE . #t) in the + returned alist, where MUMBLE is a keyword object with the same + name as the argument. An argument like `--MUMBLE=FROB' produces + an element of the form (MUMBLE . FROB), where FROB is a string. + + As a special case, the returned alist also contains a pair whose + car is the symbol `rest'. The cdr of this pair is a list + containing all the items in the argument list that are not options + of the form mentioned above. + + The argument `--' is treated specially: all items in the argument + list appearing after such an argument are not examined, and are + returned in the special `rest' list. + + This function does not parse normal single-character switches. + You will need to parse them out of the `rest' list yourself. + +** The read syntax for byte vectors and short vectors has changed. + +Instead of #bytes(...), write #y(...). + +Instead of #short(...), write #h(...). + +This may seem nutty, but, like the other uniform vectors, byte vectors +and short vectors want to have the same print and read syntax (and, +more basic, want to have read syntax!). Changing the read syntax to +use multiple characters after the hash sign breaks with the +conventions used in R5RS and the conventions used for the other +uniform vectors. It also introduces complexity in the current reader, +both on the C and Scheme levels. (The Right solution is probably to +change the syntax and prototypes for uniform vectors entirely.) + + +** The new module (ice-9 session) provides useful interactive functions. + +*** New procedure: (apropos REGEXP OPTION ...) + +Display a list of top-level variables whose names match REGEXP, and +the modules they are imported from. Each OPTION should be one of the +following symbols: + + value --- Show the value of each matching variable. + shadow --- Show bindings shadowed by subsequently imported modules. + full --- Same as both `shadow' and `value'. + +For example: + + guile> (apropos "trace" 'full) + debug: trace # + debug: untrace # + the-scm-module: display-backtrace #> + the-scm-module: before-backtrace-hook () + the-scm-module: backtrace # + the-scm-module: after-backtrace-hook () + the-scm-module: has-shown-backtrace-hint? #f + guile> + +** There are new functions and syntax for working with macros. + +Guile implements macros as a special object type. Any variable whose +top-level binding is a macro object acts as a macro. The macro object +specifies how the expression should be transformed before evaluation. + +*** Macro objects now print in a reasonable way, resembling procedures. + +*** New function: (macro? OBJ) +True iff OBJ is a macro object. + +*** New function: (primitive-macro? OBJ) +Like (macro? OBJ), but true only if OBJ is one of the Guile primitive +macro transformers, implemented in eval.c rather than Scheme code. + +Why do we have this function? +- For symmetry with procedure? and primitive-procedure?, +- to allow custom print procedures to tell whether a macro is + primitive, and display it differently, and +- to allow compilers and user-written evaluators to distinguish + builtin special forms from user-defined ones, which could be + compiled. + +*** New function: (macro-type OBJ) +Return a value indicating what kind of macro OBJ is. Possible return +values are: + + The symbol `syntax' --- a macro created by procedure->syntax. + The symbol `macro' --- a macro created by procedure->macro. + The symbol `macro!' --- a macro created by procedure->memoizing-macro. + The boolean #f --- if OBJ is not a macro object. + +*** New function: (macro-name MACRO) +Return the name of the macro object MACRO's procedure, as returned by +procedure-name. + +*** New function: (macro-transformer MACRO) +Return the transformer procedure for MACRO. + +*** New syntax: (use-syntax MODULE ... TRANSFORMER) + +Specify a new macro expander to use in the current module. Each +MODULE is a module name, with the same meaning as in the `use-modules' +form; each named module's exported bindings are added to the current +top-level environment. TRANSFORMER is an expression evaluated in the +resulting environment which must yield a procedure to use as the +module's eval transformer: every expression evaluated in this module +is passed to this function, and the result passed to the Guile +interpreter. + +*** macro-eval! is removed. Use local-eval instead. + +** Some magic has been added to the printer to better handle user +written printing routines (like record printers, closure printers). + +The problem is that these user written routines must have access to +the current `print-state' to be able to handle fancy things like +detection of circular references. These print-states have to be +passed to the builtin printing routines (display, write, etc) to +properly continue the print chain. + +We didn't want to change all existing print code so that it +explicitly passes thru a print state in addition to a port. Instead, +we extented the possible values that the builtin printing routines +accept as a `port'. In addition to a normal port, they now also take +a pair of a normal port and a print-state. Printing will go to the +port and the print-state will be used to control the detection of +circular references, etc. If the builtin function does not care for a +print-state, it is simply ignored. + +User written callbacks are now called with such a pair as their +`port', but because every function now accepts this pair as a PORT +argument, you don't have to worry about that. In fact, it is probably +safest to not check for these pairs. + +However, it is sometimes necessary to continue a print chain on a +different port, for example to get a intermediate string +representation of the printed value, mangle that string somehow, and +then to finally print the mangled string. Use the new function + + inherit-print-state OLD-PORT NEW-PORT + +for this. It constructs a new `port' that prints to NEW-PORT but +inherits the print-state of OLD-PORT. + +** struct-vtable-offset renamed to vtable-offset-user + +** New constants: vtable-index-layout, vtable-index-vtable, vtable-index-printer + +** There is now a third optional argument to make-vtable-vtable + (and fourth to make-struct) when constructing new types (vtables). + This argument initializes field vtable-index-printer of the vtable. + +** The detection of circular references has been extended to structs. +That is, a structure that -- in the process of being printed -- prints +itself does not lead to infinite recursion. + +** There is now some basic support for fluids. Please read +"libguile/fluid.h" to find out more. It is accessible from Scheme with +the following functions and macros: + +Function: make-fluid + + Create a new fluid object. Fluids are not special variables or + some other extension to the semantics of Scheme, but rather + ordinary Scheme objects. You can store them into variables (that + are still lexically scoped, of course) or into any other place you + like. Every fluid has a initial value of `#f'. + +Function: fluid? OBJ + + Test whether OBJ is a fluid. + +Function: fluid-ref FLUID +Function: fluid-set! FLUID VAL + + Access/modify the fluid FLUID. Modifications are only visible + within the current dynamic root (that includes threads). + +Function: with-fluids* FLUIDS VALUES THUNK + + FLUIDS is a list of fluids and VALUES a corresponding list of + values for these fluids. Before THUNK gets called the values are + installed in the fluids and the old values of the fluids are + saved in the VALUES list. When the flow of control leaves THUNK + or reenters it, the values get swapped again. You might think of + this as a `safe-fluid-excursion'. Note that the VALUES list is + modified by `with-fluids*'. + +Macro: with-fluids ((FLUID VALUE) ...) FORM ... + + The same as `with-fluids*' but with a different syntax. It looks + just like `let', but both FLUID and VALUE are evaluated. Remember, + fluids are not special variables but ordinary objects. FLUID + should evaluate to a fluid. + +** Changes to system call interfaces: + +*** close-port, close-input-port and close-output-port now return a +boolean instead of an `unspecified' object. #t means that the port +was successfully closed, while #f means it was already closed. It is +also now possible for these procedures to raise an exception if an +error occurs (some errors from write can be delayed until close.) + +*** the first argument to chmod, fcntl, ftell and fseek can now be a +file descriptor. + +*** the third argument to fcntl is now optional. + +*** the first argument to chown can now be a file descriptor or a port. + +*** the argument to stat can now be a port. + +*** The following new procedures have been added (most use scsh +interfaces): + +*** procedure: close PORT/FD + Similar to close-port (*note close-port: Closing Ports.), but also + works on file descriptors. A side effect of closing a file + descriptor is that any ports using that file descriptor are moved + to a different file descriptor and have their revealed counts set + to zero. + +*** procedure: port->fdes PORT + Returns the integer file descriptor underlying PORT. As a side + effect the revealed count of PORT is incremented. + +*** procedure: fdes->ports FDES + Returns a list of existing ports which have FDES as an underlying + file descriptor, without changing their revealed counts. + +*** procedure: fdes->inport FDES + Returns an existing input port which has FDES as its underlying + file descriptor, if one exists, and increments its revealed count. + Otherwise, returns a new input port with a revealed count of 1. + +*** procedure: fdes->outport FDES + Returns an existing output port which has FDES as its underlying + file descriptor, if one exists, and increments its revealed count. + Otherwise, returns a new output port with a revealed count of 1. + + The next group of procedures perform a `dup2' system call, if NEWFD +(an integer) is supplied, otherwise a `dup'. The file descriptor to be +duplicated can be supplied as an integer or contained in a port. The +type of value returned varies depending on which procedure is used. + + All procedures also have the side effect when performing `dup2' that +any ports using NEWFD are moved to a different file descriptor and have +their revealed counts set to zero. + +*** procedure: dup->fdes PORT/FD [NEWFD] + Returns an integer file descriptor. + +*** procedure: dup->inport PORT/FD [NEWFD] + Returns a new input port using the new file descriptor. + +*** procedure: dup->outport PORT/FD [NEWFD] + Returns a new output port using the new file descriptor. + +*** procedure: dup PORT/FD [NEWFD] + Returns a new port if PORT/FD is a port, with the same mode as the + supplied port, otherwise returns an integer file descriptor. + +*** procedure: dup->port PORT/FD MODE [NEWFD] + Returns a new port using the new file descriptor. MODE supplies a + mode string for the port (*note open-file: File Ports.). + +*** procedure: setenv NAME VALUE + Modifies the environment of the current process, which is also the + default environment inherited by child processes. + + If VALUE is `#f', then NAME is removed from the environment. + Otherwise, the string NAME=VALUE is added to the environment, + replacing any existing string with name matching NAME. + + The return value is unspecified. + +*** procedure: truncate-file OBJ SIZE + Truncates the file referred to by OBJ to at most SIZE bytes. OBJ + can be a string containing a file name or an integer file + descriptor or port open for output on the file. The underlying + system calls are `truncate' and `ftruncate'. + + The return value is unspecified. + +*** procedure: setvbuf PORT MODE [SIZE] + Set the buffering mode for PORT. MODE can be: + `_IONBF' + non-buffered + + `_IOLBF' + line buffered + + `_IOFBF' + block buffered, using a newly allocated buffer of SIZE bytes. + However if SIZE is zero or unspecified, the port will be made + non-buffered. + + This procedure should not be used after I/O has been performed with + the port. + + Ports are usually block buffered by default, with a default buffer + size. Procedures e.g., *Note open-file: File Ports, which accept a + mode string allow `0' to be added to request an unbuffered port. + +*** procedure: fsync PORT/FD + Copies any unwritten data for the specified output file descriptor + to disk. If PORT/FD is a port, its buffer is flushed before the + underlying file descriptor is fsync'd. The return value is + unspecified. + +*** procedure: open-fdes PATH FLAGS [MODES] + Similar to `open' but returns a file descriptor instead of a port. + +*** procedure: execle PATH ENV [ARG] ... + Similar to `execl', but the environment of the new process is + specified by ENV, which must be a list of strings as returned by + the `environ' procedure. + + This procedure is currently implemented using the `execve' system + call, but we call it `execle' because of its Scheme calling + interface. + +*** procedure: strerror ERRNO + Returns the Unix error message corresponding to ERRNO, an integer. + +*** procedure: primitive-exit [STATUS] + Terminate the current process without unwinding the Scheme stack. + This is would typically be useful after a fork. The exit status + is STATUS if supplied, otherwise zero. + +*** procedure: times + Returns an object with information about real and processor time. + The following procedures accept such an object as an argument and + return a selected component: + + `tms:clock' + The current real time, expressed as time units relative to an + arbitrary base. + + `tms:utime' + The CPU time units used by the calling process. + + `tms:stime' + The CPU time units used by the system on behalf of the + calling process. + + `tms:cutime' + The CPU time units used by terminated child processes of the + calling process, whose status has been collected (e.g., using + `waitpid'). + + `tms:cstime' + Similarly, the CPU times units used by the system on behalf of + terminated child processes. + +** Removed: list-length +** Removed: list-append, list-append! +** Removed: list-reverse, list-reverse! + +** array-map renamed to array-map! + +** serial-array-map renamed to serial-array-map! + +** catch doesn't take #f as first argument any longer + +Previously, it was possible to pass #f instead of a key to `catch'. +That would cause `catch' to pass a jump buffer object to the procedure +passed as second argument. The procedure could then use this jump +buffer objekt as an argument to throw. + +This mechanism has been removed since its utility doesn't motivate the +extra complexity it introduces. + +** The `#/' notation for lists now provokes a warning message from Guile. +This syntax will be removed from Guile in the near future. + +To disable the warning message, set the GUILE_HUSH environment +variable to any non-empty value. + +** The newline character now prints as `#\newline', following the +normal Scheme notation, not `#\nl'. + +* Changes to the gh_ interface + +** The gh_enter function now takes care of loading the Guile startup files. +gh_enter works by calling scm_boot_guile; see the remarks below. + +** Function: void gh_write (SCM x) + +Write the printed representation of the scheme object x to the current +output port. Corresponds to the scheme level `write'. + +** gh_list_length renamed to gh_length. + +** vector handling routines + +Several major changes. In particular, gh_vector() now resembles +(vector ...) (with a caveat -- see manual), and gh_make_vector() now +exists and behaves like (make-vector ...). gh_vset() and gh_vref() +have been renamed gh_vector_set_x() and gh_vector_ref(). Some missing +vector-related gh_ functions have been implemented. + +** pair and list routines + +Implemented several of the R4RS pair and list functions that were +missing. + +** gh_scm2doubles, gh_doubles2scm, gh_doubles2dvect + +New function. Converts double arrays back and forth between Scheme +and C. + +* Changes to the scm_ interface + +** The function scm_boot_guile now takes care of loading the startup files. + +Guile's primary initialization function, scm_boot_guile, now takes +care of loading `boot-9.scm', in the `ice-9' module, to initialize +Guile, define the module system, and put together some standard +bindings. It also loads `init.scm', which is intended to hold +site-specific initialization code. + +Since Guile cannot operate properly until boot-9.scm is loaded, there +is no reason to separate loading boot-9.scm from Guile's other +initialization processes. + +This job used to be done by scm_compile_shell_switches, which didn't +make much sense; in particular, it meant that people using Guile for +non-shell-like applications had to jump through hoops to get Guile +initialized properly. + +** The function scm_compile_shell_switches no longer loads the startup files. +Now, Guile always loads the startup files, whenever it is initialized; +see the notes above for scm_boot_guile and scm_load_startup_files. + +** Function: scm_load_startup_files +This new function takes care of loading Guile's initialization file +(`boot-9.scm'), and the site initialization file, `init.scm'. Since +this is always called by the Guile initialization process, it's +probably not too useful to call this yourself, but it's there anyway. + +** The semantics of smob marking have changed slightly. + +The smob marking function (the `mark' member of the scm_smobfuns +structure) is no longer responsible for setting the mark bit on the +smob. The generic smob handling code in the garbage collector will +set this bit. The mark function need only ensure that any other +objects the smob refers to get marked. + +Note that this change means that the smob's GC8MARK bit is typically +already set upon entry to the mark function. Thus, marking functions +which look like this: + + { + if (SCM_GC8MARKP (ptr)) + return SCM_BOOL_F; + SCM_SETGC8MARK (ptr); + ... mark objects to which the smob refers ... + } + +are now incorrect, since they will return early, and fail to mark any +other objects the smob refers to. Some code in the Guile library used +to work this way. + +** The semantics of the I/O port functions in scm_ptobfuns have changed. + +If you have implemented your own I/O port type, by writing the +functions required by the scm_ptobfuns and then calling scm_newptob, +you will need to change your functions slightly. + +The functions in a scm_ptobfuns structure now expect the port itself +as their argument; they used to expect the `stream' member of the +port's scm_port_table structure. This allows functions in an +scm_ptobfuns structure to easily access the port's cell (and any flags +it its CAR), and the port's scm_port_table structure. + +Guile now passes the I/O port itself as the `port' argument in the +following scm_ptobfuns functions: + + int (*free) (SCM port); + int (*fputc) (int, SCM port); + int (*fputs) (char *, SCM port); + scm_sizet (*fwrite) SCM_P ((char *ptr, + scm_sizet size, + scm_sizet nitems, + SCM port)); + int (*fflush) (SCM port); + int (*fgetc) (SCM port); + int (*fclose) (SCM port); + +The interfaces to the `mark', `print', `equalp', and `fgets' methods +are unchanged. + +If you have existing code which defines its own port types, it is easy +to convert your code to the new interface; simply apply SCM_STREAM to +the port argument to yield the value you code used to expect. + +Note that since both the port and the stream have the same type in the +C code --- they are both SCM values --- the C compiler will not remind +you if you forget to update your scm_ptobfuns functions. + + +** Function: int scm_internal_select (int fds, + SELECT_TYPE *rfds, + SELECT_TYPE *wfds, + SELECT_TYPE *efds, + struct timeval *timeout); + +This is a replacement for the `select' function provided by the OS. +It enables I/O blocking and sleeping to happen for one cooperative +thread without blocking other threads. It also avoids busy-loops in +these situations. It is intended that all I/O blocking and sleeping +will finally go through this function. Currently, this function is +only available on systems providing `gettimeofday' and `select'. + +** Function: SCM scm_internal_stack_catch (SCM tag, + scm_catch_body_t body, + void *body_data, + scm_catch_handler_t handler, + void *handler_data) + +A new sibling to the other two C level `catch' functions +scm_internal_catch and scm_internal_lazy_catch. Use it if you want +the stack to be saved automatically into the variable `the-last-stack' +(scm_the_last_stack_var) on error. This is necessary if you want to +use advanced error reporting, such as calling scm_display_error and +scm_display_backtrace. (They both take a stack object as argument.) + +** Function: SCM scm_spawn_thread (scm_catch_body_t body, + void *body_data, + scm_catch_handler_t handler, + void *handler_data) + +Spawns a new thread. It does a job similar to +scm_call_with_new_thread but takes arguments more suitable when +spawning threads from application C code. + +** The hook scm_error_callback has been removed. It was originally +intended as a way for the user to install his own error handler. But +that method works badly since it intervenes between throw and catch, +thereby changing the semantics of expressions like (catch #t ...). +The correct way to do it is to use one of the C level catch functions +in throw.c: scm_internal_catch/lazy_catch/stack_catch. + +** Removed functions: + +scm_obj_length, scm_list_length, scm_list_append, scm_list_append_x, +scm_list_reverse, scm_list_reverse_x + +** New macros: SCM_LISTn where n is one of the integers 0-9. + +These can be used for pretty list creation from C. The idea is taken +from Erick Gallesio's STk. + +** scm_array_map renamed to scm_array_map_x + +** mbstrings are now removed + +This means that the type codes scm_tc7_mb_string and +scm_tc7_mb_substring has been removed. + +** scm_gen_putc, scm_gen_puts, scm_gen_write, and scm_gen_getc have changed. + +Since we no longer support multi-byte strings, these I/O functions +have been simplified, and renamed. Here are their old names, and +their new names and arguments: + +scm_gen_putc -> void scm_putc (int c, SCM port); +scm_gen_puts -> void scm_puts (char *s, SCM port); +scm_gen_write -> void scm_lfwrite (char *ptr, scm_sizet size, SCM port); +scm_gen_getc -> void scm_getc (SCM port); + + +** The macros SCM_TYP7D and SCM_TYP7SD has been removed. + +** The macro SCM_TYP7S has taken the role of the old SCM_TYP7D + +SCM_TYP7S now masks away the bit which distinguishes substrings from +strings. + +** scm_catch_body_t: Backward incompatible change! + +Body functions to scm_internal_catch and friends do not any longer +take a second argument. This is because it is no longer possible to +pass a #f arg to catch. + +** Calls to scm_protect_object and scm_unprotect now nest properly. + +The function scm_protect_object protects its argument from being freed +by the garbage collector. scm_unprotect_object removes that +protection. + +These functions now nest properly. That is, for every object O, there +is a counter which scm_protect_object(O) increments and +scm_unprotect_object(O) decrements, if the counter is greater than +zero. Every object's counter is zero when it is first created. If an +object's counter is greater than zero, the garbage collector will not +reclaim its storage. + +This allows you to use scm_protect_object in your code without +worrying that some other function you call will call +scm_unprotect_object, and allow it to be freed. Assuming that the +functions you call are well-behaved, and unprotect only those objects +they protect, you can follow the same rule and have confidence that +objects will be freed only at appropriate times. + + +Changes in Guile 1.2 (released Tuesday, June 24 1997): + +* Changes to the distribution + +** Nightly snapshots are now available from ftp.red-bean.com. +The old server, ftp.cyclic.com, has been relinquished to its rightful +owner. + +Nightly snapshots of the Guile development sources are now available via +anonymous FTP from ftp.red-bean.com, as /pub/guile/guile-snap.tar.gz. + +Via the web, that's: ftp://ftp.red-bean.com/pub/guile/guile-snap.tar.gz +For getit, that's: ftp.red-bean.com:/pub/guile/guile-snap.tar.gz + +** To run Guile without installing it, the procedure has changed a bit. + +If you used a separate build directory to compile Guile, you'll need +to include the build directory in SCHEME_LOAD_PATH, as well as the +source directory. See the `INSTALL' file for examples. + +* Changes to the procedure for linking libguile with your programs + +** The standard Guile load path for Scheme code now includes +$(datadir)/guile (usually /usr/local/share/guile). This means that +you can install your own Scheme files there, and Guile will find them. +(Previous versions of Guile only checked a directory whose name +contained the Guile version number, so you had to re-install or move +your Scheme sources each time you installed a fresh version of Guile.) + +The load path also includes $(datadir)/guile/site; we recommend +putting individual Scheme files there. If you want to install a +package with multiple source files, create a directory for them under +$(datadir)/guile. + +** Guile 1.2 will now use the Rx regular expression library, if it is +installed on your system. When you are linking libguile into your own +programs, this means you will have to link against -lguile, -lqt (if +you configured Guile with thread support), and -lrx. + +If you are using autoconf to generate configuration scripts for your +application, the following lines should suffice to add the appropriate +libraries to your link command: + +### Find Rx, quickthreads and libguile. +AC_CHECK_LIB(rx, main) +AC_CHECK_LIB(qt, main) +AC_CHECK_LIB(guile, scm_shell) + +The Guile 1.2 distribution does not contain sources for the Rx +library, as Guile 1.0 did. If you want to use Rx, you'll need to +retrieve it from a GNU FTP site and install it separately. + +* Changes to Scheme functions and syntax + +** The dynamic linking features of Guile are now enabled by default. +You can disable them by giving the `--disable-dynamic-linking' option +to configure. + + (dynamic-link FILENAME) + + Find the object file denoted by FILENAME (a string) and link it + into the running Guile application. When everything works out, + return a Scheme object suitable for representing the linked object + file. Otherwise an error is thrown. How object files are + searched is system dependent. + + (dynamic-object? VAL) + + Determine whether VAL represents a dynamically linked object file. + + (dynamic-unlink DYNOBJ) + + Unlink the indicated object file from the application. DYNOBJ + should be one of the values returned by `dynamic-link'. + + (dynamic-func FUNCTION DYNOBJ) + + Search the C function indicated by FUNCTION (a string or symbol) + in DYNOBJ and return some Scheme object that can later be used + with `dynamic-call' to actually call this function. Right now, + these Scheme objects are formed by casting the address of the + function to `long' and converting this number to its Scheme + representation. + + (dynamic-call FUNCTION DYNOBJ) + + Call the C function indicated by FUNCTION and DYNOBJ. The + function is passed no arguments and its return value is ignored. + When FUNCTION is something returned by `dynamic-func', call that + function and ignore DYNOBJ. When FUNCTION is a string (or symbol, + etc.), look it up in DYNOBJ; this is equivalent to + + (dynamic-call (dynamic-func FUNCTION DYNOBJ) #f) + + Interrupts are deferred while the C function is executing (with + SCM_DEFER_INTS/SCM_ALLOW_INTS). + + (dynamic-args-call FUNCTION DYNOBJ ARGS) + + Call the C function indicated by FUNCTION and DYNOBJ, but pass it + some arguments and return its return value. The C function is + expected to take two arguments and return an `int', just like + `main': + + int c_func (int argc, char **argv); + + ARGS must be a list of strings and is converted into an array of + `char *'. The array is passed in ARGV and its size in ARGC. The + return value is converted to a Scheme number and returned from the + call to `dynamic-args-call'. + +When dynamic linking is disabled or not supported on your system, +the above functions throw errors, but they are still available. + +Here is a small example that works on GNU/Linux: + + (define libc-obj (dynamic-link "libc.so")) + (dynamic-args-call 'rand libc-obj '()) + +See the file `libguile/DYNAMIC-LINKING' for additional comments. + +** The #/ syntax for module names is depreciated, and will be removed +in a future version of Guile. Instead of + + #/foo/bar/baz + +instead write + + (foo bar baz) + +The latter syntax is more consistent with existing Lisp practice. + +** Guile now does fancier printing of structures. Structures are the +underlying implementation for records, which in turn are used to +implement modules, so all of these object now print differently and in +a more informative way. + +The Scheme printer will examine the builtin variable *struct-printer* +whenever it needs to print a structure object. When this variable is +not `#f' it is deemed to be a procedure and will be applied to the +structure object and the output port. When *struct-printer* is `#f' +or the procedure return `#f' the structure object will be printed in +the boring # form. + +This hook is used by some routines in ice-9/boot-9.scm to implement +type specific printing routines. Please read the comments there about +"printing structs". + +One of the more specific uses of structs are records. The printing +procedure that could be passed to MAKE-RECORD-TYPE is now actually +called. It should behave like a *struct-printer* procedure (described +above). + +** Guile now supports a new R4RS-compliant syntax for keywords. A +token of the form #:NAME, where NAME has the same syntax as a Scheme +symbol, is the external representation of the keyword named NAME. +Keyword objects print using this syntax as well, so values containing +keyword objects can be read back into Guile. When used in an +expression, keywords are self-quoting objects. + +Guile suports this read syntax, and uses this print syntax, regardless +of the current setting of the `keyword' read option. The `keyword' +read option only controls whether Guile recognizes the `:NAME' syntax, +which is incompatible with R4RS. (R4RS says such token represent +symbols.) + +** Guile has regular expression support again. Guile 1.0 included +functions for matching regular expressions, based on the Rx library. +In Guile 1.1, the Guile/Rx interface was removed to simplify the +distribution, and thus Guile had no regular expression support. Guile +1.2 again supports the most commonly used functions, and supports all +of SCSH's regular expression functions. + +If your system does not include a POSIX regular expression library, +and you have not linked Guile with a third-party regexp library such as +Rx, these functions will not be available. You can tell whether your +Guile installation includes regular expression support by checking +whether the `*features*' list includes the `regex' symbol. + +*** regexp functions + +By default, Guile supports POSIX extended regular expressions. That +means that the characters `(', `)', `+' and `?' are special, and must +be escaped if you wish to match the literal characters. + +This regular expression interface was modeled after that implemented +by SCSH, the Scheme Shell. It is intended to be upwardly compatible +with SCSH regular expressions. + +**** Function: string-match PATTERN STR [START] + Compile the string PATTERN into a regular expression and compare + it with STR. The optional numeric argument START specifies the + position of STR at which to begin matching. + + `string-match' returns a "match structure" which describes what, + if anything, was matched by the regular expression. *Note Match + Structures::. If STR does not match PATTERN at all, + `string-match' returns `#f'. + + Each time `string-match' is called, it must compile its PATTERN +argument into a regular expression structure. This operation is +expensive, which makes `string-match' inefficient if the same regular +expression is used several times (for example, in a loop). For better +performance, you can compile a regular expression in advance and then +match strings against the compiled regexp. + +**** Function: make-regexp STR [FLAGS] + Compile the regular expression described by STR, and return the + compiled regexp structure. If STR does not describe a legal + regular expression, `make-regexp' throws a + `regular-expression-syntax' error. + + FLAGS may be the bitwise-or of one or more of the following: + +**** Constant: regexp/extended + Use POSIX Extended Regular Expression syntax when interpreting + STR. If not set, POSIX Basic Regular Expression syntax is used. + If the FLAGS argument is omitted, we assume regexp/extended. + +**** Constant: regexp/icase + Do not differentiate case. Subsequent searches using the + returned regular expression will be case insensitive. + +**** Constant: regexp/newline + Match-any-character operators don't match a newline. + + A non-matching list ([^...]) not containing a newline matches a + newline. + + Match-beginning-of-line operator (^) matches the empty string + immediately after a newline, regardless of whether the FLAGS + passed to regexp-exec contain regexp/notbol. + + Match-end-of-line operator ($) matches the empty string + immediately before a newline, regardless of whether the FLAGS + passed to regexp-exec contain regexp/noteol. + +**** Function: regexp-exec REGEXP STR [START [FLAGS]] + Match the compiled regular expression REGEXP against `str'. If + the optional integer START argument is provided, begin matching + from that position in the string. Return a match structure + describing the results of the match, or `#f' if no match could be + found. + + FLAGS may be the bitwise-or of one or more of the following: + +**** Constant: regexp/notbol + The match-beginning-of-line operator always fails to match (but + see the compilation flag regexp/newline above) This flag may be + used when different portions of a string are passed to + regexp-exec and the beginning of the string should not be + interpreted as the beginning of the line. + +**** Constant: regexp/noteol + The match-end-of-line operator always fails to match (but see the + compilation flag regexp/newline above) + +**** Function: regexp? OBJ + Return `#t' if OBJ is a compiled regular expression, or `#f' + otherwise. + + Regular expressions are commonly used to find patterns in one string +and replace them with the contents of another string. + +**** Function: regexp-substitute PORT MATCH [ITEM...] + Write to the output port PORT selected contents of the match + structure MATCH. Each ITEM specifies what should be written, and + may be one of the following arguments: + + * A string. String arguments are written out verbatim. + + * An integer. The submatch with that number is written. + + * The symbol `pre'. The portion of the matched string preceding + the regexp match is written. + + * The symbol `post'. The portion of the matched string + following the regexp match is written. + + PORT may be `#f', in which case nothing is written; instead, + `regexp-substitute' constructs a string from the specified ITEMs + and returns that. + +**** Function: regexp-substitute/global PORT REGEXP TARGET [ITEM...] + Similar to `regexp-substitute', but can be used to perform global + substitutions on STR. Instead of taking a match structure as an + argument, `regexp-substitute/global' takes two string arguments: a + REGEXP string describing a regular expression, and a TARGET string + which should be matched against this regular expression. + + Each ITEM behaves as in REGEXP-SUBSTITUTE, with the following + exceptions: + + * A function may be supplied. When this function is called, it + will be passed one argument: a match structure for a given + regular expression match. It should return a string to be + written out to PORT. + + * The `post' symbol causes `regexp-substitute/global' to recurse + on the unmatched portion of STR. This *must* be supplied in + order to perform global search-and-replace on STR; if it is + not present among the ITEMs, then `regexp-substitute/global' + will return after processing a single match. + +*** Match Structures + + A "match structure" is the object returned by `string-match' and +`regexp-exec'. It describes which portion of a string, if any, matched +the given regular expression. Match structures include: a reference to +the string that was checked for matches; the starting and ending +positions of the regexp match; and, if the regexp included any +parenthesized subexpressions, the starting and ending positions of each +submatch. + + In each of the regexp match functions described below, the `match' +argument must be a match structure returned by a previous call to +`string-match' or `regexp-exec'. Most of these functions return some +information about the original target string that was matched against a +regular expression; we will call that string TARGET for easy reference. + +**** Function: regexp-match? OBJ + Return `#t' if OBJ is a match structure returned by a previous + call to `regexp-exec', or `#f' otherwise. + +**** Function: match:substring MATCH [N] + Return the portion of TARGET matched by subexpression number N. + Submatch 0 (the default) represents the entire regexp match. If + the regular expression as a whole matched, but the subexpression + number N did not match, return `#f'. + +**** Function: match:start MATCH [N] + Return the starting position of submatch number N. + +**** Function: match:end MATCH [N] + Return the ending position of submatch number N. + +**** Function: match:prefix MATCH + Return the unmatched portion of TARGET preceding the regexp match. + +**** Function: match:suffix MATCH + Return the unmatched portion of TARGET following the regexp match. + +**** Function: match:count MATCH + Return the number of parenthesized subexpressions from MATCH. + Note that the entire regular expression match itself counts as a + subexpression, and failed submatches are included in the count. + +**** Function: match:string MATCH + Return the original TARGET string. + +*** Backslash Escapes + + Sometimes you will want a regexp to match characters like `*' or `$' +exactly. For example, to check whether a particular string represents +a menu entry from an Info node, it would be useful to match it against +a regexp like `^* [^:]*::'. However, this won't work; because the +asterisk is a metacharacter, it won't match the `*' at the beginning of +the string. In this case, we want to make the first asterisk un-magic. + + You can do this by preceding the metacharacter with a backslash +character `\'. (This is also called "quoting" the metacharacter, and +is known as a "backslash escape".) When Guile sees a backslash in a +regular expression, it considers the following glyph to be an ordinary +character, no matter what special meaning it would ordinarily have. +Therefore, we can make the above example work by changing the regexp to +`^\* [^:]*::'. The `\*' sequence tells the regular expression engine +to match only a single asterisk in the target string. + + Since the backslash is itself a metacharacter, you may force a +regexp to match a backslash in the target string by preceding the +backslash with itself. For example, to find variable references in a +TeX program, you might want to find occurrences of the string `\let\' +followed by any number of alphabetic characters. The regular expression +`\\let\\[A-Za-z]*' would do this: the double backslashes in the regexp +each match a single backslash in the target string. + +**** Function: regexp-quote STR + Quote each special character found in STR with a backslash, and + return the resulting string. + + *Very important:* Using backslash escapes in Guile source code (as +in Emacs Lisp or C) can be tricky, because the backslash character has +special meaning for the Guile reader. For example, if Guile encounters +the character sequence `\n' in the middle of a string while processing +Scheme code, it replaces those characters with a newline character. +Similarly, the character sequence `\t' is replaced by a horizontal tab. +Several of these "escape sequences" are processed by the Guile reader +before your code is executed. Unrecognized escape sequences are +ignored: if the characters `\*' appear in a string, they will be +translated to the single character `*'. + + This translation is obviously undesirable for regular expressions, +since we want to be able to include backslashes in a string in order to +escape regexp metacharacters. Therefore, to make sure that a backslash +is preserved in a string in your Guile program, you must use *two* +consecutive backslashes: + + (define Info-menu-entry-pattern (make-regexp "^\\* [^:]*")) + + The string in this example is preprocessed by the Guile reader before +any code is executed. The resulting argument to `make-regexp' is the +string `^\* [^:]*', which is what we really want. + + This also means that in order to write a regular expression that +matches a single backslash character, the regular expression string in +the source code must include *four* backslashes. Each consecutive pair +of backslashes gets translated by the Guile reader to a single +backslash, and the resulting double-backslash is interpreted by the +regexp engine as matching a single backslash character. Hence: + + (define tex-variable-pattern (make-regexp "\\\\let\\\\=[A-Za-z]*")) + + The reason for the unwieldiness of this syntax is historical. Both +regular expression pattern matchers and Unix string processing systems +have traditionally used backslashes with the special meanings described +above. The POSIX regular expression specification and ANSI C standard +both require these semantics. Attempting to abandon either convention +would cause other kinds of compatibility problems, possibly more severe +ones. Therefore, without extending the Scheme reader to support +strings with different quoting conventions (an ungainly and confusing +extension when implemented in other languages), we must adhere to this +cumbersome escape syntax. + +* Changes to the gh_ interface + +* Changes to the scm_ interface + +* Changes to system call interfaces: + +** The value returned by `raise' is now unspecified. It throws an exception +if an error occurs. + +*** A new procedure `sigaction' can be used to install signal handlers + +(sigaction signum [action] [flags]) + +signum is the signal number, which can be specified using the value +of SIGINT etc. + +If action is omitted, sigaction returns a pair: the CAR is the current +signal hander, which will be either an integer with the value SIG_DFL +(default action) or SIG_IGN (ignore), or the Scheme procedure which +handles the signal, or #f if a non-Scheme procedure handles the +signal. The CDR contains the current sigaction flags for the handler. + +If action is provided, it is installed as the new handler for signum. +action can be a Scheme procedure taking one argument, or the value of +SIG_DFL (default action) or SIG_IGN (ignore), or #f to restore +whatever signal handler was installed before sigaction was first used. +Flags can optionally be specified for the new handler (SA_RESTART is +always used if the system provides it, so need not be specified.) The +return value is a pair with information about the old handler as +described above. + +This interface does not provide access to the "signal blocking" +facility. Maybe this is not needed, since the thread support may +provide solutions to the problem of consistent access to data +structures. + +*** A new procedure `flush-all-ports' is equivalent to running +`force-output' on every port open for output. + +** Guile now provides information on how it was built, via the new +global variable, %guile-build-info. This variable records the values +of the standard GNU makefile directory variables as an assocation +list, mapping variable names (symbols) onto directory paths (strings). +For example, to find out where the Guile link libraries were +installed, you can say: + +guile -c "(display (assq-ref %guile-build-info 'libdir)) (newline)" + + +* Changes to the scm_ interface + +** The new function scm_handle_by_message_noexit is just like the +existing scm_handle_by_message function, except that it doesn't call +exit to terminate the process. Instead, it prints a message and just +returns #f. This might be a more appropriate catch-all handler for +new dynamic roots and threads. + + +Changes in Guile 1.1 (released Friday, May 16 1997): + +* Changes to the distribution. + +The Guile 1.0 distribution has been split up into several smaller +pieces: +guile-core --- the Guile interpreter itself. +guile-tcltk --- the interface between the Guile interpreter and + Tcl/Tk; Tcl is an interpreter for a stringy language, and Tk + is a toolkit for building graphical user interfaces. +guile-rgx-ctax --- the interface between Guile and the Rx regular + expression matcher, and the translator for the Ctax + programming language. These are packaged together because the + Ctax translator uses Rx to parse Ctax source code. + +This NEWS file describes the changes made to guile-core since the 1.0 +release. + +We no longer distribute the documentation, since it was either out of +date, or incomplete. As soon as we have current documentation, we +will distribute it. + + + +* Changes to the stand-alone interpreter + +** guile now accepts command-line arguments compatible with SCSH, Olin +Shivers' Scheme Shell. + +In general, arguments are evaluated from left to right, but there are +exceptions. The following switches stop argument processing, and +stash all remaining command-line arguments as the value returned by +the (command-line) function. + -s SCRIPT load Scheme source code from FILE, and exit + -c EXPR evalute Scheme expression EXPR, and exit + -- stop scanning arguments; run interactively + +The switches below are processed as they are encountered. + -l FILE load Scheme source code from FILE + -e FUNCTION after reading script, apply FUNCTION to + command line arguments + -ds do -s script at this point + --emacs enable Emacs protocol (experimental) + -h, --help display this help and exit + -v, --version display version information and exit + \ read arguments from following script lines + +So, for example, here is a Guile script named `ekko' (thanks, Olin) +which re-implements the traditional "echo" command: + +#!/usr/local/bin/guile -s +!# +(define (main args) + (map (lambda (arg) (display arg) (display " ")) + (cdr args)) + (newline)) + +(main (command-line)) + +Suppose we invoke this script as follows: + + ekko a speckled gecko + +Through the magic of Unix script processing (triggered by the `#!' +token at the top of the file), /usr/local/bin/guile receives the +following list of command-line arguments: + + ("-s" "./ekko" "a" "speckled" "gecko") + +Unix inserts the name of the script after the argument specified on +the first line of the file (in this case, "-s"), and then follows that +with the arguments given to the script. Guile loads the script, which +defines the `main' function, and then applies it to the list of +remaining command-line arguments, ("a" "speckled" "gecko"). + +In Unix, the first line of a script file must take the following form: + +#!INTERPRETER ARGUMENT + +where INTERPRETER is the absolute filename of the interpreter +executable, and ARGUMENT is a single command-line argument to pass to +the interpreter. + +You may only pass one argument to the interpreter, and its length is +limited. These restrictions can be annoying to work around, so Guile +provides a general mechanism (borrowed from, and compatible with, +SCSH) for circumventing them. + +If the ARGUMENT in a Guile script is a single backslash character, +`\', Guile will open the script file, parse arguments from its second +and subsequent lines, and replace the `\' with them. So, for example, +here is another implementation of the `ekko' script: + +#!/usr/local/bin/guile \ +-e main -s +!# +(define (main args) + (for-each (lambda (arg) (display arg) (display " ")) + (cdr args)) + (newline)) + +If the user invokes this script as follows: + + ekko a speckled gecko + +Unix expands this into + + /usr/local/bin/guile \ ekko a speckled gecko + +When Guile sees the `\' argument, it replaces it with the arguments +read from the second line of the script, producing: + + /usr/local/bin/guile -e main -s ekko a speckled gecko + +This tells Guile to load the `ekko' script, and apply the function +`main' to the argument list ("a" "speckled" "gecko"). + +Here is how Guile parses the command-line arguments: +- Each space character terminates an argument. This means that two + spaces in a row introduce an empty-string argument. +- The tab character is not permitted (unless you quote it with the + backslash character, as described below), to avoid confusion. +- The newline character terminates the sequence of arguments, and will + also terminate a final non-empty argument. (However, a newline + following a space will not introduce a final empty-string argument; + it only terminates the argument list.) +- The backslash character is the escape character. It escapes + backslash, space, tab, and newline. The ANSI C escape sequences + like \n and \t are also supported. These produce argument + constituents; the two-character combination \n doesn't act like a + terminating newline. The escape sequence \NNN for exactly three + octal digits reads as the character whose ASCII code is NNN. As + above, characters produced this way are argument constituents. + Backslash followed by other characters is not allowed. + +* Changes to the procedure for linking libguile with your programs + +** Guile now builds and installs a shared guile library, if your +system support shared libraries. (It still builds a static library on +all systems.) Guile automatically detects whether your system +supports shared libraries. To prevent Guile from buildisg shared +libraries, pass the `--disable-shared' flag to the configure script. + +Guile takes longer to compile when it builds shared libraries, because +it must compile every file twice --- once to produce position- +independent object code, and once to produce normal object code. + +** The libthreads library has been merged into libguile. + +To link a program against Guile, you now need only link against +-lguile and -lqt; -lthreads is no longer needed. If you are using +autoconf to generate configuration scripts for your application, the +following lines should suffice to add the appropriate libraries to +your link command: + +### Find quickthreads and libguile. +AC_CHECK_LIB(qt, main) +AC_CHECK_LIB(guile, scm_shell) + +* Changes to Scheme functions + +** Guile Scheme's special syntax for keyword objects is now optional, +and disabled by default. + +The syntax variation from R4RS made it difficult to port some +interesting packages to Guile. The routines which accepted keyword +arguments (mostly in the module system) have been modified to also +accept symbols whose names begin with `:'. + +To change the keyword syntax, you must first import the (ice-9 debug) +module: + (use-modules (ice-9 debug)) + +Then you can enable the keyword syntax as follows: + (read-set! keywords 'prefix) + +To disable keyword syntax, do this: + (read-set! keywords #f) + +** Many more primitive functions accept shared substrings as +arguments. In the past, these functions required normal, mutable +strings as arguments, although they never made use of this +restriction. + +** The uniform array functions now operate on byte vectors. These +functions are `array-fill!', `serial-array-copy!', `array-copy!', +`serial-array-map', `array-map', `array-for-each', and +`array-index-map!'. + +** The new functions `trace' and `untrace' implement simple debugging +support for Scheme functions. + +The `trace' function accepts any number of procedures as arguments, +and tells the Guile interpreter to display each procedure's name and +arguments each time the procedure is invoked. When invoked with no +arguments, `trace' returns the list of procedures currently being +traced. + +The `untrace' function accepts any number of procedures as arguments, +and tells the Guile interpreter not to trace them any more. When +invoked with no arguments, `untrace' untraces all curretly traced +procedures. + +The tracing in Guile has an advantage over most other systems: we +don't create new procedure objects, but mark the procedure objects +themselves. This means that anonymous and internal procedures can be +traced. + +** The function `assert-repl-prompt' has been renamed to +`set-repl-prompt!'. It takes one argument, PROMPT. +- If PROMPT is #f, the Guile read-eval-print loop will not prompt. +- If PROMPT is a string, we use it as a prompt. +- If PROMPT is a procedure accepting no arguments, we call it, and + display the result as a prompt. +- Otherwise, we display "> ". + +** The new function `eval-string' reads Scheme expressions from a +string and evaluates them, returning the value of the last expression +in the string. If the string contains no expressions, it returns an +unspecified value. + +** The new function `thunk?' returns true iff its argument is a +procedure of zero arguments. + +** `defined?' is now a builtin function, instead of syntax. This +means that its argument should be quoted. It returns #t iff its +argument is bound in the current module. + +** The new syntax `use-modules' allows you to add new modules to your +environment without re-typing a complete `define-module' form. It +accepts any number of module names as arguments, and imports their +public bindings into the current module. + +** The new function (module-defined? NAME MODULE) returns true iff +NAME, a symbol, is defined in MODULE, a module object. + +** The new function `builtin-bindings' creates and returns a hash +table containing copies of all the root module's bindings. + +** The new function `builtin-weak-bindings' does the same as +`builtin-bindings', but creates a doubly-weak hash table. + +** The `equal?' function now considers variable objects to be +equivalent if they have the same name and the same value. + +** The new function `command-line' returns the command-line arguments +given to Guile, as a list of strings. + +When using guile as a script interpreter, `command-line' returns the +script's arguments; those processed by the interpreter (like `-s' or +`-c') are omitted. (In other words, you get the normal, expected +behavior.) Any application that uses scm_shell to process its +command-line arguments gets this behavior as well. + +** The new function `load-user-init' looks for a file called `.guile' +in the user's home directory, and loads it if it exists. This is +mostly for use by the code generated by scm_compile_shell_switches, +but we thought it might also be useful in other circumstances. + +** The new function `log10' returns the base-10 logarithm of its +argument. + +** Changes to I/O functions + +*** The functions `read', `primitive-load', `read-and-eval!', and +`primitive-load-path' no longer take optional arguments controlling +case insensitivity and a `#' parser. + +Case sensitivity is now controlled by a read option called +`case-insensitive'. The user can add new `#' syntaxes with the +`read-hash-extend' function (see below). + +*** The new function `read-hash-extend' allows the user to change the +syntax of Guile Scheme in a somewhat controlled way. + +(read-hash-extend CHAR PROC) + When parsing S-expressions, if we read a `#' character followed by + the character CHAR, use PROC to parse an object from the stream. + If PROC is #f, remove any parsing procedure registered for CHAR. + + The reader applies PROC to two arguments: CHAR and an input port. + +*** The new functions read-delimited and read-delimited! provide a +general mechanism for doing delimited input on streams. + +(read-delimited DELIMS [PORT HANDLE-DELIM]) + Read until we encounter one of the characters in DELIMS (a string), + or end-of-file. PORT is the input port to read from; it defaults to + the current input port. The HANDLE-DELIM parameter determines how + the terminating character is handled; it should be one of the + following symbols: + + 'trim omit delimiter from result + 'peek leave delimiter character in input stream + 'concat append delimiter character to returned value + 'split return a pair: (RESULT . TERMINATOR) + + HANDLE-DELIM defaults to 'peek. + +(read-delimited! DELIMS BUF [PORT HANDLE-DELIM START END]) + A side-effecting variant of `read-delimited'. + + The data is written into the string BUF at the indices in the + half-open interval [START, END); the default interval is the whole + string: START = 0 and END = (string-length BUF). The values of + START and END must specify a well-defined interval in BUF, i.e. + 0 <= START <= END <= (string-length BUF). + + It returns NBYTES, the number of bytes read. If the buffer filled + up without a delimiter character being found, it returns #f. If the + port is at EOF when the read starts, it returns the EOF object. + + If an integer is returned (i.e., the read is successfully terminated + by reading a delimiter character), then the HANDLE-DELIM parameter + determines how to handle the terminating character. It is described + above, and defaults to 'peek. + +(The descriptions of these functions were borrowed from the SCSH +manual, by Olin Shivers and Brian Carlstrom.) + +*** The `%read-delimited!' function is the primitive used to implement +`read-delimited' and `read-delimited!'. + +(%read-delimited! DELIMS BUF GOBBLE? [PORT START END]) + +This returns a pair of values: (TERMINATOR . NUM-READ). +- TERMINATOR describes why the read was terminated. If it is a + character or the eof object, then that is the value that terminated + the read. If it is #f, the function filled the buffer without finding + a delimiting character. +- NUM-READ is the number of characters read into BUF. + +If the read is successfully terminated by reading a delimiter +character, then the gobble? parameter determines what to do with the +terminating character. If true, the character is removed from the +input stream; if false, the character is left in the input stream +where a subsequent read operation will retrieve it. In either case, +the character is also the first value returned by the procedure call. + +(The descriptions of this function was borrowed from the SCSH manual, +by Olin Shivers and Brian Carlstrom.) + +*** The `read-line' and `read-line!' functions have changed; they now +trim the terminator by default; previously they appended it to the +returned string. For the old behavior, use (read-line PORT 'concat). + +*** The functions `uniform-array-read!' and `uniform-array-write!' now +take new optional START and END arguments, specifying the region of +the array to read and write. + +*** The `ungetc-char-ready?' function has been removed. We feel it's +inappropriate for an interface to expose implementation details this +way. + +** Changes to the Unix library and system call interface + +*** The new fcntl function provides access to the Unix `fcntl' system +call. + +(fcntl PORT COMMAND VALUE) + Apply COMMAND to PORT's file descriptor, with VALUE as an argument. + Values for COMMAND are: + + F_DUPFD duplicate a file descriptor + F_GETFD read the descriptor's close-on-exec flag + F_SETFD set the descriptor's close-on-exec flag to VALUE + F_GETFL read the descriptor's flags, as set on open + F_SETFL set the descriptor's flags, as set on open to VALUE + F_GETOWN return the process ID of a socket's owner, for SIGIO + F_SETOWN set the process that owns a socket to VALUE, for SIGIO + FD_CLOEXEC not sure what this is + +For details, see the documentation for the fcntl system call. + +*** The arguments to `select' have changed, for compatibility with +SCSH. The TIMEOUT parameter may now be non-integral, yielding the +expected behavior. The MILLISECONDS parameter has been changed to +MICROSECONDS, to more closely resemble the underlying system call. +The RVEC, WVEC, and EVEC arguments can now be vectors; the type of the +corresponding return set will be the same. + +*** The arguments to the `mknod' system call have changed. They are +now: + +(mknod PATH TYPE PERMS DEV) + Create a new file (`node') in the file system. PATH is the name of + the file to create. TYPE is the kind of file to create; it should + be 'fifo, 'block-special, or 'char-special. PERMS specifies the + permission bits to give the newly created file. If TYPE is + 'block-special or 'char-special, DEV specifies which device the + special file refers to; its interpretation depends on the kind of + special file being created. + +*** The `fork' function has been renamed to `primitive-fork', to avoid +clashing with various SCSH forks. + +*** The `recv' and `recvfrom' functions have been renamed to `recv!' +and `recvfrom!'. They no longer accept a size for a second argument; +you must pass a string to hold the received value. They no longer +return the buffer. Instead, `recv' returns the length of the message +received, and `recvfrom' returns a pair containing the packet's length +and originating address. + +*** The file descriptor datatype has been removed, as have the +`read-fd', `write-fd', `close', `lseek', and `dup' functions. +We plan to replace these functions with a SCSH-compatible interface. + +*** The `create' function has been removed; it's just a special case +of `open'. + +*** There are new functions to break down process termination status +values. In the descriptions below, STATUS is a value returned by +`waitpid'. + +(status:exit-val STATUS) + If the child process exited normally, this function returns the exit + code for the child process (i.e., the value passed to exit, or + returned from main). If the child process did not exit normally, + this function returns #f. + +(status:stop-sig STATUS) + If the child process was suspended by a signal, this function + returns the signal that suspended the child. Otherwise, it returns + #f. + +(status:term-sig STATUS) + If the child process terminated abnormally, this function returns + the signal that terminated the child. Otherwise, this function + returns false. + +POSIX promises that exactly one of these functions will return true on +a valid STATUS value. + +These functions are compatible with SCSH. + +*** There are new accessors and setters for the broken-out time vectors +returned by `localtime', `gmtime', and that ilk. They are: + + Component Accessor Setter + ========================= ============ ============ + seconds tm:sec set-tm:sec + minutes tm:min set-tm:min + hours tm:hour set-tm:hour + day of the month tm:mday set-tm:mday + month tm:mon set-tm:mon + year tm:year set-tm:year + day of the week tm:wday set-tm:wday + day in the year tm:yday set-tm:yday + daylight saving time tm:isdst set-tm:isdst + GMT offset, seconds tm:gmtoff set-tm:gmtoff + name of time zone tm:zone set-tm:zone + +*** There are new accessors for the vectors returned by `uname', +describing the host system: + + Component Accessor + ============================================== ================ + name of the operating system implementation utsname:sysname + network name of this machine utsname:nodename + release level of the operating system utsname:release + version level of the operating system utsname:version + machine hardware platform utsname:machine + +*** There are new accessors for the vectors returned by `getpw', +`getpwnam', `getpwuid', and `getpwent', describing entries from the +system's user database: + + Component Accessor + ====================== ================= + user name passwd:name + user password passwd:passwd + user id passwd:uid + group id passwd:gid + real name passwd:gecos + home directory passwd:dir + shell program passwd:shell + +*** There are new accessors for the vectors returned by `getgr', +`getgrnam', `getgrgid', and `getgrent', describing entries from the +system's group database: + + Component Accessor + ======================= ============ + group name group:name + group password group:passwd + group id group:gid + group members group:mem + +*** There are new accessors for the vectors returned by `gethost', +`gethostbyaddr', `gethostbyname', and `gethostent', describing +internet hosts: + + Component Accessor + ========================= =============== + official name of host hostent:name + alias list hostent:aliases + host address type hostent:addrtype + length of address hostent:length + list of addresses hostent:addr-list + +*** There are new accessors for the vectors returned by `getnet', +`getnetbyaddr', `getnetbyname', and `getnetent', describing internet +networks: + + Component Accessor + ========================= =============== + official name of net netent:name + alias list netent:aliases + net number type netent:addrtype + net number netent:net + +*** There are new accessors for the vectors returned by `getproto', +`getprotobyname', `getprotobynumber', and `getprotoent', describing +internet protocols: + + Component Accessor + ========================= =============== + official protocol name protoent:name + alias list protoent:aliases + protocol number protoent:proto + +*** There are new accessors for the vectors returned by `getserv', +`getservbyname', `getservbyport', and `getservent', describing +internet protocols: + + Component Accessor + ========================= =============== + official service name servent:name + alias list servent:aliases + port number servent:port + protocol to use servent:proto + +*** There are new accessors for the sockaddr structures returned by +`accept', `getsockname', `getpeername', `recvfrom!': + + Component Accessor + ======================================== =============== + address format (`family') sockaddr:fam + path, for file domain addresses sockaddr:path + address, for internet domain addresses sockaddr:addr + TCP or UDP port, for internet sockaddr:port + +*** The `getpwent', `getgrent', `gethostent', `getnetent', +`getprotoent', and `getservent' functions now return #f at the end of +the user database. (They used to throw an exception.) + +Note that calling MUMBLEent function is equivalent to calling the +corresponding MUMBLE function with no arguments. + +*** The `setpwent', `setgrent', `sethostent', `setnetent', +`setprotoent', and `setservent' routines now take no arguments. + +*** The `gethost', `getproto', `getnet', and `getserv' functions now +provide more useful information when they throw an exception. + +*** The `lnaof' function has been renamed to `inet-lnaof'. + +*** Guile now claims to have the `current-time' feature. + +*** The `mktime' function now takes an optional second argument ZONE, +giving the time zone to use for the conversion. ZONE should be a +string, in the same format as expected for the "TZ" environment variable. + +*** The `strptime' function now returns a pair (TIME . COUNT), where +TIME is the parsed time as a vector, and COUNT is the number of +characters from the string left unparsed. This function used to +return the remaining characters as a string. + +*** The `gettimeofday' function has replaced the old `time+ticks' function. +The return value is now (SECONDS . MICROSECONDS); the fractional +component is no longer expressed in "ticks". + +*** The `ticks/sec' constant has been removed, in light of the above change. + +* Changes to the gh_ interface + +** gh_eval_str() now returns an SCM object which is the result of the +evaluation + +** gh_scm2str() now copies the Scheme data to a caller-provided C +array + +** gh_scm2newstr() now makes a C array, copies the Scheme data to it, +and returns the array + +** gh_scm2str0() is gone: there is no need to distinguish +null-terminated from non-null-terminated, since gh_scm2newstr() allows +the user to interpret the data both ways. + +* Changes to the scm_ interface + +** The new function scm_symbol_value0 provides an easy way to get a +symbol's value from C code: + +SCM scm_symbol_value0 (char *NAME) + Return the value of the symbol named by the null-terminated string + NAME in the current module. If the symbol named NAME is unbound in + the current module, return SCM_UNDEFINED. + +** The new function scm_sysintern0 creates new top-level variables, +without assigning them a value. + +SCM scm_sysintern0 (char *NAME) + Create a new Scheme top-level variable named NAME. NAME is a + null-terminated string. Return the variable's value cell. + +** The function scm_internal_catch is the guts of catch. It handles +all the mechanics of setting up a catch target, invoking the catch +body, and perhaps invoking the handler if the body does a throw. + +The function is designed to be usable from C code, but is general +enough to implement all the semantics Guile Scheme expects from throw. + +TAG is the catch tag. Typically, this is a symbol, but this function +doesn't actually care about that. + +BODY is a pointer to a C function which runs the body of the catch; +this is the code you can throw from. We call it like this: + BODY (BODY_DATA, JMPBUF) +where: + BODY_DATA is just the BODY_DATA argument we received; we pass it + through to BODY as its first argument. The caller can make + BODY_DATA point to anything useful that BODY might need. + JMPBUF is the Scheme jmpbuf object corresponding to this catch, + which we have just created and initialized. + +HANDLER is a pointer to a C function to deal with a throw to TAG, +should one occur. We call it like this: + HANDLER (HANDLER_DATA, THROWN_TAG, THROW_ARGS) +where + HANDLER_DATA is the HANDLER_DATA argument we recevied; it's the + same idea as BODY_DATA above. + THROWN_TAG is the tag that the user threw to; usually this is + TAG, but it could be something else if TAG was #t (i.e., a + catch-all), or the user threw to a jmpbuf. + THROW_ARGS is the list of arguments the user passed to the THROW + function. + +BODY_DATA is just a pointer we pass through to BODY. HANDLER_DATA +is just a pointer we pass through to HANDLER. We don't actually +use either of those pointers otherwise ourselves. The idea is +that, if our caller wants to communicate something to BODY or +HANDLER, it can pass a pointer to it as MUMBLE_DATA, which BODY and +HANDLER can then use. Think of it as a way to make BODY and +HANDLER closures, not just functions; MUMBLE_DATA points to the +enclosed variables. + +Of course, it's up to the caller to make sure that any data a +MUMBLE_DATA needs is protected from GC. A common way to do this is +to make MUMBLE_DATA a pointer to data stored in an automatic +structure variable; since the collector must scan the stack for +references anyway, this assures that any references in MUMBLE_DATA +will be found. + +** The new function scm_internal_lazy_catch is exactly like +scm_internal_catch, except: + +- It does not unwind the stack (this is the major difference). +- If handler returns, its value is returned from the throw. +- BODY always receives #f as its JMPBUF argument (since there's no + jmpbuf associated with a lazy catch, because we don't unwind the + stack.) + +** scm_body_thunk is a new body function you can pass to +scm_internal_catch if you want the body to be like Scheme's `catch' +--- a thunk, or a function of one argument if the tag is #f. + +BODY_DATA is a pointer to a scm_body_thunk_data structure, which +contains the Scheme procedure to invoke as the body, and the tag +we're catching. If the tag is #f, then we pass JMPBUF (created by +scm_internal_catch) to the body procedure; otherwise, the body gets +no arguments. + +** scm_handle_by_proc is a new handler function you can pass to +scm_internal_catch if you want the handler to act like Scheme's catch +--- call a procedure with the tag and the throw arguments. + +If the user does a throw to this catch, this function runs a handler +procedure written in Scheme. HANDLER_DATA is a pointer to an SCM +variable holding the Scheme procedure object to invoke. It ought to +be a pointer to an automatic variable (i.e., one living on the stack), +or the procedure object should be otherwise protected from GC. + +** scm_handle_by_message is a new handler function to use with +`scm_internal_catch' if you want Guile to print a message and die. +It's useful for dealing with throws to uncaught keys at the top level. + +HANDLER_DATA, if non-zero, is assumed to be a char * pointing to a +message header to print; if zero, we use "guile" instead. That +text is followed by a colon, then the message described by ARGS. + +** The return type of scm_boot_guile is now void; the function does +not return a value, and indeed, never returns at all. + +** The new function scm_shell makes it easy for user applications to +process command-line arguments in a way that is compatible with the +stand-alone guile interpreter (which is in turn compatible with SCSH, +the Scheme shell). + +To use the scm_shell function, first initialize any guile modules +linked into your application, and then call scm_shell with the values +of ARGC and ARGV your `main' function received. scm_shell will add +any SCSH-style meta-arguments from the top of the script file to the +argument vector, and then process the command-line arguments. This +generally means loading a script file or starting up an interactive +command interpreter. For details, see "Changes to the stand-alone +interpreter" above. + +** The new functions scm_get_meta_args and scm_count_argv help you +implement the SCSH-style meta-argument, `\'. + +char **scm_get_meta_args (int ARGC, char **ARGV) + If the second element of ARGV is a string consisting of a single + backslash character (i.e. "\\" in Scheme notation), open the file + named by the following argument, parse arguments from it, and return + the spliced command line. The returned array is terminated by a + null pointer. + + For details of argument parsing, see above, under "guile now accepts + command-line arguments compatible with SCSH..." + +int scm_count_argv (char **ARGV) + Count the arguments in ARGV, assuming it is terminated by a null + pointer. + +For an example of how these functions might be used, see the source +code for the function scm_shell in libguile/script.c. + +You will usually want to use scm_shell instead of calling this +function yourself. + +** The new function scm_compile_shell_switches turns an array of +command-line arguments into Scheme code to carry out the actions they +describe. Given ARGC and ARGV, it returns a Scheme expression to +evaluate, and calls scm_set_program_arguments to make any remaining +command-line arguments available to the Scheme code. For example, +given the following arguments: + + -e main -s ekko a speckled gecko + +scm_set_program_arguments will return the following expression: + + (begin (load "ekko") (main (command-line)) (quit)) + +You will usually want to use scm_shell instead of calling this +function yourself. + +** The function scm_shell_usage prints a usage message appropriate for +an interpreter that uses scm_compile_shell_switches to handle its +command-line arguments. + +void scm_shell_usage (int FATAL, char *MESSAGE) + Print a usage message to the standard error output. If MESSAGE is + non-zero, write it before the usage message, followed by a newline. + If FATAL is non-zero, exit the process, using FATAL as the + termination status. (If you want to be compatible with Guile, + always use 1 as the exit status when terminating due to command-line + usage problems.) + +You will usually want to use scm_shell instead of calling this +function yourself. + +** scm_eval_0str now returns SCM_UNSPECIFIED if the string contains no +expressions. It used to return SCM_EOL. Earth-shattering. + +** The macros for declaring scheme objects in C code have been +rearranged slightly. They are now: + +SCM_SYMBOL (C_NAME, SCHEME_NAME) + Declare a static SCM variable named C_NAME, and initialize it to + point to the Scheme symbol whose name is SCHEME_NAME. C_NAME should + be a C identifier, and SCHEME_NAME should be a C string. + +SCM_GLOBAL_SYMBOL (C_NAME, SCHEME_NAME) + Just like SCM_SYMBOL, but make C_NAME globally visible. + +SCM_VCELL (C_NAME, SCHEME_NAME) + Create a global variable at the Scheme level named SCHEME_NAME. + Declare a static SCM variable named C_NAME, and initialize it to + point to the Scheme variable's value cell. + +SCM_GLOBAL_VCELL (C_NAME, SCHEME_NAME) + Just like SCM_VCELL, but make C_NAME globally visible. + +The `guile-snarf' script writes initialization code for these macros +to its standard output, given C source code as input. + +The SCM_GLOBAL macro is gone. + +** The scm_read_line and scm_read_line_x functions have been replaced +by Scheme code based on the %read-delimited! procedure (known to C +code as scm_read_delimited_x). See its description above for more +information. + +** The function scm_sys_open has been renamed to scm_open. It now +returns a port instead of an FD object. + +* The dynamic linking support has changed. For more information, see +libguile/DYNAMIC-LINKING. + + +Guile 1.0b3 + +User-visible changes from Thursday, September 5, 1996 until Guile 1.0 +(Sun 5 Jan 1997): + +* Changes to the 'guile' program: + +** Guile now loads some new files when it starts up. Guile first +searches the load path for init.scm, and loads it if found. Then, if +Guile is not being used to execute a script, and the user's home +directory contains a file named `.guile', Guile loads that. + +** You can now use Guile as a shell script interpreter. + +To paraphrase the SCSH manual: + + When Unix tries to execute an executable file whose first two + characters are the `#!', it treats the file not as machine code to + be directly executed by the native processor, but as source code + to be executed by some interpreter. The interpreter to use is + specified immediately after the #! sequence on the first line of + the source file. The kernel reads in the name of the interpreter, + and executes that instead. It passes the interpreter the source + filename as its first argument, with the original arguments + following. Consult the Unix man page for the `exec' system call + for more information. + +Now you can use Guile as an interpreter, using a mechanism which is a +compatible subset of that provided by SCSH. + +Guile now recognizes a '-s' command line switch, whose argument is the +name of a file of Scheme code to load. It also treats the two +characters `#!' as the start of a comment, terminated by `!#'. Thus, +to make a file of Scheme code directly executable by Unix, insert the +following two lines at the top of the file: + +#!/usr/local/bin/guile -s +!# + +Guile treats the argument of the `-s' command-line switch as the name +of a file of Scheme code to load, and treats the sequence `#!' as the +start of a block comment, terminated by `!#'. + +For example, here's a version of 'echo' written in Scheme: + +#!/usr/local/bin/guile -s +!# +(let loop ((args (cdr (program-arguments)))) + (if (pair? args) + (begin + (display (car args)) + (if (pair? (cdr args)) + (display " ")) + (loop (cdr args))))) +(newline) + +Why does `#!' start a block comment terminated by `!#', instead of the +end of the line? That is the notation SCSH uses, and although we +don't yet support the other SCSH features that motivate that choice, +we would like to be backward-compatible with any existing Guile +scripts once we do. Furthermore, if the path to Guile on your system +is too long for your kernel, you can start the script with this +horrible hack: + +#!/bin/sh +exec /really/long/path/to/guile -s "$0" ${1+"$@"} +!# + +Note that some very old Unix systems don't support the `#!' syntax. + + +** You can now run Guile without installing it. + +Previous versions of the interactive Guile interpreter (`guile') +couldn't start up unless Guile's Scheme library had been installed; +they used the value of the environment variable `SCHEME_LOAD_PATH' +later on in the startup process, but not to find the startup code +itself. Now Guile uses `SCHEME_LOAD_PATH' in all searches for Scheme +code. + +To run Guile without installing it, build it in the normal way, and +then set the environment variable `SCHEME_LOAD_PATH' to a +colon-separated list of directories, including the top-level directory +of the Guile sources. For example, if you unpacked Guile so that the +full filename of this NEWS file is /home/jimb/guile-1.0b3/NEWS, then +you might say + + export SCHEME_LOAD_PATH=/home/jimb/my-scheme:/home/jimb/guile-1.0b3 + + +** Guile's read-eval-print loop no longer prints # +results. If the user wants to see this, she can evaluate the +expression (assert-repl-print-unspecified #t), perhaps in her startup +file. + +** Guile no longer shows backtraces by default when an error occurs; +however, it does display a message saying how to get one, and how to +request that they be displayed by default. After an error, evaluate + (backtrace) +to see a backtrace, and + (debug-enable 'backtrace) +to see them by default. + + + +* Changes to Guile Scheme: + +** Guile now distinguishes between #f and the empty list. + +This is for compatibility with the IEEE standard, the (possibly) +upcoming Revised^5 Report on Scheme, and many extant Scheme +implementations. + +Guile used to have #f and '() denote the same object, to make Scheme's +type system more compatible with Emacs Lisp's. However, the change +caused too much trouble for Scheme programmers, and we found another +way to reconcile Emacs Lisp with Scheme that didn't require this. + + +** Guile's delq, delv, delete functions, and their destructive +counterparts, delq!, delv!, and delete!, now remove all matching +elements from the list, not just the first. This matches the behavior +of the corresponding Emacs Lisp functions, and (I believe) the Maclisp +functions which inspired them. + +I recognize that this change may break code in subtle ways, but it +seems best to make the change before the FSF's first Guile release, +rather than after. + + +** The compiled-library-path function has been deleted from libguile. + +** The facilities for loading Scheme source files have changed. + +*** The variable %load-path now tells Guile which directories to search +for Scheme code. Its value is a list of strings, each of which names +a directory. + +*** The variable %load-extensions now tells Guile which extensions to +try appending to a filename when searching the load path. Its value +is a list of strings. Its default value is ("" ".scm"). + +*** (%search-load-path FILENAME) searches the directories listed in the +value of the %load-path variable for a Scheme file named FILENAME, +with all the extensions listed in %load-extensions. If it finds a +match, then it returns its full filename. If FILENAME is absolute, it +returns it unchanged. Otherwise, it returns #f. + +%search-load-path will not return matches that refer to directories. + +*** (primitive-load FILENAME :optional CASE-INSENSITIVE-P SHARP) +uses %seach-load-path to find a file named FILENAME, and loads it if +it finds it. If it can't read FILENAME for any reason, it throws an +error. + +The arguments CASE-INSENSITIVE-P and SHARP are interpreted as by the +`read' function. + +*** load uses the same searching semantics as primitive-load. + +*** The functions %try-load, try-load-with-path, %load, load-with-path, +basic-try-load-with-path, basic-load-with-path, try-load-module-with- +path, and load-module-with-path have been deleted. The functions +above should serve their purposes. + +*** If the value of the variable %load-hook is a procedure, +`primitive-load' applies its value to the name of the file being +loaded (without the load path directory name prepended). If its value +is #f, it is ignored. Otherwise, an error occurs. + +This is mostly useful for printing load notification messages. + + +** The function `eval!' is no longer accessible from the scheme level. +We can't allow operations which introduce glocs into the scheme level, +because Guile's type system can't handle these as data. Use `eval' or +`read-and-eval!' (see below) as replacement. + +** The new function read-and-eval! reads an expression from PORT, +evaluates it, and returns the result. This is more efficient than +simply calling `read' and `eval', since it is not necessary to make a +copy of the expression for the evaluator to munge. + +Its optional arguments CASE_INSENSITIVE_P and SHARP are interpreted as +for the `read' function. + + +** The function `int?' has been removed; its definition was identical +to that of `integer?'. + +** The functions `?', and `>=?'. Code should +use the R4RS names for these functions. + +** The function object-properties no longer returns the hash handle; +it simply returns the object's property list. + +** Many functions have been changed to throw errors, instead of +returning #f on failure. The point of providing exception handling in +the language is to simplify the logic of user code, but this is less +useful if Guile's primitives don't throw exceptions. + +** The function `fileno' has been renamed from `%fileno'. + +** The function primitive-mode->fdes returns #t or #f now, not 1 or 0. + + +* Changes to Guile's C interface: + +** The library's initialization procedure has been simplified. +scm_boot_guile now has the prototype: + +void scm_boot_guile (int ARGC, + char **ARGV, + void (*main_func) (), + void *closure); + +scm_boot_guile calls MAIN_FUNC, passing it CLOSURE, ARGC, and ARGV. +MAIN_FUNC should do all the work of the program (initializing other +packages, reading user input, etc.) before returning. When MAIN_FUNC +returns, call exit (0); this function never returns. If you want some +other exit value, MAIN_FUNC may call exit itself. + +scm_boot_guile arranges for program-arguments to return the strings +given by ARGC and ARGV. If MAIN_FUNC modifies ARGC/ARGV, should call +scm_set_program_arguments with the final list, so Scheme code will +know which arguments have been processed. + +scm_boot_guile establishes a catch-all catch handler which prints an +error message and exits the process. This means that Guile exits in a +coherent way when system errors occur and the user isn't prepared to +handle it. If the user doesn't like this behavior, they can establish +their own universal catcher in MAIN_FUNC to shadow this one. + +Why must the caller do all the real work from MAIN_FUNC? The garbage +collector assumes that all local variables of type SCM will be above +scm_boot_guile's stack frame on the stack. If you try to manipulate +SCM values after this function returns, it's the luck of the draw +whether the GC will be able to find the objects you allocate. So, +scm_boot_guile function exits, rather than returning, to discourage +people from making that mistake. + +The IN, OUT, and ERR arguments were removed; there are other +convenient ways to override these when desired. + +The RESULT argument was deleted; this function should never return. + +The BOOT_CMD argument was deleted; the MAIN_FUNC argument is more +general. + + +** Guile's header files should no longer conflict with your system's +header files. + +In order to compile code which #included , previous +versions of Guile required you to add a directory containing all the +Guile header files to your #include path. This was a problem, since +Guile's header files have names which conflict with many systems' +header files. + +Now only need appear in your #include path; you must +refer to all Guile's other header files as . +Guile's installation procedure puts libguile.h in $(includedir), and +the rest in $(includedir)/libguile. + + +** Two new C functions, scm_protect_object and scm_unprotect_object, +have been added to the Guile library. + +scm_protect_object (OBJ) protects OBJ from the garbage collector. +OBJ will not be freed, even if all other references are dropped, +until someone does scm_unprotect_object (OBJ). Both functions +return OBJ. + +Note that calls to scm_protect_object do not nest. You can call +scm_protect_object any number of times on a given object, and the +next call to scm_unprotect_object will unprotect it completely. + +Basically, scm_protect_object and scm_unprotect_object just +maintain a list of references to things. Since the GC knows about +this list, all objects it mentions stay alive. scm_protect_object +adds its argument to the list; scm_unprotect_object remove its +argument from the list. + + +** scm_eval_0str now returns the value of the last expression +evaluated. + +** The new function scm_read_0str reads an s-expression from a +null-terminated string, and returns it. + +** The new function `scm_stdio_to_port' converts a STDIO file pointer +to a Scheme port object. + +** The new function `scm_set_program_arguments' allows C code to set +the value returned by the Scheme `program-arguments' function. + + +Older changes: + +* Guile no longer includes sophisticated Tcl/Tk support. + +The old Tcl/Tk support was unsatisfying to us, because it required the +user to link against the Tcl library, as well as Tk and Guile. The +interface was also un-lispy, in that it preserved Tcl/Tk's practice of +referring to widgets by names, rather than exporting widgets to Scheme +code as a special datatype. + +In the Usenix Tk Developer's Workshop held in July 1996, the Tcl/Tk +maintainers described some very interesting changes in progress to the +Tcl/Tk internals, which would facilitate clean interfaces between lone +Tk and other interpreters --- even for garbage-collected languages +like Scheme. They expected the new Tk to be publicly available in the +fall of 1996. + +Since it seems that Guile might soon have a new, cleaner interface to +lone Tk, and that the old Guile/Tk glue code would probably need to be +completely rewritten, we (Jim Blandy and Richard Stallman) have +decided not to support the old code. We'll spend the time instead on +a good interface to the newer Tk, as soon as it is available. + +Until then, gtcltk-lib provides trivial, low-maintenance functionality. + + +Copyright information: + +Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2006 Free Software Foundation, Inc. + + Permission is granted to anyone to make or distribute verbatim copies + of this document as received, in any medium, provided that the + copyright notice and this permission notice are preserved, + thus giving the recipient permission to redistribute in turn. + + Permission is granted to distribute modified versions + of this document, or of portions of it, + under the above conditions, provided also that they + carry prominent notices stating who last changed them. + + +Local variables: +mode: outline +paragraph-separate: "[ ]*$" +end: diff --git a/guile18/README b/guile18/README new file mode 100644 index 0000000000..32300a8666 --- /dev/null +++ b/guile18/README @@ -0,0 +1,382 @@ +This is version 1.8.7 of Guile, Project GNU's extension language +library. Guile is an interpreter for Scheme, packaged as a library +that you can link into your applications to give them their own +scripting language. Guile will eventually support other languages as +well, giving users of Guile-based applications a choice of languages. + +Please send bug reports to bug-guile@gnu.org. + +See the LICENSE file for the specific terms that apply to Guile. + + +Additional INSTALL instructions =========================================== + +Generic instructions for configuring and compiling Guile can be found +in the INSTALL file. Guile specific information and configure options +can be found below, including instructions for installing SLIB. + +Guile requires a few external packages and can optionally use a number +of external packages such as `readline' when they are available. +Guile expects to be able to find these packages in the default +compiler setup, it does not try to make any special arrangements +itself. For example, for the `readline' package, Guile expects to be +able to find the include file , without passing +any special `-I' options to the compiler. + +If you installed an external package, and you used the --prefix +installation option to install it somewhere else than /usr/local, you +must arrange for your compiler to find it by default. If that +compiler is gcc, one convenient way of making such arrangements is to +use the --with-local-prefix option during installation, naming the +same directory as you used in the --prefix option of the package. In +particular, it is not good enough to use the same --prefix option when +you install gcc and the package; you need to use the +--with-local-prefix option as well. See the gcc documentation for +more details. + + +Required External Packages ================================================ + +Guile requires the following external packages: + + - GNU MP, at least version 4.1 + + GNU MP is used for bignum arithmetic. It is available from + http://swox.com/gmp + + - libltdl from libtool, at least from libtool version 1.5.6 + + libltdl is used for loading extensions at run-time. It is + available from http://www.gnu.org/software/libtool/ + + +Guile specific flags Accepted by Configure ================================= + +If you run the configure script with no arguments, it should examine +your system and set things up appropriately. However, there are a few +switches specific to Guile you may find useful in some circumstances. + +--without-threads --- Build without thread support + + Build a Guile executable and library that supports multi-threading. + + The default is to enable threading support when your operating + system offsers 'POSIX threads'. When you do not want threading, use + `--without-threads'. + +--enable-deprecated=LEVEL + + Guile may contain features that are `deprecated'. When a feature is + deprecated, it means that it is still there, but that there is a + better way of achieving the same thing, and we'd rather have you use + this better way. This allows us to eventually remove the old + implementation and helps to keep Guile reasonably clean of historic + baggage. + + Deprecated features are considered harmful; using them is likely a + bug. See below for the related notion of `discouraged' features, + which are OK but have fallen out of favor. + + See the file NEWS for a list of features that are currently + deprecated. Each entry will also tell you what you should replace + your code with. + + To give you some help with this process, and to encourage (OK, + nudge) people to switch to the newer methods, Guile can emit + warnings or errors when you use a deprecated feature. There is + quite a range of possibilities, from being completely silent to + giving errors at link time. What exactly happens is determined both + by the value of the `--enable-deprecated' configuration option when + Guile was built, and by the GUILE_WARN_DEPRECATED environment + variable. + + It works like this: + + When Guile has been configured with `--enable-deprecated=no' (or, + equivalently, with `--disable-deprecated') then all deprecated + features are omitted from Guile. You will get "undefined + reference", "variable unbound" or similar errors when you try to + use them. + + When `--enable-deprecated=LEVEL' has been specified (for LEVEL not + "no"), LEVEL will be used as the default value of the environment + variable GUILE_WARN_DEPRECATED. A value of "yes" is changed to + "summary" and "shutup" is changed to "no", however. + + When GUILE_WARN_DEPRECATED has the value "no", nothing special + will happen when a deprecated feature is used. + + When GUILE_WARN_DEPRECATED has the value "summary", and a + deprecated feature has been used, Guile will print this message at + exit: + + Some deprecated features have been used. Set the environment + variable GUILE_WARN_DEPRECATED to "detailed" and rerun the + program to get more information. Set it to "no" to suppress + this message. + + When GUILE_WARN_DEPRECATED has the value "detailed", a detailed + warning is emitted immediatly for the first use of a deprecated + feature. + + The default is `--enable-deprecated=yes'. + + In addition to setting GUILE_WARN_DEPRECATED in the environment, you + can also use (debug-enable 'warn-deprecated) and (debug-disable + 'warn-deprecated) to enable and disable the detailed messaged at run + time. + +--disable-discouraged + + In addition to deprecated features, Guile can also contain things + that are merely `discouraged'. It is OK to continue to use these + features in old code, but new code should avoid them since there are + better alternatives. + + There is nothing wrong with a discouraged feature per se, but they + might have strange names, or be non-standard, for example. Avoiding + them will make your code better. + +--disable-shared --- Do not build shared libraries. +--disable-static --- Do not build static libraries. + + Normally, both static and shared libraries will be built if your + system supports them. + +--enable-debug-freelist --- Enable freelist debugging. + + This enables a debugging version of scm_cell and scm_double_cell, + and also registers an extra primitive, the setter + `gc-set-debug-check-freelist!'. + + Configure with the --enable-debug-freelist option to enable the + gc-set-debug-check-freelist! primitive, and then use: + + (gc-set-debug-check-freelist! #t) # turn on checking of the freelist + (gc-set-debug-check-freelist! #f) # turn off checking + + Checking of the freelist forces a traversal of the freelist and a + garbage collection before each allocation of a cell. This can slow + down the interpreter dramatically, so the setter should be used to + turn on this extra processing only when necessary. + +--enable-debug-malloc --- Enable malloc debugging. + + Include code for debugging of calls to scm_malloc, scm_realloc, etc. + + It records the number of allocated objects of each kind. This is + useful when searching for memory leaks. + + A Guile compiled with this option provides the primitive + `malloc-stats' which returns an alist with pairs of kind and the + number of objects of that kind. + +--enable-guile-debug --- Include internal debugging functions +--disable-posix --- omit posix interfaces +--disable-networking --- omit networking interfaces +--disable-regex --- omit regular expression interfaces + + +Cross building Guile ===================================================== + +Guile can be cross-compiled for Windows using the i586-mingw32msvc +cross-compiler. To do this, you first need to cross-build Guile's +prerequisites - GNU MP and libtool/libltdl (as described above) - and +then cross-build Guile itself. + +For each of these steps, configure using an invocation like this: + +CPPFLAGS=-I/usr/local/i586-mingw32msvc/include \ +LDFLAGS=-L/usr/local/i586-mingw32msvc/lib \ +GUILE_FOR_BUILD=/usr/local/bin/guile \ +./configure --prefix=/usr/local/i586-mingw32msvc --host=i586-mingw32msvc + +Then run `make' - which should complete without any errors - and `sudo +make install'. (`make check' doesn't work when cross-compiling, +because the built DLLs and program cannot be run on GNU/Linux.) + +The `GUILE_FOR_BUILD=...' setting is needed because some later steps +of the build process use Guile itself. In the non-cross-compiling +case this is the version of Guile that has just been built. When +cross-compiling, you have to set GUILE_FOR_BUILD to tell the build +where it can find a native version of Guile, to use for these steps. + +Cross-compiling for other hosts may also work, using the following +instructions; but this has not been recently tested. + +To configure Guile for cross building, for example for Cygwin: + + ./configure --host=i686-pc-cygwin --disable-shared + +A C compiler for the build system is required. The default is +"PATH=/usr/bin:$PATH cc". If that doesn't suit it can be specified +with the CC_FOR_BUILD variable in the usual way, for instance + + ./configure --host=m68k-unknown-linux-gnu CC_FOR_BUILD=/my/local/gcc + +Guile for the build system can be specified similarly with the +GUILE_FOR_BUILD variable, it defaults to just "guile". + + +Using Guile Without Installing It ========================================= + +The top directory of the Guile sources contains a script called +"pre-inst-guile" that can be used to run the Guile that has just been +built. + + +Installing SLIB =========================================================== + +In order to use SLIB from Guile you basically only need to put the +`slib' directory _in_ one of the directories on Guile's load path. + +The standard installation is: + + 1. Obtain slib from http://www-swiss.ai.mit.edu/~jaffer/SLIB.html + + 2. Put it in Guile's data directory, that is the directory printed when + you type + + guile-config info pkgdatadir + + at the shell prompt. This is normally `/usr/local/share/guile', so the + directory will normally have full path `/usr/local/share/guile/slib'. + + 3. Start guile as a user with write access to the data directory and type + + (use-modules (ice-9 slib)) + + at the Guile prompt. This will generate the slibcat catalog next to + the slib directory. + +SLIB's `require' is provided by the Guile module (ice-9 slib). + +Example: + + (use-modules (ice-9 slib)) + (require 'primes) + (prime? 7) + + +Guile Documentation ================================================== + +If you've never used Scheme before, then the Guile Tutorial +(guile-tut.info) is a good starting point. The Guile Reference Manual +(guile.info) is the primary documentation for Guile. The Goops object +system is documented separately (goops.info). A copy of the R5RS +Scheme specification is included too (r5rs.info). + +Info format versions of this documentation are installed as part of +the normal build process. The texinfo sources are under the doc +directory, and other formats like Postscript, PDF, DVI or HTML can be +generated from them with Tex and Texinfo tools. + +The doc directory also includes an example-smob subdirectory which has +the example code from the "Defining New Types (Smobs)" chapter of the +reference manual. + +The Guile WWW page is at + + http://www.gnu.org/software/guile/guile.html + +It contains a link to the Guile FAQ. + +About This Distribution ============================================== + +Interesting files include: + +- LICENSE, which contains the exact terms of the Guile license. +- COPYING, which contains the terms of the GNU General Public License. +- INSTALL, which contains general instructions for building/installing Guile. +- NEWS, which describes user-visible changes since the last release of Guile. + +Files are usually installed according to the prefix specified to +configure, /usr/local by default. Building and installing gives you: + +Executables, in ${prefix}/bin: + + guile --- a stand-alone interpreter for Guile. With no arguments, this + is a simple interactive Scheme interpreter. It can also be used + as an interpreter for script files; see the NEWS file for details. + guile-config --- a Guile script which provides the information necessary + to link your programs against the Guile library. + guile-snarf --- a script to parse declarations in your C code for + Scheme-visible C functions, Scheme objects to be used by C code, + etc. + +Libraries, in ${prefix}/lib. Depending on the platform and options + given to configure, you may get shared libraries in addition + to or instead of these static libraries: + + libguile.a --- an object library containing the Guile interpreter, + You can use Guile in your own programs by linking against this. + libguilereadline.a --- an object library containing glue code for the + GNU readline library. + + libguile-srfi-*.a --- various SRFI support libraries + +Header files, in ${prefix}/include: + + libguile.h, guile/gh.h, libguile/*.h --- for libguile. + guile-readline/readline.h --- for guile-readline. + +Support files, in ${prefix}/share/guile/: + + ice-9/* --- run-time support for Guile: the module system, + read-eval-print loop, some R4RS code and other infrastructure. + oop/* --- the Guile Object-Oriented Programming System (GOOPS) + scripts/* --- executable modules, i.e., scheme programs that can be both + called as an executable from the shell, and loaded and used as a + module from scheme code. See scripts/README for more info. + srfi/* --- SRFI support modules. See srfi/README for more info. + +Automake macros, in ${prefix}/share/aclocal: + + guile.m4 + +Documentation in Info format, in ${prefix}/info: + + guile --- Guile reference manual. + + guile-tut --- Guile tutorial. + + GOOPS --- GOOPS reference manual. + + r5rs --- Revised(5) Report on the Algorithmic Language Scheme. + + +The Guile source tree is laid out as follows: + +libguile: + The Guile Scheme interpreter --- both the object library + for you to link with your programs, and the executable you can run. +ice-9: Guile's module system, initialization code, and other infrastructure. +guile-config: + Source for the guile-config script. +guile-readline: + The glue code for using GNU readline with Guile. This + will be build when configure can find a recent enough readline + library on your system. +doc: Documentation (see above). + +Git Repository Access ================================================ + +Guile's source code is stored in a Git repository at Savannah. Anyone +can access it using `git-clone' from one of the following URLs: + + git://git.sv.gnu.org/guile.git + http://git.sv.gnu.org/r/guile.git + +Developers with a Savannah SSH account can also access it from: + + ssh://git.sv.gnu.org/srv/git/guile.git + +The repository can also be browsed on-line at the following address: + + http://git.sv.gnu.org/gitweb/?p=guile.git + +For more information on Git, please see: + + http://git.or.cz/ + +Please send problem reports to . diff --git a/guile18/THANKS b/guile18/THANKS new file mode 100644 index 0000000000..48a105aaa9 --- /dev/null +++ b/guile18/THANKS @@ -0,0 +1,121 @@ +Contributors since the last release: + + Rob Browning + Ludovic Courtès + Julian Graham + Stefan Jahn + Neil Jerram + Gregory Marton + Antoine Mathys + Thien-Thi Nguyen + Han-Wen Nienhuys + Jose A Ortega Ruiz + Kevin Ryde + Bill Schottstaedt + Richard Todd + +Sponsors since the last release: + + The Linux Developers Group + +For fixes or providing information which led to a fix: + + David Allouche + Martin Baulig + Fabrice Bauzac + Sylvain Beucler + Carlo Bramini + Rob Browning + Adrian Bunk + Michael Carmack + Stephen Compall + Brian Crowder + Christopher Cramer + David Diffenbaugh + Hyper Division + Alexandre Duret-Lutz + Nils Durner + John W Eaton + Clinton Ebadi + David Fang + Barry Fishman + Charles Gagnon + Peter Gavin + Eric Gillespie, Jr + Didier Godefroy + Panicz Maciej Godek + John Goerzen + Mike Gran + Szavai Gyula + Roland Haeder + Sven Hartrumpf + Eric Hanchrow + Judy Hawkins + Sam Hocevar + Patrick Horgan + Ales Hvezda + Peter Ivanyi + Wolfgang Jaehrling + Aubrey Jaffer + Paul Jarc + Steve Juranich + Richard Kim + Bruce Korb + René Köcher + Matthias Köppe + Matt Kraai + Daniel Kraft + Jay Krell + Jeff Long + Marco Maggi + Gregory Marton + Kjetil S. Matheussen + Antoine Mathys + Dan McMahill + Roger Mc Murtrie + Scott McPeak + Tim Mooney + Han-Wen Nienhuys + Jan Nieuwenhuizen + Hrvoje NikÅ¡ić + Stefan Nordhausen + Roland Orre + Peter O'Gorman + Pieter Pareit + Jack Pavlovsky + Arno Peters + Ron Peterson + David Pirotte + Ken Raeburn + Andreas Rottmann + Hugh Sasse + Werner Scheinast + Bill Schottstaedt + Frank Schwidom + Thiemo Seufer + Scott Shedden + Alex Shinn + Daniel Skarda + Cesar Strauss + Rainer Tammer + Richard Todd + Issac Trotts + Greg Troxel + Aaron M. Ucko + Stephen Uitti + Momchil Velikov + Linas Vepstas + Panagiotis Vossos + Neil W. Van Dyke + Aaron VanDevender + Andreas Vögele + Michael Talbot-Wilson + Michael Tuexen + Jon Wilson + Andy Wingo + Keith Wright + + +;; Local Variables: +;; coding: utf-8 +;; End: diff --git a/guile18/acinclude.m4 b/guile18/acinclude.m4 new file mode 100644 index 0000000000..345e323b36 --- /dev/null +++ b/guile18/acinclude.m4 @@ -0,0 +1,310 @@ +dnl On the NeXT, #including doesn't give you a definition for +dnl struct utime, unless you #define _POSIX_SOURCE. + +AC_DEFUN([GUILE_STRUCT_UTIMBUF], [ + AC_CACHE_CHECK([whether we need POSIX to get struct utimbuf], + guile_cv_struct_utimbuf_needs_posix, + [AC_TRY_CPP([ +#ifdef __EMX__ +#include +#else +#include +#endif +struct utime blah; +], + guile_cv_struct_utimbuf_needs_posix=no, + guile_cv_struct_utimbuf_needs_posix=yes)]) + if test "$guile_cv_struct_utimbuf_needs_posix" = yes; then + AC_DEFINE([UTIMBUF_NEEDS_POSIX], 1, + [Define this if doesn't define struct utimbuf unless + _POSIX_SOURCE is defined. See GUILE_STRUCT_UTIMBUF in aclocal.m4.]) + fi]) + + + + +dnl +dnl Apparently, at CMU they have a weird version of libc.h that is +dnl installed in /usr/local/include and conflicts with unistd.h. +dnl In these situations, we should not #include libc.h. +dnl This test arranges to #define LIBC_H_WITH_UNISTD_H iff libc.h is +dnl present on the system, and is safe to #include. +dnl +AC_DEFUN([GUILE_HEADER_LIBC_WITH_UNISTD], + [ + AC_CHECK_HEADERS(libc.h unistd.h) + AC_CACHE_CHECK( + [whether libc.h and unistd.h can be included together], + guile_cv_header_libc_with_unistd, + [ + if test "$ac_cv_header_libc_h" = "no"; then + guile_cv_header_libc_with_unistd="no" + elif test "$ac_cv_header_unistd_h" = "no"; then + guile_cv_header_libc_with_unistd="yes" + else + AC_TRY_COMPILE( + [ +# include +# include + ], + [], + [guile_cv_header_libc_with_unistd=yes], + [guile_cv_header_libc_with_unistd=no] + ) + fi + ] + ) + if test "$guile_cv_header_libc_with_unistd" = yes; then + AC_DEFINE(LIBC_H_WITH_UNISTD_H, 1, + [Define this if we should include when we've already + included . On some systems, they conflict, and libc.h + should be omitted. See GUILE_HEADER_LIBC_WITH_UNISTD in + aclocal.m4.]) + fi + ] +) + + + +dnl This is needed when we want to check for the same function repeatedly +dnl with other parameters, such as libraries, varying. +dnl +dnl GUILE_NAMED_CHECK_FUNC(FUNCTION, TESTNAME, +dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) +AC_DEFUN([GUILE_NAMED_CHECK_FUNC], +[AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(ac_cv_func_$1_$2, +[AC_TRY_LINK( +dnl Don't include because on OSF/1 3.0 it includes +dnl which includes which contains a prototype for +dnl select. Similarly for bzero. +[/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $1(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $1(); +], [ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$1) || defined (__stub___$1) +choke me +#else +$1(); +#endif +], eval "ac_cv_func_$1_$2=yes", eval "ac_cv_func_$1_$2=no")]) +if eval "test \"`echo '$ac_cv_func_'$1'_'$2`\" = yes"; then + AC_MSG_RESULT(yes) + ifelse([$3], , :, [$3]) +else + AC_MSG_RESULT(no) +ifelse([$4], , , [$4 +])dnl +fi +]) + + + + +dnl Available from the Autoconf Macro Archive at: +dnl http://autoconf-archive.cryp.to/acx_pthread.html +dnl +AC_DEFUN([ACX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_LANG_SAVE +AC_LANG_C +acx_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) + AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) + AC_MSG_RESULT($acx_pthread_ok) + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# ... -mt is also the pthreads flag for HP/aCC +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthreads/-mt/ + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $flag]) + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) + if test x"$acx_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$flag]) + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [acx_pthread_ok=yes]) + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + AC_MSG_RESULT($acx_pthread_ok) + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_MSG_CHECKING([for joinable pthread attribute]) + attr_name=unknown + for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_TRY_LINK([#include ], [int attr=$attr; return attr;], + [attr_name=$attr; break]) + done + AC_MSG_RESULT($attr_name) + if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + fi + + AC_MSG_CHECKING([if more special flags are required for pthreads]) + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + esac + AC_MSG_RESULT(${flag}) + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + # More AIX lossage: must compile with xlc_r or cc_r + if test x"$GCC" != xyes; then + AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) + else + PTHREAD_CC=$CC + fi +else + PTHREAD_CC="$CC" +fi + +AC_SUBST(PTHREAD_LIBS) +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_CC) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) + : +else + acx_pthread_ok=no + $2 +fi +AC_LANG_RESTORE +])dnl ACX_PTHREAD diff --git a/guile18/am/ChangeLog-2008 b/guile18/am/ChangeLog-2008 new file mode 100644 index 0000000000..3b0cdcdb8b --- /dev/null +++ b/guile18/am/ChangeLog-2008 @@ -0,0 +1,18 @@ +2002-04-10 Rob Browning + + * .cvsignore: add Makefile and Makefile.in. + +2002-04-01 Thien-Thi Nguyen + + * maintainer-dirs: Remove "if MAINTAINER_MODE" conditional. + +2002-03-30 Thien-Thi Nguyen + + * maintainer-dirs: New file. + + * Makefile.am (am_frags): Add "maintainer-dirs". + +2002-02-26 Thien-Thi Nguyen + + * pre-inst-guile, Makefile.am, README: New files. + diff --git a/guile18/am/Makefile.am b/guile18/am/Makefile.am new file mode 100644 index 0000000000..8b49c2bcae --- /dev/null +++ b/guile18/am/Makefile.am @@ -0,0 +1,28 @@ +## Process this file with Automake to create Makefile.in +## +## Copyright (C) 2002, 2006, 2008 Free Software Foundation, Inc. +## +## This file is part of GUILE. +## +## GUILE is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2, or +## (at your option) any later version. +## +## GUILE is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public +## License along with GUILE; see the file COPYING. If not, write +## to the Free Software Foundation, Inc., 51 Franklin Street, Fifth +## Floor, Boston, MA 02110-1301 USA + +AUTOMAKE_OPTIONS = gnu + +am_frags = pre-inst-guile maintainer-dirs + +EXTRA_DIST = $(am_frags) ChangeLog-2008 + +## Makefile.am ends here diff --git a/guile18/am/README b/guile18/am/README new file mode 100644 index 0000000000..c7883c37ce --- /dev/null +++ b/guile18/am/README @@ -0,0 +1,3 @@ +data directory: automake frags + +do not name files using extension ".am", as automake is overzealous sometimes. diff --git a/guile18/am/maintainer-dirs b/guile18/am/maintainer-dirs new file mode 100644 index 0000000000..c64268de96 --- /dev/null +++ b/guile18/am/maintainer-dirs @@ -0,0 +1,34 @@ +## am/maintainer-dirs --- define workbook and mscripts vars + +## Copyright (C) 2002, 2006 Free Software Foundation +## +## This file is part of GUILE. +## +## GUILE is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2, or +## (at your option) any later version. +## +## GUILE is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public +## License along with GUILE; see the file COPYING. If not, write +## to the Free Software Foundation, Inc., 51 Franklin Street, Fifth +## Floor, Boston, MA 02110-1301 USA + +## Commentary: + +## This fragment defines two variables: workbook and mscripts. +## It can be included in any Makefile.am by adding the line: +## include $(top_srcdir)/am/maintainer-dirs +## See $(workbook)/build/maintainer-dirs.text for more info. + +## Code: + +workbook = $(top_srcdir_absolute)/../workbook +mscripts = $(top_srcdir_absolute)/../scripts + +## am/maintainer-dirs ends here diff --git a/guile18/am/pre-inst-guile b/guile18/am/pre-inst-guile new file mode 100644 index 0000000000..c1a7407c9f --- /dev/null +++ b/guile18/am/pre-inst-guile @@ -0,0 +1,34 @@ +## am/pre-inst-guile --- define preinstguile and preinstguiletool vars + +## Copyright (C) 2002, 2006 Free Software Foundation +## +## This file is part of GUILE. +## +## GUILE is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2, or +## (at your option) any later version. +## +## GUILE is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public +## License along with GUILE; see the file COPYING. If not, write +## to the Free Software Foundation, Inc., 51 Franklin Street, Fifth +## Floor, Boston, MA 02110-1301 USA + +## Commentary: + +## This fragment defines two variables: preinstguile, preinstguiletool. +## It can be included in any Makefile.am by adding the line: +## include $(top_srcdir)/am/pre-inst-guile +## See devel/build/pre-inst-guile.text (CVS only) for more info. + +## Code: + +preinstguile = $(top_builddir_absolute)/pre-inst-guile +preinstguiletool = GUILE="$(preinstguile)" $(top_srcdir)/scripts + +## am/pre-inst-guile ends here diff --git a/guile18/autogen.sh b/guile18/autogen.sh new file mode 100755 index 0000000000..fa34047f8d --- /dev/null +++ b/guile18/autogen.sh @@ -0,0 +1,16 @@ +#!/bin/sh +# Usage: sh -x ./autogen.sh + +set -e + +[ -f GUILE-VERSION ] || { + echo "autogen.sh: run this command only at the top of guile-core." + exit 1 +} + +###################################################################### +### update infrastructure + +autoreconf -i --force --verbose + +echo "Now run configure and make." diff --git a/guile18/benchmark-guile.in b/guile18/benchmark-guile.in new file mode 100644 index 0000000000..af1ade6160 --- /dev/null +++ b/guile18/benchmark-guile.in @@ -0,0 +1,48 @@ +#! /bin/sh +# Usage: benchmark-guile [-i GUILE-INTERPRETER] [GUILE-BENCHMARK-ARGS] +# If `-i GUILE-INTERPRETER' is omitted, use ${top_builddir}/pre-inst-guile. +# See ${top_srcdir}/benchmark-suite/guile-benchmark for documentation on GUILE-BENCHMARK-ARGS. +# +# Example invocations: +# ./benchmark-guile +# ./benchmark-guile numbers.bm +# ./benchmark-guile -i /usr/local/bin/guile +# ./benchmark-guile -i /usr/local/bin/guile numbers.bm + +set -e + +top_builddir=@top_builddir_absolute@ +top_srcdir=@top_srcdir_absolute@ + +BENCHMARK_SUITE_DIR=${top_srcdir}/benchmark-suite + +if [ x"$1" = x-i ] ; then + guile=$2 + shift + shift +else + guile=${top_builddir}/pre-inst-guile +fi + +GUILE_LOAD_PATH=$BENCHMARK_SUITE_DIR +export GUILE_LOAD_PATH + +if [ -f "$guile" -a -x "$guile" ] ; then + echo Benchmarking $guile ... "$@" + echo with GUILE_LOAD_PATH=$GUILE_LOAD_PATH +else + echo ERROR: Cannot execute $guile + exit 1 +fi + +# documentation searching ignores GUILE_LOAD_PATH. +if [ ! -f guile-procedures.txt ] ; then + @LN_S@ libguile/guile-procedures.txt . +fi + +exec $guile \ + -e main -s "$BENCHMARK_SUITE_DIR/guile-benchmark" \ + --benchmark-suite "$BENCHMARK_SUITE_DIR/benchmarks" \ + --log-file benchmark-guile.log "$@" + +# benchmark-guile ends here diff --git a/guile18/benchmark-suite/ChangeLog-2008 b/guile18/benchmark-suite/ChangeLog-2008 new file mode 100644 index 0000000000..0d79710f6f --- /dev/null +++ b/guile18/benchmark-suite/ChangeLog-2008 @@ -0,0 +1,85 @@ +2008-04-17 Ludovic Courtès + + * Makefile.am (SCM_BENCHMARKS): Add `benchmarks/read.bm'. + * benchmarks/read.bm: New file. + +2008-01-22 Neil Jerram + + * COPYING: Removed. + +2006-05-02 Marius Vollmer + + * Makefile.am (SCM_BENCHMARKS_DIRS, dist-hook): Removed, they are + no longer needed and lead to unclean tarballs. + +2004-01-23 Dirk Herrmann + + * lib.scm: Extracted '/i' to toplevel. Print the guile version + number before the benchmarks are run. Print the framework-time + per iteration as an inexact number. + +2004-01-06 Marius Vollmer + + * lib.scm (print-result, print-user-result): Handle exact + fractions. + +2003-05-27 Dirk Herrmann + + * lib.scm: Fix some typos in the documentation. + +2002-09-14 Rob Browning + + * .cvsignore: new file. + +2002-07-26 Marius Vollmer + + * Makefile.am (SCM_BENCHMARKS): List the real benchmarks, not foo + and bar. + (SCM_BENCHMARKS_DIRS): Uncommented, with an empty value. + (dist-hook): Use quotes so that an empty SCM_BENCHMARKS_DIRS works. + +2002-07-21 Dirk Herrmann + + * lib.scm (print-result, print-user-result): Changed the + reporter's outputs to use symbols rather than strings to document + the individual values. Thanks to Neil Jerram for the suggestion. + +2002-07-21 Dirk Herrmann + + * benchmarks/0-reference.bm: Added as a reference benchmark to be + used to calibrate iteration counts. + + * lib.scm: Added documentation. Added some initialization + messages. + + (benchmark-time-base, benchmark-total-time, benchmark-user-time, + benchmark-system-time, benchmark-frame-time, benchmark-core-time, + benchmark-user-time\interpreter, benchmark-core-time\interpreter): + Exported. + + (benchmark-time-base, time-base): Renamed time-base to + benchmark-time-base and introduced new time-base as a short-cut. + + (total-time, benchmark-total-time, user-time, benchmark-user-time, + system-time, benchmark-system-time, frame-time, + benchmark-frame-time, benchmark-time, benchmark-core-time, + user-time\interpreter, benchmark-user-time\interpreter, + benchmark-time\interpreter, benchmark-core-time\interpreter, + print-result, print-user-result): Renamed -time to + benchmark--time. Exceptions: benchmark-time and + benchmark-time\interpreter were renamed to benchmark-core-time and + benchmark-core-time\interpreter, respectively. + +2002-07-20 Dirk Herrmann + + * COPYING, README, Makefile.am, lib.scm, guile-benchmark: Copied + from the test-suite directory, renamed and adapted for use with + benchmarks. + + * benchmarks/logand.bm, benchmarks/continuations.bm, + benchmarks/if.bm: Added as initial fairly stupid examples for + benchmarks. + +2002-07-20 Dirk Herrmann + + * Log begins. diff --git a/guile18/benchmark-suite/Makefile.am b/guile18/benchmark-suite/Makefile.am new file mode 100644 index 0000000000..e65e8bcb24 --- /dev/null +++ b/guile18/benchmark-suite/Makefile.am @@ -0,0 +1,10 @@ +SCM_BENCHMARKS = benchmarks/0-reference.bm \ + benchmarks/continuations.bm \ + benchmarks/if.bm \ + benchmarks/logand.bm \ + benchmarks/read.bm \ + benchmarks/subr.bm \ + benchmarks/uniform-vector-read.bm + +EXTRA_DIST = guile-benchmark lib.scm $(SCM_BENCHMARKS) \ + ChangeLog-2008 diff --git a/guile18/benchmark-suite/README b/guile18/benchmark-suite/README new file mode 100644 index 0000000000..186a743514 --- /dev/null +++ b/guile18/benchmark-suite/README @@ -0,0 +1,18 @@ +This directory contains some benchmarks for Guile, and some generic +benchmarking support code. + +To run these benchmarks, you will need a version of Guile more recent +than 15 Feb 1999 --- the benchmarks use the (ice-9 and-let*) and +(ice-9 getopt-long) modules, which were added to Guile around then. + +For information about how to run the benchmark suite, read the usage +instructions in the comments at the top of the guile-benchmark script. + +You can reference the file `lib.scm' from your own code as the module +(benchmark-suite lib); it also has comments at the top and before each +function explaining what's going on. + +Please write more Guile benchmarks, and send them to bug-guile@gnu.org. +We'll merge them into the distribution. All benchmark suites must be +licensed for our use under the GPL, but I don't think we're going to +collect assignment papers for them. diff --git a/guile18/benchmark-suite/benchmarks/0-reference.bm b/guile18/benchmark-suite/benchmarks/0-reference.bm new file mode 100644 index 0000000000..65085a8d7b --- /dev/null +++ b/guile18/benchmark-suite/benchmarks/0-reference.bm @@ -0,0 +1,2 @@ +(benchmark "reference benchmark for iteration counts" 330000 + #t) diff --git a/guile18/benchmark-suite/benchmarks/continuations.bm b/guile18/benchmark-suite/benchmarks/continuations.bm new file mode 100644 index 0000000000..7c44300f70 --- /dev/null +++ b/guile18/benchmark-suite/benchmarks/continuations.bm @@ -0,0 +1,5 @@ +(define (callee continuation) + (continuation #t)) + +(benchmark "call/cc" 300 + (call-with-current-continuation callee)) diff --git a/guile18/benchmark-suite/benchmarks/if.bm b/guile18/benchmark-suite/benchmarks/if.bm new file mode 100644 index 0000000000..30c22c9c37 --- /dev/null +++ b/guile18/benchmark-suite/benchmarks/if.bm @@ -0,0 +1,51 @@ +(with-benchmark-prefix "if--then-else" + + (benchmark "executing then" 330000 + (if (quote #t) #t #f)) + + (benchmark "executing else" 330000 + (if (quote #f) #t #f))) + +(with-benchmark-prefix "if--then" + + (benchmark "executing then" 330000 + (if (quote #t) #t)) + + (benchmark "executing else" 330000 + (if (quote #f) #t))) + +(with-benchmark-prefix "if--then-else" + + (let ((x #t)) + (benchmark "executing then" 330000 + (if x #t #f))) + + (let ((x #f)) + (benchmark "executing else" 330000 + (if x #t #f)))) + +(with-benchmark-prefix "if--then" + + (let ((x #t)) + (benchmark "executing then" 330000 + (if x #t))) + + (let ((x #f)) + (benchmark "executing else" 330000 + (if x #t)))) + +(with-benchmark-prefix "if--then-else" + + (benchmark "executing then" 330000 + (if #t #t #f)) + + (benchmark "executing else" 330000 + (if #f #t #f))) + +(with-benchmark-prefix "if--then" + + (benchmark "executing then" 330000 + (if #t #t)) + + (benchmark "executing else" 330000 + (if #f #t))) diff --git a/guile18/benchmark-suite/benchmarks/logand.bm b/guile18/benchmark-suite/benchmarks/logand.bm new file mode 100644 index 0000000000..cdb05e88d5 --- /dev/null +++ b/guile18/benchmark-suite/benchmarks/logand.bm @@ -0,0 +1,6 @@ +(define bignum (1- (expt 2 128))) + +(let* ((i 0)) + (benchmark "bignum" 130000 + (logand i bignum) + (set! i (+ i 1)))) diff --git a/guile18/benchmark-suite/benchmarks/read.bm b/guile18/benchmark-suite/benchmarks/read.bm new file mode 100644 index 0000000000..cb876b5ad6 --- /dev/null +++ b/guile18/benchmark-suite/benchmarks/read.bm @@ -0,0 +1,62 @@ +;;; read.bm --- Exercise the reader. -*- Scheme -*- +;;; +;;; Copyright (C) 2008 Free Software Foundation, Inc. +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2, or (at your option) +;;; any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this software; see the file COPYING. If not, write to +;;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;;; Boston, MA 02110-1301 USA + +(define-module (benchmarks read) + :use-module (benchmark-suite lib)) + + +(define %files-to-load + ;; Various large Scheme files. + (map %search-load-path + '("ice-9/boot-9.scm" "ice-9/common-list.scm" + "ice-9/format.scm" "ice-9/optargs.scm" + "ice-9/session.scm" "ice-9/getopt-long.scm" + "ice-9/psyntax.pp"))) + +(define (load-file-with-reader file-name reader buffering) + (with-input-from-file file-name + (lambda () + (apply setvbuf (current-input-port) buffering) + (let loop ((sexp (reader))) + (if (eof-object? sexp) + #t + (loop (reader))))))) + +(define (exercise-read buffering) + (for-each (lambda (file) + (load-file-with-reader file read buffering)) + %files-to-load)) + + +(with-benchmark-prefix "read" + + (benchmark "_IONBF" 5 ;; this one is very slow + (exercise-read (list _IONBF))) + + (benchmark "_IOLBF" 100 + (exercise-read (list _IOLBF))) + + (benchmark "_IOFBF 4096" 100 + (exercise-read (list _IOFBF 4096))) + + (benchmark "_IOFBF 8192" 100 + (exercise-read (list _IOFBF 8192))) + + (benchmark "_IOFBF 16384" 100 + (exercise-read (list _IOFBF 16384)))) diff --git a/guile18/benchmark-suite/benchmarks/subr.bm b/guile18/benchmark-suite/benchmarks/subr.bm new file mode 100644 index 0000000000..9c87a99219 --- /dev/null +++ b/guile18/benchmark-suite/benchmarks/subr.bm @@ -0,0 +1,66 @@ +;;; subr.bm --- Measure the subr invocation cost. -*- Scheme -*- +;;; +;;; Copyright (C) 2009 Free Software Foundation, Inc. +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2, or (at your option) +;;; any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this software; see the file COPYING. If not, write to +;;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;;; Boston, MA 02110-1301 USA + +(define-module (benchmarks subrs) + :use-module (benchmark-suite lib)) + + +(define hook1 (make-hook 1)) +(define hook3 (make-hook 3)) + +(with-benchmark-prefix "subr invocation" + + (benchmark "simple subr" 700000 + ;; 1 required argument, 0 optional arguments, no rest. + (1+ 0)) + + (benchmark "generic subr" 700000 + ;; 2 required arguments, 4 optional arguments, no rest. + + ;; In Guile 1.8 and earlier, such subrs are implemented as "compiled + ;; closures" (cclos). There, when a cclo/gsubr is called, the evaluator + ;; goes through `SCM_APPLY ()' and conses the arguments, which is more + ;; costly than the invocation of a "simple subr". + (string= "foo" "bar")) + + (benchmark "generic subr with rest arg" 700000 + ;; 1 required argument, 0 optional arguments, 1 rest. + (run-hook hook1 1)) + + (benchmark "generic subr with rest arg and 3+ parameters" 700000 + ;; 1 required argument, 0 optional arguments, 1 rest. + + ;; The evaluator considers calls with 3 and more parameters as a general + ;; form and always stores the arguments into a list. + (run-hook hook3 1 2 3))) + + +(with-benchmark-prefix "subr application" + + (benchmark "simple subr" 700000 + (apply 1+ '(0))) + + (benchmark "generic subr" 700000 + (apply string= "foo" '("bar"))) + + (benchmark "generic subr with rest arg" 700000 + (apply run-hook hook1 '(1))) + + (benchmark "generic subr with rest arg and 3+ parameters" 700000 + (run-hook hook3 1 2 '(3)))) diff --git a/guile18/benchmark-suite/benchmarks/uniform-vector-read.bm b/guile18/benchmark-suite/benchmarks/uniform-vector-read.bm new file mode 100644 index 0000000000..d288f0b449 --- /dev/null +++ b/guile18/benchmark-suite/benchmarks/uniform-vector-read.bm @@ -0,0 +1,53 @@ +;;; uniform-vector-read.bm --- Exercise binary I/O primitives. -*- Scheme -*- +;;; +;;; Copyright (C) 2008 Free Software Foundation, Inc. +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2, or (at your option) +;;; any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this software; see the file COPYING. If not, write to +;;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;;; Boston, MA 02110-1301 USA + +(define-module (benchmarks uniform-vector-read) + :use-module (benchmark-suite lib) + :use-module (srfi srfi-4)) + +(define file-name + (tmpnam)) + +(define %buffer-size + 7777) + +(define buf + (make-u8vector %buffer-size)) + +(define str + (make-string %buffer-size)) + + +(with-benchmark-prefix "uniform-vector-read!" + + (benchmark "uniform-vector-write" 500 + (let ((output (open-output-file file-name))) + (uniform-vector-write buf output) + (close output))) + + (benchmark "uniform-vector-read!" 500 + (let ((input (open-input-file file-name))) + (setvbuf input _IONBF) + (uniform-vector-read! buf input) + (close input))) + + (benchmark "string port" 5000 + (let ((input (open-input-string str))) + (uniform-vector-read! buf input) + (close input)))) diff --git a/guile18/benchmark-suite/guile-benchmark b/guile18/benchmark-suite/guile-benchmark new file mode 100755 index 0000000000..c4c6f23de4 --- /dev/null +++ b/guile18/benchmark-suite/guile-benchmark @@ -0,0 +1,220 @@ +#!../libguile/guile \ +-e main -s +!# + +;;;; guile-benchmark --- run the Guile benchmark suite +;;;; Adapted from code by Jim Blandy --- May 1999 +;;;; +;;;; Copyright (C) 2002, 2006 Free Software Foundation, Inc. +;;;; +;;;; This program is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU General Public License as published by +;;;; the Free Software Foundation; either version 2, or (at your option) +;;;; any later version. +;;;; +;;;; This program is distributed in the hope that it will be useful, +;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;;; GNU General Public License for more details. +;;;; +;;;; You should have received a copy of the GNU General Public License +;;;; along with this software; see the file COPYING. If not, write to +;;;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;;;; Boston, MA 02110-1301 USA + + +;;;; Usage: [guile -e main -s] guile-benchmark [OPTIONS] [BENCHMARK ...] +;;;; +;;;; Run benchmarks from the Guile benchmark suite. Report timing +;;;; results to the standard output, along with a summary of all +;;;; the results. Record each reported benchmark outcome in the log +;;;; file, `benchmarks.log'. +;;;; +;;;; Normally, guile-benchmark scans the benchmark directory, and +;;;; executes all files whose names end in `.bm'. (It assumes they contain +;;;; Scheme code.) However, you can have it execute specific benchmarks by +;;;; listing their filenames on the command line. +;;;; +;;;; The option `--benchmark-suite' can be given to specify the benchmark +;;;; directory. If no such option is given, the benchmark directory is +;;;; taken from the environment variable BENCHMARK_SUITE_DIR (if defined), +;;;; otherwise a default directory that is hardcoded in this file is +;;;; used (see "Installation" below). +;;;; +;;;; If present, the `--iteration-factor FACTOR' option tells +;;;; `guile-benchmark' to multiply the number of iterations given with +;;;; each single benchmark by the value of FACTOR. This allows to +;;;; reduce or increase the total time for benchmarking. +;;;; +;;;; If present, the `--log-file LOG' option tells `guile-benchmark' to put +;;;; the log output in a file named LOG. +;;;; +;;;; If present, the `--debug' option will enable a debugging mode. +;;;; +;;;; +;;;; Installation: +;;;; +;;;; If you change the #! line at the top of this script to point at +;;;; the Guile interpreter you want to run, you can call this script +;;;; as an executable instead of having to pass it as a parameter to +;;;; guile via "guile -e main -s guile-benchmark". Further, you can edit +;;;; the definition of default-benchmark-suite to point to the parent +;;;; directory of the `benchmarks' tree, which makes it unnecessary to set +;;;; the environment variable `BENCHMARK_SUITE_DIR'. +;;;; +;;;; +;;;; Shortcomings: +;;;; +;;;; At the moment, due to a simple-minded implementation, benchmark files +;;;; must live in the benchmark directory, and you must specify their names +;;;; relative to the top of the benchmark directory. If you want to send +;;;; me a patch that fixes this, but still leaves sane benchmark names in +;;;; the log file, that would be great. At the moment, all the benchmarks +;;;; I care about are in the benchmark directory, though. +;;;; +;;;; It would be nice if you could specify the Guile interpreter you +;;;; want to benchmark on the command line. As it stands, if you want to +;;;; change which Guile interpreter you're benchmarking, you need to edit +;;;; the #! line at the top of this file, which is stupid. + + +;;; User configurable settings: +(define default-benchmark-suite + (string-append (getenv "HOME") "/bogus-path/benchmark-suite")) + + +(use-modules (benchmark-suite lib) + (ice-9 getopt-long) + (ice-9 and-let-star) + (ice-9 rdelim)) + + +;;; Variables that will receive their actual values later. +(define benchmark-suite default-benchmark-suite) + +(define tmp-dir #f) + + +;;; General utilities, that probably should be in a library somewhere. + +;;; Enable debugging +(define (enable-debug-mode) + (write-line %load-path) + (set! %load-verbosely #t) + (debug-enable 'backtrace 'debug)) + +;;; Traverse the directory tree at ROOT, applying F to the name of +;;; each file in the tree, including ROOT itself. For a subdirectory +;;; SUB, if (F SUB) is true, we recurse into SUB. Do not follow +;;; symlinks. +(define (for-each-file f root) + + ;; A "hard directory" is a path that denotes a directory and is not a + ;; symlink. + (define (file-is-hard-directory? filename) + (eq? (stat:type (lstat filename)) 'directory)) + + (let visit ((root root)) + (let ((should-recur (f root))) + (if (and should-recur (file-is-hard-directory? root)) + (let ((dir (opendir root))) + (let loop () + (let ((entry (readdir dir))) + (cond + ((eof-object? entry) #f) + ((or (string=? entry ".") + (string=? entry "..") + (string=? entry "CVS") + (string=? entry "RCS")) + (loop)) + (else + (visit (string-append root "/" entry)) + (loop)))))))))) + + +;;; The benchmark driver. + + +;;; Localizing benchmark files and temporary data files. + +(define (data-file-name filename) + (in-vicinity tmp-dir filename)) + +(define (benchmark-file-name benchmark) + (in-vicinity benchmark-suite benchmark)) + +;;; Return a list of all the benchmark files in the benchmark tree. +(define (enumerate-benchmarks benchmark-dir) + (let ((root-len (+ 1 (string-length benchmark-dir))) + (benchmarks '())) + (for-each-file (lambda (file) + (if (has-suffix? file ".bm") + (let ((short-name + (substring file root-len))) + (set! benchmarks (cons short-name benchmarks)))) + #t) + benchmark-dir) + + ;; for-each-file presents the files in whatever order it finds + ;; them in the directory. We sort them here, so they'll always + ;; appear in the same order. This makes it easier to compare benchmark + ;; log files mechanically. + (sort benchmarks stringnumber (opt 'iteration-factor "1"))) + + ;; directory where temporary files are created. + (set! tmp-dir (getcwd)) + + (let* ((benchmarks + (let ((foo (opt '() '()))) + (if (null? foo) + (enumerate-benchmarks benchmark-suite) + foo))) + (log-file + (opt 'log-file "benchmarks.log"))) + + ;; Open the log file. + (let ((log-port (open-output-file log-file))) + + ;; Register some reporters. + (register-reporter (make-log-reporter log-port)) + (register-reporter user-reporter) + + ;; Run the benchmarks. + (for-each (lambda (benchmark) + (with-benchmark-prefix benchmark + (load (benchmark-file-name benchmark)))) + benchmarks) + (close-port log-port))))) + + +;;; Local Variables: +;;; mode: scheme +;;; End: diff --git a/guile18/benchmark-suite/lib.scm b/guile18/benchmark-suite/lib.scm new file mode 100644 index 0000000000..65491d735f --- /dev/null +++ b/guile18/benchmark-suite/lib.scm @@ -0,0 +1,530 @@ +;;;; benchmark-suite/lib.scm --- generic support for benchmarking +;;;; Copyright (C) 2002, 2006 Free Software Foundation, Inc. +;;;; +;;;; This program is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU General Public License as published by +;;;; the Free Software Foundation; either version 2, or (at your option) +;;;; any later version. +;;;; +;;;; This program is distributed in the hope that it will be useful, +;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;;; GNU General Public License for more details. +;;;; +;;;; You should have received a copy of the GNU General Public License +;;;; along with this software; see the file COPYING. If not, write to +;;;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;;;; Boston, MA 02110-1301 USA + +(define-module (benchmark-suite lib) + :export ( + + ;; Controlling the execution. + iteration-factor + scale-iterations + + ;; Running benchmarks. + run-benchmark + benchmark + + ;; Naming groups of benchmarks in a regular fashion. + with-benchmark-prefix with-benchmark-prefix* current-benchmark-prefix + format-benchmark-name + + ;; Computing timing results + benchmark-time-base + benchmark-total-time benchmark-user-time benchmark-system-time + benchmark-frame-time benchmark-core-time + benchmark-user-time\interpreter benchmark-core-time\interpreter + + ;; Reporting results in various ways. + register-reporter unregister-reporter reporter-registered? + make-log-reporter + full-reporter + user-reporter)) + + +;;;; If you're using Emacs's Scheme mode: +;;;; (put 'with-benchmark-prefix 'scheme-indent-function 1) +;;;; (put 'benchmark 'scheme-indent-function 1) + + +;;;; CORE FUNCTIONS +;;;; +;;;; The function (run-benchmark name iterations thunk) is the heart of the +;;;; benchmarking environment. The first parameter NAME is a unique name for +;;;; the benchmark to be executed (for an explanation of this parameter see +;;;; below under ;;;; NAMES. The second parameter ITERATIONS is a positive +;;;; integer value that indicates how often the thunk shall be executed (for +;;;; an explanation of how iteration counts should be used, see below under +;;;; ;;;; ITERATION COUNTS). For example: +;;;; +;;;; (run-benchmark "small integer addition" 100000 (lambda () (+ 1 1))) +;;;; +;;;; This will run the function (lambda () (+ 1 1)) a 100000 times (the +;;;; iteration count can, however be scaled. See below for details). Some +;;;; different time data for running the thunk for the given number of +;;;; iterations is measured and reported. +;;;; +;;;; Convenience macro +;;;; +;;;; * (benchmark name iterations body) is a short form for +;;;; (run-benchmark name iterations (lambda () body)) + + +;;;; NAMES +;;;; +;;;; Every benchmark in the benchmark suite has a unique name to be able to +;;;; compare the results of individual benchmarks across several runs of the +;;;; benchmark suite. +;;;; +;;;; A benchmark name is a list of printable objects. For example: +;;;; ("ports.scm" "file" "read and write back list of strings") +;;;; ("ports.scm" "pipe" "read") +;;;; +;;;; Benchmark names may contain arbitrary objects, but they always have +;;;; the following properties: +;;;; - Benchmark names can be compared with EQUAL?. +;;;; - Benchmark names can be reliably stored and retrieved with the standard +;;;; WRITE and READ procedures; doing so preserves their identity. +;;;; +;;;; For example: +;;;; +;;;; (benchmark "simple addition" 100000 (+ 2 2)) +;;;; +;;;; In that case, the benchmark name is the list ("simple addition"). +;;;; +;;;; The WITH-BENCHMARK-PREFIX syntax and WITH-BENCHMARK-PREFIX* procedure +;;;; establish a prefix for the names of all benchmarks whose results are +;;;; reported within their dynamic scope. For example: +;;;; +;;;; (begin +;;;; (with-benchmark-prefix "basic arithmetic" +;;;; (benchmark "addition" 100000 (+ 2 2)) +;;;; (benchmark "subtraction" 100000 (- 4 2))) +;;;; (benchmark "multiplication" 100000 (* 2 2)))) +;;;; +;;;; In that example, the three benchmark names are: +;;;; ("basic arithmetic" "addition"), +;;;; ("basic arithmetic" "subtraction"), and +;;;; ("multiplication"). +;;;; +;;;; WITH-BENCHMARK-PREFIX can be nested. Each WITH-BENCHMARK-PREFIX +;;;; postpends a new element to the current prefix: +;;;; +;;;; (with-benchmark-prefix "arithmetic" +;;;; (with-benchmark-prefix "addition" +;;;; (benchmark "integer" 100000 (+ 2 2)) +;;;; (benchmark "complex" 100000 (+ 2+3i 4+5i))) +;;;; (with-benchmark-prefix "subtraction" +;;;; (benchmark "integer" 100000 (- 2 2)) +;;;; (benchmark "complex" 100000 (- 2+3i 1+2i)))) +;;;; +;;;; The four benchmark names here are: +;;;; ("arithmetic" "addition" "integer") +;;;; ("arithmetic" "addition" "complex") +;;;; ("arithmetic" "subtraction" "integer") +;;;; ("arithmetic" "subtraction" "complex") +;;;; +;;;; To print a name for a human reader, we DISPLAY its elements, +;;;; separated by ": ". So, the last set of benchmark names would be +;;;; reported as: +;;;; +;;;; arithmetic: addition: integer +;;;; arithmetic: addition: complex +;;;; arithmetic: subtraction: integer +;;;; arithmetic: subtraction: complex +;;;; +;;;; The Guile benchmarks use with-benchmark-prefix to include the name of +;;;; the source file containing the benchmark in the benchmark name, to +;;;; provide each file with its own namespace. + + +;;;; ITERATION COUNTS +;;;; +;;;; Every benchmark has to be given an iteration count that indicates how +;;;; often it should be executed. The reason is, that in most cases a single +;;;; execution of the benchmark code would not deliver usable timing results: +;;;; The resolution of the system time is not arbitrarily fine. Thus, some +;;;; benchmarks would be executed too quickly to be measured at all. A rule +;;;; of thumb is, that the longer a benchmark runs, the more exact is the +;;;; information about the execution time. +;;;; +;;;; However, execution time depends on several influences: First, the +;;;; machine you are running the benchmark on. Second, the compiler you use. +;;;; Third, which compiler options you use. Fourth, which version of guile +;;;; you are using. Fifth, which guile options you are using (for example if +;;;; you are using the debugging evaluator or not). There are even more +;;;; influences. +;;;; +;;;; For this reason, the same number of iterations for a single benchmark may +;;;; lead to completely different execution times in different +;;;; constellations. For someone working on a slow machine, the default +;;;; execution counts may lead to an inacceptable execution time of the +;;;; benchmark suite. For someone on a very fast machine, however, it may be +;;;; desireable to increase the number of iterations in order to increase the +;;;; accuracy of the time data. +;;;; +;;;; For this reason, the benchmark suite allows to scale the number of +;;;; executions by a global factor, stored in the exported variable +;;;; iteration-factor. The default for iteration-factor is 1. A number of 2 +;;;; means, that all benchmarks are executed twice as often, which will also +;;;; roughly double the execution time for the benchmark suite. Similarly, if +;;;; iteration-factor holds a value of 0.5, only about half the execution time +;;;; will be required. +;;;; +;;;; It is probably a good idea to choose the iteration count for each +;;;; benchmark such that all benchmarks will take about the same time, for +;;;; example one second. To achieve this, the benchmark suite holds an empty +;;;; benchmark in the file 0-reference.bm named "reference benchmark for +;;;; iteration counts". It's iteration count is calibrated to make the +;;;; benchmark run about one second on Dirk's laptop :-) If you are adding +;;;; benchmarks to the suite, it would be nice if you could calibrate the +;;;; number of iterations such that each of your added benchmarks takes about +;;;; as long to run as the reference benchmark. But: Don't be too accurate +;;;; to figure out the correct iteration count. + + +;;;; REPORTERS +;;;; +;;;; A reporter is a function which we apply to each benchmark outcome. +;;;; Reporters can log results, print interesting results to the standard +;;;; output, collect statistics, etc. +;;;; +;;;; A reporter function takes the following arguments: NAME ITERATIONS +;;;; BEFORE AFTER GC-TIME. The argument NAME holds the name of the benchmark, +;;;; ITERATIONS holds the actual number of iterations that were performed. +;;;; BEFORE holds the result of the function (times) at the very beginning of +;;;; the excution of the benchmark, AFTER holds the result of the function +;;;; (times) after the execution of the benchmark. GC-TIME, finally, holds +;;;; the difference of calls to (gc-run-time) before and after the execution +;;;; of the benchmark. +;;;; +;;;; This library provides some standard reporters for logging results +;;;; to a file, reporting interesting results to the user, (FIXME: and +;;;; collecting totals). +;;;; +;;;; You can use the REGISTER-REPORTER function and friends to add whatever +;;;; reporting functions you like. See under ;;;; TIMING DATA to see how the +;;;; library helps you to extract relevant timing information from the values +;;;; ITERATIONS, BEFORE, AFTER and GC-TIME. If you don't register any +;;;; reporters, the library uses USER-REPORTER, which writes the most +;;;; interesting results to the standard output. + + +;;;; TIME CALCULATION +;;;; +;;;; The library uses the guile functions (times) and (gc-run-time) to +;;;; determine the execution time for a single benchmark. Based on these +;;;; functions, the values of BEFORE, AFTER and GC-TIME are computed, which +;;;; are then passed to the reporter functions. All three values BEFORE, +;;;; AFTER and GC-TIME include the time needed to executed the benchmark code +;;;; itself, but also the surrounding code that implements the loop to run the +;;;; benchmark code for the given number of times. This is undesirable, since +;;;; one would prefer to only get the timing data for the benchmarking code. +;;;; +;;;; To cope with this, the benchmarking framework uses a trick: During +;;;; initialization of the library, the time for executing an empty benchmark +;;;; is measured and stored. This is an estimate for the time needed by the +;;;; benchmarking framework itself. For later benchmarks, this time can then +;;;; be subtracted from the measured execution times. +;;;; +;;;; In order to simplify the time calculation for users who want to write +;;;; their own reporters, benchmarking framework provides the following +;;;; definitions: +;;;; +;;;; benchmark-time-base : This variable holds the number of time units that +;;;; make up a second. By deviding the results of each of the functions +;;;; below by this value, you get the corresponding time in seconds. For +;;;; example (/ (benchmark-total-time before after) benchmark-time-base) +;;;; will give you the total time in seconds. +;;;; benchmark-total-time : this function takes two arguments BEFORE and AFTER +;;;; and computes the total time between the two timestamps. The result +;;;; of this function is what the time command of the unix command line +;;;; would report as real time. +;;;; benchmark-user-time : this function takes two arguments BEFORE and AFTER +;;;; and computes the time spent in the benchmarking process between the +;;;; two timestamps. That means, the time consumed by other processes +;;;; running on the same machine is not part of the resulting time, +;;;; neither is time spent within the operating system. The result of +;;;; this function is what the time command of the unix command line would +;;;; report as user time. +;;;; benchmark-system-time : similar to benchmark-user-time, but here the time +;;;; spent within the operating system is given. The result of this +;;;; function is what the time command of the unix command line would +;;;; report as system time. +;;;; benchmark-frame-time : this function takes the argument ITERATIONS. It +;;;; reports the part of the user time that is consumed by the +;;;; benchmarking framework itself to run some benchmark for the given +;;;; number of iterations. You can think of this as the time that would +;;;; still be consumed, even if the benchmarking code itself was empty. +;;;; This value does not include any time for garbage collection, even if +;;;; it is the benchmarking framework which is responsible for causing a +;;;; garbage collection. +;;;; benchmark-core-time : this function takes three arguments ITERATIONS, +;;;; BEFORE and AFTER. It reports the part of the user time that is +;;;; actually spent within the benchmarking code. That is, the time +;;;; needed for the benchmarking framework is subtracted from the user +;;;; time. This value, however, includes all garbage collection times, +;;;; even if some part of the gc-time had actually to be attributed to the +;;;; benchmarking framework. +;;;; benchmark-user-time\interpreter : this function takes three arguments +;;;; BEFORE AFTER and GC-TIME. It reports the part of the user time that +;;;; is spent in the interpreter (and not in garbage collection). +;;;; benchmark-core-time\interpreter : this function takes four arguments +;;;; ITERATIONS, BEFORE, AFTER. and GC-TIME. It reports the part of the +;;;; benchmark-core-time that is spent in the interpreter (and not in +;;;; garbage collection). This value is most probably the one you are +;;;; interested in, except if you are doing some garbage collection +;;;; checks. +;;;; +;;;; There is no function to calculate the garbage-collection time, since the +;;;; garbage collection time is already passed as an argument GC-TIME to the +;;;; reporter functions. + + +;;;; MISCELLANEOUS +;;;; + +;;; Perform a division and convert the result to inexact. +(define (i/ a b) + (exact->inexact (/ a b))) + +;;; Scale the number of iterations according to the given scaling factor. +(define iteration-factor 1) +(define (scale-iterations iterations) + (let* ((i (inexact->exact (round (* iterations iteration-factor))))) + (if (< i 1) 1 i))) + + +;;;; CORE FUNCTIONS +;;;; + +;;; The central routine for executing benchmarks. +;;; The idea is taken from Greg, the GNUstep regression test environment. +(define run-benchmark #f) +(let ((benchmark-running #f)) + (define (local-run-benchmark name iterations thunk) + (if benchmark-running + (error "Nested calls to run-benchmark are not permitted.") + (let ((benchmark-name (full-name name)) + (iterations (scale-iterations iterations))) + (set! benchmark-running #t) + (let ((before #f) (after #f) (gc-time #f)) + (gc) + (set! gc-time (gc-run-time)) + (set! before (times)) + (do ((i 0 (+ i 1))) + ((= i iterations)) + (thunk)) + (set! after (times)) + (set! gc-time (- (gc-run-time) gc-time)) + (report benchmark-name iterations before after gc-time)) + (set! benchmark-running #f)))) + (set! run-benchmark local-run-benchmark)) + +;;; A short form for benchmarks. +(defmacro benchmark (name iterations body . rest) + `(,run-benchmark ,name ,iterations (lambda () ,body ,@rest))) + + +;;;; BENCHMARK NAMES +;;;; + +;;;; Turn a benchmark name into a nice human-readable string. +(define (format-benchmark-name name) + (call-with-output-string + (lambda (port) + (let loop ((name name) + (separator "")) + (if (pair? name) + (begin + (display separator port) + (display (car name) port) + (loop (cdr name) ": "))))))) + +;;;; For a given benchmark-name, deliver the full name including all prefixes. +(define (full-name name) + (append (current-benchmark-prefix) (list name))) + +;;; A fluid containing the current benchmark prefix, as a list. +(define prefix-fluid (make-fluid)) +(fluid-set! prefix-fluid '()) +(define (current-benchmark-prefix) + (fluid-ref prefix-fluid)) + +;;; Postpend PREFIX to the current name prefix while evaluting THUNK. +;;; The name prefix is only changed within the dynamic scope of the +;;; call to with-benchmark-prefix*. Return the value returned by THUNK. +(define (with-benchmark-prefix* prefix thunk) + (with-fluids ((prefix-fluid + (append (fluid-ref prefix-fluid) (list prefix)))) + (thunk))) + +;;; (with-benchmark-prefix PREFIX BODY ...) +;;; Postpend PREFIX to the current name prefix while evaluating BODY ... +;;; The name prefix is only changed within the dynamic scope of the +;;; with-benchmark-prefix expression. Return the value returned by the last +;;; BODY expression. +(defmacro with-benchmark-prefix (prefix . body) + `(with-benchmark-prefix* ,prefix (lambda () ,@body))) + + +;;;; TIME CALCULATION +;;;; + +(define benchmark-time-base + internal-time-units-per-second) + +(define time-base ;; short-cut, not exported + benchmark-time-base) + +(define frame-time/iteration + "") + +(define (benchmark-total-time before after) + (- (tms:clock after) (tms:clock before))) + +(define (benchmark-user-time before after) + (- (tms:utime after) (tms:utime before))) + +(define (benchmark-system-time before after) + (- (tms:stime after) (tms:stime before))) + +(define (benchmark-frame-time iterations) + (* iterations frame-time/iteration)) + +(define (benchmark-core-time iterations before after) + (- (benchmark-user-time before after) (benchmark-frame-time iterations))) + +(define (benchmark-user-time\interpreter before after gc-time) + (- (benchmark-user-time before after) gc-time)) + +(define (benchmark-core-time\interpreter iterations before after gc-time) + (- (benchmark-core-time iterations before after) gc-time)) + + +;;;; REPORTERS +;;;; + +;;; The global list of reporters. +(define reporters '()) + +;;; The default reporter, to be used only if no others exist. +(define default-reporter #f) + +;;; Add the procedure REPORTER to the current set of reporter functions. +;;; Signal an error if that reporter procedure object is already registered. +(define (register-reporter reporter) + (if (memq reporter reporters) + (error "register-reporter: reporter already registered: " reporter)) + (set! reporters (cons reporter reporters))) + +;;; Remove the procedure REPORTER from the current set of reporter +;;; functions. Signal an error if REPORTER is not currently registered. +(define (unregister-reporter reporter) + (if (memq reporter reporters) + (set! reporters (delq! reporter reporters)) + (error "unregister-reporter: reporter not registered: " reporter))) + +;;; Return true iff REPORTER is in the current set of reporter functions. +(define (reporter-registered? reporter) + (if (memq reporter reporters) #t #f)) + +;;; Send RESULT to all currently registered reporter functions. +(define (report . args) + (if (pair? reporters) + (for-each (lambda (reporter) (apply reporter args)) + reporters) + (apply default-reporter args))) + + +;;;; Some useful standard reporters: +;;;; Log reporters write all benchmark results to a given log file. +;;;; Full reporters write all benchmark results to the standard output. +;;;; User reporters write some interesting results to the standard output. + +;;; Display a single benchmark result to the given port +(define (print-result port name iterations before after gc-time) + (let* ((name (format-benchmark-name name)) + (total-time (benchmark-total-time before after)) + (user-time (benchmark-user-time before after)) + (system-time (benchmark-system-time before after)) + (frame-time (benchmark-frame-time iterations)) + (benchmark-time (benchmark-core-time iterations before after)) + (user-time\interpreter + (benchmark-user-time\interpreter before after gc-time)) + (benchmark-core-time\interpreter + (benchmark-core-time\interpreter iterations before after gc-time))) + (write (list name iterations + 'total (i/ total-time time-base) + 'user (i/ user-time time-base) + 'system (i/ system-time time-base) + 'frame (i/ frame-time time-base) + 'benchmark (i/ benchmark-time time-base) + 'user/interp (i/ user-time\interpreter time-base) + 'bench/interp (i/ benchmark-core-time\interpreter time-base) + 'gc (i/ gc-time time-base)) + port) + (newline port))) + +;;; Return a reporter procedure which prints all results to the file +;;; FILE, in human-readable form. FILE may be a filename, or a port. +(define (make-log-reporter file) + (let ((port (if (output-port? file) file + (open-output-file file)))) + (lambda args + (apply print-result port args) + (force-output port)))) + +;;; A reporter that reports all results to the user. +(define (full-reporter . args) + (apply print-result (current-output-port) args)) + +;;; Display interesting results of a single benchmark to the given port +(define (print-user-result port name iterations before after gc-time) + (let* ((name (format-benchmark-name name)) + (user-time (benchmark-user-time before after)) + (benchmark-time (benchmark-core-time iterations before after)) + (benchmark-core-time\interpreter + (benchmark-core-time\interpreter iterations before after gc-time))) + (write (list name iterations + 'user (i/ user-time time-base) + 'benchmark (i/ benchmark-time time-base) + 'bench/interp (i/ benchmark-core-time\interpreter time-base) + 'gc (i/ gc-time time-base)) + port) + (newline port))) + +;;; A reporter that reports interesting results to the user. +(define (user-reporter . args) + (apply print-user-result (current-output-port) args)) + + +;;;; Initialize the benchmarking system: +;;;; + +;;; First, display version information +(display ";; running guile version " (current-output-port)) +(display (version) (current-output-port)) +(newline (current-output-port)) + +;;; Second, make sure the benchmarking routines are compiled. +(define (null-reporter . args) #t) +(set! default-reporter null-reporter) +(benchmark "empty initialization benchmark" 2 #t) + +;;; Third, initialize the system constants +(display ";; calibrating the benchmarking framework..." (current-output-port)) +(newline (current-output-port)) +(define (initialization-reporter name iterations before after gc-time) + (let* ((frame-time (- (tms:utime after) (tms:utime before) gc-time 3))) + (set! frame-time/iteration (/ frame-time iterations)) + (display ";; framework time per iteration: " (current-output-port)) + (display (i/ frame-time/iteration time-base) (current-output-port)) + (newline (current-output-port)))) +(set! default-reporter initialization-reporter) +(benchmark "empty initialization benchmark" 524288 #t) + +;;; Finally, set the default reporter +(set! default-reporter user-reporter) diff --git a/guile18/build-aux/config.rpath b/guile18/build-aux/config.rpath new file mode 100755 index 0000000000..35f959b87c --- /dev/null +++ b/guile18/build-aux/config.rpath @@ -0,0 +1,666 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2008 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's _LT_CC_BASENAME. + +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + darwin*) + case $cc_basename in + xlc*) + wl='-Wl,' + ;; + esac + ;; + mingw* | cygwin* | pw32* | os2*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + newsos6) + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + wl='-Wl,' + ;; + pgcc | pgf77 | pgf90) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + case "$host_os" in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we cannot use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if test "$GCC" = yes ; then + : + else + case $cc_basename in + xlc*) + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + ;; + *) + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 +libname_spec='lib$name' +case "$host_os" in + aix3*) + library_names_spec='$libname.a' + ;; + aix[4-9]*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + library_names_spec='$libname.a' + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + cygwin* | mingw* | pw32*) + shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' + ;; + darwin* | rhapsody*) + shrext=.dylib + library_names_spec='$libname$shrext' + ;; + dgux*) + library_names_spec='$libname$shrext' + ;; + freebsd1*) + ;; + freebsd* | dragonfly*) + case "$host_os" in + freebsd[123]*) + library_names_spec='$libname$shrext$versuffix' ;; + *) + library_names_spec='$libname$shrext' ;; + esac + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' + ;; + irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu) + library_names_spec='$libname$shrext' + ;; + knetbsd*-gnu) + library_names_spec='$libname$shrext' + ;; + netbsd*) + library_names_spec='$libname$shrext' + ;; + newsos6) + library_names_spec='$libname$shrext' + ;; + nto-qnx*) + library_names_spec='$libname$shrext' + ;; + openbsd*) + library_names_spec='$libname$shrext$versuffix' + ;; + os2*) + libname_spec='$name' + shrext=.dll + library_names_spec='$libname.a' + ;; + osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' + ;; + sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' + ;; + uts4*) + library_names_spec='$libname$shrext' + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's _LT_CC_BASENAME. + +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + darwin*) + case $cc_basename in + xlc*) + wl='-Wl,' + ;; + esac + ;; + mingw* | cygwin* | pw32* | os2*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + newsos6) + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + wl='-Wl,' + ;; + pgcc | pgf77 | pgf90) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + case "$host_os" in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we cannot use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if test "$GCC" = yes ; then + : + else + case $cc_basename in + xlc*) + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + ;; + *) + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 +libname_spec='lib$name' +case "$host_os" in + aix3*) + library_names_spec='$libname.a' + ;; + aix[4-9]*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + library_names_spec='$libname.a' + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + cygwin* | mingw* | pw32*) + shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' + ;; + darwin* | rhapsody*) + shrext=.dylib + library_names_spec='$libname$shrext' + ;; + dgux*) + library_names_spec='$libname$shrext' + ;; + freebsd1*) + ;; + freebsd* | dragonfly*) + case "$host_os" in + freebsd[123]*) + library_names_spec='$libname$shrext$versuffix' ;; + *) + library_names_spec='$libname$shrext' ;; + esac + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' + ;; + irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu) + library_names_spec='$libname$shrext' + ;; + knetbsd*-gnu) + library_names_spec='$libname$shrext' + ;; + netbsd*) + library_names_spec='$libname$shrext' + ;; + newsos6) + library_names_spec='$libname$shrext' + ;; + nto-qnx*) + library_names_spec='$libname$shrext' + ;; + openbsd*) + library_names_spec='$libname$shrext$versuffix' + ;; + os2*) + libname_spec='$name' + shrext=.dll + library_names_spec='$libname.a' + ;; + osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' + ;; + sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' + ;; + uts4*) + library_names_spec='$libname$shrext' + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' < not found. See README.])]) + +AC_CHECK_PROG(have_makeinfo, makeinfo, yes, no) +AM_CONDITIONAL(HAVE_MAKEINFO, test "$have_makeinfo" = yes) + +AM_PATH_LISPDIR + +#-------------------------------------------------------------------- +# +# User options (after above tests that may set default CFLAGS etc.) +# +#-------------------------------------------------------------------- + +GUILE_ERROR_ON_WARNING="yes" + +AC_ARG_ENABLE(error-on-warning, + [ --enable-error-on-warning treat compile warnings as errors], + [case "${enableval}" in + yes | y) GUILE_ERROR_ON_WARNING="yes" ;; + no | n) GUILE_ERROR_ON_WARNING="no" ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-error-on-warning) ;; + esac]) + +SCM_I_GSC_GUILE_DEBUG_FREELIST=0 +AC_ARG_ENABLE(debug-freelist, + [ --enable-debug-freelist include garbage collector freelist debugging code], + if test "$enable_debug_freelist" = y \ + || test "$enable_debug_freelist" = yes; then + SCM_I_GSC_GUILE_DEBUG_FREELIST=1 + fi) + +AC_ARG_ENABLE(debug-malloc, + [ --enable-debug-malloc include malloc debugging code], + if test "$enable_debug_malloc" = y || test "$enable_debug_malloc" = yes; then + AC_DEFINE(GUILE_DEBUG_MALLOC, 1, + [Define this if you want to debug scm_must_malloc/realloc/free calls.]) + fi) + +SCM_I_GSC_GUILE_DEBUG=0 +AC_ARG_ENABLE(guile-debug, + [AS_HELP_STRING([--enable-guile-debug], + [include internal debugging functions])], + if test "$enable_guile_debug" = y || test "$enable_guile_debug" = yes; then + SCM_I_GSC_GUILE_DEBUG=1 + fi) + +AC_ARG_ENABLE(posix, + [ --disable-posix omit posix interfaces],, + enable_posix=yes) + +AC_ARG_ENABLE(networking, + [ --disable-networking omit networking interfaces],, + enable_networking=yes) + +AC_ARG_ENABLE(regex, + [ --disable-regex omit regular expression interfaces],, + enable_regex=yes) + +AC_ARG_ENABLE([discouraged], + AS_HELP_STRING([--disable-discouraged],[omit discouraged features])) + +if test "$enable_discouraged" = no; then + SCM_I_GSC_ENABLE_DISCOURAGED=0 +else + SCM_I_GSC_ENABLE_DISCOURAGED=1 +fi + +AC_ARG_ENABLE([deprecated], + AS_HELP_STRING([--disable-deprecated],[omit deprecated features])) + +if test "$enable_deprecated" = no; then + SCM_I_GSC_ENABLE_DEPRECATED=0 + warn_default=no +else + if test "$enable_deprecated" = yes || test "$enable_deprecated" = ""; then + warn_default=summary + elif test "$enable_deprecated" = shutup; then + warn_default=no + else + warn_default=$enable_deprecated + fi + SCM_I_GSC_ENABLE_DEPRECATED=1 +fi +AC_DEFINE_UNQUOTED(SCM_WARN_DEPRECATED_DEFAULT, "$warn_default", +[Define this to control the default warning level for deprecated features.]) + +AC_ARG_ENABLE(elisp, + [ --disable-elisp omit Emacs Lisp support],, + enable_elisp=yes) + +dnl Added the following configure option in January 2008 following +dnl investigation of problems with "64" system and library calls on +dnl Darwin (MacOS X). The libguile code (_scm.h) assumes that if a +dnl system has stat64, it will have all the other 64 APIs too; but on +dnl Darwin, stat64 is there but other APIs are missing. +dnl +dnl It also appears, from the Darwin docs, that most system call APIs +dnl there (i.e. the traditional ones _without_ "64" in their names) have +dnl been 64-bit-capable for a long time now, so it isn't necessary to +dnl use "64" versions anyway. For example, Darwin's off_t is 64-bit. +dnl +dnl A similar problem has been reported for HP-UX: +dnl http://www.nabble.com/Building-guile-1.8.2-on-hpux-td13106681.html +dnl +dnl Therefore, and also because a Guile without LARGEFILE64 support is +dnl better than no Guile at all, we provide this option to suppress +dnl trying to use "64" calls. +dnl +dnl It may be that for some 64-bit function on Darwin/HP-UX we do need +dnl to use a "64" call, and hence that by using --without-64-calls we're +dnl missing out on that. If so, someone can work on that in the future. +dnl For now, --without-64-calls allows Guile to build on OSs where it +dnl wasn't building before. +AC_MSG_CHECKING([whether to use system and library "64" calls]) +AC_ARG_WITH([64-calls], + AS_HELP_STRING([--without-64-calls], + [don't attempt to use system and library calls with "64" in their names]), + [use_64_calls=$withval], + [use_64_calls=yes + case $host in + *-apple-darwin* ) + use_64_calls=no + ;; + powerpc-ibm-aix* ) + use_64_calls=no + ;; + esac]) +AC_MSG_RESULT($use_64_calls) +case "$use_64_calls" in + y* ) + AC_DEFINE(GUILE_USE_64_CALLS, 1, + [Define to 1 in order to try to use "64" versions of system and library calls.]) + ;; +esac + +AC_MSG_CHECKING([whether the compiler defaults to IEEE floating point behavior]) +# The following snippet was taken from Gnulib's `fpieee'. See also the definition +# of `guile_NaN' in `numbers.c'. + +# IEEE behaviour is the default on all CPUs except Alpha and SH +# (according to the test results of Bruno Haible's ieeefp/fenv_default.m4 +# and the GCC 4.1.2 manual). +case "$host_cpu" in +alpha*) + # On Alpha systems, a compiler option provides the behaviour. + # See the ieee(3) manual page, also available at + # + AC_MSG_RESULT([no]) + if test -n "$GCC"; then + # GCC has the option -mieee. + CPPFLAGS="$CPPFLAGS -mieee" + else + # Compaq (ex-DEC) C has the option -ieee. + CPPFLAGS="$CPPFLAGS -ieee" + fi + ;; +sh*) + AC_MSG_RESULT([no]) + if test -n "$GCC"; then + # GCC has the option -mieee. + CPPFLAGS="$CPPFLAGS -mieee" + fi + ;; +*) + AC_MSG_RESULT([yes]) + ;; +esac + + +#-------------------------------------------------------------------- + +dnl Check for dynamic linking + +use_modules=yes +AC_ARG_WITH(modules, +[ --with-modules[=FILES] Add support for dynamic modules], +use_modules="$withval") +test -z "$use_modules" && use_modules=yes +DLPREOPEN= +if test "$use_modules" != no; then + if test "$use_modules" = yes; then + DLPREOPEN="-dlpreopen force" + else + DLPREOPEN="-export-dynamic" + for module in $use_modules; do + DLPREOPEN="$DLPREOPEN -dlopen $module" + done + fi +fi + +dnl files which are destined for separate modules. + +if test "$use_modules" != no; then + AC_LIBOBJ([dynl]) +fi + +if test "$enable_posix" = yes; then + AC_LIBOBJ([filesys]) + AC_LIBOBJ([posix]) + AC_DEFINE(HAVE_POSIX, 1, + [Define this if you want support for POSIX system calls in Guile.]) +fi + +if test "$enable_networking" = yes; then + AC_LIBOBJ([net_db]) + AC_LIBOBJ([socket]) + AC_DEFINE(HAVE_NETWORKING, 1, + [Define this if you want support for networking in Guile.]) +fi + +if test "$enable_debug_malloc" = yes; then + AC_LIBOBJ([debug-malloc]) +fi + +if test "$enable_elisp" = yes; then + SCM_I_GSC_ENABLE_ELISP=1 +else + SCM_I_GSC_ENABLE_ELISP=0 +fi +AC_CHECK_LIB(uca, __uc_get_ar_bsp) + +AC_C_CONST + +# "volatile" is used in a couple of tests below. +AC_C_VOLATILE + +AC_C_INLINE +if test "$ac_cv_c_inline" != no; then + SCM_I_GSC_C_INLINE="\"${ac_cv_c_inline}\"" +else + SCM_I_GSC_C_INLINE=NULL +fi +AC_CHECK_LIB(uca, __uc_get_ar_bsp) + +AC_C_BIGENDIAN + +AC_CHECK_SIZEOF(char) +AC_CHECK_SIZEOF(unsigned char) +AC_CHECK_SIZEOF(short) +AC_CHECK_SIZEOF(unsigned short) +AC_CHECK_SIZEOF(int) +AC_CHECK_SIZEOF(unsigned int) +AC_CHECK_SIZEOF(long) +AC_CHECK_SIZEOF(unsigned long) +AC_CHECK_SIZEOF(size_t) +AC_CHECK_SIZEOF(long long) +AC_CHECK_SIZEOF(unsigned long long) +AC_CHECK_SIZEOF(__int64) +AC_CHECK_SIZEOF(unsigned __int64) +AC_CHECK_SIZEOF(void *) +AC_CHECK_SIZEOF(intptr_t) +AC_CHECK_SIZEOF(uintptr_t) +AC_CHECK_SIZEOF(ptrdiff_t) +AC_CHECK_SIZEOF(size_t) +AC_CHECK_SIZEOF(off_t) + +if test "$ac_cv_sizeof_long" -ne "$ac_cv_sizeof_void_p"; then + AC_MSG_ERROR(sizes of long and void* are not identical) +fi + +if test "$ac_cv_sizeof_ptrdiff_t" -ne 0; then + SCM_I_GSC_T_PTRDIFF='"ptrdiff_t"' +else + SCM_I_GSC_T_PTRDIFF='"long"' +fi +AC_SUBST([SCM_I_GSC_T_PTRDIFF]) + +AC_CHECK_HEADERS([stdint.h]) +AC_CHECK_HEADERS([inttypes.h]) + +AC_CHECK_SIZEOF(intmax_t) + +SCM_I_GSC_NEEDS_STDINT_H=0 +SCM_I_GSC_NEEDS_INTTYPES_H=0 + +### intptr and uintptr (try not to use inttypes if we don't have to) +if test "$ac_cv_header_inttypes_h" = yes; then + if test "$ac_cv_sizeof_intptr_t" -eq 0; then + AC_CHECK_SIZEOF([intptr_t],,[#include +#include ]) + if test "$ac_cv_sizeof_intptr_t" -ne 0; then + SCM_I_GSC_NEEDS_INTTYPES_H=1 + fi + fi + if test "$ac_cv_sizeof_uintptr_t" -eq 0; then + AC_CHECK_SIZEOF([uintptr_t],,[#include +#include ]) + if test "$ac_cv_sizeof_uintptr_t" -ne 0; then + SCM_I_GSC_NEEDS_INTTYPES_H=1 + fi + fi +fi + +### See what's provided by stdint.h +if test "$ac_cv_header_stdint_h" = yes; then + AC_CHECK_TYPE([int8_t],[scm_stdint_has_int8=1],,[#include ]) + AC_CHECK_TYPE([uint8_t],[scm_stdint_has_uint8=1],,[#include ]) + AC_CHECK_TYPE([int16_t],[scm_stdint_has_int16=1],,[#include ]) + AC_CHECK_TYPE([uint16_t],[scm_stdint_has_uint16=1],,[#include ]) + AC_CHECK_TYPE([int32_t],[scm_stdint_has_int32=1],,[#include ]) + AC_CHECK_TYPE([uint32_t],[scm_stdint_has_uint32=1],,[#include ]) + AC_CHECK_TYPE([int64_t],[scm_stdint_has_int64=1],,[#include ]) + AC_CHECK_TYPE([uint64_t],[scm_stdint_has_uint64=1],,[#include ]) + AC_CHECK_TYPE([intmax_t],[scm_stdint_has_intmax=1],,[#include ]) + AC_CHECK_TYPE([uintmax_t],[scm_stdint_has_uintmax=1],,[#include ]) +fi + +# so we don't get confused by the cache (wish there was a better way +# to check particular headers for the same type...) + +unset ac_cv_type_int8_t +unset ac_cv_type_uint8_t +unset ac_cv_type_int16_t +unset ac_cv_type_uint16_t +unset ac_cv_type_int32_t +unset ac_cv_type_uint32_t +unset ac_cv_type_int64_t +unset ac_cv_type_uint64_t +unset ac_cv_type_intmax_t +unset ac_cv_type_uintmax_t + +### See what's provided by inttypes.h +if test "$ac_cv_header_inttypes_h" = yes; then + AC_CHECK_TYPE([int8_t],[scm_inttypes_has_int8=1],,[#include ]) + AC_CHECK_TYPE([uint8_t],[scm_inttypes_has_uint8=1],,[#include ]) + AC_CHECK_TYPE([int16_t],[scm_inttypes_has_int16=1],,[#include ]) + AC_CHECK_TYPE([uint16_t],[scm_inttypes_has_uint16=1],,[#include ]) + AC_CHECK_TYPE([int32_t],[scm_inttypes_has_int32=1],,[#include ]) + AC_CHECK_TYPE([uint32_t],[scm_inttypes_has_uint32=1],,[#include ]) + AC_CHECK_TYPE([int64_t],[scm_inttypes_has_int64=1],,[#include ]) + AC_CHECK_TYPE([uint64_t],[scm_inttypes_has_uint64=1],,[#include ]) + AC_CHECK_TYPE([intmax_t],[scm_inttypes_has_intmax=1],,[#include ]) + AC_CHECK_TYPE([uintmax_t],[scm_inttypes_has_uintmax=1],,[#include ]) +fi + +# Try hard to find definitions for some required scm_t_*int* types. + +### Required type scm_t_int8 +if test "$scm_stdint_has_int8"; then + SCM_I_GSC_T_INT8='"int8_t"' + SCM_I_GSC_NEEDS_STDINT_H=1 +elif test "$scm_inttypes_has_int8"; then + SCM_I_GSC_T_INT8='"int8_t"' + SCM_I_GSC_NEEDS_INTTYPES_H=1 +elif test "$ac_cv_sizeof_char" -eq 1; then + SCM_I_GSC_T_INT8='"signed char"' +else + AC_MSG_ERROR([Can't find appropriate type for scm_t_int8.]) +fi +AC_SUBST([SCM_I_GSC_T_INT8]) + +### Required type scm_t_uint8 +if test "$scm_stdint_has_uint8"; then + SCM_I_GSC_T_UINT8='"uint8_t"' + SCM_I_GSC_NEEDS_STDINT_H=1 +elif test "$scm_inttypes_has_uint8"; then + SCM_I_GSC_T_UINT8='"uint8_t"' + SCM_I_GSC_NEEDS_INTTYPES_H=1 +elif test "$ac_cv_sizeof_unsigned_char" -eq 1; then + SCM_I_GSC_T_UINT8='"unsigned char"' +else + AC_MSG_ERROR([Can't find appropriate type for scm_t_uint8.]) +fi +AC_SUBST([SCM_I_GSC_T_UINT8]) + +### Required type scm_t_int16 (ANSI C says int or short might work) +if test "$scm_stdint_has_int16"; then + SCM_I_GSC_T_INT16='"int16_t"' + SCM_I_GSC_NEEDS_STDINT_H=1 +elif test "$scm_inttypes_has_int16"; then + SCM_I_GSC_T_INT16='"int16_t"' + SCM_I_GSC_NEEDS_INTTYPES_H=1 +elif test "$ac_cv_sizeof_int" -eq 2; then + SCM_I_GSC_T_INT16='"int"' +elif test "$ac_cv_sizeof_short" -eq 2; then + SCM_I_GSC_T_INT16='"short"' +else + AC_MSG_ERROR([Can't find appropriate type for scm_t_int16.]) +fi +AC_SUBST([SCM_I_GSC_T_INT16]) + +### Required type scm_t_uint16 (ANSI C says int or short might work) +if test "$scm_stdint_has_uint16"; then + SCM_I_GSC_T_UINT16='"uint16_t"' + SCM_I_GSC_NEEDS_STDINT_H=1 +elif test "$scm_inttypes_has_uint16"; then + SCM_I_GSC_T_UINT16='"uint16_t"' + SCM_I_GSC_NEEDS_INTTYPES_H=1 +elif test "$ac_cv_sizeof_unsigned_int" -eq 2; then + SCM_I_GSC_T_UINT16='"unsigned int"' +elif test "$ac_cv_sizeof_unsigned_short" -eq 2; then + SCM_I_GSC_T_UINT16='"unsigned short"' +else + AC_MSG_ERROR([Can't find appropriate type for scm_t_uint16.]) +fi +AC_SUBST([SCM_I_GSC_T_UINT16]) + + +### Required type scm_t_int32 (ANSI C says int, short, or long might work) +if test "$scm_stdint_has_int32"; then + SCM_I_GSC_T_INT32='"int32_t"' + SCM_I_GSC_NEEDS_STDINT_H=1 +elif test "$scm_inttypes_has_int32"; then + SCM_I_GSC_T_INT32='"int32_t"' + SCM_I_GSC_NEEDS_INTTYPES_H=1 +elif test "$ac_cv_sizeof_int" -eq 4; then + SCM_I_GSC_T_INT32='"int"' +elif test "$ac_cv_sizeof_long" -eq 4; then + SCM_I_GSC_T_INT32='"long"' +elif test "$ac_cv_sizeof_short" -eq 4; then + SCM_I_GSC_T_INT32='"short"' +else + AC_MSG_ERROR([Can't find appropriate type for scm_t_int32.]) +fi +AC_SUBST([SCM_I_GSC_T_INT32]) + +### Required type scm_t_uint32 (ANSI C says int, short, or long might work) +if test "$scm_stdint_has_uint32"; then + SCM_I_GSC_T_UINT32='"uint32_t"' + SCM_I_GSC_NEEDS_STDINT_H=1 +elif test "$scm_inttypes_has_uint32"; then + SCM_I_GSC_T_UINT32='"uint32_t"' + SCM_I_GSC_NEEDS_INTTYPES_H=1 +elif test "$ac_cv_sizeof_unsigned_int" -eq 4; then + SCM_I_GSC_T_UINT32='"unsigned int"' +elif test "$ac_cv_sizeof_unsigned_long" -eq 4; then + SCM_I_GSC_T_UINT32='"unsigned long"' +elif test "$ac_cv_sizeof_unsigned_short" -eq 4; then + SCM_I_GSC_T_UINT32='"unsigned short"' +else + AC_MSG_ERROR([Can't find appropriate type for scm_t_uint32.]) +fi +AC_SUBST([SCM_I_GSC_T_UINT32]) + +### Optional type scm_t_int64 (ANSI C says int, short, or long might work) +### Also try 'long long' and '__int64' if we have it. +SCM_I_GSC_T_INT64=0 +if test "$scm_stdint_has_int64"; then + SCM_I_GSC_T_INT64='"int64_t"' + SCM_I_GSC_NEEDS_STDINT_H=1 +elif test "$scm_inttypes_has_int64"; then + SCM_I_GSC_T_INT64='"int64_t"' + SCM_I_GSC_NEEDS_INTTYPES_H=1 +elif test "$ac_cv_sizeof_int" -eq 8; then + SCM_I_GSC_T_INT64='"int"' +elif test "$ac_cv_sizeof_long" -eq 8; then + SCM_I_GSC_T_INT64='"long"' +elif test "$ac_cv_sizeof_short" -eq 8; then + SCM_I_GSC_T_INT64='"short"' +elif test "$ac_cv_sizeof_long_long" -eq 8; then + SCM_I_GSC_T_INT64='"long long"' +elif test "$ac_cv_sizeof___int64" -eq 8; then + SCM_I_GSC_T_INT64='"__int64"' +else + AC_MSG_ERROR([Can't find appropriate type for scm_t_int64.]) +fi +AC_SUBST([SCM_I_GSC_T_INT64]) + + +### Optional type scm_t_uint64 (ANSI C says int, short, or long might work) +### Also try 'long long' and '__int64' if we have it. +SCM_I_GSC_T_UINT64=0 +if test "$scm_stdint_has_uint64"; then + SCM_I_GSC_T_UINT64='"uint64_t"' + SCM_I_GSC_NEEDS_STDINT_H=1 +elif test "$scm_inttypes_has_uint64"; then + SCM_I_GSC_T_UINT64='"uint64_t"' + SCM_I_GSC_NEEDS_INTTYPES_H=1 +elif test "$ac_cv_sizeof_unsigned_int" -eq 8; then + SCM_I_GSC_T_UINT64='"unsigned int"' +elif test "$ac_cv_sizeof_unsigned_long" -eq 8; then + SCM_I_GSC_T_UINT64='"unsigned long"' +elif test "$ac_cv_sizeof_unsigned_short" -eq 8; then + SCM_I_GSC_T_UINT64='"unsigned short"' +elif test "$ac_cv_sizeof_unsigned_long_long" -eq 8; then + SCM_I_GSC_T_UINT64='"unsigned long long"' +elif test "$ac_cv_sizeof_unsigned___int64" -eq 8; then + SCM_I_GSC_T_UINT64='"unsigned __int64"' +else + AC_MSG_ERROR([Can't find appropriate type for scm_t_uint64.]) +fi +AC_SUBST([SCM_I_GSC_T_UINT64]) + +### Required type scm_t_intmax +### +### We try 'intmax_t', '__int64', 'long long' in this order. When +### none of them is available, we use 'long'. +### +SCM_I_GSC_T_INTMAX=0 +if test "$scm_stdint_has_intmax"; then + SCM_I_GSC_T_INTMAX='"intmax_t"' + SCM_I_GSC_NEEDS_STDINT_H=1 +elif test "$scm_inttypes_has_intmax"; then + SCM_I_GSC_T_INTMAX='"intmax_t"' + SCM_I_GSC_NEEDS_INTTYPES_H=1 +elif test "$ac_cv_sizeof___int64" -ne 0; then + SCM_I_GSC_T_INTMAX='"__int64"' +elif test "$ac_cv_sizeof_long_long" -ne 0; then + SCM_I_GSC_T_INTMAX='"long long"' +else + SCM_I_GSC_T_INTMAX='"long"' +fi +AC_SUBST([SCM_I_GSC_T_INTMAX]) + +### Required type scm_t_uintmax +### +### We try 'uintmax_t', 'unsigned __int64', 'unsigned long long' in +### this order. When none of them is available, we use 'unsigned long'. +### +SCM_I_GSC_T_UINTMAX=0 +if test "$scm_stdint_has_uintmax"; then + SCM_I_GSC_T_UINTMAX='"uintmax_t"' + SCM_I_GSC_NEEDS_STDINT_H=1 +elif test "$scm_inttypes_has_uintmax"; then + SCM_I_GSC_T_UINTMAX='"uintmax_t"' + SCM_I_GSC_NEEDS_INTTYPES_H=1 +elif test "$ac_cv_sizeof_unsigned___int64" -ne 0; then + SCM_I_GSC_T_UINTMAX='"unsigned __int64"' +elif test "$ac_cv_sizeof_unsigned_long_long" -ne 0; then + SCM_I_GSC_T_UINTMAX='"unsigned long long"' +else + SCM_I_GSC_T_UINTMAX='"unsigned long"' +fi +AC_SUBST([SCM_I_GSC_T_UINTMAX]) + + +AC_SUBST([SCM_I_GSC_NEEDS_STDINT_H]) +AC_SUBST([SCM_I_GSC_NEEDS_INTTYPES_H]) + +AC_HEADER_STDC +AC_HEADER_TIME +AC_HEADER_SYS_WAIT +AC_HEADER_DIRENT + +# Reason for checking: +# +# HP-UX 11.11 (at least) doesn't provide `struct dirent64', even +# with `_LARGEFILE64_SOURCE', so check whether it's available. +# +AC_CHECK_MEMBER([struct dirent64.d_name], + [SCM_I_GSC_HAVE_STRUCT_DIRENT64=1], [SCM_I_GSC_HAVE_STRUCT_DIRENT64=0], + [ #ifndef _LARGEFILE64_SOURCE + # define _LARGEFILE64_SOURCE + #endif + + /* Per Autoconf manual. */ + #include + #ifdef HAVE_DIRENT_H + # include + #else + # define dirent direct + # ifdef HAVE_SYS_NDIR_H + # include + # endif + # ifdef HAVE_SYS_DIR_H + # include + # endif + # ifdef HAVE_NDIR_H + # include + # endif + #endif ]) +AC_SUBST([SCM_I_GSC_HAVE_STRUCT_DIRENT64]) + +# Reasons for testing: +# complex.h - new in C99 +# fenv.h - available in C99, but not older systems +# machine/fpu.h - on Tru64 5.1b, the declaration of fesetround(3) is in +# this file instead of +# process.h - mingw specific +# +AC_CHECK_HEADERS([complex.h fenv.h io.h libc.h limits.h malloc.h memory.h process.h string.h \ +regex.h rxposix.h rx/rxposix.h sys/dir.h sys/ioctl.h sys/select.h \ +sys/time.h sys/timeb.h sys/times.h sys/stdtypes.h sys/types.h \ +sys/utime.h time.h unistd.h utime.h pwd.h grp.h sys/utsname.h \ +direct.h strings.h machine/fpu.h]) + +# "complex double" is new in C99, and "complex" is only a keyword if +# is included +AC_CHECK_TYPES(complex double,,, +[#if HAVE_COMPLEX_H +#include +#endif]) + +# On MacOS X contains socklen_t, so must include that +# when testing. +AC_CHECK_TYPE(socklen_t, , + [AC_DEFINE_UNQUOTED(socklen_t, int, + [Define to `int' if does not define.])], + [#if HAVE_SYS_TYPES_H +#include +#endif +#include +]) +AC_CHECK_TYPE(struct ip_mreq) + +GUILE_HEADER_LIBC_WITH_UNISTD + +AC_TYPE_GETGROUPS +AC_TYPE_SIGNAL +AC_TYPE_MODE_T + +# On mingw -lm is empty, so this test is unnecessary, but it's +# harmless so we don't hard-code to suppress it. +# +AC_CHECK_LIB(m, cos) + +AC_CHECK_FUNCS(gethostbyname) +if test $ac_cv_func_gethostbyname = no; then + AC_CHECK_LIB(nsl, gethostbyname) +fi + +AC_CHECK_FUNCS(connect) +if test $ac_cv_func_connect = no; then + AC_CHECK_LIB(socket, connect) +fi + +dnl +dnl Check for Winsock and other functionality on Win32 (*not* CygWin) +dnl +EXTRA_DEFS="" +case $host in + *-*-mingw*) + AC_CHECK_HEADER(winsock2.h, [AC_DEFINE([HAVE_WINSOCK2_H], 1, + [Define if you have the header file.])]) + AC_CHECK_LIB(ws2_32, main) + AC_LIBOBJ([win32-uname]) + AC_LIBOBJ([win32-dirent]) + if test "$enable_networking" = yes ; then + AC_LIBOBJ([win32-socket]) + fi + if test "$enable_shared" = yes ; then + EXTRA_DEFS="-DSCM_IMPORT" + AC_DEFINE(USE_DLL_IMPORT, 1, + [Define if you need additional CPP macros on Win32 platforms.]) + fi + ;; +esac +AC_SUBST(EXTRA_DEFS) + +# Reasons for testing: +# crt_externs.h - Darwin specific +# +AC_CHECK_HEADERS([assert.h crt_externs.h]) + +# Reasons for testing: +# DINFINITY - OSF specific +# DQNAN - OSF specific +# (DINFINITY and DQNAN are actually global variables, not functions) +# chsize - an MS-DOS-ism, found in mingw +# cexp, clog - not in various pre-c99 systems, and note that it's possible +# for gcc to provide the "complex double" type but the system to not +# have functions like cexp and clog +# clog10 - not in mingw (though others like clog and csqrt are) +# fesetround - available in C99, but not older systems +# ftruncate - posix, but probably not older systems (current mingw +# has it as an inline for chsize) +# ioctl - not in mingw. +# gmtime_r - recent posix, not on old systems +# pipe - not in mingw +# _pipe - specific to mingw, taking 3 args +# readdir_r - recent posix, not on old systems +# readdir64_r - not available on HP-UX 11.11 +# stat64 - SuS largefile stuff, not on old systems +# sysconf - not on old systems +# truncate - not in mingw +# isblank - available as a GNU extension or in C99 +# _NSGetEnviron - Darwin specific +# +AC_CHECK_FUNCS([DINFINITY DQNAN cexp chsize clog clog10 ctermid fesetround ftime ftruncate fchown getcwd geteuid gettimeofday gmtime_r ioctl lstat mkdir mknod nice pipe _pipe readdir_r readdir64_r readlink rename rmdir select setegid seteuid setlocale setpgid setsid sigaction siginterrupt stat64 strftime strptime symlink sync sysconf tcgetpgrp tcsetpgrp times uname waitpid strdup system usleep atexit on_exit chown link fcntl ttyname getpwent getgrent kill getppid getpgrp fork setitimer getitimer strchr strcmp index bcopy memcpy rindex truncate unsetenv isblank _NSGetEnviron strncasecmp]) + +# Reasons for testing: +# netdb.h - not in mingw +# sys/param.h - not in mingw +# pthread.h - only available with pthreads. ACX_PTHREAD doesn't +# check this specifically, we need it for the timespec test below. +# sethostname - the function itself check because it's not in mingw, +# the DECL is checked because Solaris 10 doens't have in any header +# strncasecmp - on NetBSD 1.6 the symbol is available in libc but the +# declaration cannot be found +# unsetenv - on Tru64 5.1b the symbol is available in libc but the +# declaration is only found if `_BSD' is defined; it's marked as +# discouraged in and has type `void' instead of `int' +# anyway. +# hstrerror - on Tru64 5.1b the symbol is available in libc but the +# declaration isn't anywhere. +# cuserid - on Tru64 5.1b the declaration is documented to be available +# only with `_XOPEN_SOURCE' or some such. +# flock - on Tru64 5.1b the declaration is available from +# but only if `_BSD' is defined. +# vsnprintf - on AIX 5.3, the declaration is only visible with +# `_XOPEN_SOURCE >= 500' or `_ISOC99_SOURCE'. +# +AC_CHECK_HEADERS(crypt.h netdb.h pthread.h sys/param.h sys/resource.h sys/file.h) +AC_CHECK_FUNCS(chroot flock getlogin cuserid getpriority setpriority getpass sethostname gethostname) +AC_CHECK_DECLS([sethostname, strncasecmp, unsetenv, hstrerror, cuserid, flock, vsnprintf]) + +# crypt() may or may not be available, for instance in some countries there +# are restrictions on cryptography. +# +# crypt() might be in libc (eg. OpenBSD), or it might be in a separate +# -lcrypt library (eg. Debian GNU/Linux). +# +# On HP-UX 11, crypt() is in libc and there's a dummy libcrypt.a. We must +# be careful to avoid -lcrypt in this case, since libtool will see there's +# only a static libcrypt and decide to build only a static libguile. +# +# AC_SEARCH_LIBS lets us add -lcrypt to LIBS only if crypt() is not in the +# libraries already in that list. +# +AC_SEARCH_LIBS(crypt, crypt, + [AC_DEFINE(HAVE_CRYPT,1, + [Define to 1 if you have the `crypt' function.])]) + +# When compiling with GCC on some OSs (Solaris, AIX), _Complex_I doesn't +# work; in the reported cases so far, 1.0fi works well instead. According +# to the C99 spec, the complex.h header must provide a working definition +# of _Complex_I, so we always try _Complex_I first. The 1.0fi fallback +# is a workaround for the failure of some systems to conform to C99. +if test "$ac_cv_type_complex_double" = yes; then + AC_MSG_CHECKING([for i]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#if HAVE_COMPLEX_H +#include +#endif +complex double z; +]], [[ +z = _Complex_I; +]])], + [AC_DEFINE(GUILE_I,_Complex_I,[The imaginary unit (positive square root of -1).]) + AC_MSG_RESULT([_Complex_I])], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#if HAVE_COMPLEX_H +#include +#endif +complex double z; +]],[[ +z = 1.0fi; +]])], + [AC_DEFINE(GUILE_I,1.0fi) + AC_MSG_RESULT([1.0fi])], + [ac_cv_type_complex_double=no + AC_MSG_RESULT([not available])])]) +fi + +# glibc 2.3.6 (circa 2006) and various prior versions had a bug where +# csqrt(-i) returned a negative real part, when it should be positive +# for the principal root. +# +if test "$ac_cv_type_complex_double" = yes; then + AC_CACHE_CHECK([whether csqrt is usable], + guile_cv_use_csqrt, + [AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +/* "volatile" is meant to prevent gcc from calculating the sqrt as a + constant, we want to test libc. */ +volatile complex double z = - _Complex_I; +int +main (void) +{ + z = csqrt (z); + if (creal (z) > 0.0) + return 0; /* good */ + else + return 1; /* bad */ +}]])], + [guile_cv_use_csqrt=yes], + [guile_cv_use_csqrt="no, glibc 2.3 bug"], + [guile_cv_use_csqrt="yes, hopefully (cross-compiling)"])]) + case $guile_cv_use_csqrt in + yes*) + AC_DEFINE(HAVE_USABLE_CSQRT, 1, [Define to 1 if csqrt is bug-free]) + ;; + esac +fi + + +dnl GMP tests +AC_CHECK_LIB([gmp], [__gmpz_init], , + [AC_MSG_ERROR([GNU MP not found, see README])]) + +# mpz_import is a macro so we need to include +AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[mpz_import (0, 0, 0, 0, 0, 0, 0); ]])], + [], + [AC_MSG_ERROR([At least GNU MP 4.1 is required, see README])]) + +dnl i18n tests +#AC_CHECK_HEADERS([libintl.h]) +#AC_CHECK_FUNCS(gettext) +#if test $ac_cv_func_gettext = no; then +# AC_CHECK_LIB(intl, gettext) +#fi +#AC_CHECK_FUNCS([bindtextdomain textdomain]) +AM_GNU_GETTEXT([external], [need-ngettext]) + +### Some systems don't declare some functions. On such systems, we +### need to at least provide our own K&R-style declarations. + +### GUILE_FUNC_DECLARED(function, headerfile) + +### Check for a declaration of FUNCTION in HEADERFILE; if it is +### not there, #define MISSING_FUNCTION_DECL. +AC_DEFUN([GUILE_FUNC_DECLARED], [ + AC_CACHE_CHECK(for $1 declaration, guile_cv_func_$1_declared, + AC_EGREP_HEADER($1, $2, + guile_cv_func_$1_declared=yes, + guile_cv_func_$1_declared=no)) + if test [x$guile_cv_func_]$1[_declared] = xno; then + AC_DEFINE([MISSING_]translit($1, [a-z], [A-Z])[_DECL], 1, + [Define if the operating system supplies $1 without declaring it.]) + fi +]) + +GUILE_FUNC_DECLARED(sleep, unistd.h) +GUILE_FUNC_DECLARED(usleep, unistd.h) + +AC_CHECK_DECLS([strptime],,, +[#define _GNU_SOURCE /* ask glibc to give strptime prototype */ +#include ]) + +### On some systems usleep has no return value. If it does have one, +### we'd like to return it; otherwise, we'll fake it. +AC_CACHE_CHECK([return type of usleep], guile_cv_func_usleep_return_type, + [AC_EGREP_HEADER(changequote(<, >)changequote([, ]), + unistd.h, + [guile_cv_func_usleep_return_type=void], + [guile_cv_func_usleep_return_type=int])]) +case "$guile_cv_func_usleep_return_type" in + "void" ) + AC_DEFINE(USLEEP_RETURNS_VOID, 1, + [Define if the system headers declare usleep to return void.]) + ;; +esac + +AC_CHECK_HEADER(sys/un.h, have_sys_un_h=1) +if test -n "$have_sys_un_h" ; then + AC_DEFINE(HAVE_UNIX_DOMAIN_SOCKETS, 1, + [Define if the system supports Unix-domain (file-domain) sockets.]) +fi + +AC_CHECK_FUNCS(socketpair getgroups setgroups setpwent pause tzset) + +AC_CHECK_FUNCS(sethostent gethostent endhostent dnl + setnetent getnetent endnetent dnl + setprotoent getprotoent endprotoent dnl + setservent getservent endservent dnl + getnetbyaddr getnetbyname dnl + inet_lnaof inet_makeaddr inet_netof hstrerror dnl + inet_pton inet_ntop) + +# struct sockaddr field sin_len is only present on BSD systems. +# On 4.4BSD apparently a #define SIN_LEN exists, but on other BSD systems +# (eg. FreeBSD 4.9) it doesn't and we must use this configure check +AC_CHECK_MEMBERS([struct sockaddr.sin_len],,, +[#ifdef HAVE_SYS_TYPES_H +#include +#endif +#include ]) + +AC_MSG_CHECKING(for __libc_stack_end) +AC_CACHE_VAL(guile_cv_have_libc_stack_end, +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include +extern char *__libc_stack_end;]], + [[printf("%p", (char*) __libc_stack_end);]])], + [guile_cv_have_libc_stack_end=yes], + [guile_cv_have_libc_stack_end=no])]) +AC_MSG_RESULT($guile_cv_have_libc_stack_end) + +if test $guile_cv_have_libc_stack_end = yes; then + AC_DEFINE(HAVE_LIBC_STACK_END, 1, + [Define if you have the __libc_stack_end variable.]) +fi + +dnl Some systems do not declare this. Some systems do declare it, as a +dnl macro. With cygwin it may be in a DLL. + +AC_MSG_CHECKING(whether netdb.h declares h_errno) +AC_CACHE_VAL(guile_cv_have_h_errno, + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[int a = h_errno;]])], + [guile_cv_have_h_errno=yes], + [guile_cv_have_h_errno=no])]) +AC_MSG_RESULT($guile_cv_have_h_errno) +if test $guile_cv_have_h_errno = yes; then + AC_DEFINE(HAVE_H_ERRNO, 1, [Define if h_errno is declared in netdb.h.]) +fi + +AC_MSG_CHECKING(whether uint32_t is defined) +AC_CACHE_VAL(guile_cv_have_uint32_t, + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include + #if HAVE_STDINT_H + #include + #endif + #ifndef HAVE_NETDB_H + #include + #endif]], + [[uint32_t a;]])], + [guile_cv_have_uint32_t=yes], + [guile_cv_have_uint32_t=no])]) +AC_MSG_RESULT($guile_cv_have_uint32_t) +if test $guile_cv_have_uint32_t = yes; then + AC_DEFINE(HAVE_UINT32_T, 1, + [Define if uint32_t typedef is defined when netdb.h is include.]) +fi + +AC_MSG_CHECKING(for working IPv6 support) +AC_CACHE_VAL(guile_cv_have_ipv6, +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#include +#include ]], +[[struct sockaddr_in6 a; a.sin6_family = AF_INET6;]])], +[guile_cv_have_ipv6=yes], +[guile_cv_have_ipv6=no])]) +AC_MSG_RESULT($guile_cv_have_ipv6) +if test $guile_cv_have_ipv6 = yes; then + AC_DEFINE(HAVE_IPV6, 1, [Define if you want support for IPv6.]) +fi + +# included in rfc2553 but not in older implementations, e.g., glibc 2.1.3. +AC_MSG_CHECKING(whether sockaddr_in6 has sin6_scope_id) +AC_CACHE_VAL(guile_cv_have_sin6_scope_id, +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#include ]], +[[struct sockaddr_in6 sok; sok.sin6_scope_id = 0;]])], +[guile_cv_have_sin6_scope_id=yes], +[guile_cv_have_sin6_scope_id=no])]) +AC_MSG_RESULT($guile_cv_have_sin6_scope_id) +if test $guile_cv_have_sin6_scope_id = yes; then + AC_DEFINE(HAVE_SIN6_SCOPE_ID, 1, + [Define this if your IPv6 has sin6_scope_id in sockaddr_in6 struct.]) +fi + +# struct sockaddr_in6 field sin_len is only present on BSD systems +AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_len],,, +[#ifdef HAVE_SYS_TYPES_H +#include +#endif +#include ]) + +AC_MSG_CHECKING(whether localtime caches TZ) +AC_CACHE_VAL(guile_cv_localtime_cache, +[if test x$ac_cv_func_tzset = xyes; then +AC_RUN_IFELSE([AC_LANG_SOURCE([[#include +#if STDC_HEADERS +# include +#endif +extern char **environ; +unset_TZ () +{ + char **from, **to; + for (to = from = environ; (*to = *from); from++) + if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '=')) + to++; +} +char TZ_GMT0[] = "TZ=GMT0"; +char TZ_PST8[] = "TZ=PST8"; +main() +{ + time_t now = time ((time_t *) 0); + int hour_GMT0, hour_unset; + if (putenv (TZ_GMT0) != 0) + exit (1); + hour_GMT0 = localtime (&now)->tm_hour; + unset_TZ (); + hour_unset = localtime (&now)->tm_hour; + if (putenv (TZ_PST8) != 0) + exit (1); + if (localtime (&now)->tm_hour == hour_GMT0) + exit (1); + unset_TZ (); + if (localtime (&now)->tm_hour != hour_unset) + exit (1); + exit (0); +}]])], +[guile_cv_localtime_cache=no], +[guile_cv_localtime_cache=yes], +[# If we have tzset, assume the worst when cross-compiling. +guile_cv_localtime_cache=yes]) +else + # If we lack tzset, report that localtime does not cache TZ, + # since we can't invalidate the cache if we don't have tzset. + guile_cv_localtime_cache=no +fi])dnl +AC_MSG_RESULT($guile_cv_localtime_cache) +if test $guile_cv_localtime_cache = yes; then + AC_DEFINE(LOCALTIME_CACHE, 1, [Define if localtime caches the TZ setting.]) +fi + +if test "$enable_regex" = yes; then + if test "$ac_cv_header_regex_h" = yes || + test "$ac_cv_header_rxposix_h" = yes || + test "$ac_cv_header_rx_rxposix_h" = yes; then + GUILE_NAMED_CHECK_FUNC(regcomp, norx, [AC_LIBOBJ([regex-posix])], + [AC_CHECK_LIB(rx, main) + GUILE_NAMED_CHECK_FUNC(regcomp, rx, [AC_LIBOBJ([regex-posix])], + [AC_CHECK_LIB(regex, main) + GUILE_NAMED_CHECK_FUNC(regcomp, regex, [AC_LIBOBJ([regex-posix])])])] + ) + dnl The following should not be necessary, but for some reason + dnl autoheader misses it if we don't include it! + if test "$ac_cv_func_regcomp_norx" = yes || + test "$ac_cv_func_regcomp_regex" = yes || + test "$ac_cv_func_regcomp_rx" = yes; then + AC_DEFINE(HAVE_REGCOMP, 1, + [This is included as part of a workaround for a autoheader bug.]) + fi + fi +fi + +AC_REPLACE_FUNCS(inet_aton putenv strerror memmove mkstemp) + +AC_CHECK_HEADERS(floatingpoint.h ieeefp.h nan.h) + +# Reasons for testing: +# asinh, acosh, atanh, trunc - C99 standard, generally not available on +# older systems +# sincos - GLIBC extension +# +AC_CHECK_FUNCS(asinh acosh atanh copysign finite sincos trunc) + +# C99 specifies isinf and isnan as macros. +# HP-UX provides only macros, no functions. +# glibc 2.3.2 provides both macros and functions. +# IRIX 6.5 and Solaris 8 only provide functions. +# +# The following tests detect isinf and isnan either as functions or as +# macros from . Plain AC_CHECK_FUNCS is insufficient, it doesn't +# use so doesn't detect on macro-only systems like HP-UX. +# +AC_MSG_CHECKING([for isinf]) +AC_LINK_IFELSE(AC_LANG_SOURCE( +[[#include +volatile double x = 0.0; +int main () { return (isinf(x) != 0); }]]), + [AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_ISINF, 1, + [Define to 1 if you have the `isinf' macro or function.])], + [AC_MSG_RESULT([no])]) +AC_MSG_CHECKING([for isnan]) +AC_LINK_IFELSE(AC_LANG_SOURCE( +[[#include +volatile double x = 0.0; +int main () { return (isnan(x) != 0); }]]), + [AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_ISNAN, 1, + [Define to 1 if you have the `isnan' macro or function.])], + [AC_MSG_RESULT([no])]) + +# We must have a proper stack-using alloca in order for stack-copying +# continuations to work properly. If we don't find a native one, +# abort. + +AC_FUNC_ALLOCA +if test "$ALLOCA" = "alloca.o" +then + AC_ERROR([No native alloca found.]) +fi + +# Reasons for checking: +# +# st_rdev +# st_blksize +# st_blocks not in mingw +# tm_gmtoff BSD+GNU, not in C99 +# +# Note AC_STRUCT_ST_BLOCKS is not used here because we don't want the +# AC_LIBOBJ(fileblocks) replacement which that macro gives. +# +AC_CHECK_MEMBERS([struct stat.st_rdev, struct stat.st_blksize, struct stat.st_blocks]) + +AC_STRUCT_TIMEZONE +AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,, +[#include +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif +]) +GUILE_STRUCT_UTIMBUF + + +#-------------------------------------------------------------------- +# +# Which way does the stack grow? +# +# Following code comes from Autoconf 2.61's internal _AC_LIBOBJ_ALLOCA +# macro (/usr/share/autoconf/autoconf/functions.m4). Gnulib has +# very similar code, so in future we could look at using that. +# +# An important detail is that the code involves find_stack_direction +# calling _itself_ - which means that find_stack_direction (or at +# least the second find_stack_direction() call) cannot be inlined. +# If the code could be inlined, that might cause the test to give +# an incorrect answer. +#-------------------------------------------------------------------- + +SCM_I_GSC_STACK_GROWS_UP=0 +AC_RUN_IFELSE([AC_LANG_SOURCE( +[AC_INCLUDES_DEFAULT +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + return find_stack_direction () < 0; +}])], + [SCM_I_GSC_STACK_GROWS_UP=1], + [], + [AC_MSG_WARN(Guessing that stack grows down -- see scmconfig.h)]) + +AC_CHECK_SIZEOF(float) +if test "$ac_cv_sizeof_float" -le "$ac_cv_sizeof_long"; then + AC_DEFINE(SCM_SINGLES, 1, + [Define this if floats are the same size as longs.]) +fi + +AC_MSG_CHECKING(for struct linger) +AC_CACHE_VAL(scm_cv_struct_linger, + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include ]], + [[struct linger lgr; lgr.l_linger = 100]])], + [scm_cv_struct_linger="yes"], + [scm_cv_struct_linger="no"])) +AC_MSG_RESULT($scm_cv_struct_linger) +if test $scm_cv_struct_linger = yes; then + AC_DEFINE(HAVE_STRUCT_LINGER, 1, + [Define this if your system defines struct linger, for use with the + getsockopt and setsockopt system calls.]) +fi + + +# On mingw, struct timespec is in . +# +AC_MSG_CHECKING(for struct timespec) +AC_CACHE_VAL(scm_cv_struct_timespec, + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#if HAVE_PTHREAD_H +#include +#endif]], [[struct timespec t; t.tv_nsec = 100]])], + [scm_cv_struct_timespec="yes"], + [scm_cv_struct_timespec="no"])) +AC_MSG_RESULT($scm_cv_struct_timespec) +if test $scm_cv_struct_timespec = yes; then + AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1, + [Define this if your system defines struct timespec via either or .]) +fi + +#-------------------------------------------------------------------- +# +# Flags for thread support +# +#-------------------------------------------------------------------- + +SCM_I_GSC_USE_PTHREAD_THREADS=0 +SCM_I_GSC_USE_NULL_THREADS=0 +AC_SUBST([SCM_I_GSC_USE_PTHREAD_THREADS]) +AC_SUBST([SCM_I_GSC_USE_NULL_THREADS]) + +### What thread package has the user asked for? +AC_ARG_WITH(threads, [ --with-threads thread interface], + , with_threads=yes) + +AC_SUBST(SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT, 0) +AC_SUBST(SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER, 0) + +case "$with_threads" in + "yes" | "pthread" | "pthreads" | "pthread-threads" | "") + + build_pthread_support="yes" + + ACX_PTHREAD([CC="$PTHREAD_CC" + LIBS="$PTHREAD_LIBS $LIBS" + SCM_I_GSC_USE_PTHREAD_THREADS=1 + with_threads="pthreads"], + [with_threads="null" + build_pthread_support="no"]) + + old_CFLAGS="$CFLAGS" + CFLAGS="$PTHREAD_CFLAGS $CFLAGS" + + # Reasons for testing: + # pthread_getattr_np - "np" meaning "non portable" says it + # all; not present on MacOS X or Solaris 10 + # pthread_get_stackaddr_np - "np" meaning "non portable" says it + # all; specific to MacOS X + # pthread_sigmask - not available on mingw + # + AC_CHECK_FUNCS(pthread_attr_getstack pthread_getattr_np pthread_get_stackaddr_np pthread_sigmask) + + # On past versions of Solaris, believe 8 through 10 at least, you + # had to write "pthread_once_t foo = { PTHREAD_ONCE_INIT };". + # This is contrary to POSIX: + # http://www.opengroup.org/onlinepubs/000095399/functions/pthread_once.html + # Check here if this style is required. + # + # glibc (2.3.6 at least) works both with or without braces, so the + # test checks whether it works without. + # + + if test "$GCC" = "yes"; then + # Since GCC only issues a warning for missing braces, so we need + # `-Werror' to catch it. + CFLAGS="-Werror -Wmissing-braces $CFLAGS" + fi + + AC_CACHE_CHECK([whether PTHREAD_ONCE_INIT needs braces], + guile_cv_need_braces_on_pthread_once_init, + [AC_COMPILE_IFELSE([#include + pthread_once_t foo = PTHREAD_ONCE_INIT;], + [guile_cv_need_braces_on_pthread_once_init=no], + [guile_cv_need_braces_on_pthread_once_init=yes])]) + if test "$guile_cv_need_braces_on_pthread_once_init" = yes; then + SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT=1 + fi + + # Same problem with `PTHREAD_MUTEX_INITIALIZER', e.g., on IRIX + # 6.5.30m with GCC 3.3. + AC_CACHE_CHECK([whether PTHREAD_MUTEX_INITIALIZER needs braces], + guile_cv_need_braces_on_pthread_mutex_initializer, + [AC_COMPILE_IFELSE([#include + pthread_mutex_t foo = PTHREAD_MUTEX_INITIALIZER;], + [guile_cv_need_braces_on_pthread_mutex_initializer=no], + [guile_cv_need_braces_on_pthread_mutex_initializer=yes])]) + if test "$guile_cv_need_braces_on_pthread_mutex_initializer" = yes; then + SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER=1 + fi + + CFLAGS="$old_CFLAGS" + + # On Solaris, sched_yield lives in -lrt. + AC_SEARCH_LIBS(sched_yield, rt) + + ;; +esac + +case "$with_threads" in + "pthreads") + ;; + "no" | "null") + SCM_I_GSC_USE_NULL_THREADS=1 + with_threads="null-threads" + ;; + * ) + AC_MSG_ERROR(invalid value for --with-threads: $with_threads) + ;; +esac + +AC_MSG_CHECKING(what kind of threads to support) +AC_MSG_RESULT($with_threads) + +AM_CONDITIONAL([BUILD_PTHREAD_SUPPORT], + [test "x$build_pthread_support" = "xyes"]) + + +## Check whether pthread_attr_getstack works for the main thread + +if test "$with_threads" = pthreads; then + +AC_MSG_CHECKING(whether pthread_attr_getstack works for the main thread) +old_CFLAGS="$CFLAGS" +CFLAGS="$PTHREAD_CFLAGS $CFLAGS" +AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#if HAVE_PTHREAD_ATTR_GETSTACK +#include + +int main () +{ + pthread_attr_t attr; + void *start, *end; + size_t size; + + pthread_getattr_np (pthread_self (), &attr); + pthread_attr_getstack (&attr, &start, &size); + end = (char *)start + size; + + if ((void *)&attr < start || (void *)&attr >= end) + return 1; + else + return 0; +} +#else +int main () +{ + return 1; +} +#endif +]])], +[works=yes +AC_DEFINE(PTHREAD_ATTR_GETSTACK_WORKS, [1], [Define when pthread_att_get_stack works for the main thread])], +[works=no], +[]) +CFLAGS="$old_CFLAGS" +AC_MSG_RESULT($works) + +fi # with_threads=pthreads + + +## Cross building +if test "$cross_compiling" = "yes"; then + AC_MSG_CHECKING(cc for build) + ## /usr/bin/cc still uses wrong assembler + ## CC_FOR_BUILD="${CC_FOR_BUILD-/usr/bincc}" + CC_FOR_BUILD="${CC_FOR_BUILD-PATH=/usr/bin:$PATH cc}" +else + CC_FOR_BUILD="${CC_FOR_BUILD-$CC}" +fi + +## AC_MSG_CHECKING("if we are cross compiling") +## AC_MSG_RESULT($cross_compiling) +if test "$cross_compiling" = "yes"; then + AC_MSG_RESULT($CC_FOR_BUILD) +fi + +## No need as yet to be more elaborate +CCLD_FOR_BUILD="$CC_FOR_BUILD" + +AC_SUBST(cross_compiling) +AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler]) +AC_SUBST(CCLD_FOR_BUILD) + +## libtool erroneously calls CC_FOR_BUILD HOST_CC; +## --HOST is the platform that PACKAGE is compiled for. +HOST_CC="$CC_FOR_BUILD" +AC_SUBST(HOST_CC) + +if test "$cross_compiling" = "yes"; then + AC_MSG_CHECKING(guile for build) + GUILE_FOR_BUILD="${GUILE_FOR_BUILD-guile}" +else + GUILE_FOR_BUILD='$(preinstguile)' +fi + +## AC_MSG_CHECKING("if we are cross compiling") +## AC_MSG_RESULT($cross_compiling) +if test "$cross_compiling" = "yes"; then + AC_MSG_RESULT($GUILE_FOR_BUILD) +fi +AC_ARG_VAR(GUILE_FOR_BUILD,[guile for build system]) +AC_SUBST(GUILE_FOR_BUILD) + +## If we're using GCC, ask for aggressive warnings. +case "$GCC" in + yes ) + ## We had -Wstrict-prototypes in here for a bit, but Guile does too + ## much stuff with generic function pointers for that to really be + ## less than exasperating. + ## -Wpointer-arith was here too, but something changed in gcc/glibc + ## and it became equally exasperating (gcc 2.95 and/or glibc 2.1.2). + CFLAGS="$CFLAGS -Wall -Wmissing-prototypes" + # Do this here so we don't screw up any of the tests above that might + # not be "warning free" + if test "${GUILE_ERROR_ON_WARNING}" = yes + then + CFLAGS="${CFLAGS} -Werror" + enable_compile_warnings=no + fi + ;; +esac + +## If we're creating a shared library (using libtool!), then we'll +## need to generate a list of .lo files corresponding to the .o files +## given in LIBOBJS. We'll call it LIBLOBJS. +LIBLOBJS="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.lo ,g;s,\.[[^.]]*$,.lo,'`" + +## We also need to create corresponding .doc and .x files +EXTRA_DOT_DOC_FILES="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.doc ,g;s,\.[[^.]]*$,.doc,'`" +EXTRA_DOT_X_FILES="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.x ,g;s,\.[[^.]]*$,.x,'`" + +AC_SUBST(GUILE_MAJOR_VERSION) +AC_SUBST(GUILE_MINOR_VERSION) +AC_SUBST(GUILE_MICRO_VERSION) +AC_SUBST(GUILE_EFFECTIVE_VERSION) +AC_SUBST(GUILE_VERSION) + +####################################################################### +# library versioning + +AC_SUBST(LIBGUILE_INTERFACE_CURRENT) +AC_SUBST(LIBGUILE_INTERFACE_REVISION) +AC_SUBST(LIBGUILE_INTERFACE_AGE) +AC_SUBST(LIBGUILE_INTERFACE) + +AC_SUBST(LIBGUILE_SRFI_SRFI_1_MAJOR) +AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE_CURRENT) +AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE_REVISION) +AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE_AGE) +AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE) + +AC_SUBST(LIBGUILE_SRFI_SRFI_4_MAJOR) +AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_CURRENT) +AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_REVISION) +AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_AGE) +AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE) + +AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_MAJOR) +AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_CURRENT) +AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_REVISION) +AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_AGE) +AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE) + +AC_SUBST(LIBGUILE_SRFI_SRFI_60_MAJOR) +AC_SUBST(LIBGUILE_SRFI_SRFI_60_INTERFACE_CURRENT) +AC_SUBST(LIBGUILE_SRFI_SRFI_60_INTERFACE_REVISION) +AC_SUBST(LIBGUILE_SRFI_SRFI_60_INTERFACE_AGE) +AC_SUBST(LIBGUILE_SRFI_SRFI_60_INTERFACE) + +####################################################################### + +dnl Tell guile-config what flags guile users should compile and link with. +GUILE_LIBS="$LDFLAGS $LIBS" +GUILE_CFLAGS="$CPPFLAGS $PTHREAD_CFLAGS" +AC_SUBST(GUILE_LIBS) +AC_SUBST(GUILE_CFLAGS) + +AC_SUBST(AWK) +AC_SUBST(LIBLOBJS) +AC_SUBST(EXTRA_DOT_DOC_FILES) +AC_SUBST(EXTRA_DOT_X_FILES) + +dnl See also top_builddir in info node: (libtool)AC_PROG_LIBTOOL +top_builddir_absolute=`pwd` +AC_SUBST(top_builddir_absolute) +top_srcdir_absolute=`(cd $srcdir && pwd)` +AC_SUBST(top_srcdir_absolute) + +dnl We need `sitedir' in `guile-1.8.pc'. +dnl Note: `sitedir' must be kept in sync with `GUILE_SITE_DIR' in `guile.m4'. +pkgdatadir="$datadir/guile" +sitedir="$pkgdatadir/site" +AC_SUBST([sitedir]) + +# Additional SCM_I_GSC definitions are above. +AC_SUBST([SCM_I_GSC_GUILE_DEBUG]) +AC_SUBST([SCM_I_GSC_GUILE_DEBUG_FREELIST]) +AC_SUBST([SCM_I_GSC_ENABLE_DISCOURAGED]) +AC_SUBST([SCM_I_GSC_ENABLE_DEPRECATED]) +AC_SUBST([SCM_I_GSC_ENABLE_ELISP]) +AC_SUBST([SCM_I_GSC_STACK_GROWS_UP]) +AC_SUBST([SCM_I_GSC_C_INLINE]) +AC_CONFIG_FILES([libguile/gen-scmconfig.h]) + +AC_CONFIG_FILES([ + Makefile + am/Makefile + benchmark-suite/Makefile + doc/Makefile + doc/goops/Makefile + doc/r5rs/Makefile + doc/ref/Makefile + doc/tutorial/Makefile + emacs/Makefile + examples/Makefile + guile-config/Makefile + ice-9/Makefile + lang/Makefile + libguile/Makefile + oop/Makefile + oop/goops/Makefile + scripts/Makefile + srfi/Makefile + test-suite/Makefile + test-suite/standalone/Makefile +]) + +AC_CONFIG_FILES([guile-1.8.pc]) +AC_CONFIG_FILES([check-guile], [chmod +x check-guile]) +AC_CONFIG_FILES([benchmark-guile], [chmod +x benchmark-guile]) +AC_CONFIG_FILES([guile-tools], [chmod +x guile-tools]) +AC_CONFIG_FILES([pre-inst-guile], [chmod +x pre-inst-guile]) +AC_CONFIG_FILES([pre-inst-guile-env], [chmod +x pre-inst-guile-env]) +AC_CONFIG_FILES([libguile/guile-snarf], + [chmod +x libguile/guile-snarf]) +AC_CONFIG_FILES([libguile/guile-doc-snarf], + [chmod +x libguile/guile-doc-snarf]) +AC_CONFIG_FILES([libguile/guile-func-name-check], + [chmod +x libguile/guile-func-name-check]) +AC_CONFIG_FILES([libguile/guile-snarf-docs], + [chmod +x libguile/guile-snarf-docs]) +AC_CONFIG_FILES([test-suite/standalone/test-use-srfi], + [chmod +x test-suite/standalone/test-use-srfi]) +AC_CONFIG_FILES([test-suite/standalone/test-fast-slot-ref], + [chmod +x test-suite/standalone/test-fast-slot-ref]) + +AC_OUTPUT + +dnl Local Variables: +dnl comment-start: "dnl " +dnl comment-end: "" +dnl comment-start-skip: "\\bdnl\\b\\s *" +dnl End: diff --git a/guile18/doc/.gitignore b/guile18/doc/.gitignore new file mode 100644 index 0000000000..ecbb7fc6d4 --- /dev/null +++ b/guile18/doc/.gitignore @@ -0,0 +1 @@ +stamp-vti diff --git a/guile18/doc/ChangeLog-2008 b/guile18/doc/ChangeLog-2008 new file mode 100644 index 0000000000..4153ad8739 --- /dev/null +++ b/guile18/doc/ChangeLog-2008 @@ -0,0 +1,996 @@ +2008-04-26 Ludovic Courtès + + * Makefile.am (EXAMPLE_SMOB_FILES): Remove `COPYING'. + +2008-01-22 Neil Jerram + + * COPYING: Removed. + + * oldfmt.c: Update copyright statement to LGPL. + +2002-09-14 Rob Browning + + * .cvsignore: add stamp-vti.1 + +2002-08-24 Marius Vollmer + + * Makefile.am (EXTRA_DIST): Do not distribute guile-api.alist, it + can't be built currently. + +2002-05-13 Thien-Thi Nguyen + + * Makefile.am (EXTRA_DIST): New var. + +2002-05-11 Thien-Thi Nguyen + + * Makefile.am: Include ../am/maintainer-dirs (in MAINTAINER_MODE). + (guile-api.alist, guile-api.alist-FORCE): + New rules (in MAINTAINER_MODE). + +2002-05-09 Thien-Thi Nguyen + + * groupings.alist: Add copyright and commentary. + + (favorite): Delete this example composite. + (embedded-libltdl, gdb, coop, gh, g-fdes, r-fdes, scm, k, POSIX, + guile-C-API): New groups. + +2002-05-08 Thien-Thi Nguyen + + * groupings.alist: New file. + +2002-04-23 Thien-Thi Nguyen + + * guile-api.alist: Update. + +2002-04-16 Marius Vollmer + + * Makefile.am (dist-hook): Simplified to not use "cd"; now it + works for relative pathnames in $(distdir). + +2002-04-10 Rob Browning + + * .cvsignore: add version-tutorial.texi, version.texi, and + stamp-vti1. + +2002-03-01 Thien-Thi Nguyen + + * guile-api.alist: Update. + +2001-08-27 Neil Jerram + + * mltext.texi (Guile Character Properties): Fix `hexidecimal' + spelling errors (merge from stable branch). + + * AUTHORS: Removed. Authorship information for each manual is now + in the top-level Texinfo file for that manual. + +2001-08-24 Neil Jerram + + * Makefile.am: Split documentation into per-manual subdirectories. + +2001-08-22 Mikael Djurfeldt + + * scheme-options.texi (Evaluator trap options): Splitted + section "Evaluator options". + + * scheme-evaluation.texi (Evaluator Behaviour): Typo "reader + options" --> "evaluator options". + +2001-08-17 Rob Browning + + * Makefile.am (guile_tut_TEXINFOS): remove guile-tut.texi. It's + already in info_TEXINFOS. + + * .cvsignore: rename stamp-vti1 to stamp-vti.1. Of course this + only matters once you fix the bug in automake. + +2001-08-02 Neil Jerram + + * scheme-debug.texi (Debugging): Improve `make-stack' doc by + explaining cutting args. + +2001-07-19 Rob Browning + + * posix.texi (Signals): add docs for setitimer and getitimer. + +2001-07-11 Gary Houston + + * scheme-evaluation.texi: Added `load-from-path'. Corrected `load': + it doesn't use the load paths. + +2001-07-04 Martin Grabmueller + + * scheme-data.texi (Hook Reference): Removed documentation for + `make-hook-with-name', which does note exist. Added note about + unspecified return values to all procedure documentation + +2001-07-02 Martin Grabmueller + + * srfi-modules.texi (SRFI-1 Fold and Map): Documented extended + versions of `map' and `for-each'. + +2001-06-30 Martin Grabmueller + + * preface.texi (Manual Conventions): Added description of + @result{} and @print{}. + + * scheme-data.texi (Hash Table Examples): New subsubsection. + +2001-06-30 Martin Grabmueller + + * scheme-data.texi (Hash Tables): Added docs for + `make-hash-table'. + +2001-06-29 Martin Grabmueller + + * misc-modules.texi: New file. + (Pretty Printing): New chapter. + (Formatted Output): New chapter. + + * Makefile.am (guile_TEXINFOS): Added misc-modules.texi. + + * guile.texi (Top): Added inclusion of misc-modules.texi. + + * scheme-modules.texi (Included Guile Modules): Added (srfi + srfi-4) and (ice-9 rw) modules. + (Module System Quirks): Removed note that `module-export!' must be + called via gh_eval_str, now that we have scm_c_export. + + * repl-modules.texi (Loading Readline Support, Readline Options): + New nodes. + +2001-06-27 Neil Jerram + + * posix.texi (Network Sockets and Communication): Grammar fix - + thanks to Christopher Cramer! + +2001-06-27 Martin Grabmueller + + * srfi-modules.texi (SRFI-4): Added documentation for the new + module (srfi srfi-4). + +2001-06-26 Neil Jerram + + * gh.texi (scm transition summary): Refer to scm_mem2string + instead of scm_makfromstr. + +2001-06-26 Dirk Herrmann + + * oldfmt.c (scm_oldfmt): Use scm_mem2string instead of + scm_makfromstr. + +2001-06-25 Neil Jerram + + * gh.texi (GH deprecation): Remove paragraph about portability. + + * extend.texi (Libguile Intro): Updated following Marius' + suggestions. + +2001-06-25 Marius Vollmer + + * Makefile.am (version.texi, version-tutorial.texi): Removed + kluges to build them unconditionally. + +2001-06-22 Neil Jerram + + * gh.texi (scm transition summary): New node for summary of how to + transition from GH to scm interface. + (GH): Link to new node. + (Calling Scheme procedures from C): Remove doc for gh_set_car and + gh_set_cdr, which don't actually exist. + (Data types and constants defined by gh): Correct + SCM_UNSPECIFIED/SCM_UNDEFINED confusion. + (Calling Scheme procedures from C): Correct SCM_EOL/SCM_UNDEFINED + confusion. + +2001-06-20 Neil Jerram + + * guile.texi (Top): Move GH chapter to end of Part V. + + * extend.texi (Libguile Intro), gh.texi (GH deprecation): Explain + deprecation of GH and broad plan for documentation of scm + interface. + +2001-06-18 Martin Grabmueller + + * srfi-modules.texi (SRFI-1): Completed procedure documentation. + + * scheme-data.texi (List Constructors): Added make-list. + Added type index entries for all data types. + +2001-06-15 Martin Grabmueller + + * srfi-modules.texi (SRFI-1): New section documenting the SRFI-1 + module. + +2001-06-14 Martin Grabmueller + + * scheme-modules.texi (Included Guile Modules): Added reference to + (srfi srfi-1) module. + +2001-06-16 Marius Vollmer + + * posix.texi (Conventions): Use `system-error-errno' instead of + explicit code + +2001-06-04 Gary Houston + + * scheme-io.texi (Block Reading and Writing): added + write-string/partial, updated read-string!/partial. + +2001-05-30 Martin Grabmueller + + * General: A lot of typo, texinfo markup and layout corrections. + + * scheme-data.texi (Arithmetic): Clarified docs for - and /. + (String Modification): Removed docs for C functions + (scm_substring_move_right_x etc.) + (Keyword Procedures): New section documenting the keyword + procedures from boot-9.scm. + (Vectors): Moved the section before the non-standard data types. + + * data-rep.texi (Defining New Types (Smobs)): Adapted description + of smobs and proocedure creation to new terminology. + (Describing a New Type): Removed mentioning of + scm_make_smob_type_mfpe from smob function list and added + deprecation notice for this function. + (Creating Instances): Added description and macro docs for smobs + with 2 or 3 data cells. + (Garbage Collecting Smobs): Removed old docs for SCM_GCTYP16. + (Garbage Collecting Simple Smobs): Added some clarification about + usage and usefulness. + (Non-immediate Datatypes): Changed R4RS reference to R5RS. + (Vector Data): Document type-specific accessors. + + +2001-05-23 Martin Grabmueller + + * guile.texi: Commented out menu entry and inclusion of Tcl/Tk + stuff. + + * indices.texi: Users are advised to look under C and Scheme + names, xref to transformation rules added. + + * intro.texi, scheme-modules.texi, scheme-ideas.texi, + scheme-evaluation.texi, scheme-data.texi, scheme-procedures.texi: + Fixed most REFFIXMEs. + + * srfi-modules.texi (About SRFI Usage): New node. + (SRFI-0): Extended. + Fixed all REFFIXMEs. + +2001-05-19 Neil Jerram + + * posix.texi (Networking): Split existing material into new nodes + `Network Address Conversion' and `Network Databases'. + + * scheme-control.texi (Lazy Catch): Update doc for new constraint + that lazy-catch handlers are not allowed to return. + +2001-05-16 Rob Browning + + * scheme-options.texi (Install Config): fixed minor-version docs + and added micro-version docs. + +2001-05-16 Neil Jerram + + * data-rep.texi, srfi-modules.texi (SRFI-14 Iterating Over + Character Sets), scheme-io.texi (Block Reading and Writing), + scheme-control.texi (Lazy Catch), scheme-procedures.texi (Internal + Macros): Add @bullet to @itemize usages. (Thanks for Masao + Uebayashi for the bug report!) + +2001-05-15 Martin Grabmueller + + * scripts.texi (Invoking Guile): Added docs for --use-srfi. + + * expect.texi, repl-modules.texi: Start the chapters with a new + page. + + * srfi-modules.texi (SRFI-0): Added note about supported feature + identifiers and an example. Start the chapter with a new page. + + * srfi-modules.texi, scheme-data.texi, scheme-control.texi, + scheme-binding.texi, repl-modules.texi, posix.texi, intro.texi, + scheme-utility.texi: Change `--' to `-' throughout. + +2001-05-14 Martin Grabmueller + + * srfi-13-14.texi: Removed. + + * srfi-modules.texi (SRFI-13): Merged SRFI-13 docs into SRFI + chapter. + (SRFI-14): Merged SRFI-14 too. + + * guile.texi (Top): Remove inclusion of obsolete SRFI-13/14 file. + + * srfi-modules.texi (SRFI-0): New section. + (SRFI-16): New section. + + Change `--' to `-' throughout. + +2001-05-13 Thien-Thi Nguyen + + * intro.texi, scheme-modules.texi, scheme-procedures.texi: + Fixup some module-related references. + + * scheme-modules.texi (Modules): Remove "babbling" fixme. + (The Guile module system): Rewrite intro. + (General Information about Modules): Rewrite some parts. + Move problems to "Module System Quirks". + (Using Guile Modules): Renamed from "Loading Guile Modules". + Rewrite most parts. + Remove reivewme comment. + (Creating Guile Modules): Review, touch up. + Remove "Tkintr" comment. + (Module System Quirks): New node/subsection. + +2001-05-06 Thien-Thi Nguyen + + * intro.texi (Using Guile Modules): Review; remove reviewme + comment. Expand `GUILE_LOAD_PATH' blurb; add small example. + (Reporting Bugs): Review; remove reviewme comment. + Reword some phrases; add texi markup. + Add suggestion to include `guile-config info' output. + Update gdb invocation; add fixme question. + +2001-05-05 Neil Jerram + + * AUTHORS: Added Martin Grabmueller. + + * scheme-procedures.texi (Macros, Syntax Rules, Internal Macros): + New material. + (Syntax Case): New node, but currently empty. + + * scheme-data.texi (Booleans, Symbols): Supply cross-references. + +2001-05-04 Neil Jerram + + * new-docstrings.texi, posix.texi, scheme-control.texi, + scheme-data.texi, scheme-debug.texi, scheme-evaluation.texi, + scheme-io.texi, scheme-memory.texi, scheme-procedures.texi: + Automatic docstring updates (mostly argument name updates and + blank lines). + + * scheme-modules.texi: Change double hyphens to single. + + * scheme-control.texi (Lazy Catch): Completed. + + * posix.texi (Network Databases and Address Conversion): New + subsubsection `IPv6 Address Conversion'. + +2001-05-04 Thien-Thi Nguyen + + * preface.texi (iff): Use proper texi markup. + Thanks to Florian Weimer. + +2001-05-04 Martin Grabmueller + + * scheme-io.texi (Block Reading and Writing): Moved the + documentation for read-string!/partial from the node `Reading'. + + * scheme-data.texi (List/String Conversion): Added docstring for + `string-split'. + +2001-05-02 Martin Grabmueller + + * srfi-13-14.texi: Added @bullet to various @itemize lists. + + * srfi-modules.texi (SRFI Support): New file and chapter. + + * Makefile.am (guile_TEXINFOS): Added repl-modules.texi and + srfi-modules.texi. + + * guile.texi (Top): New menu entries for the new chapters. + (Top): @includes for the new chapters. + (Top): New menu entry for `SRFI Support', @include for + `srfi-modules.texi'. + + * repl-modules.texi: New file. + (Readline Support): New chapter for (ice-9 readline). + (Value History): New chapter for (ice-9 history). + +2001-05-02 Martin Grabmueller + + * scheme-modules.texi (Dynamic Libraries): Renamed from `Dynamic + Linking from Marius''. + (The Guile module system): Removed obsolete naming convention. + (Loading Guile Modules, Creating Guile Modules), + (More Module Procedures, Included Guile Modules): New nodes, split + from `The Guile module system'. + (The Guile module system): Changed references to (ice-9 slib) to + (ice-9 popen), because note everybody has SLIB installed. + (Included Guile Modules): Added a bunch of modules shipped with + Guile. + + (Dynamic Libraries): (old version) Removed. + + * scheme-io.texi (Block Reading and Writing): Corrected + capitalization, so it builds again. + +2001-05-01 Gary Houston + + * scheme-io.texi: Removed obsolete section Binary IO. Added + new section Block Reading and Writing. Updated section + Line/Delimited with module usage. + +2001-04-29 Neil Jerram + + * deprecated.texi (Tags): Removed - deprecation expired. + + * scheme-io.texi (Random Access): Removed `fseek' - deprecation + expired. + + * guile.texi (Top): Add menu entry for Manual Conventions node. + +2001-04-28 Neil Jerram + + * THANKS: Move authorship bit into AUTHORS, simplify structure, + add Dirk Herrmann. + + * AUTHORS, guile.texi, guile-tut.texi, goops.texi, Makefile.am: + Consolidate authorship information in AUTHORS file, and @include + AUTHORS from the top level source file for each manual. + +2001-04-28 Thien-Thi Nguyen + + * preface.texi (Manual Conventions): New chapter. + +2001-04-26 Martin Grabmueller + + * srfi-13-14.texi (Reverse/Append): Updated procedure names for + string-concatenate-reverse[/shared]. + (Reverse/Append): Document the parameter `end' to + string-concatenate-reverse. + +2001-04-26 Neil Jerram + + * data-rep.texi (Defining New Types (Smobs)): Use non-deprecated + smob interface. Thanks to Masao Uebayashi for the patch! + (Creating Instances): Don't need SCM_NIMP anymore. + +2001-04-25 Marius Vollmer + + * guile.1: New file, from Robert Merkel and Rob Browning. + * Makefile.am (man_MANS, EXTRADIST): Added, but still commented + out: install and distribute the manpage. It is not yet installed + or distributed since we don't have Robert's papers yet. + +2001-04-24 Neil Jerram + + * guile-tut.texi: Include version-tutorial.texi rather than + version.texi. + + * Makefile.am ($(srcdir)/version-tutorial.texi): New target, to + avoid having two files both include version.texi. + +2001-04-24 Martin Grabmueller + + * Makefile.am (guile_TEXINFOS): Added srfi-13-14.texi. + + * srfi-13-14.texi: New file documenting SRFI-13/14. + + * guile.texi (Top): Added the SRFI-13/14 menu entry and @include. + +2001-04-22 Neil Jerram + + * posix.texi (Network Sockets and Communication): Automatic + docstring updates for `socket' and `connect'. (For IPV6 support.) + + * scheme-io.texi: Remove old docstring comments referring to + r4rs.scm. + + * appendices.texi (The Basic Guile Package, Packages not shipped + with Guile), env.texi (Switching to Environments), format.texi + (Format Specification), gh.texi + (Executing Scheme code, Calling Scheme procedures from C), + guile-tut.texi (How to characterize Guile), scheme-data.texi + (Symbols, Keywords, Keyword Read Syntax, Append/Reverse), + scheme-evaluation.texi (Delayed Evaluation), scheme-modules.texi + (Scheme and modules), scheme-io.texi (Soft Ports): Change R4RS + references to R5RS. + + * r4rs.texi: Removed. + + * Makefile.am (info_TEXINFOS): Remove r4rs. + + * README: Note removal of r4rs, and provide a reference. + + * scheme-control.texi (Exceptions): Extended documentation. + (Continuations): Correct "except" typo, and fix reference to + Exceptions node. Plus minor review changes. + +2001-04-20 Neil Jerram + + * scheme-control.texi (Exceptions): Reorganized and extended + existing documentation; more to come. + +2001-04-20 Martin Grabmueller + + * scheme-evaluation.texi (Comments): Document normal comments and + comment conventions. + (Block Comments): Documented multiline comments. + (Case Sensitivity): Documented R5RS and Guile behaviour and how to + switch it off. + + * scheme-control.texi (Continuations): Added some documentation + for call/cc. + (Exceptions): Added xref to `Continuations'. + + * scheme-binding.texi (Binding Reflection): Typo fix. + +2001-04-20 Neil Jerram + + * gh.texi (Executing Scheme code): gh_eval_file returns + SCM_UNSPECIFIED. Thanks to Dirk for the report! + + * data-rep.texi (Non-immediate Datatypes, Immediates vs + Non-immediates): Emphasize current rather than pre-1.4 practice + when talking about not needing to call SCM_NIMP. + + * recipe-guidelines.txt: New file: guidelines for contributions to + the Guile Recipes manual. + +2001-04-20 Martin Grabmueller + + * intro.texi (Using Guile Modules): Wrote intro to using modules. + (Writing New Modules): New intro for writing modules. + (Reporting Bugs): Added info about what is a bug and what to + include in a bug report (taken and adapted from the Emacs + Reference Manual). + +2001-04-19 Martin Grabmueller + + * scheme-control.texi (while do): Added documentation for named + let. + + * scheme-binding.texi (Internal Definitions): New explanation of + `Internal Definitions'. + (Top Level): Documented behaviour of top level definitions. + (Binding Constructs): New introductory text. + (Local Bindings): Explain concept of local bindings. Document + let, let* and letrec. + +2001-04-18 Martin Grabmueller + + * scheme-modules.texi (Modules): Added menu descriptions. + (Scheme and modules, The Guile module system): Some whitespace + cleanup + (The Guile module system): Layout fixes, docstring fix for + `define-module'. + +2001-04-17 Martin Grabmueller + + * scheme-control.texi (Multiple Values): Documented concept of + multiple values, added docs for `receive'. + (begin): Documented `begin'. + (if cond case): Documented `if', `cond' and `case'. + (and or): Documented `and' and `or'. + (while do): Documented `do' and `while'. + + * scheme-procedures.texi (Optional Arguments): Split the node, + added introductory text, added menu for subsections. + (let-optional Reference, let-keywords Reference), + (lambda* Reference, define* Reference): Added syntax documentation + for all exported procedures from (ice-9 optargs). + +2001-04-17 Martin Grabmueller + + * scheme-utility.texi (General Conversion): New node, added + `object->string'. + (Equality): Added definition and explanation of `sameness'. + + * posix.texi (System Identification): Added `gethostname' and + `sethostname'. + (Processes): Added `setpriority' and `getpriority'. + (User Information): Added `cuserid' and `getlogin'. + (Ports and File Descriptors): Added `flock'. + (Processes): Added `chroot'. + (File System): Added `mkstemp!'. + (Encryption): New node, added `crypt' and `getpass'. + + * new-docstrings.texi: Moved several docstrings over to the + reference manual (see above which). + + * scheme-data.texi (Data Types), (Numerical Tower): Add explicit + @bullet to @itemize to satisfy older `makeinfo'. + +2001-04-16 Neil Jerram + + * data-rep.texi (Signalling Type Errors): Update SCM_ASSERT doc + for recent changes to disallow passing a string parameter as the + `pos'. Thanks to Dirk Herrmann for the patch! + +2001-04-13 Neil Jerram + + * data-rep.texi (Unpacking the SCM type): New section, taken from + Dirk Herrmann's description of SCM and scm_bits_t in api.txt. + (Immediate Datatypes, Non-immediate Datatypes): Remove obsolete + notes about needing to call SCM_NIMP. + +2001-04-11 Neil Jerram + + * scheme-procedures.texi (Procedures with Setters): Fix dvi + building syntax error. Thanks to Dale P. Smith for the report and + patch. + +2001-04-11 Martin Grabmueller + + * scheme-scheduling.texi (Arbiters): New explanatory text. + (Asyncs): New explanations and documentation. + (Scheduling): Added menu entry descriptions. + (Fluids): New documentation. + +2001-04-11 Martin Grabmueller + + * scheme-procedures.texi (Lambda): Documented the lambda form. + (Procedure Properties): Concept and usage explanation added. + (Procedures with Setters): Explain by example, introduce + definitions. + + * scheme-data.texi (Symbols and Variables): Split and reorganized + this section. + (Symbols): New introductory text. + (Characters): Added char-ci* procedures to rn index. + +2001-04-10 Neil Jerram + + * scm.texi (Handling Errors): Improve Texinfo markup. Thanks to + Dale P. Smith for the patch! + + * api.txt (Accessing Cell Entries): Fix typo. + +2001-04-09 Neil Jerram + + * deprecated.texi (Shared And Read Only Strings): New section for + deprecated string stuff. I've also updated the text a bit to + reflect current usage of "read only" strings. + + * scheme-data.texi (Shared Substrings, Read Only Strings): Moved + to deprecated.texi. + + * deprecated.texi, posix.texi, scheme-binding.texi, + scheme-control.texi, scheme-data.texi, scheme-debug.texi, + scheme-evaluation.texi, scheme-io.texi, scheme-memory.texi, + scheme-modules.texi, scheme-options.texi, scheme-procedures.texi, + scheme-scheduling.texi, scheme-translation.texi, + scheme-utility.texi: Remove `@c docstring' comments, since they + aren't used any more by the docstring tracking utilities. + +2001-04-09 Martin Grabmueller + + * scheme-data.texi (Pairs): New data type and procedure + description. + (Lists): Added new subsections for grouping the list procedures. + (Hooks): Added new nodes for hook subsections. + (String Syntax): New node, factoring out read syntax. + (Strings): Some blurb about allowed characters, zero-termination + etc. + (Keywords): Added menu descriptions. + +2001-04-08 Martin Grabmueller + + * scheme-indices.texi (R5RS Index): Print index `rn', not `r5'. + + * guile.texi: The index formerly known as `r5' is now called `rn'. + + * scheme-utility.texi, scheme-procedures.texi, scheme-io.texi, + scheme-evaluation.texi, scheme-control.texi, scheme-data.texi: + Changed all @r5index entries to @rnindex. + +2001-04-06 Martin Grabmueller + + * scheme-data.texi (Hooks): Added hook description and + constraints. + +2001-04-06 Thien-Thi Nguyen + + * scheme-scheduling.texi (Higher level thread + procedures): Replace some instances of `@var' with `@code'. + + * scheme-scheduling.texi (Higher level thread + procedures): Rewrite. + +2001-04-04 Martin Grabmueller + + * scheme-data.texi (Alphabetic Case Mapping), + (String Comparison): Rearranged function order. + (Vectors): Reorganized, new introductory text, docs about read + syntax. + +2001-04-03 Martin Grabmueller + + * scheme-options.texi, scheme-procedures.texi, + scheme-modules.texi, scheme-memory.texi, scheme-control.texi, + scheme-utility.texi, scheme-io.texi, scheme-evaluation.texi, + scheme-data.texi: Removed a lot of ARGFIXME's after tweaking + docstrings and C source. + + * new-docstrings.texi, scheme-io.texi, scheme-data.texi, + posix.texi, scheme-control.texi, scheme-evaluation.texi, + scheme-memory.texi, scheme-procedures.texi, scheme-modules.texi, + scheme-scheduling.texi: Automated docstring merging. + +2001-04-02 Neil Jerram + + * data-rep.texi (Immediates vs. Non-immediates): Update + out-of-date documentation. (Thanks to Dirk Herrmann for the + report!) + (Immediates vs Non-immediates): Renamed without the dot, since the + dot causes `info' not to be able to display this node! + + * Makefile.am (guile_TEXINFOS): Add in a few more source files + that had got left out. + +2001-03-30 Neil Jerram + + * scheme-reading.texi (Further Reading): Add bullets to further + reading list. + + * gh.texi: Insert page break before chapter. Remove page breaks + within the chapter. + + * Makefile.am: Add script-getopt.texi. + + * guile.texi (Top): Include and link to new script-getopt.texi + chapter. + + * script-getopt.texi: New chapter on command line handling. + (Written and contributed by Martin Grabmueller, revised by me.) + + * intro.texi (Modules and Extensions): Fix typo. + +2001-03-27 Martin Grabmueller + + * scheme-data.texi (Strings): Reorganized the whole `Strings' + section and wrote introductory material for each new subsection. + +2001-03-25 Marius Vollmer + + * intro.texi (Modules and Extensions): Some short text about + dynamic libraries and modules. + +2001-03-23 Neil Jerram + + * intro.texi (Writing Extensions for Guile), scheme-data.texi + (Lists): Fix typos. + + * guile-tut.texi, ChangeLog-guile-doc-tutorial: Added to CVS. It + seems that I somehow missed these out when I moved everything from + guile-doc to guile-core. + + * posix.texi, scheme-data.texi, scheme-evaluation.texi, + scheme-io.texi, scheme-memory.texi: Automatic docstring updates. + + * new-docstrings.texi: New file. Holds snarfed docstrings that + have not yet been incorporated into the reference manual. + +2001-03-20 Martin Grabmueller + + * scheme-options.texi (Evaluator options): Added evaluator + options, corrected docs for evaluator trap options. + + * scheme-evaluation.texi (Scheme Read): New docs for read-options, + read-enable, read-disable and read-set! and cross references to + option nodes. + (Evaluator Options): New docs for eval-options, eval-enable, + eval-disable and eval-set!, traps, trap-enable, trap-disable and + trap-set! and cross references to option nodes. + (Evaluator Behaviour): Renamed node from `Evaluator options' to + avoid name clash. + + * scheme-io.texi (String Ports): Added docs for SRFI-6 procedures. + (Void Ports): Corrected introductory comment. + +2001-03-16 Martin Grabmueller + + * scheme-data.texi (Arithmetic): Documented the arithmetic + procedures. + (Integer Operations): Added documentation. + (Comparison): Added documentation. + (Complex): Added documentation. + (Symbols and Variables): Comment out `builtin-bindings', which is + removed according to NEWS. + (Pairs): Added documentation. + + * scheme-io.texi: Added R5RS index entries for all R5RS + procedures. + (File Ports): New docs for `call-with-input-file', + `call-with-output-file', `with-input-from-file', + `with-output-to-file', `with-error-to-file'. + + * scheme-control.texi, scheme-utility.texi, + * scheme-procedures.texi: Added R5RS index entries for all R5RS + procedures. + + * scheme-evaluation.texi (Fly Evaluation): Added documentation for + `apply'. Added R5RS index entries for all R5RS procedures. + + * scheme-data.texi: Added R5RS index entries for all R5RS + procedures. Removed R5RS index entries for `ass{q,v,occ}-set!'. + Removed explicit entries into the function entries. They are + automagic. + (Vectors): Added documentation for `make-vector', `vector-ref' and + `vector-set!'. + +2001-03-12 Marius Vollmer + + * intro.texi: Changed to reflect current practice better. Added + stuff about writing Guile Extensions (aka dynamically loaded + shared libraries). + +2001-03-09 Mikael Djurfeldt + + * goops.texi (VERSION): Bumped to version 0.3. + + * goops-tutorial.texi, goops.texi: Updated to reflect new + define-method syntax. + +2001-03-09 Neil Jerram + + * Makefile.am: Change HTML to HTMLDOC, now that we're part of a + wider distribution. + + Moving documentation files from guile-doc and guile-doc into + guile-core/doc: + + * env.texi, indices.texi, mbapi.texi, mltext.texi, scripts.texi, + scsh.texi, tcltk.texi, hierarchy.txt, scheme-indices.texi, + slib.texi, deprecated.texi, scheme-binding.texi, appendices.texi, + scheme-intro.texi, goops.texi, extend.texi, gh.texi, intro.texi, + preface.texi, scm.texi, goops-tutorial.texi, hierarchy.eps, + r4rs.texi, r5rs.texi, texinfo.tex, scheme-reading.texi, + data-rep.texi, scheme-utility.texi, posix.texi, + scheme-control.texi, scheme-debug.texi, scheme-evaluation.texi, + scheme-io.texi, scheme-memory.texi, scheme-modules.texi, + scheme-options.texi, scheme-procedures.texi, + scheme-scheduling.texi, scheme-translation.texi, guile.texi, + scheme-data.texi, scheme-ideas.texi, expect.texi, + ChangeLog-guile-doc-ref, guile-tut.texi, + ChangeLog-guile-doc-tutorial, AUTHORS, BUGS, NEWS, THANKS: New + files. + + * .cvsignore, Makefile.am, README: Merged. + + * sources: New subdirectory. + + Both the following files are about to be replaced by files from + guile-doc/ref. + + * texinfo.tex: Removed. + + * data-rep.texi: Removed. + +2001-02-15 Neil Jerram + + * README: Explain retirement of `data-rep.texi'. + + * Makefile.am (info_TEXINFOS, data_rep_TEXINFOS): Removed. + + * data-rep.texi: Replace this copy of data-rep.texi with a notice + indicating that it has been retired. The master copy of + data-rep.texi is at guile-doc/ref/data-rep.texi. + +2001-02-04 Marius Vollmer + + * data-rep.texi: Use SCM_SMOB_DATA instead of SCM_CDR. Also + things like SCM_SMOB_PREDICATE and SCM_NEWSMOB. Thanks to Dale + P. Smith! + +2000-10-25 Mikael Djurfeldt + + * mop.text: Preliminary documentation of the GOOPS meta object + protocol. + +2000-07-28 Neil Jerram + + * data-rep.texi (Garbage Collection): Fix "accomodate" spelling + mistake. + +2000-06-30 Dirk Herrmann + + * data-rep.tex: Removed documentation for SCM_OUTOFRANGE. + +2000-06-20 Mikael Djurfeldt + + * data-rep.texi: Center discussion around the standard interface + for smob type creation (scm_make_smob_type) and warn about the + ongoing discussion which may result in deprecating + scm_make_smob_type_mfpe in next release of Guile. + +2000-05-15 Dirk Herrmann + + * data-rep.texi: Updated the macro names for operating on + characters. + +2000-03-22 Dirk Herrmann + + * api.txt: Added a first attempt for a description of the newly + designed low level API. + +2000-01-31 Marius Vollmer + + * Makefile.am (version.texi): Override automake's rule for + version.texi so that it gets created even in non-maintainer-mode. + +Thu Jan 20 13:00:18 2000 Greg J. Badros + + * version.texi, stamp-vti: Removed -- these are auto-generated. + +2000-01-12 Mikael Djurfeldt + + * Makefile.am (dist-hook): Updated to include oldfmt.c in + distribution archive. + + * README: Updated with note about oldfmt.c. + + * oldfmt.c: New file: Used by application writers to adapt to + new-style error format strings. + +1999-12-06 Gary Houston + + * data-rep.texi: change dircategory to match change in guile-doc + and scm. + +1999-10-05 Jim Blandy + + * Makefile.in: Deleted from CVS repository. Run the autogen.sh + script to create generated files like this one. + +1999-09-11 Jim Blandy + + * Makefile.in: Regenerated. + +Fri Jun 25 22:21:43 1999 Greg Badros + + * data-rep.texi: Updated SMOB docs to talk about + scm_make_smob_type_mfpe, SCM_RETURN_NEWSMOB, SCM_NEWSMOB function + and macros. + +1999-04-17 Jim Blandy + + * Makefile.in: Regenerated. + +1998-10-19 Jim Blandy + + * COPYING: New file. + * Makefile.in: Regenerated. + + * Makefile.am (EXAMPLE_SMOB_FILES): List example-smob/COPYING. + * Makefile.in: Regenerated. + +1998-10-16 Jim Blandy + + * Makefile.in: Regenerated, after change to qthreads.m4. + +1998-10-15 Jim Blandy + + * stamp-vti: Regenerated. + + * hacks.el: Some handy helper functions for working on the manual. + + * data-rep.texi: Extended to accomodate a full running example, + provided with the manual. + * example-smob: A new subdirectory, containing example files for + the manual chapter on smobs. + * Makefile.am (EXAMPLE_SMOB_FILES, dist-hook): New variable and + target, to get the example-smob directory into the distribution. + * Makefile.in: Regenerated. + +1998-10-08 Jim Blandy + + * .cvsignore: New file, containing data-rep.info. I'm not sure + whether we want to check this file into CVS, because it's + generated; if you find compelling reasons it should be, let me + know. + +1998-10-07 Jim Blandy + + * New directory for documentation. + * README: New file. + * data-rep.texi: It's not a real manual, but it's better than + nothing. + * Makefile.am, Makefile.in, data-rep.info, data-rep.texi, + mdate-sh, stamp-vti, texinfo.tex, version.texi: The usual support + files. diff --git a/guile18/doc/ChangeLog-guile-doc b/guile18/doc/ChangeLog-guile-doc new file mode 100644 index 0000000000..74ce49b550 --- /dev/null +++ b/guile18/doc/ChangeLog-guile-doc @@ -0,0 +1,48 @@ +2001-02-15 Neil Jerram + + * sources/data-rep.texi: Removed. (ref/data-rep.texi is now the + current version of this essay.) + +2001-01-26 Neil Jerram + + * configure.in: Only check for `texi2html' program if HTML is + enabled, and explain where to get `texi2html' from if the check + fails. + + * configure.in, Makefile.am, ref/Makefile.am, + tutorial/Makefile.am: Clean up Makefile.am's and support + (configurable) building of HTML documentation in addition to + Info. Thanks to Steve Tell for the patch on which these changes + were based. + +2000-10-14 Neil Jerram + + * sources/data-rep.texi: Merged a lot of changes from + guile-core/doc/data-rep.texi. + +2000-08-07 Neil Jerram + + * configure.in, configure: Advance version number to 1.4. + +2000-07-28 Neil Jerram + + * sources/data-rep.texi (Garbage Collection): Fix "accomodate" + spelling mistake. + +1998-07-27 Mark Galassi + + * simple test + +1998-04-13 Marius Vollmer + + Have "make dist" include the sources directory: + * Makefile.am: Added "sources" directory to SUBDIRS. + * sources/Makefile.am: New file. + * configure.in: Added "sources/Makefile" to AC_OUTPUT. + +Sun Jun 22 18:38:28 1997 Tim Pierce + + New documentation module. + + + diff --git a/guile18/doc/Makefile.am b/guile18/doc/Makefile.am new file mode 100644 index 0000000000..4581a72913 --- /dev/null +++ b/guile18/doc/Makefile.am @@ -0,0 +1,46 @@ +## Process this file with Automake to create Makefile.in +## +## Copyright (C) 1998, 2002, 2006, 2008 Free Software Foundation, Inc. +## +## This file is part of GUILE. +## +## GUILE is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2, or +## (at your option) any later version. +## +## GUILE is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public +## License along with GUILE; see the file COPYING. If not, write +## to the Free Software Foundation, Inc., 51 Franklin Street, Fifth +## Floor, Boston, MA 02110-1301 USA + +AUTOMAKE_OPTIONS = gnu + +SUBDIRS = ref tutorial goops r5rs + +dist_man1_MANS = guile.1 + +EXAMPLE_SMOB_FILES = \ + ChangeLog-2008 Makefile README image-type.c image-type.h myguile.c + +OLDFMT = oldfmt.c + +dist-hook: + cp $(srcdir)/$(OLDFMT) $(distdir)/ + mkdir $(distdir)/example-smob + for f in $(EXAMPLE_SMOB_FILES); do \ + cp $(srcdir)/example-smob/$$f $(distdir)/example-smob/; \ + done + +EXTRA_DIST = groupings.alist ChangeLog-2008 # guile-api.alist + +include $(top_srcdir)/am/maintainer-dirs +guile-api.alist: guile-api.alist-FORCE + ( cd $(top_builddir) ; $(mscripts)/update-guile-api.alist ) +guile-api.alist-FORCE: + diff --git a/guile18/doc/NEWS b/guile18/doc/NEWS new file mode 100644 index 0000000000..67c558e7c7 --- /dev/null +++ b/guile18/doc/NEWS @@ -0,0 +1,44 @@ +Guile-doc NEWS --- history of user-visible changes. -*- text -*- +Copyright (C) 1997, 2001, 2006 Free Software Foundation, Inc. +See the end for copying conditions. + + +Changes since Guile 1.3.4: + +* It's now possible to build HTML documentation as well as Info + +The guile-doc distribution now supports building HTML versions of the +Guile tutorial and reference manual, in addition to the standard Info +documentation. To enable this, include the `--enable-html' option +when you run `./configure': + + ./configure --enable-html + +HTML documentation is installed in $(prefix)/html/guile-$(VERSION). + + +Changes since Guile 1.0 (Sun 5 Jan 1997): + +* The current documentation approach, recommended by Jim Blandy, is to +have: (*) a tutorial with the pedagogical style of guile-user, and a +non-dry reference manual in the style of the most excellent GNU libc +reference manual: the reference manual should be complete, but at the +same time it should have an introductory screen for each major topic, +which can be referenced if the user goes "up" a level in the info +documentation. + + +Copyright information: + +Copyright (C) 1996,1997, 2006 Free Software Foundation, Inc. + + Permission is granted to anyone to make or distribute verbatim copies + of this document as received, in any medium, provided that the + copyright notice and this permission notice are preserved, + thus giving the recipient permission to redistribute in turn. + + Permission is granted to distribute modified versions + of this document, or of portions of it, + under the above conditions, provided also that they + carry prominent notices stating who last changed them. + diff --git a/guile18/doc/README b/guile18/doc/README new file mode 100644 index 0000000000..3ecd329b43 --- /dev/null +++ b/guile18/doc/README @@ -0,0 +1,33 @@ +This directory contains documentation on the Guile core. -*-text-*- + +The documentation consists of the following manuals. + +- The Guile Tutorial (guile-tut.texi) contains a tutorial introduction + to using Guile. + +- The Guile Reference Manual (guile.texi) contains (or is intended to + contain) reference documentation on all aspects of Guile. + +- The GOOPS Manual (goops.texi) contains both tutorial-style and + reference documentation for using GOOPS, Guile's Object Oriented + Programming System. + +- The Revised^5 Report on the Algorithmic Language Scheme (r5rs.texi). + +Please be aware that this is all very much work in progress (apart +from the Revised^5 Report). Bug reports and contributions are +welcome! + +The file `oldfmt.c' contains a function which can be used by +application writers to support both old-style and new-style error +format strings. + +The `sources' directory includes some stuff relevant to the Guile +reference manual, and which may eventually be folded in to it. It's +not immediately relevant, however, which is why it's not in this +directory. + +The Revised^4 Report (r4rs.texi) is no longer in this distribution, as +it is completely superseded by the Revised^5 Report. If you need to +consult R4RS, it is still widely available, for example at +http://www-swiss.ai.mit.edu/projects/info/SchemeDocs/r4rs/. diff --git a/guile18/doc/THANKS b/guile18/doc/THANKS new file mode 100644 index 0000000000..53cff29f48 --- /dev/null +++ b/guile18/doc/THANKS @@ -0,0 +1,19 @@ +Many thanks to the following people for contributing to the Guile +manuals! + +Proofreading, bug reports and patches from: + Chris Bitmead +Christopher Cramer + Marcus Daniels + Dirk Herrmann + Dale P. Smith + Steve Tell + Lee Thomas + Masao Uebayashi + Joel Weber + Keith Wright + +New entries from: + Per Bothner + Martin Grabmueller + Thien Thi Nguyen diff --git a/guile18/doc/example-smob/ChangeLog-2008 b/guile18/doc/example-smob/ChangeLog-2008 new file mode 100644 index 0000000000..9318608492 --- /dev/null +++ b/guile18/doc/example-smob/ChangeLog-2008 @@ -0,0 +1,56 @@ +2008-01-22 Neil Jerram + + * COPYING: Removed. + +2004-09-24 Marius Vollmer + + * image-type.c: Updated from manual. + +2002-02-28 Marius Vollmer + + * image-type.c (image_tag): Changed type to scm_t_bits. + (make_image): Use scm_gc_malloc instead of scm_must_malloc. + (free_image): Use scm_gc_free instead of free. Return zero. + +2001-05-30 Martin Grabmueller + + * image-type.c: Adapted to new typing and naming convention. + +2001-04-26 Neil Jerram + + * image-type.c (make_image): Don't need to use SCM_NIMP before + SCM_STRINGP. + (clear_image): Use SCM_SMOB_PREDICATE. + (clear_image, mark_image, free_image, print_image): Use + SCM_SMOB_DATA rather than SCM_CDR. + +2000-06-20 Mikael Djurfeldt + + * image-type.c: Removed unused scm_smobfuns structure. + (init_image_type): Use standard smob type interface. + +Fri Jun 25 22:21:04 1999 Greg Badros + + * image-type.c: Updated example to use scm_make_smob_type_mfpe, + SCM_RETURN_NEWSMOB, SCM_NEWSMOB function and macros. + +1998-10-19 Jim Blandy + + * image-type.c, myguile.c: Terminate copyright comments. + + * COPYING: New file. + * image-type.c myguile.c: Add copyright notice. + +1998-10-16 Jim Blandy + + * Makefile (myguile): Fix link command, to put the Guile libraries + after the object files. The old command worked on my machine, but + I don't see how. + +1998-10-15 Jim Blandy + + Created this directory for the Guile 1.3 release. Thanks to Jay + Glascoe for suggesting that we provide a complete, buildable + example! + * ChangeLog, Makefile, README, image-type.c, image-type.h, + myguile: New files. diff --git a/guile18/doc/example-smob/README b/guile18/doc/example-smob/README new file mode 100644 index 0000000000..1380db1235 --- /dev/null +++ b/guile18/doc/example-smob/README @@ -0,0 +1,6 @@ +This is the example code for the ``Defining New Types (Smobs)'' +chapter of the Guile manual. + +When you try to execute the code, if the system complains that it +can't find libguile.so, you need to add the directory containing the +installed Guile libraries to your LD_LIBRARY_PATH environment variable. diff --git a/guile18/doc/example-smob/image-type.c b/guile18/doc/example-smob/image-type.c new file mode 100644 index 0000000000..68ecded9d6 --- /dev/null +++ b/guile18/doc/example-smob/image-type.c @@ -0,0 +1,137 @@ +/* image-type.c + * + * Copyright (C) 1998, 2000, 2004, 2006 Free Software Foundation, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +#include +#include + +static scm_t_bits image_tag; + +struct image { + int width, height; + char *pixels; + + /* The name of this image */ + SCM name; + + /* A function to call when this image is + modified, e.g., to update the screen, + or SCM_BOOL_F if no action necessary */ + SCM update_func; +}; + +static SCM +make_image (SCM name, SCM s_width, SCM s_height) +{ + SCM smob; + struct image *image; + int width = scm_to_int (s_width); + int height = scm_to_int (s_height); + + /* Step 1: Allocate the memory block. + */ + image = (struct image *) scm_gc_malloc (sizeof (struct image), "image"); + + /* Step 2: Initialize it with straight code. + */ + image->width = width; + image->height = height; + image->pixels = NULL; + image->name = SCM_BOOL_F; + image->update_func = SCM_BOOL_F; + + /* Step 3: Create the smob. + */ + SCM_NEWSMOB (smob, image_tag, image); + + /* Step 4: Finish the initialization. + */ + image->name = name; + image->pixels = scm_gc_malloc (width * height, "image pixels"); + + return smob; +} + +SCM +clear_image (SCM image_smob) +{ + int area; + struct image *image; + + scm_assert_smob_type (image_tag, image_smob); + + image = (struct image *) SCM_SMOB_DATA (image_smob); + area = image->width * image->height; + memset (image->pixels, 0, area); + + /* Invoke the image's update function. + */ + if (scm_is_true (image->update_func)) + scm_call_0 (image->update_func); + + scm_remember_upto_here_1 (image_smob); + + return SCM_UNSPECIFIED; +} + +static SCM +mark_image (SCM image_smob) +{ + /* Mark the image's name and update function. */ + struct image *image = (struct image *) SCM_SMOB_DATA (image_smob); + + scm_gc_mark (image->name); + return image->update_func; +} + +static size_t +free_image (SCM image_smob) +{ + struct image *image = (struct image *) SCM_SMOB_DATA (image_smob); + + scm_gc_free (image->pixels, image->width * image->height, "image pixels"); + scm_gc_free (image, sizeof (struct image), "image"); + + return 0; +} + +static int +print_image (SCM image_smob, SCM port, scm_print_state *pstate) +{ + struct image *image = (struct image *) SCM_SMOB_DATA (image_smob); + + scm_puts ("#name, port); + scm_puts (">", port); + + /* non-zero means success */ + return 1; +} + +void +init_image_type (void) +{ + image_tag = scm_make_smob_type ("image", sizeof (struct image)); + scm_set_smob_mark (image_tag, mark_image); + scm_set_smob_free (image_tag, free_image); + scm_set_smob_print (image_tag, print_image); + + scm_c_define_gsubr ("clear-image", 1, 0, 0, clear_image); + scm_c_define_gsubr ("make-image", 3, 0, 0, make_image); +} diff --git a/guile18/doc/example-smob/image-type.h b/guile18/doc/example-smob/image-type.h new file mode 100644 index 0000000000..38fcf74c45 --- /dev/null +++ b/guile18/doc/example-smob/image-type.h @@ -0,0 +1,3 @@ +/* file "image-type.h" */ + +void init_image_type (void); diff --git a/guile18/doc/example-smob/myguile.c b/guile18/doc/example-smob/myguile.c new file mode 100644 index 0000000000..9df3cf31b7 --- /dev/null +++ b/guile18/doc/example-smob/myguile.c @@ -0,0 +1,37 @@ +/* myguile.c + * + * Copyright (C) 1998, 2006 Free Software Foundation, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +#include +#include "image-type.h" + +static void +inner_main (void *closure, int argc, char **argv) +{ + /* module initializations would go here */ + init_image_type(); + scm_shell (argc, argv); +} + +int +main (int argc, char **argv) +{ + scm_boot_guile (argc, argv, inner_main, 0); + return 0; /* never reached */ +} diff --git a/guile18/doc/goops/ChangeLog-2008 b/guile18/doc/goops/ChangeLog-2008 new file mode 100644 index 0000000000..a5a637d7bd --- /dev/null +++ b/guile18/doc/goops/ChangeLog-2008 @@ -0,0 +1,76 @@ +2008-02-06 Neil Jerram + + * goops-tutorial.texi (Next-method): Minor improvements to the + text. + +2006-09-28 Neil Jerram + + * goops.texi (Slot Options): Added example from Ludovic Courtès + about difference between init-value, -form and -thunk. + +2006-04-21 Kevin Ryde + + * hierarchy.pdf: New file, converted from hierarchy.eps using + epstopdf, to let "make pdf" work. + * Makefile.am: (goops_TEXINFOS): Add it. + +2006-03-08 Ludovic Courtès + + * goops.texi (Slot Options): Note init-value is shared. + +2006-02-06 Marius Vollmer + + * goops.texi (Basic Generic Function Creation): Added blurb about + merge-generics duplicates handler from NEWS. + +2004-06-28 Marius Vollmer + + * Makefile.am: Removed home-grown code for HTML generation. + Automake does it for us now. + (goops_TEXINFOS): Added hierarchy.png + + * hierarchy.png: New file. + +2004-05-19 Kevin Ryde + + * Makefile.am (CLEANFILES): Remove, goops.tmp goops.cps cleaned by + automake these days. + +2003-04-17 Mikael Djurfeldt + + * goops.texi (Object Comparisons): Removed object-eqv? and + object-equal? and added eqv?, equal? and =. + +2003-01-10 Mikael Djurfeldt + + * goops.texi (Class Redefinition): Clarifications; Removed + mentioning of change-object-class. + +2002-11-07 Neil Jerram + + * goops.texi (Top): Say "Indices" before index nodes in main menu. + (Index): Removed (it was empty). Generally remove unnecessary + padding text that looks bad in HTML. + +2002-04-17 Marius Vollmer + + * Makefile.am (CLEANFILES): Added goops.tmp, goops.cps. + +2001-12-03 Thien-Thi Nguyen + + * goops.texi: Grammar fix. + +2001-08-27 Neil Jerram + + * Makefile.am (goops_TEXINFOS): Remove ../AUTHORS. + (TEXINFO_TEX): Added; avoids shipping multiple copies of + texinfo.tex in a single distribution. + + * goops.texi: Incorporate text previously in separate AUTHORS + file. + +2001-08-27 Neil Jerram + + The change log for files in this directory continues backwards + from 2001-08-27 in ../ChangeLog, as all the Guile documentation + prior to this date was contained in a single directory. diff --git a/guile18/doc/goops/Makefile.am b/guile18/doc/goops/Makefile.am new file mode 100644 index 0000000000..03794c4de8 --- /dev/null +++ b/guile18/doc/goops/Makefile.am @@ -0,0 +1,29 @@ +## Process this file with Automake to create Makefile.in +## +## Copyright (C) 1998, 2004, 2006, 2008 Free Software Foundation, Inc. +## +## This file is part of GUILE. +## +## GUILE is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2, or +## (at your option) any later version. +## +## GUILE is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public +## License along with GUILE; see the file COPYING. If not, write +## to the Free Software Foundation, Inc., 51 Franklin Street, Fifth +## Floor, Boston, MA 02110-1301 USA + +AUTOMAKE_OPTIONS = gnu + +info_TEXINFOS = goops.texi + +goops_TEXINFOS = goops-tutorial.texi \ + hierarchy.eps hierarchy.png hierarchy.txt hierarchy.pdf + +EXTRA_DIST = ChangeLog-2008 diff --git a/guile18/doc/goops/goops-tutorial.texi b/guile18/doc/goops/goops-tutorial.texi new file mode 100644 index 0000000000..11155dfae1 --- /dev/null +++ b/guile18/doc/goops/goops-tutorial.texi @@ -0,0 +1,837 @@ +@c Original attribution: + +@c +@c STk Reference manual (Appendix: An Introduction to STklos) +@c +@c Copyright © 1993-1999 Erick Gallesio - I3S-CNRS/ESSI +@c Permission to use, copy, modify, distribute,and license this +@c software and its documentation for any purpose is hereby granted, +@c provided that existing copyright notices are retained in all +@c copies and that this notice is included verbatim in any +@c distributions. No written agreement, license, or royalty fee is +@c required for any of the authorized uses. +@c This software is provided ``AS IS'' without express or implied +@c warranty. +@c + +@c Adapted for use in Guile with the authors permission + +@c @macro goops @c was {\stklos} +@c GOOPS +@c @end macro + +@c @macro guile @c was {\stk} +@c Guile +@c @end macro + +This is chapter was originally written by Erick Gallesio as an appendix +for the STk reference manual, and subsequently adapted to @goops{}. + +@menu +* Copyright:: +* Intro:: +* Class definition and instantiation:: +* Inheritance:: +* Generic functions:: +@end menu + +@node Copyright, Intro, Tutorial, Tutorial +@section Copyright + +Original attribution: + +STk Reference manual (Appendix: An Introduction to STklos) + +Copyright © 1993-1999 Erick Gallesio - I3S-CNRS/ESSI +Permission to use, copy, modify, distribute,and license this +software and its documentation for any purpose is hereby granted, +provided that existing copyright notices are retained in all +copies and that this notice is included verbatim in any +distributions. No written agreement, license, or royalty fee is +required for any of the authorized uses. +This software is provided ``AS IS'' without express or implied +warranty. + +Adapted for use in Guile with the authors permission + +@node Intro, Class definition and instantiation, Copyright, Tutorial +@section Introduction + +@goops{} is the object oriented extension to @guile{}. Its +implementation is derived from @w{STk-3.99.3} by Erick Gallesio and +version 1.3 of the Gregor Kiczales @cite{Tiny-Clos}. It is very close +to CLOS, the Common Lisp Object System (@cite{CLtL2}) but is adapted for +the Scheme language. + +Briefly stated, the @goops{} extension gives the user a full object +oriented system with multiple inheritance and generic functions with +multi-method dispatch. Furthermore, the implementation relies on a true +meta object protocol, in the spirit of the one defined for CLOS +(@cite{Gregor Kiczales: A Metaobject Protocol}). + +The purpose of this tutorial is to introduce briefly the @goops{} +package and in no case will it replace the @goops{} reference manual +(which needs to be urgently written now@ @dots{}). + +Note that the operations described in this tutorial resides in modules +that may need to be imported before being available. The main module is +imported by evaluating: + +@lisp +(use-modules (oop goops)) +@end lisp +@findex (oop goops) +@cindex main module +@cindex loading +@cindex preparing + +@node Class definition and instantiation, Inheritance, Intro, Tutorial +@section Class definition and instantiation + +@menu +* Class definition:: +@end menu + +@node Class definition, , Class definition and instantiation, Class definition and instantiation +@subsection Class definition + +A new class is defined with the @code{define-class}@footnote{Don't +forget to import the @code{(oop goops)} module} macro. The syntax of +@code{define-class} is close to CLOS @code{defclass}: + +@findex define-class +@cindex class +@lisp +(define-class @var{class} (@var{superclass} @dots{}) + @var{slot-description} @dots{} + @var{class-option} @dots{}) +@end lisp + +Class options will not be discussed in this tutorial. The list of +@var{superclass}es specifies which classes to inherit properties from +@var{class} (see @ref{Inheritance} for more details). A +@var{slot-description} gives the name of a slot and, eventually, some +``properties'' of this slot (such as its initial value, the function +which permit to access its value, @dots{}). Slot descriptions will be +discussed in @ref{Slot description}. +@cindex slot + +As an example, let us define a type for representation of complex +numbers in terms of real numbers. This can be done with the following +class definition: + +@lisp +(define-class () + r i) +@end lisp + +This binds the variable @code{}@footnote{@code{} is in +fact a builtin class in GOOPS. Because of this, GOOPS will create a new +class. The old class will still serve as the type for Guile's native +complex numbers.} to a new class whose instances contain two +slots. These slots are called @code{r} an @code{i} and we suppose here +that they contain respectively the real part and the imaginary part of a +complex number. Note that this class inherits from @code{} which +is a pre-defined class. (@code{} is the direct super class of +the pre-defined class @code{} which, in turn, is the super +class of @code{} which is the super of +@code{}.)@footnote{With the new definition of @code{}, +a @code{} is not a @code{} since @code{} inherits +from @code{ } rather than @code{}. In practice, +inheritance could be modified @emph{a posteriori}, if needed. However, +this necessitates some knowledge of the meta object protocol and it will +not be shown in this document}. + +@node Inheritance, Generic functions, Class definition and instantiation, Tutorial +@section Inheritance +@c \label{inheritance} + +@menu +* Class hierarchy and inheritance of slots:: +* Instance creation and slot access:: +* Slot description:: +* Class precedence list:: +@end menu + +@node Class hierarchy and inheritance of slots, Instance creation and slot access, Inheritance, Inheritance +@subsection Class hierarchy and inheritance of slots +Inheritance is specified upon class definition. As said in the +introduction, @goops{} supports multiple inheritance. Here are some +class definitions: + +@lisp +(define-class A () a) +(define-class B () b) +(define-class C () c) +(define-class D (A B) d a) +(define-class E (A C) e c) +(define-class F (D E) f) +@end lisp + +@code{A}, @code{B}, @code{C} have a null list of super classes. In this +case, the system will replace it by the list which only contains +@code{}, the root of all the classes defined by +@code{define-class}. @code{D}, @code{E}, @code{F} use multiple +inheritance: each class inherits from two previously defined classes. +Those class definitions define a hierarchy which is shown in Figure@ 1. +In this figure, the class @code{} is also shown; this class is the +super class of all Scheme objects. In particular, @code{} is the +super class of all standard Scheme types. + +@example +@group +@image{hierarchy} +@center @emph{Fig 1: A class hierarchy} +@iftex +@emph{(@code{} which is the direct subclass of @code{} +and the direct superclass of @code{} has been omitted in this +figure.)} +@end iftex +@end group +@end example + +The set of slots of a given class is calculated by taking the union of the +slots of all its super class. For instance, each instance of the class +D, defined before will have three slots (@code{a}, @code{b} and +@code{d}). The slots of a class can be obtained by the @code{class-slots} +primitive. For instance, + +@lisp +(class-slots A) @result{} ((a)) +(class-slots E) @result{} ((a) (e) (c)) +(class-slots F) @result{} ((e) (c) (b) (d) (a) (f)) +@c used to be ((d) (a) (b) (c) (f)) +@end lisp + +@emph{Note: } The order of slots is not significant. + +@node Instance creation and slot access, Slot description, Class hierarchy and inheritance of slots, Inheritance +@subsection Instance creation and slot access + +Creation of an instance of a previously defined +class can be done with the @code{make} procedure. This +procedure takes one mandatory parameter which is the class of the +instance which must be created and a list of optional +arguments. Optional arguments are generally used to initialize some +slots of the newly created instance. For instance, the following form + +@findex make +@cindex instance +@lisp +(define c (make )) +@end lisp + +will create a new @code{} object and will bind it to the @code{c} +Scheme variable. + +Accessing the slots of the new complex number can be done with the +@code{slot-ref} and the @code{slot-set!} primitives. @code{Slot-set!} +primitive permits to set the value of an object slot and @code{slot-ref} +permits to get its value. + +@findex slot-set! +@findex slot-ref +@lisp +@group +(slot-set! c 'r 10) +(slot-set! c 'i 3) +(slot-ref c 'r) @result{} 10 +(slot-ref c 'i) @result{} 3 +@end group +@end lisp + +Using the @code{describe} function is a simple way to see all the +slots of an object at one time: this function prints all the slots of an +object on the standard output. + +First load the module @code{(oop goops describe)}: + +@example +@code{(use-modules (oop goops describe))} +@end example + +The expression + +@smalllisp +(describe c) +@end smalllisp + +will now print the following information on the standard output: + +@lisp +#< 401d8638> is an instance of class +Slots are: + r = 10 + i = 3 +@end lisp + +@node Slot description, Class precedence list, Instance creation and slot access, Inheritance +@subsection Slot description +@c \label{slot-description} + +When specifying a slot, a set of options can be given to the +system. Each option is specified with a keyword. The list of authorized +keywords is given below: + +@cindex keyword +@itemize @bullet +@item +@code{#:init-value} permits to supply a default value for the slot. This +default value is obtained by evaluating the form given after the +@code{#:init-form} in the global environment, at class definition time. +@cindex default slot value +@findex #:init-value +@cindex top level environment + +@item +@code{#:init-thunk} permits to supply a thunk that will provide a +default value for the slot. The value is obtained by evaluating the +thunk a instance creation time. +@c CHECKME: in the global environment? +@findex default slot value +@findex #:init-thunk +@cindex top level environment + +@item +@code{#:init-keyword} permits to specify the keyword for initializing a +slot. The init-keyword may be provided during instance creation (i.e. in +the @code{make} optional parameter list). Specifying such a keyword +during instance initialization will supersede the default slot +initialization possibly given with @code{#:init-form}. +@findex #:init-keyword + +@item +@code{#:getter} permits to supply the name for the +slot getter. The name binding is done in the +environment of the @code{define-class} macro. +@findex #:getter +@cindex top level environment +@cindex getter + +@item +@code{#:setter} permits to supply the name for the +slot setter. The name binding is done in the +environment of the @code{define-class} macro. +@findex #:setter +@cindex top level environment +@cindex setter + +@item +@code{#:accessor} permits to supply the name for the +slot accessor. The name binding is done in the global +environment. An accessor permits to get and +set the value of a slot. Setting the value of a slot is done with the extended +version of @code{set!}. +@findex set! +@findex #:accessor +@cindex top level environment +@cindex accessor + +@item +@code{#:allocation} permits to specify how storage for +the slot is allocated. Three kinds of allocation are provided. +They are described below: + +@itemize @minus +@item +@code{#:instance} indicates that each instance gets its own storage for +the slot. This is the default. +@item +@code{#:class} indicates that there is one storage location used by all +the direct and indirect instances of the class. This permits to define a +kind of global variable which can be accessed only by (in)direct +instances of the class which defines this slot. +@item +@code{#:each-subclass} indicates that there is one storage location used +by all the direct instances of the class. In other words, if two classes +are not siblings in the class hierarchy, they will not see the same +value. +@item +@code{#:virtual} indicates that no storage will be allocated for this +slot. It is up to the user to define a getter and a setter function for +this slot. Those functions must be defined with the @code{#:slot-ref} +and @code{#:slot-set!} options. See the example below. +@findex #:slot-set! +@findex #:slot-ref +@findex #:virtual +@findex #:class +@findex #:each-subclass +@findex #:instance +@findex #:allocation +@end itemize +@end itemize + +To illustrate slot description, we shall redefine the @code{} class +seen before. A definition could be: + +@lisp +(define-class () + (r #:init-value 0 #:getter get-r #:setter set-r! #:init-keyword #:r) + (i #:init-value 0 #:getter get-i #:setter set-i! #:init-keyword #:i)) +@end lisp + +With this definition, the @code{r} and @code{i} slot are set to 0 by +default. Value of a slot can also be specified by calling @code{make} +with the @code{#:r} and @code{#:i} keywords. Furthermore, the generic +functions @code{get-r} and @code{set-r!} (resp. @code{get-i} and +@code{set-i!}) are automatically defined by the system to read and write +the @code{r} (resp. @code{i}) slot. + +@lisp +(define c1 (make #:r 1 #:i 2)) +(get-r c1) @result{} 1 +(set-r! c1 12) +(get-r c1) @result{} 12 +(define c2 (make #:r 2)) +(get-r c2) @result{} 2 +(get-i c2) @result{} 0 +@end lisp + +Accessors provide an uniform access for reading and writing an object +slot. Writing a slot is done with an extended form of @code{set!} +which is close to the Common Lisp @code{setf} macro. So, another +definition of the previous @code{} class, using the +@code{#:accessor} option, could be: + +@findex set! +@lisp +(define-class () + (r #:init-value 0 #:accessor real-part #:init-keyword #:r) + (i #:init-value 0 #:accessor imag-part #:init-keyword #:i)) +@end lisp + +Using this class definition, reading the real part of the @code{c} +complex can be done with: +@lisp +(real-part c) +@end lisp +and setting it to the value contained in the @code{new-value} variable +can be done using the extended form of @code{set!}. +@lisp +(set! (real-part c) new-value) +@end lisp + +Suppose now that we have to manipulate complex numbers with rectangular +coordinates as well as with polar coordinates. One solution could be to +have a definition of complex numbers which uses one particular +representation and some conversion functions to pass from one +representation to the other. A better solution uses virtual slots. A +complete definition of the @code{} class using virtual slots is +given in Figure@ 2. + +@example +@group +@lisp +(define-class () + ;; True slots use rectangular coordinates + (r #:init-value 0 #:accessor real-part #:init-keyword #:r) + (i #:init-value 0 #:accessor imag-part #:init-keyword #:i) + ;; Virtual slots access do the conversion + (m #:accessor magnitude #:init-keyword #:magn + #:allocation #:virtual + #:slot-ref (lambda (o) + (let ((r (slot-ref o 'r)) (i (slot-ref o 'i))) + (sqrt (+ (* r r) (* i i))))) + #:slot-set! (lambda (o m) + (let ((a (slot-ref o 'a))) + (slot-set! o 'r (* m (cos a))) + (slot-set! o 'i (* m (sin a)))))) + (a #:accessor angle #:init-keyword #:angle + #:allocation #:virtual + #:slot-ref (lambda (o) + (atan (slot-ref o 'i) (slot-ref o 'r))) + #:slot-set! (lambda(o a) + (let ((m (slot-ref o 'm))) + (slot-set! o 'r (* m (cos a))) + (slot-set! o 'i (* m (sin a))))))) + +@end lisp +@center @emph{Fig 2: A @code{} number class definition using virtual slots} +@end group +@end example + +@sp 3 +This class definition implements two real slots (@code{r} and +@code{i}). Values of the @code{m} and @code{a} virtual slots are +calculated from real slot values. Reading a virtual slot leads to the +application of the function defined in the @code{#:slot-ref} +option. Writing such a slot leads to the application of the function +defined in the @code{#:slot-set!} option. For instance, the following +expression + +@findex #:slot-set! +@findex #:slot-ref +@lisp +(slot-set! c 'a 3) +@end lisp + +permits to set the angle of the @code{c} complex number. This expression +conducts, in fact, to the evaluation of the following expression + +@lisp +((lambda o m) + (let ((m (slot-ref o 'm))) + (slot-set! o 'r (* m (cos a))) + (slot-set! o 'i (* m (sin a)))) + c 3) +@end lisp + +A more complete example is given below: + +@example +@group +@lisp +(define c (make #:r 12 #:i 20)) +(real-part c) @result{} 12 +(angle c) @result{} 1.03037682652431 +(slot-set! c 'i 10) +(set! (real-part c) 1) +(describe c) @result{} + #< 401e9b58> is an instance of class + Slots are: + r = 1 + i = 10 + m = 10.0498756211209 + a = 1.47112767430373 +@end lisp +@end group +@end example + +Since initialization keywords have been defined for the four slots, we +can now define the @code{make-rectangular} and @code{make-polar} standard +Scheme primitives. + +@lisp +(define make-rectangular + (lambda (x y) (make #:r x #:i y))) + +(define make-polar + (lambda (x y) (make #:magn x #:angle y))) +@end lisp + +@node Class precedence list, , Slot description, Inheritance +@subsection Class precedence list + +A class may have more than one superclass. @footnote{This section is an +adaptation of Jeff Dalton's (J.Dalton@@ed.ac.uk) @cite{Brief +introduction to CLOS}} With single inheritance (one superclass), it is +easy to order the super classes from most to least specific. This is the +rule: + +@display +@cartouche +Rule 1: Each class is more specific than its superclasses.@c was \bf +@end cartouche +@end display + +With multiple inheritance, ordering is harder. Suppose we have + +@lisp +(define-class X () + (x #:init-value 1)) + +(define-class Y () + (x #:init-value 2)) + +(define-class Z (X Y) + (@dots{})) +@end lisp + +In this case, the @code{Z} class is more specific than the @code{X} or +@code{Y} class for instances of @code{Z}. However, the @code{#:init-value} +specified in @code{X} and @code{Y} leads to a problem: which one +overrides the other? The rule in @goops{}, as in CLOS, is that the +superclasses listed earlier are more specific than those listed later. +So: + +@display +@cartouche +Rule 2: For a given class, superclasses listed earlier are more + specific than those listed later. +@end cartouche +@end display + +These rules are used to compute a linear order for a class and all its +superclasses, from most specific to least specific. This order is +called the ``class precedence list'' of the class. Given these two +rules, we can claim that the initial form for the @code{x} slot of +previous example is 1 since the class @code{X} is placed before @code{Y} +in class precedence list of @code{Z}. + +These two rules are not always enough to determine a unique order, +however, but they give an idea of how things work. Taking the @code{F} +class shown in Figure@ 1, the class precedence list is + +@example +(f d e a c b ) +@end example + +However, it is usually considered a bad idea for programmers to rely on +exactly what the order is. If the order for some superclasses is important, +it can be expressed directly in the class definition. + +The precedence list of a class can be obtained by the function +@code{class-precedence-list}. This function returns a ordered +list whose first element is the most specific class. For instance, + +@lisp +(class-precedence-list B) @result{} (#< B 401b97c8> + #< 401e4a10> + #< 4026a9d8>) +@end lisp + +However, this result is not too much readable; using the function +@code{class-name} yields a clearer result: + +@lisp +(map class-name (class-precedence-list B)) @result{} (B ) +@end lisp + +@node Generic functions, , Inheritance, Tutorial +@section Generic functions + +@menu +* Generic functions and methods:: +* Next-method:: +* Example:: +@end menu + +@node Generic functions and methods, Next-method, Generic functions, Generic functions +@subsection Generic functions and methods + +@c \label{gf-n-methods} +Neither @goops{} nor CLOS use the message mechanism for methods as most +Object Oriented language do. Instead, they use the notion of +@dfn{generic functions}. A generic function can be seen as a methods +``tanker''. When the evaluator requested the application of a generic +function, all the methods of this generic function will be grabbed and +the most specific among them will be applied. We say that a method +@var{M} is @emph{more specific} than a method @var{M'} if the class of +its parameters are more specific than the @var{M'} ones. To be more +precise, when a generic function must be ``called'' the system will: + +@cindex generic function +@enumerate +@item +search among all the generic function those which are applicable +@item +sort the list of applicable methods in the ``most specific'' order +@item +call the most specific method of this list (i.e. the first method of +the sorted methods list). +@end enumerate + +The definition of a generic function is done with the +@code{define-generic} macro. Definition of a new method is done with the +@code{define-method} macro. Note that @code{define-method} automatically +defines the generic function if it has not been defined +before. Consequently, most of the time, the @code{define-generic} needs +not be used. +@findex define-generic +@findex define-method +Consider the following definitions: + +@lisp +(define-generic G) +(define-method (G (a ) b) 'integer) +(define-method (G (a ) b) 'real) +(define-method (G a b) 'top) +@end lisp + +The @code{define-generic} call defines @var{G} as a generic +function. Note that the signature of the generic function is not given +upon definition, contrarily to CLOS. This will permit methods with +different signatures for a given generic function, as we shall see +later. The three next lines define methods for the @var{G} generic +function. Each method uses a sequence of @dfn{parameter specializers} +that specify when the given method is applicable. A specializer permits +to indicate the class a parameter must belong to (directly or +indirectly) to be applicable. If no specializer is given, the system +defaults it to @code{}. Thus, the first method definition is +equivalent to + +@cindex parameter specializers +@lisp +(define-method (G (a ) (b )) 'integer) +@end lisp + +Now, let us look at some possible calls to generic function @var{G}: + +@lisp +(G 2 3) @result{} integer +(G 2 #t) @result{} integer +(G 1.2 'a) @result{} real +@c (G #3 'a) @result{} real @c was {\sharpsign} +(G #t #f) @result{} top +(G 1 2 3) @result{} error (since no method exists for 3 parameters) +@end lisp + +The preceding methods use only one specializer per parameter list. Of +course, each parameter can use a specializer. In this case, the +parameter list is scanned from left to right to determine the +applicability of a method. Suppose we declare now + +@lisp +(define-method (G (a ) (b )) 'integer-number) +(define-method (G (a ) (b )) 'integer-real) +(define-method (G (a ) (b )) 'integer-integer) +(define-method (G a (b )) 'top-number) +@end lisp + +In this case, + +@lisp +(G 1 2) @result{} integer-integer +(G 1 1.0) @result{} integer-real +(G 1 #t) @result{} integer +(G 'a 1) @result{} top-number +@end lisp + +@node Next-method, Example, Generic functions and methods, Generic functions +@subsection Next-method + +When you call a generic function, with a particular set of arguments, +GOOPS builds a list of all the methods that are applicable to those +arguments and orders them by how closely the method definitions match +the actual argument types. It then calls the method at the top of this +list. If the selected method's code wants to call on to the next method +in this list, it can do so by using @code{next-method}. + +@lisp +(define-method (Test (a )) (cons 'integer (next-method))) +(define-method (Test (a )) (cons 'number (next-method))) +(define-method (Test a) (list 'top)) +@end lisp + +With these definitions, + +@lisp +(Test 1) @result{} (integer number top) +(Test 1.0) @result{} (number top) +(Test #t) @result{} (top) +@end lisp + +@code{next-method} is always called as just @code{(next-method)}. The +arguments for the next method call are always implicit, and always the +same as for the original method call. + +If you want to call on to a method with the same name but with a +different set of arguments (as you might with overloaded methods in C++, +for example), you do not use @code{next-method}, but instead simply +write the new call as usual: + +@lisp +(define-method (Test (a ) min max) + (if (and (>= a min) (<= a max)) + (display "Number is in range\n")) + (Test a)) + +(Test 2 1 10) +@print{} +Number is in range +@result{} +(integer number top) +@end lisp + +(You should be careful in this case that the @code{Test} calls do not +lead to an infinite recursion, but this consideration is just the same +as in Scheme code in general.) + +@node Example, , Next-method, Generic functions +@subsection Example + +In this section we shall continue to define operations on the @code{} +class defined in Figure@ 2. Suppose that we want to use it to implement +complex numbers completely. For instance a definition for the addition of +two complexes could be + +@lisp +(define-method (new-+ (a ) (b )) + (make-rectangular (+ (real-part a) (real-part b)) + (+ (imag-part a) (imag-part b)))) +@end lisp + +To be sure that the @code{+} used in the method @code{new-+} is the standard +addition we can do: + +@lisp +(define-generic new-+) + +(let ((+ +)) + (define-method (new-+ (a ) (b )) + (make-rectangular (+ (real-part a) (real-part b)) + (+ (imag-part a) (imag-part b))))) +@end lisp + +The @code{define-generic} ensures here that @code{new-+} will be defined +in the global environment. Once this is done, we can add methods to the +generic function @code{new-+} which make a closure on the @code{+} +symbol. A complete writing of the @code{new-+} methods is shown in +Figure@ 3. + +@example +@group +@lisp +(define-generic new-+) + +(let ((+ +)) + + (define-method (new-+ (a ) (b )) (+ a b)) + + (define-method (new-+ (a ) (b )) + (make-rectangular (+ a (real-part b)) (imag-part b))) + + (define-method (new-+ (a ) (b )) + (make-rectangular (+ (real-part a) b) (imag-part a))) + + (define-method (new-+ (a ) (b )) + (make-rectangular (+ (real-part a) (real-part b)) + (+ (imag-part a) (imag-part b)))) + + (define-method (new-+ (a )) a) + + (define-method (new-+) 0) + + (define-method (new-+ . args) + (new-+ (car args) + (apply new-+ (cdr args))))) + +(set! + new-+) +@end lisp + +@center @emph{Fig 3: Extending @code{+} for dealing with complex numbers} +@end group +@end example + +@sp 3 +We use here the fact that generic function are not obliged to have the +same number of parameters, contrarily to CLOS. The four first methods +implement the dyadic addition. The fifth method says that the addition +of a single element is this element itself. The sixth method says that +using the addition with no parameter always return 0. The last method +takes an arbitrary number of parameters@footnote{The parameter list for +a @code{define-method} follows the conventions used for Scheme +procedures. In particular it can use the dot notation or a symbol to +denote an arbitrary number of parameters}. This method acts as a kind +of @code{reduce}: it calls the dyadic addition on the @emph{car} of the +list and on the result of applying it on its rest. To finish, the +@code{set!} permits to redefine the @code{+} symbol to our extended +addition. + +@sp 3 +To terminate our implementation (integration?) of complex numbers, we can +redefine standard Scheme predicates in the following manner: + +@lisp +(define-method (complex? c ) #t) +(define-method (complex? c) #f) + +(define-method (number? n ) #t) +(define-method (number? n) #f) +@dots{} +@dots{} +@end lisp + +Standard primitives in which complex numbers are involved could also be +redefined in the same manner. + diff --git a/guile18/doc/goops/goops.texi b/guile18/doc/goops/goops.texi new file mode 100644 index 0000000000..d6d8e595d4 --- /dev/null +++ b/guile18/doc/goops/goops.texi @@ -0,0 +1,2905 @@ +\input texinfo +@c -*-texinfo-*- +@c %**start of header +@setfilename goops.info +@settitle Goops Manual +@set goops +@setchapternewpage odd +@paragraphindent 0 +@c %**end of header + +@set VERSION 0.3 + +@dircategory The Algorithmic Language Scheme +@direntry +* GOOPS: (goops). The GOOPS reference manual. +@end direntry + +@macro goops +GOOPS +@end macro + +@macro guile +Guile +@end macro + +@ifinfo +This file documents GOOPS, an object oriented extension for Guile. + +Copyright (C) 1999, 2000, 2001, 2003, 2006 Free Software Foundation + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +@end ifinfo + +@c This title page illustrates only one of the +@c two methods of forming a title page. + +@titlepage +@title Goops Manual +@subtitle For use with GOOPS @value{VERSION} + +@c AUTHORS + +@c The GOOPS tutorial was written by Christian Lynbech and Mikael +@c Djurfeldt, who also wrote GOOPS itself. The GOOPS reference manual +@c and MOP documentation were written by Neil Jerram and reviewed by +@c Mikael Djurfeldt. + +@author Christian Lynbech +@author @email{chl@@tbit.dk} +@author +@author Mikael Djurfeldt +@author @email{djurfeldt@@nada.kth.se} +@author +@author Neil Jerram +@author @email{neil@@ossau.uklinux.net} + +@c The following two commands +@c start the copyright page. +@page +@vskip 0pt plus 1filll +Copyright @copyright{} 1999, 2006 Free Software Foundation + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +@end titlepage + +@node Top, Introduction, (dir), (dir) + +@menu +* Introduction:: +* Getting Started:: +* Reference Manual:: +* MOP Specification:: + +* Tutorial:: + +* Concept Index:: +* Function and Variable Index:: +@end menu + +@iftex +@chapter Preliminaries +@end iftex + +@node Introduction, Getting Started, Top, Top +@iftex +@section Introduction +@end iftex +@ifnottex +@chapter Introduction +@end ifnottex + +@goops{} is the object oriented extension to @guile{}. Its +implementation is derived from @w{STk-3.99.3} by Erick Gallesio and +version 1.3 of Gregor Kiczales @cite{Tiny-Clos}. It is very close in +spirit to CLOS, the Common Lisp Object System (@cite{CLtL2}) but is +adapted for the Scheme language. While GOOPS is not compatible with any +of these systems, GOOPS contains a compatibility module which allows for +execution of STKlos programs. + +Briefly stated, the @goops{} extension gives the user a full object +oriented system with multiple inheritance and generic functions with +multi-method dispatch. Furthermore, the implementation relies on a true +meta object protocol, in the spirit of the one defined for CLOS +(@cite{Gregor Kiczales: A Metaobject Protocol}). + +@node Getting Started, Reference Manual, Introduction, Top +@iftex +@section Getting Started +@end iftex +@ifnottex +@chapter Getting Started +@end ifnottex + +@menu +* Running GOOPS:: + +Examples of some basic GOOPS functionality. + +* Methods:: +* User-defined types:: +* Asking for the type of an object:: + +See further in the GOOPS tutorial available in this distribution in +info (goops.info) and texinfo format. +@end menu + +@node Running GOOPS, Methods, Getting Started, Getting Started +@subsection Running GOOPS + +@enumerate +@item +Type + +@smalllisp +guile-oops +@end smalllisp + +You should now be at the Guile prompt ("guile> "). + +@item +Type + +@smalllisp +(use-modules (oop goops)) +@end smalllisp + +to load GOOPS. (If your system supports dynamic loading, you +should be able to do this not only from `guile-oops' but from an +arbitrary Guile interpreter.) +@end enumerate + +We're now ready to try some basic GOOPS functionality. + +@node Methods, User-defined types, Running GOOPS, Getting Started +@subsection Methods + +@smalllisp +@group +(define-method (+ (x ) (y )) + (string-append x y)) + +(+ 1 2) --> 3 +(+ "abc" "de") --> "abcde" +@end group +@end smalllisp + +@node User-defined types, Asking for the type of an object, Methods, Getting Started +@subsection User-defined types + +@smalllisp +(define-class <2D-vector> () + (x #:init-value 0 #:accessor x-component #:init-keyword #:x) + (y #:init-value 0 #:accessor y-component #:init-keyword #:y)) + +@group +(use-modules (ice-9 format)) + +(define-method (write (obj <2D-vector>) port) + (display (format #f "<~S, ~S>" (x-component obj) (y-component obj)) + port)) + +(define v (make <2D-vector> #:x 3 #:y 4)) + +v --> <3, 4> +@end group + +@group +(define-method (+ (x <2D-vector>) (y <2D-vector>)) + (make <2D-vector> + #:x (+ (x-component x) (x-component y)) + #:y (+ (y-component x) (y-component y)))) + +(+ v v) --> <6, 8> +@end group +@end smalllisp + +@node Asking for the type of an object, , User-defined types, Getting Started +@subsection Types + +@example +(class-of v) --> #< <2D-vector> 40241ac0> +<2D-vector> --> #< <2D-vector> 40241ac0> +(class-of 1) --> #< 401b2a98> + --> #< 401b2a98> + +(is-a? v <2D-vector>) --> #t +@end example + +@node Reference Manual, MOP Specification, Getting Started, Top +@chapter Reference Manual + +This chapter is the GOOPS reference manual. It aims to describe all the +syntax, procedures, options and associated concepts that a typical +application author would need to understand in order to use GOOPS +effectively in their application. It also describes what is meant by +the GOOPS ``metaobject protocol'' (aka ``MOP''), and indicates how +authors can use the metaobject protocol to customize the behaviour of +GOOPS itself. + +For a detailed specification of the GOOPS metaobject protocol, see +@ref{MOP Specification}. + +@menu +* Introductory Remarks:: +* Defining New Classes:: +* Creating Instances:: +* Accessing Slots:: +* Creating Generic Functions:: +* Adding Methods to Generic Functions:: +* Invoking Generic Functions:: +* Redefining a Class:: +* Changing the Class of an Instance:: +* Introspection:: +* Miscellaneous Functions:: +@end menu + +@node Introductory Remarks +@section Introductory Remarks + +GOOPS is an object-oriented programming system based on a ``metaobject +protocol'' derived from the ones used in CLOS (the Common Lisp Object +System), tiny-clos (a small Scheme implementation of a subset of CLOS +functionality) and STKlos. + +GOOPS can be used by application authors at a basic level without any +need to understand what the metaobject protocol (aka ``MOP'') is and how +it works. On the other hand, the MOP underlies even the customizations +that application authors are likely to make use of very quickly --- such +as defining an @code{initialize} method to customize the initialization +of instances of an application-defined class --- and an understanding of +the MOP makes it much easier to explain such customizations in a precise +way. And in the long run, understanding the MOP is the key both to +understanding GOOPS at a deeper level and to taking full advantage of +GOOPS' power, by customizing the behaviour of GOOPS itself. + +Each of the following sections of the reference manual is arranged +such that the most basic usage is introduced first, and then subsequent +subsections discuss the related internal functions and metaobject +protocols, finishing with a description of how to customize that area of +functionality. + +These introductory remarks continue with a few words about metaobjects +and the MOP. Readers who do not want to be bothered yet with the MOP +and customization could safely skip this subsection on a first reading, +and should correspondingly skip subsequent subsections that are +concerned with internals and customization. + +In general, this reference manual assumes familiarity with standard +object oriented concepts and terminology. However, some of the terms +used in GOOPS are less well known, so the Terminology subsection +provides definitions for these terms. + +@menu +* Metaobjects and the Metaobject Protocol:: +* Terminology:: +@end menu + +@node Metaobjects and the Metaobject Protocol +@subsection Metaobjects and the Metaobject Protocol + +The conceptual building blocks of GOOPS are classes, slot definitions, +instances, generic functions and methods. A class is a grouping of +inheritance relations and slot definitions. An instance is an object +with slots that are allocated following the rules implied by its class's +superclasses and slot definitions. A generic function is a collection +of methods and rules for determining which of those methods to apply +when the generic function is invoked. A method is a procedure and a set +of specializers that specify the type of arguments to which the +procedure is applicable. + +Of these entities, GOOPS represents classes, generic functions and +methods as ``metaobjects''. In other words, the values in a GOOPS +program that describe classes, generic functions and methods, are +themselves instances (or ``objects'') of special GOOPS classes that +encapsulate the behaviour, respectively, of classes, generic functions, +and methods. + +(The other two entities are slot definitions and instances. Slot +definitions are not strictly instances, but every slot definition is +associated with a GOOPS class that specifies the behaviour of the slot +as regards accessibility and protection from garbage collection. +Instances are of course objects in the usual sense, and there is no +benefit from thinking of them as metaobjects.) + +The ``metaobject protocol'' (aka ``MOP'') is the specification of the +generic functions which determine the behaviour of these metaobjects and +the circumstances in which these generic functions are invoked. + +For a concrete example of what this means, consider how GOOPS calculates +the set of slots for a class that is being defined using +@code{define-class}. The desired set of slots is the union of the new +class's direct slots and the slots of all its superclasses. But +@code{define-class} itself does not perform this calculation. Instead, +there is a method of the @code{initialize} generic function that is +specialized for instances of type @code{}, and it is this method +that performs the slot calculation. + +@code{initialize} is a generic function which GOOPS calls whenever a new +instance is created, immediately after allocating memory for a new +instance, in order to initialize the new instance's slots. The sequence +of steps is as follows. + +@itemize @bullet +@item +@code{define-class} uses @code{make} to make a new instance of the +@code{}, passing as initialization arguments the superclasses, +slot definitions and class options that were specified in the +@code{define-class} form. + +@item +@code{make} allocates memory for the new instance, and then invokes the +@code{initialize} generic function to initialize the new instance's +slots. + +@item +The @code{initialize} generic function applies the method that is +specialized for instances of type @code{}, and this method +performs the slot calculation. +@end itemize + +In other words, rather than being hardcoded in @code{define-class}, the +behaviour of class definition is encapsulated by generic function +methods that are specialized for the class @code{}. + +It is possible to create a new class that inherits from @code{}, +which is called a ``metaclass'', and to write a new @code{initialize} +method that is specialized for instances of the new metaclass. Then, if +the @code{define-class} form includes a @code{#:metaclass} class option +whose value is the new metaclass, the class that is defined by the +@code{define-class} form will be an instance of the new metaclass rather +than of the default @code{}, and will be defined in accordance +with the new @code{initialize} method. Thus the default slot +calculation, as well as any other aspect of the new class's relationship +with its superclasses, can be modified or overridden. + +In a similar way, the behaviour of generic functions can be modified or +overridden by creating a new class that inherits from the standard +generic function class @code{}, writing appropriate methods +that are specialized to the new class, and creating new generic +functions that are instances of the new class. + +The same is true for method metaobjects. And the same basic mechanism +allows the application class author to write an @code{initialize} method +that is specialized to their application class, to initialize instances +of that class. + +Such is the power of the MOP. Note that @code{initialize} is just one +of a large number of generic functions that can be customized to modify +the behaviour of application objects and classes and of GOOPS itself. +Each subsequent section of the reference manual covers a particular area +of GOOPS functionality, and describes the generic functions that are +relevant for customization of that area. + +We conclude this subsection by emphasizing a point that may seem +obvious, but contrasts with the corresponding situation in some other +MOP implementations, such as CLOS. The point is simply that an +identifier which represents a GOOPS class or generic function is a +variable with a first-class value, the value being an instance of class +@code{} or @code{}. (In CLOS, on the other hand, a +class identifier is a symbol that indexes the corresponding class +metaobject in a separate namespace for classes.) This is, of course, +simply an extension of the tendency in Scheme to avoid the unnecessary +use of, on the one hand, syntactic forms that require unevaluated +arguments and, on the other, separate identifier namespaces (e.g. for +class names), but it is worth noting that GOOPS conforms fully to this +Schemely principle. + +@node Terminology +@subsection Terminology + +It is assumed that the reader is already familiar with standard object +orientation concepts such as classes, objects/instances, +inheritance/subclassing, generic functions and methods, encapsulation +and polymorphism. + +This section explains some of the less well known concepts and +terminology that GOOPS uses, which are assumed by the following sections +of the reference manual. + +@menu +* Metaclass:: +* Class Precedence List:: +* Accessor:: +@end menu + +@node Metaclass +@subsubsection Metaclass + +A @dfn{metaclass} is the class of an object which represents a GOOPS +class. Put more succinctly, a metaclass is a class's class. + +Most GOOPS classes have the metaclass @code{} and, by default, +any new class that is created using @code{define-class} has the +metaclass @code{}. + +But what does this really mean? To find out, let's look in more detail +at what happens when a new class is created using @code{define-class}: + +@example +(define-class () . slots) +@end example + +GOOPS actually expands the @code{define-class} form to something like +this + +@example +(define (class () . slots)) +@end example + +and thence to + +@example +(define + (make #:supers (list ) #:slots slots)) +@end example + +In other words, the value of @code{} is in fact an instance of +the class @code{} with slot values specifying the superclasses +and slot definitions for the class @code{}. (@code{#:supers} +and @code{#:slots} are initialization keywords for the @code{dsupers} +and @code{dslots} slots of the @code{} class.) + +In order to take advantage of the full power of the GOOPS metaobject +protocol (@pxref{MOP Specification}), it is sometimes desirable to +create a new class with a metaclass other than the default +@code{}. This is done by writing: + +@example +(define-class () + slot @dots{} + #:metaclass ) +@end example + +GOOPS expands this to something like: + +@example +(define + (make #:supers (list ) #:slots slots)) +@end example + +In this case, the value of @code{} is an instance of the more +specialized class @code{}. Note that +@code{} itself must previously have been defined as a +subclass of @code{}. For a full discussion of when and how it is +useful to define new metaclasses, see @ref{MOP Specification}. + +Now let's make an instance of @code{}: + +@example +(define my-object (make ...)) +@end example + +All of the following statements are correct expressions of the +relationships between @code{my-object}, @code{}, +@code{} and @code{}. + +@itemize @bullet +@item +@code{my-object} is an instance of the class @code{}. + +@item +@code{} is an instance of the class @code{}. + +@item +@code{} is an instance of the class @code{}. + +@item +The class of @code{my-object} is @code{}. + +@item +The metaclass of @code{my-object} is @code{}. + +@item +The class of @code{} is @code{}. + +@item +The metaclass of @code{} is @code{}. + +@item +The class of @code{} is @code{}. + +@item +The metaclass of @code{} is @code{}. + +@item +@code{} is not a metaclass, since it is does not inherit from +@code{}. + +@item +@code{} is a metaclass, since it inherits from +@code{}. +@end itemize + +@node Class Precedence List +@subsubsection Class Precedence List + +The @dfn{class precedence list} of a class is the list of all direct and +indirect superclasses of that class, including the class itself. + +In the absence of multiple inheritance, the class precedence list is +ordered straightforwardly, beginning with the class itself and ending +with @code{}. + +For example, given this inheritance hierarchy: + +@example +(define-class () @dots{}) +(define-class () @dots{}) +(define-class () @dots{}) +@end example + +the class precedence list of would be + +@example +( ) +@end example + +With multiple inheritance, the algorithm is a little more complicated. +A full description is provided by the GOOPS Tutorial: see @ref{Class +precedence list}. + +``Class precedence list'' is often abbreviated, in documentation and +Scheme variable names, to @dfn{cpl}. + +@node Accessor +@subsubsection Accessor + +An @dfn{accessor} is a generic function with both reference and setter +methods. + +@example +(define-accessor perimeter) +@end example + +Reference methods for an accessor are defined in the same way as generic +function methods. + +@example +(define-method (perimeter (s )) + (* 4 (side-length s))) +@end example + +Setter methods for an accessor are defined by specifying ``(setter +)'' as the first parameter of the @code{define-method} +call. + +@example +(define-method ((setter perimeter) (s ) (n )) + (set! (side-length s) (/ n 4))) +@end example + +Once an appropriate setter method has been defined in this way, it can +be invoked using the generalized @code{set!} syntax, as in: + +@example +(set! (perimeter s1) 18.3) +@end example + +@node Defining New Classes +@section Defining New Classes + +[ *fixme* Somewhere in this manual there needs to be an introductory +discussion about GOOPS classes, generic functions and methods, covering + +@itemize @bullet +@item +how classes encapsulate related items of data in @dfn{slots} + +@item +why it is that, unlike in C++ and Java, a class does not encapsulate the +methods that act upon the class (at least not in the C++/Java sense) + +@item +how generic functions provide a more general solution that provides for +dispatch on all argument types, and avoids idiosyncracies like C++'s +friend classes + +@item +how encapsulation in the sense of data- and code-hiding, or of +distinguishing interface from implementation, is treated in Guile as an +orthogonal concept to object orientation, and is the responsibility of +the module system. +@end itemize + +Some of this is covered in the Tutorial chapter, in @ref{Generic +functions and methods} - perhaps the best solution would be to expand +the discussion there. ] + +@menu +* Basic Class Definition:: +* Class Options:: +* Slot Options:: +* Class Definition Internals:: +* Customizing Class Definition:: +* STKlos Compatibility:: +@end menu + +@node Basic Class Definition +@subsection Basic Class Definition + +New classes are defined using the @code{define-class} syntax, with +arguments that specify the classes that the new class should inherit +from, the direct slots of the new class, and any required class options. + +@deffn syntax define-class name (super @dots{}) slot-definition @dots{} . options +Define a class called @var{name} that inherits from @var{super}s, with +direct slots defined by @var{slot-definition}s and class options +@var{options}. The newly created class is bound to the variable name +@var{name} in the current environment. + +Each @var{slot-definition} is either a symbol that names the slot or a +list, + +@example +(@var{slot-name-symbol} . @var{slot-options}) +@end example + +where @var{slot-name-symbol} is a symbol and @var{slot-options} is a +list with an even number of elements. The even-numbered elements of +@var{slot-options} (counting from zero) are slot option keywords; the +odd-numbered elements are the corresponding values for those keywords. + +@var{options} is a similarly structured list containing class option +keywords and corresponding values. +@end deffn + +The standard GOOPS class and slot options are described in the following +subsections: see @ref{Class Options} and @ref{Slot Options}. + +Example 1. Define a class that combines two pre-existing classes by +inheritance but adds no new slots. + +@example +(define-class ( )) +@end example + +Example 2. Define a @code{regular-polygon} class with slots for side +length and number of sides that have default values and can be accessed +via the generic functions @code{side-length} and @code{num-sides}. + +@example +(define-class () + (sl #:init-value 1 #:accessor side-length) + (ns #:init-value 5 #:accessor num-sides)) +@end example + +Example 3. Define a class whose behavior (and that of its instances) is +customized via an application-defined metaclass. + +@example +(define-class () + (s #:init-value #f #:accessor state) + ... + #:metaclass ) +@end example + +@node Class Options +@subsection Class Options + +@deffn {class option} #:metaclass metaclass +The @code{#:metaclass} class option specifies the metaclass of the class +being defined. @var{metaclass} must be a class that inherits from +@code{}. For an introduction to the use of metaclasses, see +@ref{Metaobjects and the Metaobject Protocol} and @ref{Metaclass}. + +If the @code{#:metaclass} option is absent, GOOPS reuses or constructs a +metaclass for the new class by calling @code{ensure-metaclass} +(@pxref{Class Definition Internals,, ensure-metaclass}). +@end deffn + +@deffn {class option} #:name name +The @code{#:name} class option specifies the new class's name. This +name is used to identify the class whenever related objects - the class +itself, its instances and its subclasses - are printed. + +If the @code{#:name} option is absent, GOOPS uses the first argument to +@code{define-class} as the class name. +@end deffn + +@deffn {class option} #:environment environment +*fixme* Not sure about this one, but I think that the +@code{#:environment} option specifies the environment in which the +class's getters and setters are computed and evaluated. + +If the @code{#:environment} option is not specified, the class's +environment defaults to the top-level environment in which the +@code{define-class} form appears. +@end deffn + +@node Slot Options +@subsection Slot Options + +@deffn {slot option} #:allocation allocation +The @code{#:allocation} option tells GOOPS how to allocate storage for +the slot. Possible values for @var{allocation} are + +@itemize @bullet +@item @code{#:instance} + +Indicates that GOOPS should create separate storage for this slot in +each new instance of the containing class (and its subclasses). + +@item @code{#:class} + +Indicates that GOOPS should create storage for this slot that is shared +by all instances of the containing class (and its subclasses). In other +words, a slot in class @var{C} with allocation @code{#:class} is shared +by all @var{instance}s for which @code{(is-a? @var{instance} @var{c})}. + +@item @code{#:each-subclass} + +Indicates that GOOPS should create storage for this slot that is shared +by all @emph{direct} instances of the containing class, and that +whenever a subclass of the containing class is defined, GOOPS should +create a new storage for the slot that is shared by all @emph{direct} +instances of the subclass. In other words, a slot with allocation +@code{#:each-subclass} is shared by all instances with the same +@code{class-of}. + +@item @code{#:virtual} + +Indicates that GOOPS should not allocate storage for this slot. The +slot definition must also include the @code{#:slot-ref} and +@code{#:slot-set!} options to specify how to reference and set the value +for this slot. +@end itemize + +The default value is @code{#:instance}. + +Slot allocation options are processed when defining a new class by the +generic function @code{compute-get-n-set}, which is specialized by the +class's metaclass. Hence new types of slot allocation can be +implemented by defining a new metaclass and a method for +@code{compute-get-n-set} that is specialized for the new metaclass. For +an example of how to do this, see @ref{Customizing Class Definition}. +@end deffn + +@deffn {slot option} #:slot-ref getter +@deffnx {slot option} #:slot-set! setter +The @code{#:slot-ref} and @code{#:slot-set!} options must be specified +if the slot allocation is @code{#:virtual}, and are ignored otherwise. + +@var{getter} should be a closure taking a single @var{instance} parameter +that returns the current slot value. @var{setter} should be a closure +taking two parameters - @var{instance} and @var{new-val} - that sets the +slot value to @var{new-val}. +@end deffn + +@deffn {slot option} #:getter getter +@deffnx {slot option} #:setter setter +@deffnx {slot option} #:accessor accessor +These options, if present, tell GOOPS to create generic function and +method definitions that can be used to get and set the slot value more +conveniently than by using @code{slot-ref} and @code{slot-set!}. + +@var{getter} specifies a generic function to which GOOPS will add a +method for getting the slot value. @var{setter} specifies a generic +function to which GOOPS will add a method for setting the slot value. +@var{accessor} specifies an accessor to which GOOPS will add methods for +both getting and setting the slot value. + +So if a class includes a slot definition like this: + +@example +(c #:getter get-count #:setter set-count #:accessor count) +@end example + +GOOPS defines generic function methods such that the slot value can be +referenced using either the getter or the accessor - + +@example +(let ((current-count (get-count obj))) @dots{}) +(let ((current-count (count obj))) @dots{}) +@end example + +- and set using either the setter or the accessor - + +@example +(set-count obj (+ 1 current-count)) +(set! (count obj) (+ 1 current-count)) +@end example + +Note that + +@itemize @bullet +@item +with an accessor, the slot value is set using the generalized +@code{set!} syntax + +@item +in practice, it is unusual for a slot to use all three of these options: +read-only, write-only and read-write slots would typically use only +@code{#:getter}, @code{#:setter} and @code{#:accessor} options +respectively. +@end itemize + +If the specified names are already bound in the top-level environment to +values that cannot be upgraded to generic functions, those values are +overwritten during evaluation of the @code{define-class} that contains +the slot definition. For details, see @ref{Generic Function Internals,, +ensure-generic}. +@end deffn + +@deffn {slot option} #:init-value init-value +@deffnx {slot option} #:init-form init-form +@deffnx {slot option} #:init-thunk init-thunk +@deffnx {slot option} #:init-keyword init-keyword +These options provide various ways to specify how to initialize the +slot's value at instance creation time. @var{init-value} is a fixed +value (shared across all new instances of the class). +@var{init-thunk} is a procedure of no arguments that is called +when a new instance is created and should return the desired initial +slot value. @var{init-form} is an unevaluated expression that gets +evaluated when a new instance is created and should return the desired +initial slot value. @var{init-keyword} is a keyword that can be used +to pass an initial slot value to @code{make} when creating a new +instance. + +Note that, since an @code{init-value} value is shared across all +instances of a class, you should only use it when the initial value is +an immutable value, like a constant. If you want to initialize a slot +with a fresh, independently mutable value, you should use +@code{init-thunk} or @code{init-form} instead. Consider the following +example. + +@example +(define-class () + (hashtab #:init-value (make-hash-table))) +@end example + +@noindent +Here only one hash table is created and all instances of +@code{} have their @code{hashtab} slot refer to it. In order +to have each instance of @code{} refer to a new hash table, you +should instead write: + +@example +(define-class () + (hashtab #:init-thunk make-hash-table)) +@end example + +@noindent +or: + +@example +(define-class () + (hashtab #:init-form (make-hash-table))) +@end example + +If more than one of these options is specified for the same slot, the +order of precedence, highest first is + +@itemize @bullet +@item +@code{#:init-keyword}, if @var{init-keyword} is present in the options +passed to @code{make} + +@item +@code{#:init-thunk}, @code{#:init-form} or @code{#:init-value}. +@end itemize + +If the slot definition contains more than one initialization option of +the same precedence, the later ones are ignored. If a slot is not +initialized at all, its value is unbound. + +In general, slots that are shared between more than one instance are +only initialized at new instance creation time if the slot value is +unbound at that time. However, if the new instance creation specifies +a valid init keyword and value for a shared slot, the slot is +re-initialized regardless of its previous value. + +Note, however, that the power of GOOPS' metaobject protocol means that +everything written here may be customized or overridden for particular +classes! The slot initializations described here are performed by the least +specialized method of the generic function @code{initialize}, whose +signature is + +@example +(define-method (initialize (object ) initargs) ...) +@end example + +The initialization of instances of any given class can be customized by +defining a @code{initialize} method that is specialized for that class, +and the author of the specialized method may decide to call +@code{next-method} - which will result in a call to the next less +specialized @code{initialize} method - at any point within the +specialized code, or maybe not at all. In general, therefore, the +initialization mechanisms described here may be modified or overridden by +more specialized code, or may not be supported at all for particular +classes. +@end deffn + +@node Class Definition Internals +@subsection Class Definition Internals + +Implementation notes: @code{define-class} expands to an expression which + +@itemize @bullet +@item +checks that it is being evaluated only at top level + +@item +defines any accessors that are implied by the @var{slot-definition}s + +@item +uses @code{class} to create the new class (@pxref{Class Definition +Internals,, class}) + +@item +checks for a previous class definition for @var{name} and, if found, +handles the redefinition by invoking @code{class-redefinition} +(@pxref{Redefining a Class}). +@end itemize + +@deffn syntax class name (super @dots{}) slot-definition @dots{} . options +Return a newly created class that inherits from @var{super}s, with +direct slots defined by @var{slot-definition}s and class options +@var{options}. For the format of @var{slot-definition}s and +@var{options}, see @ref{Basic Class Definition,, define-class}. +@end deffn + +Implementation notes: @code{class} expands to an expression which + +@itemize @bullet +@item +processes the class and slot definition options to check that they are +well-formed, to convert the @code{#:init-form} option to an +@code{#:init-thunk} option, to supply a default environment parameter +(the current top-level environment) and to evaluate all the bits that +need to be evaluated + +@item +calls @code{make-class} to create the class with the processed and +evaluated parameters. +@end itemize + +@deffn procedure make-class supers slots . options +Return a newly created class that inherits from @var{supers}, with +direct slots defined by @var{slots} and class options @var{options}. +For the format of @var{slots} and @var{options}, see @ref{Basic Class +Definition,, define-class}, except note that for @code{make-class}, +@var{slots} and @var{options} are separate list parameters: @var{slots} +here is a list of slot definitions. +@end deffn + +Implementation notes: @code{make-class} + +@itemize @bullet +@item +adds @code{} to the @var{supers} list if @var{supers} is empty +or if none of the classes in @var{supers} have @code{} in their +class precedence list + +@item +defaults the @code{#:environment}, @code{#:name} and @code{#:metaclass} +options, if they are not specified by @var{options}, to the current +top-level environment, the unbound value, and @code{(ensure-metaclass +@var{supers})} respectively (@pxref{Class Definition Internals,, +ensure-metaclass}) + +@item +checks for duplicate classes in @var{supers} and duplicate slot names in +@var{slots}, and signals an error if there are any duplicates + +@item +calls @code{make}, passing the metaclass as the first parameter and all +other parameters as option keywords with values. +@end itemize + +@deffn procedure ensure-metaclass supers env +Return a metaclass suitable for a class that inherits from the list of +classes in @var{supers}. The returned metaclass is the union by +inheritance of the metaclasses of the classes in @var{supers}. + +In the simplest case, where all the @var{supers} are straightforward +classes with metaclass @code{}, the returned metaclass is just +@code{}. + +For a more complex example, suppose that @var{supers} contained one +class with metaclass @code{} and one with metaclass +@code{}. Then the returned metaclass would be a +class that inherits from both @code{} and +@code{}. + +If @var{supers} is the empty list, @code{ensure-metaclass} returns the +default GOOPS metaclass @code{}. + +GOOPS keeps a list of the metaclasses created by +@code{ensure-metaclass}, so that each required type of metaclass only +has to be created once. + +The @code{env} parameter is ignored. +@end deffn + +@deffn procedure ensure-metaclass-with-supers meta-supers +@code{ensure-metaclass-with-supers} is an internal procedure used by +@code{ensure-metaclass} (@pxref{Class Definition Internals,, +ensure-metaclass}). It returns a metaclass that is the union by +inheritance of the metaclasses in @var{meta-supers}. +@end deffn + +The internals of @code{make}, which is ultimately used to create the new +class object, are described in @ref{Customizing Instance Creation}, +which covers the creation and initialization of instances in general. + +@node Customizing Class Definition +@subsection Customizing Class Definition + +During the initialization of a new class, GOOPS calls a number of generic +functions with the newly allocated class instance as the first +argument. Specifically, GOOPS calls the generic function + +@itemize @bullet +@item +(initialize @var{class} @dots{}) +@end itemize + +where @var{class} is the newly allocated class instance, and the default +@code{initialize} method for arguments of type @code{} calls the +generic functions + +@itemize @bullet +@item +(compute-cpl @var{class}) + +@item +(compute-slots @var{class}) + +@item +(compute-get-n-set @var{class} @var{slot-def}), for each of the slot +definitions returned by @code{compute-slots} + +@item +(compute-getter-method @var{class} @var{slot-def}), for each of the +slot definitions returned by @code{compute-slots} that includes a +@code{#:getter} or @code{#:accessor} slot option + +@item +(compute-setter-method @var{class} @var{slot-def}), for each of the +slot definitions returned by @code{compute-slots} that includes a +@code{#:setter} or @code{#:accessor} slot option. +@end itemize + +If the metaclass of the new class is something more specialized than the +default @code{}, then the type of @var{class} in the calls above +is more specialized than @code{}, and hence it becomes possible +to define generic function methods, specialized for the new class's +metaclass, that can modify or override the default behaviour of +@code{initialize}, @code{compute-cpl} or @code{compute-get-n-set}. + +@code{compute-cpl} computes the class precedence list (``CPL'') for the +new class (@pxref{Class precedence list}), and returns it as a list of +class objects. The CPL is important because it defines a superclass +ordering that is used, when a generic function is invoked upon an +instance of the class, to decide which of the available generic function +methods is the most specific. Hence @code{compute-cpl} could be +customized in order to modify the CPL ordering algorithm for all classes +with a special metaclass. + +The default CPL algorithm is encapsulated by the @code{compute-std-cpl} +procedure, which is in turn called by the default @code{compute-cpl} +method. + +@deffn procedure compute-std-cpl class +Compute and return the class precedence list for @var{class} according +to the algorithm described in @ref{Class precedence list}. +@end deffn + +@code{compute-slots} computes and returns a list of all slot definitions +for the new class. By default, this list includes the direct slot +definitions from the @code{define-class} form, plus the slot definitions +that are inherited from the new class's superclasses. The default +@code{compute-slots} method uses the CPL computed by @code{compute-cpl} +to calculate this union of slot definitions, with the rule that slots +inherited from superclasses are shadowed by direct slots with the same +name. One possible reason for customizing @code{compute-slots} would be +to implement an alternative resolution strategy for slot name conflicts. + +@code{compute-get-n-set} computes the low-level closures that will be +used to get and set the value of a particular slot, and returns them in +a list with two elements. + +The closures returned depend on how storage for that slot is allocated. +The standard @code{compute-get-n-set} method, specialized for classes of +type @code{}, handles the standard GOOPS values for the +@code{#:allocation} slot option (@pxref{Slot Options,, allocation}). By +defining a new @code{compute-get-n-set} method for a more specialized +metaclass, it is possible to support new types of slot allocation. + +Suppose you wanted to create a large number of instances of some class +with a slot that should be shared between some but not all instances of +that class - say every 10 instances should share the same slot storage. +The following example shows how to implement and use a new type of slot +allocation to do this. + +@example +(define-class ()) + +(let ((batch-allocation-count 0) + (batch-get-n-set #f)) + (define-method (compute-get-n-set (class ) s) + (case (slot-definition-allocation s) + ((#:batched) + ;; If we've already used the same slot storage for 10 instances, + ;; reset variables. + (if (= batch-allocation-count 10) + (begin + (set! batch-allocation-count 0) + (set! batch-get-n-set #f))) + ;; If we don't have a current pair of get and set closures, + ;; create one. make-closure-variable returns a pair of closures + ;; around a single Scheme variable - see goops.scm for details. + (or batch-get-n-set + (set! batch-get-n-set (make-closure-variable))) + ;; Increment the batch allocation count. + (set! batch-allocation-count (+ batch-allocation-count 1)) + batch-get-n-set) + + ;; Call next-method to handle standard allocation types. + (else (next-method))))) + +(define-class () + ... + (c #:allocation #:batched) + ... + #:metaclass ) +@end example + +The usage of @code{compute-getter-method} and @code{compute-setter-method} +is described in @ref{MOP Specification}. + +@code{compute-cpl} and @code{compute-get-n-set} are called by the +standard @code{initialize} method for classes whose metaclass is +@code{}. But @code{initialize} itself can also be modified, by +defining an @code{initialize} method specialized to the new class's +metaclass. Such a method could complete override the standard +behaviour, by not calling @code{(next-method)} at all, but more +typically it would perform additional class initialization steps before +and/or after calling @code{(next-method)} for the standard behaviour. + +@node STKlos Compatibility +@subsection STKlos Compatibility + +If the STKlos compatibility module is loaded, @code{define-class} is +overwritten by a STKlos-specific definition; the standard GOOPS +definition of @code{define-class} remains available in +@code{standard-define-class}. + +@deffn syntax standard-define-class name (super @dots{}) slot-definition @dots{} . options +@code{standard-define-class} is equivalent to the standard GOOPS +@code{define-class}. +@end deffn + +@node Creating Instances +@section Creating Instances + +@menu +* Basic Instance Creation:: +* Customizing Instance Creation:: +@end menu + +@node Basic Instance Creation +@subsection Basic Instance Creation + +To create a new instance of any GOOPS class, use the generic function +@code{make} or @code{make-instance}, passing the required class and any +appropriate instance initialization arguments as keyword and value +pairs. Note that @code{make} and @code{make-instances} are aliases for +each other - their behaviour is identical. + +@deffn generic make +@deffnx method make (class ) . initargs +Create and return a new instance of class @var{class}, initialized using +@var{initargs}. + +In theory, @var{initargs} can have any structure that is understood by +whatever methods get applied when the @code{initialize} generic function +is applied to the newly allocated instance. + +In practice, specialized @code{initialize} methods would normally call +@code{(next-method)}, and so eventually the standard GOOPS +@code{initialize} methods are applied. These methods expect +@var{initargs} to be a list with an even number of elements, where +even-numbered elements (counting from zero) are keywords and +odd-numbered elements are the corresponding values. + +GOOPS processes initialization argument keywords automatically for slots +whose definition includes the @code{#:init-keyword} option (@pxref{Slot +Options,, init-keyword}). Other keyword value pairs can only be +processed by an @code{initialize} method that is specialized for the new +instance's class. Any unprocessed keyword value pairs are ignored. +@end deffn + +@deffn generic make-instance +@deffnx method make-instance (class ) . initargs +@code{make-instance} is an alias for @code{make}. +@end deffn + +@node Customizing Instance Creation +@subsection Customizing Instance Creation + +@code{make} itself is a generic function. Hence the @code{make} +invocation itself can be customized in the case where the new instance's +metaclass is more specialized than the default @code{}, by +defining a @code{make} method that is specialized to that metaclass. + +Normally, however, the method for classes with metaclass @code{} +will be applied. This method calls two generic functions: + +@itemize @bullet +@item +(allocate-instance @var{class} . @var{initargs}) + +@item +(initialize @var{instance} . @var{initargs}) +@end itemize + +@code{allocate-instance} allocates storage for and returns the new +instance, uninitialized. You might customize @code{allocate-instance}, +for example, if you wanted to provide a GOOPS wrapper around some other +object programming system. + +To do this, you would create a specialized metaclass, which would act as +the metaclass for all classes and instances from the other system. Then +define an @code{allocate-instance} method, specialized to that +metaclass, which calls a Guile primitive C function, which in turn +allocates the new instance using the interface of the other object +system. + +In this case, for a complete system, you would also need to customize a +number of other generic functions like @code{make} and +@code{initialize}, so that GOOPS knows how to make classes from the +other system, access instance slots, and so on. + +@code{initialize} initializes the instance that is returned by +@code{allocate-instance}. The standard GOOPS methods perform +initializations appropriate to the instance class. + +@itemize @bullet +@item +At the least specialized level, the method for instances of type +@code{} performs internal GOOPS instance initialization, and +initializes the instance's slots according to the slot definitions and +any slot initialization keywords that appear in @var{initargs}. + +@item +The method for instances of type @code{} calls +@code{(next-method)}, then performs the class initializations described +in @ref{Customizing Class Definition}. + +@item +and so on for generic functions, method, operator classes @dots{} +@end itemize + +Similarly, you can customize the initialization of instances of any +application-defined class by defining an @code{initialize} method +specialized to that class. + +Imagine a class whose instances' slots need to be initialized at +instance creation time by querying a database. Although it might be +possible to achieve this a combination of @code{#:init-thunk} keywords +and closures in the slot definitions, it is neater to write an +@code{initialize} method for the class that queries the database once +and initializes all the dependent slot values according to the results. + +@node Accessing Slots +@section Accessing Slots + +The definition of a slot contains at the very least a slot name, and may +also contain various slot options, including getter, setter and/or +accessor functions for the slot. + +It is always possible to access slots by name, using the various +``slot-ref'' and ``slot-set!'' procedures described in the following +subsections. For example, + +@example +(define-class () ;; Define a class with slots + (count #:init-value 0) ;; named "count" and "cache". + (cache #:init-value '()) + @dots{}) + +(define inst (make )) ;; Make an instance of this class. + +(slot-set! inst 'count 5) ;; Set the value of the "count" + ;; slot to 5. + +(slot-set! inst 'cache ;; Modify the value of the + (cons (cons "^it" "It") ;; "cache" slot. + (slot-ref inst 'cache))) +@end example + +If a slot definition includes a getter, setter or accessor function, +these can be used instead of @code{slot-ref} and @code{slot-set!} to +access the slot. + +@example +(define-class () ;; Define a new class whose slots + (count #:setter set-count) ;; use a getter, a setter and + (cache #:accessor cache) ;; an accessor. + (csize #:getter cache-size) + @dots{}) + +(define inst (make )) ;; Make an instance of this class. + +(set-count inst 5) ;; Set the value of the "count" + ;; slot to 5. + +(set! (cache inst) ;; Modify the value of the + (cons (cons "^it" "It") ;; "cache" slot. + (cache inst))) + +(let ((size (cache-size inst))) ;; Get the value of the "csize" + @dots{}) ;; slot. +@end example + +Whichever of these methods is used to access slots, GOOPS always calls +the low-level @dfn{getter} and @dfn{setter} closures for the slot to get +and set its value. These closures make sure that the slot behaves +according to the @code{#:allocation} type that was specified in the slot +definition (@pxref{Slot Options,, allocation}). (For more about these +closures, see @ref{Customizing Class Definition,, compute-get-n-set}.) + +@menu +* Instance Slots:: +* Class Slots:: +* Handling Slot Access Errors:: +@end menu + +@node Instance Slots +@subsection Instance Slots + +Any slot, regardless of its allocation, can be queried, referenced and +set using the following four primitive procedures. + +@deffn {primitive procedure} slot-exists? obj slot-name +Return @code{#t} if @var{obj} has a slot with name @var{slot-name}, +otherwise @code{#f}. +@end deffn + +@deffn {primitive procedure} slot-bound? obj slot-name +Return @code{#t} if the slot named @var{slot-name} in @var{obj} has a +value, otherwise @code{#f}. + +@code{slot-bound?} calls the generic function @code{slot-missing} if +@var{obj} does not have a slot called @var{slot-name} (@pxref{Handling +Slot Access Errors, slot-missing}). +@end deffn + +@deffn {primitive procedure} slot-ref obj slot-name +Return the value of the slot named @var{slot-name} in @var{obj}. + +@code{slot-ref} calls the generic function @code{slot-missing} if +@var{obj} does not have a slot called @var{slot-name} (@pxref{Handling +Slot Access Errors, slot-missing}). + +@code{slot-ref} calls the generic function @code{slot-unbound} if the +named slot in @var{obj} does not have a value (@pxref{Handling Slot +Access Errors, slot-unbound}). +@end deffn + +@deffn {primitive procedure} slot-set! obj slot-name value +Set the value of the slot named @var{slot-name} in @var{obj} to @var{value}. + +@code{slot-set!} calls the generic function @code{slot-missing} if +@var{obj} does not have a slot called @var{slot-name} (@pxref{Handling +Slot Access Errors, slot-missing}). +@end deffn + +GOOPS stores information about slots in class metaobjects. Internally, +all of these procedures work by looking up the slot definition for the +slot named @var{slot-name} in the class metaobject for @code{(class-of +@var{obj})}, and then using the slot definition's ``getter'' and +``setter'' closures to get and set the slot value. + +The next four procedures differ from the previous ones in that they take +the class metaobject as an explicit argument, rather than assuming +@code{(class-of @var{obj})}. Therefore they allow you to apply the +``getter'' and ``setter'' closures of a slot definition in one class to +an instance of a different class. + +[ *fixme* I have no idea why this is useful! Perhaps when a slot in +@code{(class-of @var{obj})} shadows a slot with the same name in one of +its superclasses? There should be an enlightening example here. ] + +@deffn {primitive procedure} slot-exists-using-class? class obj slot-name +Return @code{#t} if the class metaobject @var{class} has a slot +definition for a slot with name @var{slot-name}, otherwise @code{#f}. +@end deffn + +@deffn {primitive procedure} slot-bound-using-class? class obj slot-name +Return @code{#t} if applying @code{slot-ref-using-class} to the same +arguments would call the generic function @code{slot-unbound}, otherwise +@code{#f}. + +@code{slot-bound-using-class?} calls the generic function +@code{slot-missing} if @var{class} does not have a slot definition for a +slot called @var{slot-name} (@pxref{Handling Slot Access Errors, +slot-missing}). +@end deffn + +@deffn {primitive procedure} slot-ref-using-class class obj slot-name +Apply the ``getter'' closure for the slot named @var{slot-name} in +@var{class} to @var{obj}, and return its result. + +@code{slot-ref-using-class} calls the generic function +@code{slot-missing} if @var{class} does not have a slot definition for a +slot called @var{slot-name} (@pxref{Handling Slot Access Errors, +slot-missing}). + +@code{slot-ref-using-class} calls the generic function +@code{slot-unbound} if the application of the ``getter'' closure to +@var{obj} returns an unbound value (@pxref{Handling Slot Access Errors, +slot-unbound}). +@end deffn + +@deffn {primitive procedure} slot-set-using-class! class obj slot-name value +Apply the ``setter'' closure for the slot named @var{slot-name} in +@var{class} to @var{obj} and @var{value}. + +@code{slot-set-using-class!} calls the generic function +@code{slot-missing} if @var{class} does not have a slot definition for a +slot called @var{slot-name} (@pxref{Handling Slot Access Errors, +slot-missing}). +@end deffn + +@node Class Slots +@subsection Class Slots + +Slots whose allocation is per-class rather than per-instance can be +referenced and set without needing to specify any particular instance. + +@deffn procedure class-slot-ref class slot-name +Return the value of the slot named @var{slot-name} in class @var{class}. +The named slot must have @code{#:class} or @code{#:each-subclass} +allocation (@pxref{Slot Options,, allocation}). + +If there is no such slot with @code{#:class} or @code{#:each-subclass} +allocation, @code{class-slot-ref} calls the @code{slot-missing} generic +function with arguments @var{class} and @var{slot-name}. Otherwise, if +the slot value is unbound, @code{class-slot-ref} calls the +@code{slot-missing} generic function, with the same arguments. +@end deffn + +@deffn procedure class-slot-set! class slot-name value +Set the value of the slot named @var{slot-name} in class @var{class} to +@var{value}. The named slot must have @code{#:class} or +@code{#:each-subclass} allocation (@pxref{Slot Options,, allocation}). + +If there is no such slot with @code{#:class} or @code{#:each-subclass} +allocation, @code{class-slot-ref} calls the @code{slot-missing} generic +function with arguments @var{class} and @var{slot-name}. +@end deffn + +@node Handling Slot Access Errors +@subsection Handling Slot Access Errors + +GOOPS calls one of the following generic functions when a ``slot-ref'' +or ``slot-set!'' call specifies a non-existent slot name, or tries to +reference a slot whose value is unbound. + +@deffn generic slot-missing +@deffnx method slot-missing (class ) slot-name +@deffnx method slot-missing (class ) (object ) slot-name +@deffnx method slot-missing (class ) (object ) slot-name value +When an application attempts to reference or set a class or instance +slot by name, and the slot name is invalid for the specified @var{class} +or @var{object}, GOOPS calls the @code{slot-missing} generic function. + +The default methods all call @code{goops-error} with an appropriate +message. +@end deffn + +@deffn generic slot-unbound +@deffnx method slot-unbound (object ) +@deffnx method slot-unbound (class ) slot-name +@deffnx method slot-unbound (class ) (object ) slot-name +When an application attempts to reference a class or instance slot, and +the slot's value is unbound, GOOPS calls the @code{slot-unbound} generic +function. + +The default methods all call @code{goops-error} with an appropriate +message. +@end deffn + +@node Creating Generic Functions +@section Creating Generic Functions + +A generic function is a collection of methods, with rules for +determining which of the methods should be applied for any given +invocation of the generic function. + +GOOPS represents generic functions as metaobjects of the class +@code{} (or one of its subclasses). + +@menu +* Basic Generic Function Creation:: +* Generic Function Internals:: +* Extending Guiles Primitives:: +@end menu + +@node Basic Generic Function Creation +@subsection Basic Generic Function Creation + +The following forms may be used to bind a variable to a generic +function. Depending on that variable's pre-existing value, the generic +function may be created empty - with no methods - or it may contain +methods that are inferred from the pre-existing value. + +It is not, in general, necessary to use @code{define-generic} or +@code{define-accessor} before defining methods for the generic function +using @code{define-method}, since @code{define-method} will +automatically interpolate a @code{define-generic} call, or upgrade an +existing generic to an accessor, if that is implied by the +@code{define-method} call. Note in particular that, +if the specified variable already has a @emph{generic function} value, +@code{define-generic} and @code{define-accessor} will @emph{discard} it! +Obviously it is application-dependent whether this is desirable or not. + +If, for example, you wanted to extend @code{+} for a class representing +a new numerical type, you probably want to inherit any existing methods +for @code{+} and so should not use @code{define-generic}. If, on the +other hand, you do not want to risk inheriting methods whose behaviour +might surprise you, you can use @code{define-generic} or +@code{define-accessor} to wipe the slate clean. + +@deffn syntax define-generic symbol +Create a generic function with name @var{symbol} and bind it to the +variable @var{symbol}. + +If the variable @var{symbol} was previously bound to a Scheme procedure +(or procedure-with-setter), the old procedure (and setter) is +incorporated into the new generic function as its default procedure (and +setter). Any other previous value that was bound to @var{symbol}, +including an existing generic function, is overwritten by the new +generic function. +@end deffn + +@deffn syntax define-accessor symbol +Create an accessor with name @var{symbol} and bind it to the variable +@var{symbol}. + +If the variable @var{symbol} was previously bound to a Scheme procedure +(or procedure-with-setter), the old procedure (and setter) is +incorporated into the new accessor as its default procedure (and +setter). Any other previous value that was bound to @var{symbol}, +including an existing generic function or accessor, is overwritten by +the new definition. +@end deffn + +It is sometimes tempting to use GOOPS accessors with short names. For +example, it is tempting to use the name @code{x} for the x-coordinate +in vector packages. + +Assume that we work with a graphical package which needs to use two +independent vector packages for 2D and 3D vectors respectively. If +both packages export @code{x} we will encounter a name collision. + +This can be resolved automagically with the duplicates handler +@code{merge-generics} which gives the module system license to merge +all generic functions sharing a common name: + +@smalllisp +(define-module (math 2D-vectors) + :use-module (oop goops) + :export (x y ...)) + +(define-module (math 3D-vectors) + :use-module (oop goops) + :export (x y z ...)) + +(define-module (my-module) + :use-module (math 2D-vectors) + :use-module (math 3D-vectors) + :duplicates merge-generics) +@end smalllisp + +The generic function @code{x} in @code{(my-module)} will now share +methods with @code{x} in both imported modules. + +There will, in fact, now be three distinct generic functions named +@code{x}: @code{x} in @code{(2D-vectors)}, @code{x} in +@code{(3D-vectors)}, and @code{x} in @code{(my-module)}. The last +function will be an @code{}, extending the previous +two functions. + +Let's call the imported generic functions the "ancestor functions". +The generic function @code{x} in @code{(my-module)} is, in turn, a +"descendant function" of the imported functions, extending its +ancestors. + +For any generic function G, the applicable methods are selected from +the union of the methods of the descendant functions, the methods of G +itself and the methods of the ancestor functions. + +This, ancestor functions share methods with their descendants and vice +versa. This implies that @code{x} in @code{(math 2D-vectors)} will +share the methods of @code{x} in @code{(my-module)} and vice versa, +while @code{x} in @code{(math 2D-vectors)} doesn't share the methods +of @code{x} in @code{(math 3D-vectors)}, thus preserving modularity. + +Sharing is dynamic, so that adding new methods to a descendant implies +adding it to the ancestor. + +If duplicates checking is desired in the above example, the following +form of the @code{:duplicates} option can be used instead: + +@smalllisp + :duplicates (merge-generics check) +@end smalllisp + +@node Generic Function Internals +@subsection Generic Function Internals + +@code{define-generic} calls @code{ensure-generic} to upgrade a +pre-existing procedure value, or @code{make} with metaclass +@code{} to create a new generic function. + +@code{define-accessor} calls @code{ensure-accessor} to upgrade a +pre-existing procedure value, or @code{make-accessor} to create a new +accessor. + +@deffn procedure ensure-generic old-definition [name] +Return a generic function with name @var{name}, if possible by using or +upgrading @var{old-definition}. If unspecified, @var{name} defaults to +@code{#f}. + +If @var{old-definition} is already a generic function, it is returned +unchanged. + +If @var{old-definition} is a Scheme procedure or procedure-with-setter, +@code{ensure-generic} returns a new generic function that uses +@var{old-definition} for its default procedure and setter. + +Otherwise @code{ensure-generic} returns a new generic function with no +defaults and no methods. +@end deffn + +@deffn procedure make-generic [name] +Return a new generic function with name @code{(car @var{name})}. If +unspecified, @var{name} defaults to @code{#f}. +@end deffn + +@code{ensure-generic} calls @code{make} with metaclasses +@code{} and @code{}, depending on the +previous value of the variable that it is trying to upgrade. + +@code{make-generic} is a simple wrapper for @code{make} with metaclass +@code{}. + +@deffn procedure ensure-accessor proc [name] +Return an accessor with name @var{name}, if possible by using or +upgrading @var{proc}. If unspecified, @var{name} defaults to @code{#f}. + +If @var{proc} is already an accessor, it is returned unchanged. + +If @var{proc} is a Scheme procedure, procedure-with-setter or generic +function, @code{ensure-accessor} returns an accessor that reuses the +reusable elements of @var{proc}. + +Otherwise @code{ensure-accessor} returns a new accessor with no defaults +and no methods. +@end deffn + +@deffn procedure make-accessor [name] +Return a new accessor with name @code{(car @var{name})}. If +unspecified, @var{name} defaults to @code{#f}. +@end deffn + +@code{ensure-accessor} calls @code{make} with +metaclass @code{}, as well as calls to +@code{ensure-generic}, @code{make-accessor} and (tail recursively) +@code{ensure-accessor}. + +@code{make-accessor} calls @code{make} twice, first +with metaclass @code{} to create a generic function for the +setter, then with metaclass @code{} to create the +accessor, passing the setter generic function as the value of the +@code{#:setter} keyword. + +@node Extending Guiles Primitives +@subsection Extending Guile's Primitives + +When GOOPS is loaded, many of Guile's primitive procedures can be +extended by giving them a generic function definition that operates +in conjunction with their normal C-coded implementation. For +primitives that are extended in this way, the result from the user- +or application-level point of view is that the extended primitive +behaves exactly like a generic function with the C-coded implementation +as its default method. + +The @code{generic-capability?} predicate should be used to determine +whether a particular primitive is extensible in this way. + +@deffn {primitive procedure} generic-capability? primitive +Return @code{#t} if @var{primitive} can be extended by giving it a +generic function definition, otherwise @code{#f}. +@end deffn + +Even when a primitive procedure is extensible like this, its generic +function definition is not created until it is needed by a call to +@code{define-method}, or until the application explicitly requests it +by calling @code{enable-primitive-generic!}. + +@deffn {primitive procedure} enable-primitive-generic! primitive +Force the creation of a generic function definition for +@var{primitive}. +@end deffn + +Once the generic function definition for a primitive has been created, +it can be retrieved using @code{primitive-generic-generic}. + +@deffn {primitive procedure} primitive-generic-generic primitive +Return the generic function definition of @var{primitive}. + +@code{primitive-generic-generic} raises an error if @var{primitive} +is not a primitive with generic capability, or if its generic capability +has not yet been enabled, whether implicitly (by @code{define-method}) +or explicitly (by @code{enable-primitive-generic!}). +@end deffn + +Note that the distinction between, on the one hand, primitives with +additional generic function definitions and, on the other hand, generic +functions with a default method, may disappear when GOOPS is fully +integrated into the core of Guile. Consequently, the +procedures described in this section may disappear as well. + +@node Adding Methods to Generic Functions +@section Adding Methods to Generic Functions + +@menu +* Basic Method Definition:: +* Method Definition Internals:: +@end menu + +@node Basic Method Definition +@subsection Basic Method Definition + +To add a method to a generic function, use the @code{define-method} form. + +@deffn syntax define-method (generic parameter @dots{}) . body +Define a method for the generic function or accessor @var{generic} with +parameters @var{parameter}s and body @var{body}. + +@var{generic} is a generic function. If @var{generic} is a variable +which is not yet bound to a generic function object, the expansion of +@code{define-method} will include a call to @code{define-generic}. If +@var{generic} is @code{(setter @var{generic-with-setter})}, where +@var{generic-with-setter} is a variable which is not yet bound to a +generic-with-setter object, the expansion will include a call to +@code{define-accessor}. + +Each @var{parameter} must be either a symbol or a two-element list +@code{(@var{symbol} @var{class})}. The symbols refer to variables in +the @var{body} that will be bound to the parameters supplied by the +caller when calling this method. The @var{class}es, if present, +specify the possible combinations of parameters to which this method +can be applied. + +@var{body} is the body of the method definition. +@end deffn + +@code{define-method} expressions look a little like normal Scheme +procedure definitions of the form + +@example +(define (name formals @dots{}) . body) +@end example + +The most important difference is that each formal parameter, apart from the +possible ``rest'' argument, can be qualified by a class name: +@code{@var{formal}} becomes @code{(@var{formal} @var{class})}. The +meaning of this qualification is that the method being defined +will only be applicable in a particular generic function invocation if +the corresponding argument is an instance of @code{@var{class}} (or one of +its subclasses). If more than one of the formal parameters is qualified +in this way, then the method will only be applicable if each of the +corresponding arguments is an instance of its respective qualifying class. + +Note that unqualified formal parameters act as though they are qualified +by the class @code{}, which GOOPS uses to mean the superclass of +all valid Scheme types, including both primitive types and GOOPS classes. + +For example, if a generic function method is defined with +@var{parameter}s @code{((s1 ) (n ))}, that method is +only applicable to invocations of its generic function that have two +parameters where the first parameter is an instance of the +@code{} class and the second parameter is a number. + +If a generic function is invoked with a combination of parameters for which +there is no applicable method, GOOPS raises an error. For more about +invocation error handling, and generic function invocation in general, +see @ref{Invoking Generic Functions}. + +@node Method Definition Internals +@subsection Method Definition Internals + +@code{define-method} + +@itemize @bullet +@item +checks the form of the first parameter, and applies the following steps +to the accessor's setter if it has the @code{(setter @dots{})} form + +@item +interpolates a call to @code{define-generic} or @code{define-accessor} +if a generic function is not already defined with the supplied name + +@item +calls @code{method} with the @var{parameter}s and @var{body}, to make a +new method instance + +@item +calls @code{add-method!} to add this method to the relevant generic +function. +@end itemize + +@deffn syntax method (parameter @dots{}) . body +Make a method whose specializers are defined by the classes in +@var{parameter}s and whose procedure definition is constructed from the +@var{parameter} symbols and @var{body} forms. + +The @var{parameter} and @var{body} parameters should be as for +@code{define-method} (@pxref{Basic Method Definition,, define-method}). +@end deffn + +@code{method} + +@itemize @bullet +@item +extracts formals and specializing classes from the @var{parameter}s, +defaulting the class for unspecialized parameters to @code{} + +@item +creates a closure using the formals and the @var{body} forms + +@item +calls @code{make} with metaclass @code{} and the specializers +and closure using the @code{#:specializers} and @code{#:procedure} +keywords. +@end itemize + +@deffn procedure make-method specializers procedure +Make a method using @var{specializers} and @var{procedure}. + +@var{specializers} should be a list of classes that specifies the +parameter combinations to which this method will be applicable. + +@var{procedure} should be the closure that will applied to the generic +function parameters when this method is invoked. +@end deffn + +@code{make-method} is a simple wrapper around @code{make} with metaclass +@code{}. + +@deffn generic add-method! target method +Generic function for adding method @var{method} to @var{target}. +@end deffn + +@deffn method add-method! (generic ) (method ) +Add method @var{method} to the generic function @var{generic}. +@end deffn + +@deffn method add-method! (proc ) (method ) +If @var{proc} is a procedure with generic capability (@pxref{Extending +Guiles Primitives,, generic-capability?}), upgrade it to a +primitive generic and add @var{method} to its generic function +definition. +@end deffn + +@deffn method add-method! (pg ) (method ) +Add method @var{method} to the generic function definition of @var{pg}. + +Implementation: @code{(add-method! (primitive-generic-generic pg) method)}. +@end deffn + +@deffn method add-method! (whatever ) (method ) +Raise an error indicating that @var{whatever} is not a valid generic +function. +@end deffn + +@node Invoking Generic Functions +@section Invoking Generic Functions + +When a variable with a generic function definition appears as the first +element of a list that is being evaluated, the Guile evaluator tries +to apply the generic function to the arguments obtained by evaluating +the remaining elements of the list. [ *fixme* How do I put this in a +more Schemely and less Lispy way? ] + +Usually a generic function contains several method definitions, with +varying degrees of formal parameter specialization (@pxref{Basic +Method Definition,, define-method}). So it is necessary to sort these +methods by specificity with respect to the supplied arguments, and then +apply the most specific method definition. Less specific methods +may be applied subsequently if a method that is being applied calls +@code{next-method}. + +@menu +* Determining Which Methods to Apply:: +* Handling Invocation Errors:: +@end menu + +@node Determining Which Methods to Apply +@subsection Determining Which Methods to Apply + +[ *fixme* Sorry - this is the area of GOOPS that I understand least of +all, so I'm afraid I have to pass on this section. Would some other +kind person consider filling it in? ] + +@deffn generic apply-generic +@deffnx method apply-generic (gf ) args +@end deffn + +@deffn generic compute-applicable-methods +@deffnx method compute-applicable-methods (gf ) args +@end deffn + +@deffn generic sort-applicable-methods +@deffnx method sort-applicable-methods (gf ) methods args +@end deffn + +@deffn generic method-more-specific? +@deffnx method method-more-specific? (m1 ) (m2 ) args +@end deffn + +@deffn generic apply-method +@deffnx method apply-method (gf ) methods build-next args +@end deffn + +@deffn generic apply-methods +@deffnx method apply-methods (gf ) (l ) args +@end deffn + +@node Handling Invocation Errors +@subsection Handling Invocation Errors + +@deffn generic no-method +@deffnx method no-method (gf ) args +When an application invokes a generic function, and no methods at all +have been defined for that generic function, GOOPS calls the +@code{no-method} generic function. The default method calls +@code{goops-error} with an appropriate message. +@end deffn + +@deffn generic no-applicable-method +@deffnx method no-applicable-method (gf ) args +When an application applies a generic function to a set of arguments, +and no methods have been defined for those argument types, GOOPS calls +the @code{no-applicable-method} generic function. The default method +calls @code{goops-error} with an appropriate message. +@end deffn + +@deffn generic no-next-method +@deffnx method no-next-method (gf ) args +When a generic function method calls @code{(next-method)} to invoke the +next less specialized method for that generic function, and no less +specialized methods have been defined for the current generic function +arguments, GOOPS calls the @code{no-next-method} generic function. The +default method calls @code{goops-error} with an appropriate message. +@end deffn + +@node Redefining a Class +@section Redefining a Class + +Suppose that a class @code{} is defined using @code{define-class} +(@pxref{Basic Class Definition,, define-class}), with slots that have +accessor functions, and that an application has created several instances +of @code{} using @code{make} (@pxref{Basic Instance Creation,, +make}). What then happens if @code{} is redefined by calling +@code{define-class} again? + +@menu +* Default Class Redefinition Behaviour:: +* Customizing Class Redefinition:: +@end menu + +@node Default Class Redefinition Behaviour +@subsection Default Class Redefinition Behaviour + +GOOPS' default answer to this question is as follows. + +@itemize @bullet +@item +All existing direct instances of @code{} are converted to be +instances of the new class. This is achieved by preserving the values +of slots that exist in both the old and new definitions, and initializing the +values of new slots in the usual way (@pxref{Basic Instance Creation,, +make}). + +@item +All existing subclasses of @code{} are redefined, as though +the @code{define-class} expressions that defined them were re-evaluated +following the redefinition of @code{}, and the class +redefinition process described here is applied recursively to the +redefined subclasses. + +@item +Once all of its instances and subclasses have been updated, the class +metaobject previously bound to the variable @code{} is no +longer needed and so can be allowed to be garbage collected. +@end itemize + +To keep things tidy, GOOPS also needs to do a little housekeeping on +methods that are associated with the redefined class. + +@itemize @bullet +@item +Slot accessor methods for slots in the old definition should be removed +from their generic functions. They will be replaced by accessor methods +for the slots of the new class definition. + +@item +Any generic function method that uses the old @code{} metaobject +as one of its formal parameter specializers must be updated to refer to +the new @code{} metaobject. (Whenever a new generic function +method is defined, @code{define-method} adds the method to a list stored +in the class metaobject for each class used as a formal parameter +specializer, so it is easy to identify all the methods that must be +updated when a class is redefined.) +@end itemize + +If this class redefinition strategy strikes you as rather counter-intuitive, +bear in mind that it is derived from similar behaviour in other object +systems such as CLOS, and that experience in those systems has shown it to be +very useful in practice. + +Also bear in mind that, like most of GOOPS' default behaviour, it can +be customized@dots{} + +@node Customizing Class Redefinition +@subsection Customizing Class Redefinition + +When @code{define-class} notices that a class is being redefined, +it constructs the new class metaobject as usual, and then invokes the +@code{class-redefinition} generic function with the old and new classes +as arguments. Therefore, if the old or new classes have metaclasses +other than the default @code{}, class redefinition behaviour can +be customized by defining a @code{class-redefinition} method that is +specialized for the relevant metaclasses. + +@deffn generic class-redefinition +Handle the class redefinition from @var{old-class} to @var{new-class}, +and return the new class metaobject that should be bound to the +variable specified by @code{define-class}'s first argument. +@end deffn + +@deffn method class-redefinition (old-class ) (new-class ) +Implements GOOPS' default class redefinition behaviour, as described in +@ref{Default Class Redefinition Behaviour}. Returns the metaobject +for the new class definition. +@end deffn + +An alternative class redefinition strategy could be to leave all +existing instances as instances of the old class, but accepting that the +old class is now ``nameless'', since its name has been taken over by the +new definition. In this strategy, any existing subclasses could also +be left as they are, on the understanding that they inherit from a nameless +superclass. + +This strategy is easily implemented in GOOPS, by defining a new metaclass, +that will be used as the metaclass for all classes to which the strategy +should apply, and then defining a @code{class-redefinition} method that +is specialized for this metaclass: + +@example +(define-class ()) + +(define-method (class-redefinition (old ) (new )) + new) +@end example + +When customization can be as easy as this, aren't you glad that GOOPS +implements the far more difficult strategy as its default! + +Finally, note that, if @code{class-redefinition} itself is not customized, +the default @code{class-redefinition} method invokes three further +generic functions that could be individually customized: + +@itemize @bullet +@item +(remove-class-accessors! @var{old-class}) + +@item +(update-direct-method! @var{method} @var{old-class} @var{new-class}) + +@item +(update-direct-subclass! @var{subclass} @var{old-class} @var{new-class}) +@end itemize + +and the default methods for these generic functions invoke further +generic functions, and so on@dots{} The detailed protocol for all of these +is described in @ref{MOP Specification}. + +@node Changing the Class of an Instance +@section Changing the Class of an Instance + +You can change the class of an existing instance by invoking the +generic function @code{change-class} with two arguments: the instance +and the new class. + +@deffn generic change-class +@end deffn + +The default method for @code{change-class} decides how to implement the +change of class by looking at the slot definitions for the instance's +existing class and for the new class. If the new class has slots with +the same name as slots in the existing class, the values for those slots +are preserved. Slots that are present only in the existing class are +discarded. Slots that are present only in the new class are initialized +using the corresponding slot definition's init function (@pxref{Classes,, +slot-init-function}). + +@deffn {method} change-class (obj ) (new ) +Modify instance @var{obj} to make it an instance of class @var{new}. + +The value of each of @var{obj}'s slots is preserved only if a similarly named +slot exists in @var{new}; any other slot values are discarded. + +The slots in @var{new} that do not correspond to any of @var{obj}'s +pre-existing slots are initialized according to @var{new}'s slot definitions' +init functions. +@end deffn + +Customized change of class behaviour can be implemented by defining +@code{change-class} methods that are specialized either by the class +of the instances to be modified or by the metaclass of the new class. + +When a class is redefined (@pxref{Redefining a Class}), and the default +class redefinition behaviour is not overridden, GOOPS (eventually) +invokes the @code{change-class} generic function for each existing +instance of the redefined class. + +@node Introspection +@section Introspection + +@dfn{Introspection}, also known as @dfn{reflection}, is the name given +to the ability to obtain information dynamically about GOOPS metaobjects. +It is perhaps best illustrated by considering an object oriented language +that does not provide any introspection, namely C++. + +Nothing in C++ allows a running program to obtain answers to the following +types of question: + +@itemize @bullet +@item +What are the data members of this object or class? + +@item +What classes does this class inherit from? + +@item +Is this method call virtual or non-virtual? + +@item +If I invoke @code{Employee::adjustHoliday()}, what class contains the +@code{adjustHoliday()} method that will be applied? +@end itemize + +In C++, answers to such questions can only be determined by looking at +the source code, if you have access to it. GOOPS, on the other hand, +includes procedures that allow answers to these questions --- or their +GOOPS equivalents --- to be obtained dynamically, at run time. + +@menu +* Classes:: +* Slots:: +* Instances:: +* Generic Functions:: +* Generic Function Methods:: +@end menu + +@node Classes +@subsection Classes + +@deffn {primitive procedure} class-name class +Return the name of class @var{class}. +This is the value of the @var{class} metaobject's @code{name} slot. +@end deffn + +@deffn {primitive procedure} class-direct-supers class +Return a list containing the direct superclasses of @var{class}. +This is the value of the @var{class} metaobject's +@code{direct-supers} slot. +@end deffn + +@deffn {primitive procedure} class-direct-slots class +Return a list containing the slot definitions of the direct slots of +@var{class}. +This is the value of the @var{class} metaobject's @code{direct-slots} +slot. +@end deffn + +@deffn {primitive procedure} class-direct-subclasses class +Return a list containing the direct subclasses of @var{class}. +This is the value of the @var{class} metaobject's +@code{direct-subclasses} slot. +@end deffn + +@deffn {primitive procedure} class-direct-methods class +Return a list of all the generic function methods that use @var{class} +as a formal parameter specializer. +This is the value of the @var{class} metaobject's @code{direct-methods} +slot. +@end deffn + +@deffn {primitive procedure} class-precedence-list class +Return the class precedence list for class @var{class} (@pxref{Class +precedence list}). +This is the value of the @var{class} metaobject's @code{cpl} slot. +@end deffn + +@deffn {primitive procedure} class-slots class +Return a list containing the slot definitions for all @var{class}'s slots, +including any slots that are inherited from superclasses. +This is the value of the @var{class} metaobject's @code{slots} slot. +@end deffn + +@deffn {primitive procedure} class-environment class +Return the value of @var{class}'s @code{environment} slot. +[ *fixme* I don't know what this value is used for. ] +@end deffn + +@deffn procedure class-subclasses class +Return a list of all subclasses of @var{class}. +@end deffn + +@deffn procedure class-methods class +Return a list of all methods that use @var{class} or a subclass of +@var{class} as one of its formal parameter specializers. +@end deffn + +@node Slots +@subsection Slots + +@deffn procedure class-slot-definition class slot-name +Return the slot definition for the slot named @var{slot-name} in class +@var{class}. @var{slot-name} should be a symbol. +@end deffn + +@deffn procedure slot-definition-name slot-def +Extract and return the slot name from @var{slot-def}. +@end deffn + +@deffn procedure slot-definition-options slot-def +Extract and return the slot options from @var{slot-def}. +@end deffn + +@deffn procedure slot-definition-allocation slot-def +Extract and return the slot allocation option from @var{slot-def}. This +is the value of the @code{#:allocation} keyword (@pxref{Slot Options,, +allocation}), or @code{#:instance} if the @code{#:allocation} keyword is +absent. +@end deffn + +@deffn procedure slot-definition-getter slot-def +Extract and return the slot getter option from @var{slot-def}. This is +the value of the @code{#:getter} keyword (@pxref{Slot Options,, +getter}), or @code{#f} if the @code{#:getter} keyword is absent. +@end deffn + +@deffn procedure slot-definition-setter slot-def +Extract and return the slot setter option from @var{slot-def}. This is +the value of the @code{#:setter} keyword (@pxref{Slot Options,, +setter}), or @code{#f} if the @code{#:setter} keyword is absent. +@end deffn + +@deffn procedure slot-definition-accessor slot-def +Extract and return the slot accessor option from @var{slot-def}. This +is the value of the @code{#:accessor} keyword (@pxref{Slot Options,, +accessor}), or @code{#f} if the @code{#:accessor} keyword is absent. +@end deffn + +@deffn procedure slot-definition-init-value slot-def +Extract and return the slot init-value option from @var{slot-def}. This +is the value of the @code{#:init-value} keyword (@pxref{Slot Options,, +init-value}), or the unbound value if the @code{#:init-value} keyword is +absent. +@end deffn + +@deffn procedure slot-definition-init-form slot-def +Extract and return the slot init-form option from @var{slot-def}. This +is the value of the @code{#:init-form} keyword (@pxref{Slot Options,, +init-form}), or the unbound value if the @code{#:init-form} keyword is +absent. +@end deffn + +@deffn procedure slot-definition-init-thunk slot-def +Extract and return the slot init-thunk option from @var{slot-def}. This +is the value of the @code{#:init-thunk} keyword (@pxref{Slot Options,, +init-thunk}), or @code{#f} if the @code{#:init-thunk} keyword is absent. +@end deffn + +@deffn procedure slot-definition-init-keyword slot-def +Extract and return the slot init-keyword option from @var{slot-def}. +This is the value of the @code{#:init-keyword} keyword (@pxref{Slot +Options,, init-keyword}), or @code{#f} if the @code{#:init-keyword} +keyword is absent. +@end deffn + +@deffn procedure slot-init-function class slot-name +Return the initialization function for the slot named @var{slot-name} in +class @var{class}. @var{slot-name} should be a symbol. + +The returned initialization function incorporates the effects of the +standard @code{#:init-thunk}, @code{#:init-form} and @code{#:init-value} +slot options. These initializations can be overridden by the +@code{#:init-keyword} slot option or by a specialized @code{initialize} +method, so, in general, the function returned by +@code{slot-init-function} may be irrelevant. For a fuller discussion, +see @ref{Slot Options,, init-value}. +@end deffn + +@node Instances +@subsection Instances + +@deffn {primitive procedure} class-of value +Return the GOOPS class of any Scheme @var{value}. +@end deffn + +@deffn {primitive procedure} instance? object +Return @code{#t} if @var{object} is any GOOPS instance, otherwise +@code{#f}. +@end deffn + +@deffn procedure is-a? object class +Return @code{#t} if @var{object} is an instance of @var{class} or one of +its subclasses. +@end deffn + +Implementation notes: @code{is-a?} uses @code{class-of} and +@code{class-precedence-list} to obtain the class precedence list for +@var{object}. + +@node Generic Functions +@subsection Generic Functions + +@deffn {primitive procedure} generic-function-name gf +Return the name of generic function @var{gf}. +@end deffn + +@deffn {primitive procedure} generic-function-methods gf +Return a list of the methods of generic function @var{gf}. +This is the value of the @var{gf} metaobject's @code{methods} slot. +@end deffn + +@node Generic Function Methods +@subsection Generic Function Methods + +@deffn {primitive procedure} method-generic-function method +Return the generic function that @var{method} belongs to. +This is the value of the @var{method} metaobject's +@code{generic-function} slot. +@end deffn + +@deffn {primitive procedure} method-specializers method +Return a list of @var{method}'s formal parameter specializers . +This is the value of the @var{method} metaobject's +@code{specializers} slot. +@end deffn + +@deffn {primitive procedure} method-procedure method +Return the procedure that implements @var{method}. +This is the value of the @var{method} metaobject's +@code{procedure} slot. +@end deffn + +@deffn generic method-source +@deffnx method method-source (m ) +Return an expression that prints to show the definition of method +@var{m}. + +@example +(define-generic cube) + +(define-method (cube (n )) + (* n n n)) + +(map method-source (generic-function-methods cube)) +@result{} +((method ((n )) (* n n n))) +@end example +@end deffn + +@node Miscellaneous Functions +@section Miscellaneous Functions + +@menu +* Administrative Functions:: +* Error Handling:: +* Object Comparisons:: +* Cloning Objects:: +* Write and Display:: +@end menu + +@node Administrative Functions +@subsection Administration Functions + +This section describes administrative, non-technical GOOPS functions. + +@deffn primitive goops-version +Return the current GOOPS version as a string, for example ``0.2''. +@end deffn + +@node Error Handling +@subsection Error Handling + +The procedure @code{goops-error} is called to raise an appropriate error +by the default methods of the following generic functions: + +@itemize @bullet +@item +@code{slot-missing} (@pxref{Handling Slot Access Errors,, slot-missing}) + +@item +@code{slot-unbound} (@pxref{Handling Slot Access Errors,, slot-unbound}) + +@item +@code{no-method} (@pxref{Handling Invocation Errors,, no-method}) + +@item +@code{no-applicable-method} (@pxref{Handling Invocation Errors,, +no-applicable-method}) + +@item +@code{no-next-method} (@pxref{Handling Invocation Errors,, +no-next-method}) +@end itemize + +If you customize these functions for particular classes or metaclasses, +you may still want to use @code{goops-error} to signal any error +conditions that you detect. + +@deffn procedure goops-error format-string . args +Raise an error with key @code{goops-error} and error message constructed +from @var{format-string} and @var{args}. Error message formatting is +as done by @code{scm-error}. +@end deffn + +@node Object Comparisons +@subsection Object Comparisons + +@deffn generic eqv? +@deffnx method eqv? ((x ) (y )) +@deffnx generic equal? +@deffnx method equal? ((x ) (y )) +@deffnx generic = +@deffnx method = ((x ) (y )) +Generic functions and default (unspecialized) methods for comparing two +GOOPS objects. + +The default method for @code{eqv?} returns @code{#t} for all values +that are equal in the sense defined by R5RS and the Guile reference +manual, otherwise @code{#f}. The default method for @code{equal?} +returns @code{#t} or @code{#f} in the sense defined by R5RS and the +Guile reference manual. If no such comparison is defined, +@code{equal?} returns the result of a call to @code{eqv?}. The +default method for = returns @code{#t} if @var{x} and @var{y} are +numerically equal, otherwise @code{#f}. + +Application class authors may wish to define specialized methods for +@code{eqv?}, @code{equal?} and @code{=} that compare instances of the +same class for equality in whatever sense is useful to the +application. Such methods will only be called if the arguments have +the same class and the result of the comparison isn't defined by R5RS +and the Guile reference manual. +@end deffn + +@node Cloning Objects +@subsection Cloning Objects + +@deffn generic shallow-clone +@deffnx method shallow-clone (self ) +Return a ``shallow'' clone of @var{self}. The default method makes a +shallow clone by allocating a new instance and copying slot values from +self to the new instance. Each slot value is copied either as an +immediate value or by reference. +@end deffn + +@deffn generic deep-clone +@deffnx method deep-clone (self ) +Return a ``deep'' clone of @var{self}. The default method makes a deep +clone by allocating a new instance and copying or cloning slot values +from self to the new instance. If a slot value is an instance +(satisfies @code{instance?}), it is cloned by calling @code{deep-clone} +on that value. Other slot values are copied either as immediate values +or by reference. +@end deffn + +@node Write and Display +@subsection Write and Display + +@deffn {primitive generic} write object port +@deffnx {primitive generic} display object port +When GOOPS is loaded, @code{write} and @code{display} become generic +functions with special methods for printing + +@itemize @bullet +@item +objects - instances of the class @code{} + +@item +foreign objects - instances of the class @code{} + +@item +classes - instances of the class @code{} + +@item +generic functions - instances of the class @code{} + +@item +methods - instances of the class @code{}. +@end itemize + +@code{write} and @code{display} print non-GOOPS values in the same way +as the Guile primitive @code{write} and @code{display} functions. +@end deffn + +@node MOP Specification, Tutorial, Reference Manual, Top +@chapter MOP Specification + +For an introduction to metaobjects and the metaobject protocol, +see @ref{Metaobjects and the Metaobject Protocol}. + +The aim of the MOP specification in this chapter is to specify all the +customizable generic function invocations that can be made by the standard +GOOPS syntax, procedures and methods, and to explain the protocol for +customizing such invocations. + +A generic function invocation is customizable if the types of the arguments +to which it is applied are not all determined by the lexical context in +which the invocation appears. For example, + +@itemize @bullet +@item +the @code{(initialize @var{instance} @var{initargs})} invocation in the +default @code{make-instance} method is customizable, because the type of the +@code{@var{instance}} argument is determined by the class that was passed to +@code{make-instance}. + +@item +the @code{(make #:name ',name)} invocation in @code{define-generic} +is not customizable, because all of its arguments have lexically determined +types. +@end itemize + +When using this rule to decide whether a given generic function invocation +is customizable, we ignore arguments that are expected to be handled in +method definitions as a single ``rest'' list argument. + +For each customizable generic function invocation, the @dfn{invocation +protocol} is explained by specifying + +@itemize @bullet +@item +what, conceptually, the applied method is intended to do + +@item +what assumptions, if any, the caller makes about the applied method's side +effects + +@item +what the caller expects to get as the applied method's return value. +@end itemize + +@menu +* Class Definition:: +* Instance Creation:: +* Class Redefinition:: +* Method Definition:: +* Generic Function Invocation:: +@end menu + +@node Class Definition +@section Class Definition + +@code{define-class} (syntax) + +@itemize @bullet +@item +@code{class} (syntax) + +@itemize @bullet +@item +@code{make-class} (procedure) + +@itemize @bullet +@item +@code{make @var{metaclass} @dots{}} (generic) + +@var{metaclass} is the metaclass of the class being defined, either +taken from the @code{#:metaclass} class option or computed by +@code{ensure-metaclass}. The applied method must create and return the +fully initialized class metaobject for the new class definition. +@end itemize + +@end itemize + +@item +@code{class-redefinition @var{old-class} @var{new-class}} (generic) + +@code{define-class} calls @code{class-redefinition} if the variable +specified by its first argument already held a GOOPS class definition. +@var{old-class} and @var{new-class} are the old and new class metaobjects. +The applied method should perform whatever is necessary to handle the +redefinition, and should return the class metaobject that is to be bound +to @code{define-class}'s variable. The default class redefinition +protocol is described in @ref{Class Redefinition}. +@end itemize + +The @code{(make @var{metaclass} @dots{})} invocation above will create +an class metaobject with metaclass @var{metaclass}. By default, this +metaobject will be initialized by the @code{initialize} method that is +specialized for instances of type @code{}. + +@code{initialize @var{initargs}} (method) + +@itemize @bullet +@item +@code{compute-cpl @var{class}} (generic) + +The applied method should compute and return the class precedence list +for @var{class} as a list of class metaobjects. When @code{compute-cpl} +is called, the following @var{class} metaobject slots have all been +initialized: @code{name}, @code{direct-supers}, @code{direct-slots}, +@code{direct-subclasses} (empty), @code{direct-methods}. The value +returned by @code{compute-cpl} will be stored in the @code{cpl} slot. + +@item +@code{compute-slots @var{class}} (generic) + +The applied method should compute and return the slots (union of direct +and inherited) for @var{class} as a list of slot definitions. When +@code{compute-slots} is called, all the @var{class} metaobject slots +mentioned for @code{compute-cpl} have been initialized, plus the +following: @code{cpl}, @code{redefined} (@code{#f}), @code{environment}. +The value returned by @code{compute-slots} will be stored in the +@code{slots} slot. + +@item +@code{compute-get-n-set @var{class} @var{slot-def}} (generic) + +@code{initialize} calls @code{compute-get-n-set} for each slot computed +by @code{compute-slots}. The applied method should compute and return a +pair of closures that, respectively, get and set the value of the specified +slot. The get closure should have arity 1 and expect a single argument +that is the instance whose slot value is to be retrieved. The set closure +should have arity 2 and expect two arguments, where the first argument is +the instance whose slot value is to be set and the second argument is the +new value for that slot. The closures should be returned in a two element +list: @code{(list @var{get} @var{set})}. + +The closures returned by @code{compute-get-n-set} are stored as part of +the value of the @var{class} metaobject's @code{getters-n-setters} slot. +Specifically, the value of this slot is a list with the same number of +elements as there are slots in the class, and each element looks either like + +@example +@code{(@var{slot-name-symbol} @var{init-function} . @var{index})} +@end example + +or like + +@example +@code{(@var{slot-name-symbol} @var{init-function} @var{get} @var{set})} +@end example + +Where the get and set closures are replaced by @var{index}, the slot is +an instance slot and @var{index} is the slot's index in the underlying +structure: GOOPS knows how to get and set the value of such slots and so +does not need specially constructed get and set closures. Otherwise, +@var{get} and @var{set} are the closures returned by @code{compute-get-n-set}. + +The structure of the @code{getters-n-setters} slot value is important when +understanding the next customizable generic functions that @code{initialize} +calls@dots{} + +@item +@code{compute-getter-method @var{class} @var{gns}} (generic) + +@code{initialize} calls @code{compute-getter-method} for each of the class's +slots (as determined by @code{compute-slots}) that includes a +@code{#:getter} or @code{#:accessor} slot option. @var{gns} is the +element of the @var{class} metaobject's @code{getters-n-setters} slot that +specifies how the slot in question is referenced and set, as described +above under @code{compute-get-n-set}. The applied method should create +and return a method that is specialized for instances of type @var{class} +and uses the get closure to retrieve the slot's value. [ *fixme Need +to insert something here about checking that the value is not unbound. ] +@code{initialize} uses @code{add-method!} to add the returned method to +the generic function named by the slot definition's @code{#:getter} or +@code{#:accessor} option. + +@item +@code{compute-setter-method @var{class} @var{gns}} (generic) + +@code{compute-setter-method} is invoked with the same arguments as +@code{compute-getter-method}, for each of the class's slots that includes +a @code{#:setter} or @code{#:accessor} slot option. The applied method +should create and return a method that is specialized for instances of +type @var{class} and uses the set closure to set the slot's value. +@code{initialize} then uses @code{add-method!} to add the returned method +to the generic function named by the slot definition's @code{#:setter} +or @code{#:accessor} option. +@end itemize + +@node Instance Creation +@section Instance Creation + +@code{make . @var{initargs}} (method) + +@itemize @bullet +@item +@code{allocate-instance @var{class} @var{initargs}} (generic) + +The applied @code{allocate-instance} method should allocate storage for +a new instance of class @var{class} and return the uninitialized instance. + +@item +@code{initialize @var{instance} @var{initargs}} (generic) + +@var{instance} is the uninitialized instance returned by +@code{allocate-instance}. The applied method should initialize the new +instance in whatever sense is appropriate for its class. The method's +return value is ignored. +@end itemize + +@node Class Redefinition +@section Class Redefinition + +The default @code{class-redefinition} method, specialized for classes +with the default metaclass @code{}, has the following internal +protocol. + +@code{class-redefinition @var{(old )} @var{(new )}} +(method) + +@itemize @bullet +@item +@code{remove-class-accessors! @var{old}} (generic) + +@item +@code{update-direct-method! @var{method} @var{old} @var{new}} (generic) + +@item +@code{update-direct-subclass! @var{subclass} @var{old} @var{new}} (generic) +@end itemize + +This protocol cleans up things that the definition of the old class +once changed and modifies things to work with the new class. + +The default @code{remove-class-accessors!} method removes the +accessor methods of the old class from all classes which they +specialize. + +The default @code{update-direct-method!} method substitutes the new +class for the old in all methods specialized to the old class. + +The default @code{update-direct-subclass!} method invokes +@code{class-redefinition} recursively to handle the redefinition of +subclasses. + +When a class is redefined, any existing instance of the redefined class +will be modified for the new class definition before the next time that +any of the instance's slot is referenced or set. GOOPS modifies each +instance by calling the generic function @code{change-class}. + +The default @code{change-class} method copies slot values from the old +to the modified instance, and initializes new slots, as described in +@ref{Changing the Class of an Instance}. After doing so, it makes a +generic function invocation that can be used to customize the instance +update algorithm. + +@code{change-class @var{(old-instance )} @var{(new )}} (method) + +@itemize @bullet +@item +@code{update-instance-for-different-class @var{old-instance} @var{new-instance}} (generic) + +@code{change-class} invokes @code{update-instance-for-different-class} +as the last thing that it does before returning. The applied method can +make any further adjustments to @var{new-instance} that are required to +complete or modify the change of class. The return value from the +applied method is ignored. + +The default @code{update-instance-for-different-class} method does +nothing. +@end itemize + +@node Method Definition +@section Method Definition + +@code{define-method} (syntax) + +@itemize @bullet +@item +@code{add-method! @var{target} @var{method}} (generic) + +@code{define-method} invokes the @code{add-method!} generic function to +handle adding the new method to a variety of possible targets. GOOPS +includes methods to handle @var{target} as + +@itemize @bullet +@item +a generic function (the most common case) + +@item +a procedure + +@item +a primitive generic (@pxref{Extending Guiles Primitives}) +@end itemize + +By defining further methods for @code{add-method!}, you can +theoretically handle adding methods to further types of target. +@end itemize + +@node Generic Function Invocation +@section Generic Function Invocation + +[ *fixme* Description required here. ] + +@code{apply-generic} + +@itemize @bullet +@item +@code{no-method} + +@item +@code{compute-applicable-methods} + +@item +@code{sort-applicable-methods} + +@item +@code{apply-methods} + +@item +@code{no-applicable-method} +@end itemize + +@code{sort-applicable-methods} + +@itemize @bullet +@item +@code{method-more-specific?} +@end itemize + +@code{apply-methods} + +@itemize @bullet +@item +@code{apply-method} +@end itemize + +@code{next-method} + +@itemize @bullet +@item +@code{no-next-method} +@end itemize + +@node Tutorial, Concept Index, MOP Specification, Top +@chapter Tutorial +@include goops-tutorial.texi + +@node Concept Index, Function and Variable Index, Tutorial, Top +@unnumberedsec Concept Index + +@printindex cp + +@node Function and Variable Index, , Concept Index, Top +@unnumberedsec Function and Variable Index + +@printindex fn + +@summarycontents +@contents +@bye diff --git a/guile18/doc/goops/hierarchy.eps b/guile18/doc/goops/hierarchy.eps new file mode 100644 index 0000000000..7b1a98605b --- /dev/null +++ b/guile18/doc/goops/hierarchy.eps @@ -0,0 +1,127 @@ +%!PS-Adobe-2.0 EPSF +%%Title: /tmp/xfig-fig016295 +%%Creator: fig2dev +%%CreationDate: Fri Jun 10 23:18:16 1994 +%%For: eg@kaolin (Erick Gallesio) +%%BoundingBox: 0 0 361 217 +%%Pages: 0 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +0 setlinecap 0 setlinejoin +-216.0 288.0 translate 0.900 -0.900 scale +0.500 setlinewidth +n 309 159 m 309 159 l gs col-1 s gr +n 246.401 216.889 m 244.000 209.000 l 249.831 214.831 l gs 2 setlinejoin col-1 s gr +% Polyline +n 244 209 m 274 259 l gs col-1 s gr +n 298.169 214.831 m 304.000 209.000 l 301.599 216.889 l gs 2 setlinejoin col-1 s gr +% Polyline +n 304 209 m 274 259 l gs col-1 s gr +n 255.721 213.778 m 249.000 209.000 l 257.179 210.053 l gs 2 setlinejoin col-1 s gr +% Polyline +n 249 209 m 364 254 l gs col-1 s gr +n 370.312 216.376 m 374.000 209.000 l 374.217 217.243 l gs 2 setlinejoin col-1 s gr +% Polyline +n 374 209 m 364 254 l gs col-1 s gr +n 283.772 280.725 m 279.000 274.000 l 286.376 277.688 l gs 2 setlinejoin col-1 s gr +% Polyline +n 279 274 m 314 304 l gs col-1 s gr +n 351.457 272.333 m 359.000 269.000 l 353.913 275.490 l gs 2 setlinejoin col-1 s gr +% Polyline +n 359 269 m 314 304 l gs col-1 s gr +n 300.950 165.789 m 309.000 164.000 l 302.739 169.367 l gs 2 setlinejoin col-1 s gr +% Polyline +n 309 164 m 249 194 l gs col-1 s gr +n 307.000 172.000 m 309.000 164.000 l 311.000 172.000 l gs 2 setlinejoin col-1 s gr +% Polyline +n 309 164 m 309 199 l gs col-1 s gr +n 315.261 169.367 m 309.000 164.000 l 317.050 165.789 l gs 2 setlinejoin col-1 s gr +% Polyline +n 309 164 m 379 199 l gs col-1 s gr +n 406.949 101.701 m 404.000 94.000 l 410.226 99.407 l gs 2 setlinejoin col-1 s gr +% Polyline +n 404 94 m 439 144 l gs col-1 s gr +n 410.363 99.245 m 404.000 94.000 l 412.083 95.634 l gs 2 setlinejoin col-1 s gr +% Polyline +n 404 94 m 509 144 l gs col-1 s gr +n 411.173 98.068 m 404.000 94.000 l 412.243 94.214 l gs 2 setlinejoin col-1 s gr +% Polyline +n 404 94 m 584 144 l gs col-1 s gr +n 396.075 96.277 m 404.000 94.000 l 398.079 99.739 l gs 2 setlinejoin col-1 s gr +% Polyline +n 404 94 m 309 149 l gs col-1 s gr +% Polyline +n 584 229 m 584 204 l gs col-1 s gr +n 582.000 212.000 m 584.000 204.000 l 586.000 212.000 l gs 2 setlinejoin col-1 s gr +% Polyline +n 584 189 m 584 159 l gs col-1 s gr +n 582.000 167.000 m 584.000 159.000 l 586.000 167.000 l gs 2 setlinejoin col-1 s gr +/Times-Bold findfont 12.00 scalefont setfont +239 209 m +gs 1 -1 scale (A) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +274 274 m +gs 1 -1 scale (D) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +359 269 m +gs 1 -1 scale (E) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +304 209 m +gs 1 -1 scale (B) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +374 209 m +gs 1 -1 scale (C) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +314 319 m +gs 1 -1 scale (F) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +289 159 m +gs 1 -1 scale () col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +389 89 m +gs 1 -1 scale () col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +424 154 m +gs 1 -1 scale () col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +474 154 m +gs 1 -1 scale () col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +559 154 m +gs 1 -1 scale () col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +629 154 m +gs 1 -1 scale (...) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +569 199 m +gs 1 -1 scale () col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +559 239 m +gs 1 -1 scale () col-1 show gr +$F2psEnd diff --git a/guile18/doc/goops/hierarchy.pdf b/guile18/doc/goops/hierarchy.pdf new file mode 100644 index 0000000000..3a19ba4eb4 --- /dev/null +++ b/guile18/doc/goops/hierarchy.pdf @@ -0,0 +1,74 @@ +%PDF-1.3 +%Ç쏢 +5 0 obj +<> +stream +xœm”Ën1 E÷ú +-íÅ°¢(êš6-Ð][ï‚.Ç Äy¸)úû½Ò¼ÛÀ‘wŽ(Šä«uÄÖÕgø_o͇ÉÞý1Ôþ3l_Môl9„b·óë£ùi¼}0š(:U[|†[¢-¥:s¦"V!’zirù €ÒE«û/Nú-À#K5n[ŒœÑ{ âÀr¶E#¼™]±%—w ‚­af€J˜Aœ<#ž"§ªðn ¯‰J=u ŒïFÚ$9Á“"T‚ZQAn*P”mજH²XɎ²+sºd"ñstÎ 1¼¾sUÁ.a©-<ç•pSÁ9Chፒcž†L’eÉ8ÙtÓ®*4"w!çJi¢MŠ–ff™iÑ Ôâßs¢”Þz‚Ð^]žï1&¤dÞô=©¬E8{Ç^x¬ÎㄖK=M»!T¨õ®…ÍŠk®A—¬${›4Ð'!kÞ»!ŸêW‘ò)MŠ%’“Dü1àÊĂãG©èÕ\—ˆ6dŠ+ñ€‰”PL5ô2ƒ÷„²À<‰žd¶ÄªôÉld.Ó^n¯ŒÄ%´LòNaq5O…ÝœÈè$Ü*ÂÒ7ɞ·aš½çܙWÔt›]Ãßzk/V˜bødW¿M?ÚØv•R +~V[³ø¸\aƘë…oW·fñ¹Úæ ƒå²Zº€‰S-W‹‹e§#‰,>-­¾™b;ô{UijdS[gUÓÙóÍÃfýv^=ÅÙ(½õíùåü8€«ÅÙËõýî|Ù±GéĄõîy½¹ý»ÛT£¢°íÙÓßíͦÉ µP°®¼ZAý>»ÍõcÛ¨C”½Íxÿô¶¹«ßÃ~¹2ßñü(8endstream +endobj +6 0 obj +660 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000973 00000 n +0000001186 00000 n +0000000914 00000 n +0000000764 00000 n +0000000015 00000 n +0000000745 00000 n +0000001021 00000 n +0000001121 00000 n +0000001062 00000 n +0000001091 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(¿Ccežò3f¾q\\[)(¿Ccežò3f¾q\\[)] +>> +startxref +1379 +%%EOF diff --git a/guile18/doc/goops/hierarchy.png b/guile18/doc/goops/hierarchy.png new file mode 100644 index 0000000000000000000000000000000000000000..46f58b051cd7ef7d57dbf3305c447f79c13bbdc0 GIT binary patch literal 6251 zcmY*eXEa=0xE@3eAxZ?%qkV*k8eNE9CQ6hsh!SOpIz$(Jh)(nxL?1?rE=qJGQHL-Q zozasa>OHyl*ZpzUe%HItQ{HEvAA7BX0PCq!Q7}`0Kp-kj4OIgWhyV{f!el@LWVYwV z1uTR%+UlyHo9M)`ZV>4HLrqm>qqn(xc_BlWL(oC&#U94Wb0ARuKMMH?Id@C>xb@?$ zZ(Q=pw;q+oj40&Nn-?XO7M7c4^%R{Yrj&*t!tA~&?odw)g@GS^h%l(W=6v|PzI5-4 zn!qEj8bq48+@D4wc0yhh9=>&l*1UQxrSN@_oJ0P@E)`sBVZ2wWBD( z#jQ!&oqp$8?r=vCwf8enR$MX*#0Xj;J;b6 zQt@;saVhN!)=vVjq@#Xjk84 zbQ_?%_`n3JIqfxmnQOBV4qs7ya!Gb4^Ms*xFq^nXWFU4(^<8FP*>SIF#K8-rGB*3D zyL7~9wB-a%#^rZPL&+n-T7?0I*u2kU%e9)#J}ZAHw!0lky`Rgdq#ll-F_ zgU%hq|Hl>@0Ncr-DS*KCQeOTrhh;QA8|l)>&paoYzk9vT9=JR17PJciDe-vrS`Nm) z-$NXP{Oz{75~W6l^s(goZxidjNULzubbOzacK;Sc!BryP)hC71bF9%7sWC)*9qDsBUpvm4FsYEuoun6_ngM%I0bWc~`oDhEh6w%I?0R0O5SvDhQPt zskxzZ$Pe{O8;=4|RC_k;U2!oh8?FH@iWAr%Y=-hO!fdo_F^f^(f;MGt&)CxDT5l~(Zv~$aDgn}RM z#?sfc(`u6)Z*T=P(LwaTRSO!R_O*TlCP`6ac5~;mtF&H2x0g_Gli-^V;T=zhED!o; z-CxZzRMY`)xg<#uVPvUy_=LyXxQu6^h(*fdh>Xrix`4d@8ft$dw03I)sihd#$b|z0 z`I@7g8)`M0;3i$kixkKGA396vASTb6%uLp@;U>SL!sL?e-46OKH!Fco8_-b;lk>1Y z_yx!<0j6x1(mzLX=o?{VW$GoSGvUvj0pDKK$G6ghdP?@fWB}?;V6<7~{3O(=hYixu zZ8lwD(RwLeQDKflUkP*Zv|d6y6JEN&0^k||o2i{GbP$zPGn20HgkJRHAv#^358>y@ zuL0kGC4o`=i2ZDa6^0NsMe$}PCFuaSnsUAdiW+VMbF`mjaB^Bo&(uufOTzW#&F?mf z@5VMZ?`w^54AH6i+|zTRas?9E1Eh*c{lbPO{?P!Fmc+qLo~?1{lVLD`okpqMSZ^R~ zGL|(2hir!CA~AHV?R)xCb^GxQ7m450=)^1l100q#0I<&-ZqAr2*?I|YF#y)GuNA|v zrYk5*&DUJkoB*8B4%;l0+#{?*)1KV{toRMc?E7GwAg4x>R1vNtcb?fF$m|^W9Bz>v z^QPu~q=Ohbu>+x5?bi19D=!<9Y}f#TP>I_Hq<7_DCv_V)rPaxUl6`;JG0uY`o`J}%=&&_^l2pAm|`Ow*ipgZtX23hZ{YH&(j8G zZ3BQD0MOmFc#aEiU<#M9HZDp)X)IiBAEm$3Z^^e%x4%J<-|L{vR)y~~!z1$MnYk3| z)%qpU8__#%u}B=D?!v>(!?7)#n}mMPHMG|dKNJQ|ZFb(j>&_1+KEyqz3UNH@uw(p+ z$cs1=o%^-)WkAu!gCzq;IYX!aXQ=J$g}V#xA}Dbb=^o?=t1W%5J2TKCC=>4a1@Sjc zHlim&3m(e<*j9_)k!^-Ri~OhKB+shCkwa<4ARw%%y#{j;Sr`C-efWD-O;uq7?r~4k86O%DMZ)c&YdPF8;^6? zrYhT%3+-n%yGO!Tp+kDM2J$bhbxXc_Q04_)2*}+jY zIFEQ-eQ#rBf;5IdSAu><+5OuBbs1qpTk06#qswuRO?OeO)TotLwn(=r4d(2)=WOYC z4M7UXNauF(vtX##&blQ+U@-7b8)fA#`HMmtErLW^8jd^P?~0X)(tw$_LW4WiwE!+X zWTB5_Go2&p&Xq)3=mIHW28oi+)PKjnsJGjxnjXMn-$|>aezA>R6x4V(-s5v(VgsVw$!babi=C=d@+R?tI}TwK14tf2tQZx~TUy9M{cw zGreJs%BE;Mk8cu`vCqT}eimb2Kc*48EltMrmc?dgVG!%PYn@7Mb}BbKLnx|)-yv(c z@329&Cavwv7y%+P2V$H*$zNzZ>{DRZHjSZAke|?I_{U3+l$>xOL?+NRE z`U)m=b}M8pX9ROJLx4@u`^(re0?&Kq8=M>OUMF|#ynZFj0}hw;s9uvPxEB8yW?Bv0 zR@QkeUz8v#*~kw#7#As5>@SIP!p?*$pA`SBpRkSp)$2!4U~5QIu(`LpRv#Ky;-G)L zmP($JQl^jq{{HUj(_t!%m&d~#%Dtj|)_a>XC*^GDnh&XJF#?rdX+S?o$@@z?!cVDq zfyDM6$erHNrE`;5s@9}e(##Z6c93blc$LYI4qUOa48RUrU2op_A!(mYi61fQq9cP! zIE}I>_jP3df}2>^k!dYAQ*)M=haw$&O;-z3+-gOiZjr&29HvIa((@c4Dq=TN#z*h< z6@E7CWhK3Z3#V^Or)dS!mlE<lSA!9s&l$-W`wC@(2&NL~P@+uk zjN1yOx8yhEcQjUr3)^uj&q+%TQ>To5 z?iCXmoFTS(Wd*+x2wawUC+C#{G{MgnMkmYx8bu~o`%O-OrXa=#bwUf!=s#n@_{9P= ze1&E{%m2{doKk`)|DlJbM-@K&LmTbbu^awFbIsYaL;e-ab9M#K{uQ({D19D)52<3? z^s!D0FYwRE+^Y|eLj!!pzxs#3sBjoS(#2%kv=id-!smr5(AE8{BCL=BeF(?|jx^=E zQ^=GB%WhiuX!8RdIhudh`j=HpSI*tt5GGD*dCR4X?e^imrDm*v==+JgUBGK=?q%Y)TveP9h?>o~2+Dai* zmA;o3{r_q>QucQ?cpQ#wjeVR9_e)m#y@5b@CTr?(Gyj&>rJNIEiIy|9@D}#+%H7I~ zR{?J7Yy^i=l()rSR?RrWTUOj>am%JP`z_SC+m;+@2CPCSwf;&vaE<#tg?|L=3!OT6&uo74_Js!6psxz~D;t52$agqeTvmeAzWps4kKw#9J0`6%F*=%_P6RE%G>pHB?>moSnBsKU$n^c#oA8>_;!h z=#93ui-`rg+vJDlngdWI7=OEuX|Q(t)B2 z0*-fYt^>DN)UZ7Yen%_^uYBDc0)I;g4@}&)A`+MEyyOOfmoId=3DOip))5C+swMuG z=-27@v4J90K`g|@XobO#^I0pqW=}q>lvKei{Wqu72(9;mEt@_DR9Q9V-q-Iw;osJ3}d0*D6G?N^Rs=rljWssx!)MaSc+fr<_@gm_H{O=&@zig<2gB`7Zn!|iDBt+RVnleNbJPp|ab;u} zLXn}tM)hI|krLM@k+0&+my2^|uSot-l+3-myz}Cq3SrgHW z|GY=Srk(0wcw7U_ToulzGncS$buEW}t2Z(cK59#44w&2z{&_PCOW0dVqQ-i@jr4Y8 zongh)Dq?IO=>?RS^}UNF8d*?-3k>J~HjSGizzlj7?%=XJu`Bf>YG^gQ9?V0=di#6L zu%_v_eN_TCj&>&R^63EO*i{fZ)eV+Zb9Ji$cQ>8S7#_2ub!~yd3c{M-b-v${2K${k zUX<73(0T3BE~b@cULhgZu}f-mX**uqw0*FdJd3{;C+4|$A-Mgx{Dl9HHR0C~|35GK zTszwYum5ky(=k!#*5;~9U;Z_l=EK@IrEluB+k9G@+GklwHkaxZv3hR_=_>DlS>5Re ziZEFXwG{G&@9uys@v)!;61vKzJ(D0^yh@H?P}6w_aeYme@~8F+ep?UJCnj#2(66Ds z(mb&msp^hogqeS<#E}t;PZ9kyVyuXzw>3+Fs0at=zU+>cx+%c~ChpKFM&g8FZd8Fi z(s3E;tHb4Cj5md)RQ;t(Ghmj@e)=HjOjufP?PNRgjVzvJyx}C!E z^IRR;uwpRfYNl@O%o?3fCo{V0z8U)Q8GI{!R!<<__<76frLpkE7b9z*t##P-GvLgH zKW+9WbiKJyH)umxnv63SD{+d_Y+9ue*5~mga#Z}l0FG5pAJR&oq*UQlM?aoBsqQAX z{^z*k`6fA&f06)7s+831Eisg$z6GM+Ow%IdXbhl5w22d@2UvSGYi=6a2Yi;kEdg_W zqUQ1lr1h`qbn~kxv$eQW z&FCiS-p zTmPH3P+)hpiLXxORK;k&yi(~+_%BtJXLUP6HCA#aWdp6!o-Fiy*~dM`YVgk0R@!)& z2k>np%BH)FcXu-P++5A$8m7}FE}h2CP4CW#E@SoPW-lN}zk~qt5zGjn|3T7v{J>gjH5D&W!`M2TkMyo1j$J) zJUkXwg$JSq1#smli-n)R6*n;!%S>#h)B6|=&rZZk)?5k2uF|2?t41vzFn#m*n2zH^ zCZsFQsWzVc@eN8@^((vmNtZ7qcIPZ#(KpJOwDQDob-GD)p$RWnxypjpRQm{pp^Igf zH_@73i|t|RHg8Axk8Ob4Tz1LcqWDvgEWbfiQTs~=keV6Fx zrSZG$8c8_H)~FQfr7;WxzqKp*0d!NXOZ9?-oyfgNU8Ci7@EAOK^6kmd51tAccK=2^ zPL>bfjtu#7#T2}*4f@9GKD>X;-hK7eDz);YEE;!Ldc2%_R6_wzEu!!UUA3Y|jcMJJ z!B)IG-t9g*{hqw8&)5Eyl-9mQ?CJ0uJ{Fv=y72s}enygT-pimlb*mL`k#FHnZ^ZpV z2gtlFjsCcyYZO#Jk5%Cz>bo8(H6^5ZgZP7+DTl5zI+iG=ZqMqxPXq>kUTm>_ud(t! zuh^uV?d2np8xy5xb6Y3?=xY(2S2{m~~O78uoudGgj zHMf+yH}|r;PAQ`rKKF<| zkW=I%dk@;cFk)CT=+HwaJtawkv_)^YrX({R|1|bBw<9cnKC#GaGoLVLXR6e_INab~ z_G!+0+(m{l?qfuCUg9HhFX8ChWr*IC@qcbVQL~vr_>37{W45_z5|(+-)w)m zMm`BEpdr!b54iQ)b6HYUXQFnSc`}-XtDr-NB8NMUR(t#L&4-ib;a3fMUD`?_o34aC z&H<{sp_UVis-a7*-d!`ig&F9@h|m>}h?TEzeq;z0v>*ujWgb&l@b%%nINXg-<=0e~7`mzp*E)lylyf6<( z3#C1d4tc0=m;dtUCw76M_X##Mg537~9_`A{AHx@+4;F|c8lbkI)9+PxsaxA#CtoVM YNo&k>O)1d)`-`CYTu-(3nRVFz0D~=CyZ`_I literal 0 HcmV?d00001 diff --git a/guile18/doc/goops/hierarchy.txt b/guile18/doc/goops/hierarchy.txt new file mode 100644 index 0000000000..c7992df7b3 --- /dev/null +++ b/guile18/doc/goops/hierarchy.txt @@ -0,0 +1,14 @@ + + / \\\_____________________ + / \\___________ \ + / \ \ \ + + / | \ | + / | \ | + A B C + |\__/__ | | + \ / \ / | + D E + \ / | + F | + diff --git a/guile18/doc/goops/mop.text b/guile18/doc/goops/mop.text new file mode 100644 index 0000000000..0180f2c1e8 --- /dev/null +++ b/guile18/doc/goops/mop.text @@ -0,0 +1,66 @@ +*** NOTE: This information needs updating! *** + +P - procedure +L - local procedure +S - syntax +G - generic +M - method + +define-class (S) + make-class (S) + ensure-metaclass (P) + ensure-metaclass-with-supers (P) + make (G) + ensure-class (P) + make (G) + class-redefinition (G) + remove-class-accessors (G) + update-direct-method (G) + update-direct-subclass (G) + +define-generic (S) + make-generic-function (S) + ensure-generic-function (P) + make (G) + +define-method (S) + ensure-method (P) + ensure-generic-function (P) + make (G) + make (G) + add-method (P) + +method (S) + ensure-method (P) + +initialize (class) (M) + compute-cpl (P) + compute-slots (G) + compute-getters-n-setters (P) + compute-slot-init-function (L) + compute-get-n-set (G) + compute-slot-accessors (P) + ensure-method (P) + %inherit-magic! (P) + %prep-layout! (P) + +initialize (generic) (M) + make (G) + +change-class (G) + change-object-class (P) + update-instance-for-different-class (G) + +make = make-instance (G) + allocate-instance (G) + %allocate-instance (P) + initialize (G) + %initialize-object (P) + +apply-generic (G) + compute-applicable-methods (G) + find-method (P) + sort-applicable-methods (G) + sort (P) + apply-methods (G) + apply-method (G) diff --git a/guile18/doc/groupings.alist b/guile18/doc/groupings.alist new file mode 100644 index 0000000000..ed5bb1fca1 --- /dev/null +++ b/guile18/doc/groupings.alist @@ -0,0 +1,176 @@ +;;; groupings.alist -*-scheme-*- + +;; Copyright (C) 2002, 2006 Free Software Foundation, Inc. +;; +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation; either version 2, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this software; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301 USA + +;;; Commentary: + +;; This file describes interface element groupings. +;; See (scripts scan-api) commentary for more info. +;; NOTE: Order matters; put simple ones first, composites after. +;; +;; TODO: Add goops, add math, etc etc. +;; Group `guile-C-API' needs much more serious thought. + +;;; Code: + +( + + ;; Integrity checks + + (C+scheme + (description "in both groups `scheme' and `C' -- should be empty!") + (grok () (lambda (x) + (and (in-group? x 'Scheme) + (in-group? x 'C))))) + + ;; Embedded foreign libraries + + (embedded-libltdl + (description "begins with lt_ -- should become empty over time") + (grok () (lambda (x) + (name-prefix? x "lt_")))) + + ;; By name + + (libguile-internal + (description "begins with scm_i_") + (grok () (lambda (x) + (name-prefix? x "scm_i_")))) + + (gdb + (description "begins with gdb_") + (grok () (lambda (x) + (name-prefix? x "gdb_")))) + + (coop + (description "begins with coop_") + (grok () (lambda (x) + (name-prefix? x "coop_")))) + + (gh + (description "begins with gh_") + (grok () (lambda (x) + (name-prefix? x "gh_")))) + + (g-fdes + (description "begins with g and ends with fds") + (grok () (lambda (x) + (name-prefix? x "g.+fds$")))) + + (r-fdes + (description "begins with r and ends with fds") + (grok () (lambda (x) + (name-prefix? x "r.+fds$")))) + + (scm + (description "begins with scm_") + (grok () (lambda (x) + (name-prefix? x "scm_")))) + + (k + (description "constants") + (grok () (lambda (x) + (name-prefix? x "[_A-Z0-9]+$")))) + + (POSIX + (description "POSIX support") + (members ; from docs + + ;; ports and file descriptors + port-revealed set-port-revealed! fileno port->fdes fdopen fdes->ports + fdes->inport fdes->outport primitive-move->fdes move->fdes + release-port-handle fsync open open-fdes close close-fdes unread-char + unread-string pipe dup->fdes dup->inport dup->outport dup dup->port + duplicate-port redirect-port dup2 port-mode close-all-ports-except + port-for-each setvbuf fcntl flock select + O_RDONLY O_WRONLY O_RDWR O_APPEND O_CREAT _IONBF _IOLBF _IOFBF + F_DUPFD F_GETFD F_SETFD F_GETFL F_SETFL F_GETOWN F_SETOWN FD_CLOEXEC + LOCK_SH LOCK_EX LOCK_UN LOCK_NB + + ;; file system + access? stat lstat readlink chown chmod utime delete-file copy-file + rename-file link symlink mkdir rmdir opendir directory-stream? readdir + rewinddir closedir sync mknod tmpnam mkstemp! dirname basename + R_OK W_OK X_OK F_OK + stat:perms stat:type stat:blocks stat:blksize stat:ctime stat:mtime + stat:atime stat:size stat:rdev stat:gid stat:uid stat:nlink stat:mode + stat:ino stat:dev + + ;; user information + passwd:name passwd:passwd passwd:uid passwd:gid passwd:gecos passwd:dir + passwd:shell group:name group:passwd group:gid group:mem + getpwuid getpwnam name setpwent getpwent endpwent setpw getpw getgrgid + getgrnam setgrent getgrent endgrent setgr getgr cuserid getlogin + + ;; time + tm:sec set-tm:sec tm:min set-tm:min tm:hour set-tm:hour tm:mday set-tm:mday + tm:mon set-tm:mon tm:year set-tm:year tm:wday set-tm:wday tm:yday + set-tm:yday tm:isdst set-tm:isdst tm:gmtoff set-tm:gmtoff tm:zone + set-tm:zone tms:clock tms:utime tms:stime tms:cutime tms:cstime + current-time gettimeofday localtime gmtime mktime tzset strftime strptime + times get-internal-real-time get-internal-run-time + + ;; runtime environment + program-arguments command-line getenv setenv environ putenv + + ;; proceses + chdir getcwd umask chroot getpid getgroups getppid getuid getgid geteuid + getegid setuid setgid seteuid setegid getpgrp setpgid setsid waitpid + status:exit-val status:term-sig status:stop-sig system primitive-exit execl + execlp execle primitive-fork nice setpriority getpriority + WNOHANG WUNTRACED + + ;; signals + kill raise sigaction restore-signals alarm pause sleep usleep setitimer + getitimer SIGHUP SIGINT + + ;; terminals and ptys + isatty? ttyname ctermid tcgetpgrp tcsetpgrp + + ;; pipes -- not included because they are in (ice-9 popen) + + ;; system identification + utsname:sysname utsname:nodename utsname:release utsname:version + utsname:machine uname gethostname sethostname software-type + + ;; locales + setlocale + LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME + + ;; encryption + crypt getpass)) + + (math + (description "math functions") + (members $abs $acos $acosh $asin $asinh $atan $atan2 $atanh $cos $cosh + $exp $expt $log $sin $sinh $sqrt $tan $tanh)) + + ;; By composition (these must be AFTER their constituent groupings) + + (guile-C-API + (description "the official guile API available to C programs") + (grok () (lambda (x) + (and (in-group? x 'C) + (or (in-group? x 'gh) + (in-group? x 'coop) + (in-group? x 'gdb)))))) + + ;; Add new grouping descriptions here. + ) + +;;; groupings.alist ends here diff --git a/guile18/doc/guile-api.alist b/guile18/doc/guile-api.alist new file mode 100644 index 0000000000..5f73cae3a3 --- /dev/null +++ b/guile18/doc/guile-api.alist @@ -0,0 +1,3219 @@ +;;; generated 2002-05-12 05:25:39 UTC by scan-api -- do not edit! + +( +(meta + (GUILE_LOAD_PATH . "") + (LTDL_LIBRARY_PATH . "") + (guile . "pre-inst-guile") + (libguileinterface . "15:0:0") + (sofile . "libguile/.libs/libguile.so.15.0.0") + (groups C+scheme embedded-libltdl libguile-internal gdb coop gh g-fdes r-fdes scm k POSIX math guile-C-API Scheme C) +) ;; end of meta +(interface +($abs (groups math Scheme) (scan-data "#")) +($acos (groups math Scheme) (scan-data "#")) +($acosh (groups math Scheme) (scan-data "#")) +($asin (groups math Scheme) (scan-data "#")) +($asinh (groups math Scheme) (scan-data "#")) +($atan (groups math Scheme) (scan-data "#")) +($atan2 (groups math Scheme) (scan-data "#")) +($atanh (groups math Scheme) (scan-data "#")) +($cos (groups math Scheme) (scan-data "#")) +($cosh (groups math Scheme) (scan-data "#")) +($exp (groups math Scheme) (scan-data "#")) +($expt (groups math Scheme) (scan-data "#")) +($log (groups math Scheme) (scan-data "#")) +($sin (groups math Scheme) (scan-data "#")) +($sinh (groups math Scheme) (scan-data "#")) +($sqrt (groups math Scheme) (scan-data "#")) +($tan (groups math Scheme) (scan-data "#")) +($tanh (groups math Scheme) (scan-data "#")) +(%cond-expand-features (groups Scheme) (scan-data "")) +(%cond-expand-table (groups Scheme) (scan-data "")) +(%deliver-signals (groups Scheme) (scan-data "#")) +(%get-pre-modules-obarray (groups Scheme) (scan-data "#")) +(%guile-build-info (groups Scheme) (scan-data "")) +(%init-goops-builtins (groups Scheme) (scan-data "#")) +(%init-rdelim-builtins (groups Scheme) (scan-data "#")) +(%init-rw-builtins (groups Scheme) (scan-data "#")) +(%library-dir (groups Scheme) (scan-data "#")) +(%load-announce (groups Scheme) (scan-data "#")) +(%load-extensions (groups Scheme) (scan-data "")) +(%load-hook (groups Scheme) (scan-data "#")) +(%load-path (groups Scheme) (scan-data "")) +(%load-verbosely (groups Scheme) (scan-data "")) +(%make-void-port (groups Scheme) (scan-data "#")) +(%module-public-interface (groups Scheme) (scan-data "")) +(%nil (groups Scheme) (scan-data "")) +(%package-data-dir (groups Scheme) (scan-data "#")) +(%print-module (groups Scheme) (scan-data "#")) +(%print-values (groups Scheme) (scan-data "#")) +(%search-load-path (groups Scheme) (scan-data "#")) +(%site-dir (groups Scheme) (scan-data "#")) +(* (groups Scheme) (scan-data "#")) +(*features* (groups Scheme) (scan-data "")) +(*null-device* (groups Scheme) (scan-data "")) +(*random-state* (groups Scheme) (scan-data "")) +(*unspecified* (groups Scheme) (scan-data "")) +(+ (groups Scheme) (scan-data "#")) +(- (groups Scheme) (scan-data "#")) +(->bool (groups Scheme) (scan-data "#bool (x)>")) +(/ (groups Scheme) (scan-data "#")) +(1+ (groups Scheme) (scan-data "#")) +(1- (groups Scheme) (scan-data "#")) +(< (groups Scheme) (scan-data "#")) +(<= (groups Scheme) (scan-data "#")) +( (groups Scheme) (scan-data "")) +( (groups Scheme) (scan-data "")) +( (groups Scheme) (scan-data "")) +(= (groups Scheme) (scan-data "#")) +(> (groups Scheme) (scan-data "#>")) +(>= (groups Scheme) (scan-data "#=>")) +(@apply (groups Scheme) (scan-data "")) +(@bind (groups Scheme) (scan-data "")) +(@call-with-current-continuation (groups Scheme) (scan-data "")) +(@call-with-values (groups Scheme) (scan-data "")) +(@fop (groups Scheme) (scan-data "")) +(AF_INET (groups k Scheme) (scan-data "")) +(AF_INET6 (groups k Scheme) (scan-data "")) +(AF_UNIX (groups k Scheme) (scan-data "")) +(AF_UNSPEC (groups k Scheme) (scan-data "")) +(E2BIG (groups k Scheme) (scan-data "")) +(EACCES (groups k Scheme) (scan-data "")) +(EADDRINUSE (groups k Scheme) (scan-data "")) +(EADDRNOTAVAIL (groups k Scheme) (scan-data "")) +(EADV (groups k Scheme) (scan-data "")) +(EAFNOSUPPORT (groups k Scheme) (scan-data "")) +(EAGAIN (groups k Scheme) (scan-data "")) +(EALREADY (groups k Scheme) (scan-data "")) +(EBADE (groups k Scheme) (scan-data "")) +(EBADF (groups k Scheme) (scan-data "")) +(EBADFD (groups k Scheme) (scan-data "")) +(EBADMSG (groups k Scheme) (scan-data "")) +(EBADR (groups k Scheme) (scan-data "")) +(EBADRQC (groups k Scheme) (scan-data "")) +(EBADSLT (groups k Scheme) (scan-data "")) +(EBFONT (groups k Scheme) (scan-data "")) +(EBUSY (groups k Scheme) (scan-data "")) +(ECHILD (groups k Scheme) (scan-data "")) +(ECHRNG (groups k Scheme) (scan-data "")) +(ECOMM (groups k Scheme) (scan-data "")) +(ECONNABORTED (groups k Scheme) (scan-data "")) +(ECONNREFUSED (groups k Scheme) (scan-data "")) +(ECONNRESET (groups k Scheme) (scan-data "")) +(EDEADLK (groups k Scheme) (scan-data "")) +(EDEADLOCK (groups k Scheme) (scan-data "")) +(EDESTADDRREQ (groups k Scheme) (scan-data "")) +(EDOM (groups k Scheme) (scan-data "")) +(EDOTDOT (groups k Scheme) (scan-data "")) +(EDQUOT (groups k Scheme) (scan-data "")) +(EEXIST (groups k Scheme) (scan-data "")) +(EFAULT (groups k Scheme) (scan-data "")) +(EFBIG (groups k Scheme) (scan-data "")) +(EHOSTDOWN (groups k Scheme) (scan-data "")) +(EHOSTUNREACH (groups k Scheme) (scan-data "")) +(EIDRM (groups k Scheme) (scan-data "")) +(EILSEQ (groups k Scheme) (scan-data "")) +(EINPROGRESS (groups k Scheme) (scan-data "")) +(EINTR (groups k Scheme) (scan-data "")) +(EINVAL (groups k Scheme) (scan-data "")) +(EIO (groups k Scheme) (scan-data "")) +(EISCONN (groups k Scheme) (scan-data "")) +(EISDIR (groups k Scheme) (scan-data "")) +(EISNAM (groups k Scheme) (scan-data "")) +(EL2HLT (groups k Scheme) (scan-data "")) +(EL2NSYNC (groups k Scheme) (scan-data "")) +(EL3HLT (groups k Scheme) (scan-data "")) +(EL3RST (groups k Scheme) (scan-data "")) +(ELIBACC (groups k Scheme) (scan-data "")) +(ELIBBAD (groups k Scheme) (scan-data "")) +(ELIBEXEC (groups k Scheme) (scan-data "")) +(ELIBMAX (groups k Scheme) (scan-data "")) +(ELIBSCN (groups k Scheme) (scan-data "")) +(ELNRNG (groups k Scheme) (scan-data "")) +(ELOOP (groups k Scheme) (scan-data "")) +(EMFILE (groups k Scheme) (scan-data "")) +(EMLINK (groups k Scheme) (scan-data "")) +(EMSGSIZE (groups k Scheme) (scan-data "")) +(EMULTIHOP (groups k Scheme) (scan-data "")) +(ENAMETOOLONG (groups k Scheme) (scan-data "")) +(ENAVAIL (groups k Scheme) (scan-data "")) +(ENETDOWN (groups k Scheme) (scan-data "")) +(ENETRESET (groups k Scheme) (scan-data "")) +(ENETUNREACH (groups k Scheme) (scan-data "")) +(ENFILE (groups k Scheme) (scan-data "")) +(ENOANO (groups k Scheme) (scan-data "")) +(ENOBUFS (groups k Scheme) (scan-data "")) +(ENOCSI (groups k Scheme) (scan-data "")) +(ENODATA (groups k Scheme) (scan-data "")) +(ENODEV (groups k Scheme) (scan-data "")) +(ENOENT (groups k Scheme) (scan-data "")) +(ENOEXEC (groups k Scheme) (scan-data "")) +(ENOLCK (groups k Scheme) (scan-data "")) +(ENOLINK (groups k Scheme) (scan-data "")) +(ENOMEM (groups k Scheme) (scan-data "")) +(ENOMSG (groups k Scheme) (scan-data "")) +(ENONET (groups k Scheme) (scan-data "")) +(ENOPKG (groups k Scheme) (scan-data "")) +(ENOPROTOOPT (groups k Scheme) (scan-data "")) +(ENOSPC (groups k Scheme) (scan-data "")) +(ENOSR (groups k Scheme) (scan-data "")) +(ENOSTR (groups k Scheme) (scan-data "")) +(ENOSYS (groups k Scheme) (scan-data "")) +(ENOTBLK (groups k Scheme) (scan-data "")) +(ENOTCONN (groups k Scheme) (scan-data "")) +(ENOTDIR (groups k Scheme) (scan-data "")) +(ENOTEMPTY (groups k Scheme) (scan-data "")) +(ENOTNAM (groups k Scheme) (scan-data "")) +(ENOTSOCK (groups k Scheme) (scan-data "")) +(ENOTTY (groups k Scheme) (scan-data "")) +(ENOTUNIQ (groups k Scheme) (scan-data "")) +(ENXIO (groups k Scheme) (scan-data "")) +(EOPNOTSUPP (groups k Scheme) (scan-data "")) +(EOVERFLOW (groups k Scheme) (scan-data "")) +(EPERM (groups k Scheme) (scan-data "")) +(EPFNOSUPPORT (groups k Scheme) (scan-data "")) +(EPIPE (groups k Scheme) (scan-data "")) +(EPROTO (groups k Scheme) (scan-data "")) +(EPROTONOSUPPORT (groups k Scheme) (scan-data "")) +(EPROTOTYPE (groups k Scheme) (scan-data "")) +(ERANGE (groups k Scheme) (scan-data "")) +(EREMCHG (groups k Scheme) (scan-data "")) +(EREMOTE (groups k Scheme) (scan-data "")) +(EREMOTEIO (groups k Scheme) (scan-data "")) +(ERESTART (groups k Scheme) (scan-data "")) +(EROFS (groups k Scheme) (scan-data "")) +(ESHUTDOWN (groups k Scheme) (scan-data "")) +(ESOCKTNOSUPPORT (groups k Scheme) (scan-data "")) +(ESPIPE (groups k Scheme) (scan-data "")) +(ESRCH (groups k Scheme) (scan-data "")) +(ESRMNT (groups k Scheme) (scan-data "")) +(ESTALE (groups k Scheme) (scan-data "")) +(ESTRPIPE (groups k Scheme) (scan-data "")) +(ETIME (groups k Scheme) (scan-data "")) +(ETIMEDOUT (groups k Scheme) (scan-data "")) +(ETOOMANYREFS (groups k Scheme) (scan-data "")) +(ETXTBSY (groups k Scheme) (scan-data "")) +(EUCLEAN (groups k Scheme) (scan-data "")) +(EUNATCH (groups k Scheme) (scan-data "")) +(EUSERS (groups k Scheme) (scan-data "")) +(EWOULDBLOCK (groups k Scheme) (scan-data "")) +(EXDEV (groups k Scheme) (scan-data "")) +(EXFULL (groups k Scheme) (scan-data "")) +(FD_CLOEXEC (groups POSIX k Scheme) (scan-data "")) +(F_DUPFD (groups POSIX k Scheme) (scan-data "")) +(F_GETFD (groups POSIX k Scheme) (scan-data "")) +(F_GETFL (groups POSIX k Scheme) (scan-data "")) +(F_GETOWN (groups POSIX k Scheme) (scan-data "")) +(F_OK (groups POSIX k Scheme) (scan-data "")) +(F_SETFD (groups POSIX k Scheme) (scan-data "")) +(F_SETFL (groups POSIX k Scheme) (scan-data "")) +(F_SETOWN (groups POSIX k Scheme) (scan-data "")) +(INADDR_ANY (groups k Scheme) (scan-data "")) +(INADDR_BROADCAST (groups k Scheme) (scan-data "")) +(INADDR_LOOPBACK (groups k Scheme) (scan-data "")) +(INADDR_NONE (groups k Scheme) (scan-data "")) +(ITIMER_PROF (groups k Scheme) (scan-data "")) +(ITIMER_REAL (groups k Scheme) (scan-data "")) +(ITIMER_VIRTUAL (groups k Scheme) (scan-data "")) +(LC_ALL (groups POSIX k Scheme) (scan-data "")) +(LC_COLLATE (groups POSIX k Scheme) (scan-data "")) +(LC_CTYPE (groups POSIX k Scheme) (scan-data "")) +(LC_MESSAGES (groups POSIX k Scheme) (scan-data "")) +(LC_MONETARY (groups POSIX k Scheme) (scan-data "")) +(LC_NUMERIC (groups POSIX k Scheme) (scan-data "")) +(LC_TIME (groups POSIX k Scheme) (scan-data "")) +(LOCK_EX (groups POSIX k Scheme) (scan-data "")) +(LOCK_NB (groups POSIX k Scheme) (scan-data "")) +(LOCK_SH (groups POSIX k Scheme) (scan-data "")) +(LOCK_UN (groups POSIX k Scheme) (scan-data "")) +(MSG_DONTROUTE (groups k Scheme) (scan-data "")) +(MSG_OOB (groups k Scheme) (scan-data "")) +(MSG_PEEK (groups k Scheme) (scan-data "")) +(NSIG (groups k Scheme) (scan-data "")) +(OPEN_BOTH (groups k Scheme) (scan-data "")) +(OPEN_READ (groups k Scheme) (scan-data "")) +(OPEN_WRITE (groups k Scheme) (scan-data "")) +(O_APPEND (groups POSIX k Scheme) (scan-data "")) +(O_CREAT (groups POSIX k Scheme) (scan-data "")) +(O_EXCL (groups k Scheme) (scan-data "")) +(O_NDELAY (groups k Scheme) (scan-data "")) +(O_NOCTTY (groups k Scheme) (scan-data "")) +(O_NONBLOCK (groups k Scheme) (scan-data "")) +(O_RDONLY (groups POSIX k Scheme) (scan-data "")) +(O_RDWR (groups POSIX k Scheme) (scan-data "")) +(O_SYNC (groups k Scheme) (scan-data "")) +(O_TRUNC (groups k Scheme) (scan-data "")) +(O_WRONLY (groups POSIX k Scheme) (scan-data "")) +(PF_INET (groups k Scheme) (scan-data "")) +(PF_INET6 (groups k Scheme) (scan-data "")) +(PF_UNIX (groups k Scheme) (scan-data "")) +(PF_UNSPEC (groups k Scheme) (scan-data "")) +(PIPE_BUF (groups k Scheme) (scan-data "")) +(PRIO_PGRP (groups k Scheme) (scan-data "")) +(PRIO_PROCESS (groups k Scheme) (scan-data "")) +(PRIO_USER (groups k Scheme) (scan-data "")) +(R_OK (groups POSIX k Scheme) (scan-data "")) +(SA_NOCLDSTOP (groups k Scheme) (scan-data "")) +(SA_RESTART (groups k Scheme) (scan-data "")) +(SEEK_CUR (groups k Scheme) (scan-data "")) +(SEEK_END (groups k Scheme) (scan-data "")) +(SEEK_SET (groups k Scheme) (scan-data "")) +(SIGABRT (groups k Scheme) (scan-data "")) +(SIGALRM (groups k Scheme) (scan-data "")) +(SIGBUS (groups k Scheme) (scan-data "")) +(SIGCHLD (groups k Scheme) (scan-data "")) +(SIGCLD (groups k Scheme) (scan-data "")) +(SIGCONT (groups k Scheme) (scan-data "")) +(SIGFPE (groups k Scheme) (scan-data "")) +(SIGHUP (groups POSIX k Scheme) (scan-data "")) +(SIGILL (groups k Scheme) (scan-data "")) +(SIGINT (groups POSIX k Scheme) (scan-data "")) +(SIGIO (groups k Scheme) (scan-data "")) +(SIGIOT (groups k Scheme) (scan-data "")) +(SIGKILL (groups k Scheme) (scan-data "")) +(SIGPIPE (groups k Scheme) (scan-data "")) +(SIGPOLL (groups k Scheme) (scan-data "")) +(SIGPROF (groups k Scheme) (scan-data "")) +(SIGPWR (groups k Scheme) (scan-data "")) +(SIGQUIT (groups k Scheme) (scan-data "")) +(SIGSEGV (groups k Scheme) (scan-data "")) +(SIGSTKFLT (groups k Scheme) (scan-data "")) +(SIGSTOP (groups k Scheme) (scan-data "")) +(SIGTERM (groups k Scheme) (scan-data "")) +(SIGTRAP (groups k Scheme) (scan-data "")) +(SIGTSTP (groups k Scheme) (scan-data "")) +(SIGTTIN (groups k Scheme) (scan-data "")) +(SIGTTOU (groups k Scheme) (scan-data "")) +(SIGUNUSED (groups k Scheme) (scan-data "")) +(SIGURG (groups k Scheme) (scan-data "")) +(SIGUSR1 (groups k Scheme) (scan-data "")) +(SIGUSR2 (groups k Scheme) (scan-data "")) +(SIGVTALRM (groups k Scheme) (scan-data "")) +(SIGWINCH (groups k Scheme) (scan-data "")) +(SIGXCPU (groups k Scheme) (scan-data "")) +(SIGXFSZ (groups k Scheme) (scan-data "")) +(SIG_DFL (groups k Scheme) (scan-data "")) +(SIG_IGN (groups k Scheme) (scan-data "")) +(SOCK_DGRAM (groups k Scheme) (scan-data "")) +(SOCK_RAW (groups k Scheme) (scan-data "")) +(SOCK_STREAM (groups k Scheme) (scan-data "")) +(SOL_IP (groups k Scheme) (scan-data "")) +(SOL_SOCKET (groups k Scheme) (scan-data "")) +(SO_BROADCAST (groups k Scheme) (scan-data "")) +(SO_DEBUG (groups k Scheme) (scan-data "")) +(SO_DONTROUTE (groups k Scheme) (scan-data "")) +(SO_ERROR (groups k Scheme) (scan-data "")) +(SO_KEEPALIVE (groups k Scheme) (scan-data "")) +(SO_LINGER (groups k Scheme) (scan-data "")) +(SO_NO_CHECK (groups k Scheme) (scan-data "")) +(SO_OOBINLINE (groups k Scheme) (scan-data "")) +(SO_PRIORITY (groups k Scheme) (scan-data "")) +(SO_RCVBUF (groups k Scheme) (scan-data "")) +(SO_REUSEADDR (groups k Scheme) (scan-data "")) +(SO_SNDBUF (groups k Scheme) (scan-data "")) +(SO_TYPE (groups k Scheme) (scan-data "")) +(WAIT_ANY (groups k Scheme) (scan-data "")) +(WAIT_MYPGRP (groups k Scheme) (scan-data "")) +(WNOHANG (groups POSIX k Scheme) (scan-data "")) +(WUNTRACED (groups POSIX k Scheme) (scan-data "")) +(W_OK (groups POSIX k Scheme) (scan-data "")) +(X_OK (groups POSIX k Scheme) (scan-data "")) +(_IOFBF (groups POSIX k Scheme) (scan-data "")) +(_IOLBF (groups POSIX k Scheme) (scan-data "")) +(_IONBF (groups POSIX k Scheme) (scan-data "")) +(_fini (groups C) (scan-data T)) +(_init (groups C) (scan-data T)) +(abort-hook (groups Scheme) (scan-data "")) +(abs (groups Scheme) (scan-data "#")) +(accept (groups Scheme) (scan-data "#")) +(access? (groups POSIX Scheme) (scan-data "#")) +(acons (groups Scheme) (scan-data "#")) +(acos (groups Scheme) (scan-data "#")) +(acosh (groups Scheme) (scan-data "#")) +(add-hook! (groups Scheme) (scan-data "#")) +(after-backtrace-hook (groups Scheme) (scan-data "")) +(after-error-hook (groups Scheme) (scan-data "")) +(after-eval-hook (groups Scheme) (scan-data "")) +(after-gc-hook (groups Scheme) (scan-data "")) +(after-print-hook (groups Scheme) (scan-data "")) +(after-read-hook (groups Scheme) (scan-data "")) +(alarm (groups POSIX Scheme) (scan-data "#")) +(and (groups Scheme) (scan-data "")) +(and-map (groups Scheme) (scan-data "#")) +(and=> (groups Scheme) (scan-data "# (value procedure)>")) +(angle (groups Scheme) (scan-data "#")) +(app (groups Scheme) (scan-data "")) +(append (groups Scheme) (scan-data "#")) +(append! (groups Scheme) (scan-data "#")) +(apply (groups Scheme) (scan-data "#")) +(apply-to-args (groups Scheme) (scan-data "#")) +(apply:nconc2last (groups Scheme) (scan-data "#")) +(array->list (groups Scheme) (scan-data "#list>")) +(array-contents (groups Scheme) (scan-data "#")) +(array-copy! (groups Scheme) (scan-data "#")) +(array-copy-in-order! (groups Scheme) (scan-data "#")) +(array-dimensions (groups Scheme) (scan-data "#")) +(array-equal? (groups Scheme) (scan-data "#")) +(array-fill! (groups Scheme) (scan-data "#")) +(array-for-each (groups Scheme) (scan-data "#")) +(array-in-bounds? (groups Scheme) (scan-data "#")) +(array-index-map! (groups Scheme) (scan-data "#")) +(array-map! (groups Scheme) (scan-data "#")) +(array-map-in-order! (groups Scheme) (scan-data "#")) +(array-prototype (groups Scheme) (scan-data "#")) +(array-rank (groups Scheme) (scan-data "#")) +(array-ref (groups Scheme) (scan-data "#")) +(array-set! (groups Scheme) (scan-data "#")) +(array-shape (groups Scheme) (scan-data "#")) +(array? (groups Scheme) (scan-data "#")) +(ash (groups Scheme) (scan-data "#")) +(asin (groups Scheme) (scan-data "#")) +(asinh (groups Scheme) (scan-data "#")) +(assert-defmacro?! (groups Scheme) (scan-data "#")) +(assert-load-verbosity (groups Scheme) (scan-data "#")) +(assert-repl-print-unspecified (groups Scheme) (scan-data "#")) +(assert-repl-silence (groups Scheme) (scan-data "#")) +(assert-repl-verbosity (groups Scheme) (scan-data "#")) +(assoc (groups Scheme) (scan-data "#")) +(assoc-ref (groups Scheme) (scan-data "#")) +(assoc-remove! (groups Scheme) (scan-data "#")) +(assoc-set! (groups Scheme) (scan-data "#")) +(assq (groups Scheme) (scan-data "#")) +(assq-ref (groups Scheme) (scan-data "#")) +(assq-remove! (groups Scheme) (scan-data "#")) +(assq-set! (groups Scheme) (scan-data "#")) +(assv (groups Scheme) (scan-data "#")) +(assv-ref (groups Scheme) (scan-data "#")) +(assv-remove! (groups Scheme) (scan-data "#")) +(assv-set! (groups Scheme) (scan-data "#")) +(async (groups Scheme) (scan-data "#")) +(async-mark (groups Scheme) (scan-data "#")) +(atan (groups Scheme) (scan-data "#")) +(atanh (groups Scheme) (scan-data "#")) +(autoload-done! (groups Scheme) (scan-data "#")) +(autoload-done-or-in-progress? (groups Scheme) (scan-data "#")) +(autoload-in-progress! (groups Scheme) (scan-data "#")) +(autoloads-done (groups Scheme) (scan-data "")) +(autoloads-in-progress (groups Scheme) (scan-data "")) +(backtrace (groups Scheme) (scan-data "#")) +(bad-throw (groups Scheme) (scan-data "#")) +(basename (groups POSIX Scheme) (scan-data "#")) +(basic-load (groups Scheme) (scan-data "#")) +(batch-mode? (groups Scheme) (scan-data "#")) +(beautify-user-module! (groups Scheme) (scan-data "#")) +(before-backtrace-hook (groups Scheme) (scan-data "")) +(before-error-hook (groups Scheme) (scan-data "")) +(before-eval-hook (groups Scheme) (scan-data "")) +(before-print-hook (groups Scheme) (scan-data "")) +(before-read-hook (groups Scheme) (scan-data "")) +(before-signal-stack (groups Scheme) (scan-data "")) +(begin (groups Scheme) (scan-data "")) +(begin-deprecated (groups Scheme) (scan-data "")) +(bind (groups Scheme) (scan-data "#")) +(bit-count (groups Scheme) (scan-data "#")) +(bit-count* (groups Scheme) (scan-data "#")) +(bit-extract (groups Scheme) (scan-data "#")) +(bit-invert! (groups Scheme) (scan-data "#")) +(bit-position (groups Scheme) (scan-data "#")) +(bit-set*! (groups Scheme) (scan-data "#")) +(boolean? (groups Scheme) (scan-data "#")) +(caaaar (groups Scheme) (scan-data "#")) +(caaadr (groups Scheme) (scan-data "#")) +(caaar (groups Scheme) (scan-data "#")) +(caadar (groups Scheme) (scan-data "#")) +(caaddr (groups Scheme) (scan-data "#")) +(caadr (groups Scheme) (scan-data "#")) +(caar (groups Scheme) (scan-data "#")) +(cadaar (groups Scheme) (scan-data "#")) +(cadadr (groups Scheme) (scan-data "#")) +(cadar (groups Scheme) (scan-data "#")) +(caddar (groups Scheme) (scan-data "#")) +(cadddr (groups Scheme) (scan-data "#")) +(caddr (groups Scheme) (scan-data "#")) +(cadr (groups Scheme) (scan-data "#")) +(call-with-current-continuation (groups Scheme) (scan-data "#")) +(call-with-dynamic-root (groups Scheme) (scan-data "#")) +(call-with-input-file (groups Scheme) (scan-data "#")) +(call-with-input-string (groups Scheme) (scan-data "#")) +(call-with-new-thread (groups Scheme) (scan-data "#")) +(call-with-output-file (groups Scheme) (scan-data "#")) +(call-with-output-string (groups Scheme) (scan-data "#")) +(call-with-values (groups Scheme) (scan-data "#")) +(car (groups Scheme) (scan-data "#")) +(case (groups Scheme) (scan-data "")) +(catch (groups Scheme) (scan-data "#")) +(cdaaar (groups Scheme) (scan-data "#")) +(cdaadr (groups Scheme) (scan-data "#")) +(cdaar (groups Scheme) (scan-data "#")) +(cdadar (groups Scheme) (scan-data "#")) +(cdaddr (groups Scheme) (scan-data "#")) +(cdadr (groups Scheme) (scan-data "#")) +(cdar (groups Scheme) (scan-data "#")) +(cddaar (groups Scheme) (scan-data "#")) +(cddadr (groups Scheme) (scan-data "#")) +(cddar (groups Scheme) (scan-data "#")) +(cdddar (groups Scheme) (scan-data "#")) +(cddddr (groups Scheme) (scan-data "#")) +(cdddr (groups Scheme) (scan-data "#")) +(cddr (groups Scheme) (scan-data "#")) +(cdr (groups Scheme) (scan-data "#")) +(ceiling (groups Scheme) (scan-data "#")) +(char->integer (groups Scheme) (scan-data "#integer>")) +(char-alphabetic? (groups Scheme) (scan-data "#")) +(char-ci<=? (groups Scheme) (scan-data "#")) +(char-ci")) +(char-ci=? (groups Scheme) (scan-data "#")) +(char-ci>=? (groups Scheme) (scan-data "#=?>")) +(char-ci>? (groups Scheme) (scan-data "#?>")) +(char-code-limit (groups Scheme) (scan-data "")) +(char-downcase (groups Scheme) (scan-data "#")) +(char-is-both? (groups Scheme) (scan-data "#")) +(char-lower-case? (groups Scheme) (scan-data "#")) +(char-numeric? (groups Scheme) (scan-data "#")) +(char-ready? (groups Scheme) (scan-data "#")) +(char-upcase (groups Scheme) (scan-data "#")) +(char-upper-case? (groups Scheme) (scan-data "#")) +(char-whitespace? (groups Scheme) (scan-data "#")) +(char<=? (groups Scheme) (scan-data "#")) +(char")) +(char=? (groups Scheme) (scan-data "#")) +(char>=? (groups Scheme) (scan-data "#=?>")) +(char>? (groups Scheme) (scan-data "#?>")) +(char? (groups Scheme) (scan-data "#")) +(chdir (groups POSIX Scheme) (scan-data "#")) +(chmod (groups POSIX Scheme) (scan-data "#")) +(chown (groups POSIX Scheme) (scan-data "#")) +(chroot (groups POSIX Scheme) (scan-data "#")) +(class-of (groups Scheme) (scan-data "#")) +(close (groups POSIX Scheme) (scan-data "#")) +(close-fdes (groups POSIX Scheme) (scan-data "#")) +(close-input-port (groups Scheme) (scan-data "#")) +(close-io-port (groups Scheme) (scan-data "#")) +(close-output-port (groups Scheme) (scan-data "#")) +(close-port (groups Scheme) (scan-data "#")) +(closedir (groups POSIX Scheme) (scan-data "#")) +(closure? (groups Scheme) (scan-data "#")) +(collect (groups Scheme) (scan-data "")) +(command-line (groups POSIX Scheme) (scan-data "#")) +(compile-define-module-args (groups Scheme) (scan-data "#")) +(compile-interface-spec (groups Scheme) (scan-data "#")) +(complex? (groups Scheme) (scan-data "#")) +(cond (groups Scheme) (scan-data "")) +(cond-expand (groups Scheme) (scan-data "")) +(cond-expand-provide (groups Scheme) (scan-data "#")) +(connect (groups Scheme) (scan-data "#")) +(cons (groups Scheme) (scan-data "#")) +(cons* (groups Scheme) (scan-data "#")) +(cons-source (groups Scheme) (scan-data "#")) +(coop_abort (groups guile-C-API coop C) (scan-data T)) +(coop_condition_variable_destroy (groups guile-C-API coop C) (scan-data T)) +(coop_condition_variable_init (groups guile-C-API coop C) (scan-data T)) +(coop_condition_variable_signal (groups guile-C-API coop C) (scan-data T)) +(coop_condition_variable_timed_wait_mutex (groups guile-C-API coop C) (scan-data T)) +(coop_condition_variable_wait_mutex (groups guile-C-API coop C) (scan-data T)) +(coop_create (groups guile-C-API coop C) (scan-data T)) +(coop_getspecific (groups guile-C-API coop C) (scan-data T)) +(coop_global_allq (groups guile-C-API coop C) (scan-data B)) +(coop_global_curr (groups guile-C-API coop C) (scan-data B)) +(coop_global_runq (groups guile-C-API coop C) (scan-data B)) +(coop_global_sleepq (groups guile-C-API coop C) (scan-data B)) +(coop_init (groups guile-C-API coop C) (scan-data T)) +(coop_join (groups guile-C-API coop C) (scan-data T)) +(coop_key_create (groups guile-C-API coop C) (scan-data T)) +(coop_key_delete (groups guile-C-API coop C) (scan-data T)) +(coop_mutex_destroy (groups guile-C-API coop C) (scan-data T)) +(coop_mutex_init (groups guile-C-API coop C) (scan-data T)) +(coop_mutex_lock (groups guile-C-API coop C) (scan-data T)) +(coop_mutex_trylock (groups guile-C-API coop C) (scan-data T)) +(coop_mutex_unlock (groups guile-C-API coop C) (scan-data T)) +(coop_new_condition_variable_init (groups guile-C-API coop C) (scan-data T)) +(coop_new_mutex_init (groups guile-C-API coop C) (scan-data T)) +(coop_next_runnable_thread (groups guile-C-API coop C) (scan-data T)) +(coop_qget (groups guile-C-API coop C) (scan-data T)) +(coop_qput (groups guile-C-API coop C) (scan-data T)) +(coop_setspecific (groups guile-C-API coop C) (scan-data T)) +(coop_sleephelp (groups guile-C-API coop C) (scan-data T)) +(coop_start (groups guile-C-API coop C) (scan-data T)) +(coop_timeout_qinsert (groups guile-C-API coop C) (scan-data T)) +(coop_tmp_queue (groups guile-C-API coop C) (scan-data B)) +(coop_wait_for_runnable_thread (groups guile-C-API coop C) (scan-data T)) +(coop_wait_for_runnable_thread_now (groups guile-C-API coop C) (scan-data T)) +(coop_yield (groups guile-C-API coop C) (scan-data T)) +(copy-file (groups POSIX Scheme) (scan-data "#")) +(copy-random-state (groups Scheme) (scan-data "#")) +(copy-tree (groups Scheme) (scan-data "#")) +(cos (groups Scheme) (scan-data "#")) +(cosh (groups Scheme) (scan-data "#")) +(crypt (groups POSIX Scheme) (scan-data "#")) +(ctermid (groups POSIX Scheme) (scan-data "#")) +(current-error-port (groups Scheme) (scan-data "#")) +(current-input-port (groups Scheme) (scan-data "#")) +(current-load-port (groups Scheme) (scan-data "#")) +(current-module (groups Scheme) (scan-data "#")) +(current-output-port (groups Scheme) (scan-data "#")) +(current-time (groups POSIX Scheme) (scan-data "#")) +(cuserid (groups POSIX Scheme) (scan-data "#")) +(debug-disable (groups Scheme) (scan-data "#")) +(debug-enable (groups Scheme) (scan-data "#")) +(debug-object? (groups Scheme) (scan-data "#")) +(debug-options (groups Scheme) (scan-data "#")) +(debug-options-interface (groups Scheme) (scan-data "#")) +(debug-set! (groups Scheme) (scan-data "")) +(default-lazy-handler (groups Scheme) (scan-data "#")) +(define (groups Scheme) (scan-data "")) +(define-macro (groups Scheme) (scan-data "")) +(define-module (groups Scheme) (scan-data "")) +(define-option-interface (groups Scheme) (scan-data "")) +(define-private (groups Scheme) (scan-data "")) +(define-public (groups Scheme) (scan-data "")) +(define-syntax-macro (groups Scheme) (scan-data "")) +(defined? (groups Scheme) (scan-data "#")) +(defmacro (groups Scheme) (scan-data "")) +(defmacro-public (groups Scheme) (scan-data "")) +(defmacro-transformer (groups Scheme) (scan-data "#")) +(defmacro:syntax-transformer (groups Scheme) (scan-data "#")) +(defmacro:transformer (groups Scheme) (scan-data "#")) +(defmacro? (groups Scheme) (scan-data "#")) +(delay (groups Scheme) (scan-data "")) +(delete (groups Scheme) (scan-data "#")) +(delete! (groups Scheme) (scan-data "#")) +(delete-file (groups POSIX Scheme) (scan-data "#")) +(delete1! (groups Scheme) (scan-data "#")) +(delq (groups Scheme) (scan-data "#")) +(delq! (groups Scheme) (scan-data "#")) +(delq1! (groups Scheme) (scan-data "#")) +(delv (groups Scheme) (scan-data "#")) +(delv! (groups Scheme) (scan-data "#")) +(delv1! (groups Scheme) (scan-data "#")) +(destroy-guardian! (groups Scheme) (scan-data "#")) +(dimensions->uniform-array (groups Scheme) (scan-data "#uniform-array>")) +(directory-stream? (groups POSIX Scheme) (scan-data "#")) +(dirname (groups POSIX Scheme) (scan-data "#")) +(display (groups Scheme) (scan-data "#")) +(display-application (groups Scheme) (scan-data "#")) +(display-backtrace (groups Scheme) (scan-data "#")) +(display-error (groups Scheme) (scan-data "#")) +(display-usage-report (groups Scheme) (scan-data "#")) +(do (groups Scheme) (scan-data "")) +(doubly-weak-hash-table? (groups Scheme) (scan-data "#")) +(drain-input (groups Scheme) (scan-data "#")) +(dup (groups POSIX Scheme) (scan-data "#")) +(dup->fdes (groups POSIX Scheme) (scan-data "#fdes>")) +(dup->inport (groups POSIX Scheme) (scan-data "#inport (port/fd . maybe-fd)>")) +(dup->outport (groups POSIX Scheme) (scan-data "#outport (port/fd . maybe-fd)>")) +(dup->port (groups POSIX Scheme) (scan-data "#port (port/fd mode . maybe-fd)>")) +(dup2 (groups POSIX Scheme) (scan-data "#")) +(duplicate-port (groups POSIX Scheme) (scan-data "#")) +(dynamic-args-call (groups Scheme) (scan-data "#")) +(dynamic-call (groups Scheme) (scan-data "#")) +(dynamic-func (groups Scheme) (scan-data "#")) +(dynamic-link (groups Scheme) (scan-data "#")) +(dynamic-object? (groups Scheme) (scan-data "#")) +(dynamic-root (groups Scheme) (scan-data "#")) +(dynamic-unlink (groups Scheme) (scan-data "#")) +(dynamic-wind (groups Scheme) (scan-data "#")) +(enclose-array (groups Scheme) (scan-data "#")) +(endgrent (groups POSIX Scheme) (scan-data "#")) +(endhostent (groups Scheme) (scan-data "#")) +(endnetent (groups Scheme) (scan-data "#")) +(endprotoent (groups Scheme) (scan-data "#")) +(endpwent (groups POSIX Scheme) (scan-data "#")) +(endservent (groups Scheme) (scan-data "#")) +(entity? (groups Scheme) (scan-data "#")) +(env-module (groups Scheme) (scan-data "#")) +(environ (groups POSIX Scheme) (scan-data "#")) +(environment-bound? (groups Scheme) (scan-data "#")) +(environment-cell (groups Scheme) (scan-data "#")) +(environment-define (groups Scheme) (scan-data "#")) +(environment-fold (groups Scheme) (scan-data "#")) +(environment-module (groups Scheme) (scan-data "#")) +(environment-observe (groups Scheme) (scan-data "#")) +(environment-observe-weak (groups Scheme) (scan-data "#")) +(environment-ref (groups Scheme) (scan-data "#")) +(environment-set! (groups Scheme) (scan-data "#")) +(environment-undefine (groups Scheme) (scan-data "#")) +(environment-unobserve (groups Scheme) (scan-data "#")) +(environment? (groups Scheme) (scan-data "#")) +(eof-object? (groups Scheme) (scan-data "#")) +(eq? (groups Scheme) (scan-data "#")) +(equal? (groups Scheme) (scan-data "#")) +(eqv? (groups Scheme) (scan-data "#")) +(error (groups Scheme) (scan-data "#")) +(error-catching-loop (groups Scheme) (scan-data "#")) +(error-catching-repl (groups Scheme) (scan-data "#")) +(eval (groups Scheme) (scan-data "#")) +(eval-case (groups Scheme) (scan-data "")) +(eval-disable (groups Scheme) (scan-data "#")) +(eval-enable (groups Scheme) (scan-data "#")) +(eval-environment-imported (groups Scheme) (scan-data "#")) +(eval-environment-local (groups Scheme) (scan-data "#")) +(eval-environment-set-imported! (groups Scheme) (scan-data "#")) +(eval-environment-set-local! (groups Scheme) (scan-data "#")) +(eval-environment? (groups Scheme) (scan-data "#")) +(eval-options (groups Scheme) (scan-data "#")) +(eval-options-interface (groups Scheme) (scan-data "#")) +(eval-set! (groups Scheme) (scan-data "")) +(eval-string (groups Scheme) (scan-data "#")) +(evaluator-traps-interface (groups Scheme) (scan-data "#")) +(even? (groups Scheme) (scan-data "#")) +(exact->inexact (groups Scheme) (scan-data "#inexact>")) +(exact? (groups Scheme) (scan-data "#")) +(execl (groups POSIX Scheme) (scan-data "#")) +(execle (groups POSIX Scheme) (scan-data "#")) +(execlp (groups POSIX Scheme) (scan-data "#")) +(exit (groups Scheme) (scan-data "#")) +(exit-hook (groups Scheme) (scan-data "")) +(exp (groups Scheme) (scan-data "#")) +(export (groups Scheme) (scan-data "")) +(export-environment-private (groups Scheme) (scan-data "#")) +(export-environment-set-private! (groups Scheme) (scan-data "#")) +(export-environment-set-signature! (groups Scheme) (scan-data "#")) +(export-environment-signature (groups Scheme) (scan-data "#")) +(export-environment? (groups Scheme) (scan-data "#")) +(export-syntax (groups Scheme) (scan-data "")) +(expt (groups Scheme) (scan-data "#")) +(false-if-exception (groups Scheme) (scan-data "")) +(fcntl (groups POSIX Scheme) (scan-data "#")) +(fdes->inport (groups POSIX Scheme) (scan-data "#inport (fdes)>")) +(fdes->outport (groups POSIX Scheme) (scan-data "#outport (fdes)>")) +(fdes->ports (groups POSIX Scheme) (scan-data "#ports>")) +(fdopen (groups POSIX Scheme) (scan-data "#")) +(feature? (groups Scheme) (scan-data "#")) +(file-exists? (groups Scheme) (scan-data "#")) +(file-is-directory? (groups Scheme) (scan-data "#")) +(file-port? (groups Scheme) (scan-data "#")) +(file-position (groups Scheme) (scan-data "#")) +(file-set-position (groups Scheme) (scan-data "#")) +(fileno (groups POSIX Scheme) (scan-data "#")) +(flock (groups POSIX Scheme) (scan-data "#")) +(floor (groups Scheme) (scan-data "#")) +(fluid-ref (groups Scheme) (scan-data "#")) +(fluid-set! (groups Scheme) (scan-data "#")) +(fluid? (groups Scheme) (scan-data "#")) +(flush-all-ports (groups Scheme) (scan-data "#")) +(for-each (groups Scheme) (scan-data "#")) +(for-next-option (groups Scheme) (scan-data "#")) +(force (groups Scheme) (scan-data "#")) +(force-output (groups Scheme) (scan-data "#")) +(format (groups Scheme) (scan-data "#")) +(frame-arguments (groups Scheme) (scan-data "#")) +(frame-evaluating-args? (groups Scheme) (scan-data "#")) +(frame-next (groups Scheme) (scan-data "#")) +(frame-number (groups Scheme) (scan-data "#")) +(frame-overflow? (groups Scheme) (scan-data "#")) +(frame-previous (groups Scheme) (scan-data "#")) +(frame-procedure (groups Scheme) (scan-data "#")) +(frame-procedure? (groups Scheme) (scan-data "#")) +(frame-real? (groups Scheme) (scan-data "#")) +(frame-source (groups Scheme) (scan-data "#")) +(frame? (groups Scheme) (scan-data "#")) +(fsync (groups POSIX Scheme) (scan-data "#")) +(ftell (groups Scheme) (scan-data "#")) +(gc (groups Scheme) (scan-data "#")) +(gc-run-time (groups Scheme) (scan-data "#")) +(gc-stats (groups Scheme) (scan-data "#")) +(gcd (groups Scheme) (scan-data "#")) +(gdb_binding (groups guile-C-API gdb C) (scan-data T)) +(gdb_eval (groups guile-C-API gdb C) (scan-data T)) +(gdb_language (groups guile-C-API gdb C) (scan-data D)) +(gdb_maybe_valid_type_p (groups guile-C-API gdb C) (scan-data T)) +(gdb_options (groups guile-C-API gdb C) (scan-data D)) +(gdb_output (groups guile-C-API gdb C) (scan-data B)) +(gdb_output_length (groups guile-C-API gdb C) (scan-data B)) +(gdb_print (groups guile-C-API gdb C) (scan-data T)) +(gdb_read (groups guile-C-API gdb C) (scan-data T)) +(gdb_result (groups guile-C-API gdb C) (scan-data B)) +(gensym (groups Scheme) (scan-data "#")) +(get-internal-real-time (groups POSIX Scheme) (scan-data "#")) +(get-internal-run-time (groups POSIX Scheme) (scan-data "#")) +(get-option (groups Scheme) (scan-data "#")) +(get-output-string (groups Scheme) (scan-data "#")) +(get-print-state (groups Scheme) (scan-data "#")) +(getcwd (groups POSIX Scheme) (scan-data "#")) +(getegid (groups POSIX Scheme) (scan-data "#")) +(getenv (groups POSIX Scheme) (scan-data "#")) +(geteuid (groups POSIX Scheme) (scan-data "#")) +(getgid (groups POSIX Scheme) (scan-data "#")) +(getgr (groups POSIX Scheme) (scan-data "#")) +(getgrent (groups POSIX Scheme) (scan-data "#")) +(getgrgid (groups POSIX Scheme) (scan-data "#")) +(getgrnam (groups POSIX Scheme) (scan-data "#")) +(getgroups (groups POSIX Scheme) (scan-data "#")) +(gethost (groups Scheme) (scan-data "#")) +(gethostbyaddr (groups Scheme) (scan-data "#")) +(gethostbyname (groups Scheme) (scan-data "#")) +(gethostent (groups Scheme) (scan-data "#")) +(gethostname (groups POSIX Scheme) (scan-data "#")) +(getitimer (groups POSIX Scheme) (scan-data "#")) +(getlogin (groups POSIX Scheme) (scan-data "#")) +(getnet (groups Scheme) (scan-data "#")) +(getnetbyaddr (groups Scheme) (scan-data "#")) +(getnetbyname (groups Scheme) (scan-data "#")) +(getnetent (groups Scheme) (scan-data "#")) +(getpass (groups POSIX Scheme) (scan-data "#")) +(getpeername (groups Scheme) (scan-data "#")) +(getpgrp (groups POSIX Scheme) (scan-data "#")) +(getpid (groups POSIX Scheme) (scan-data "#")) +(getppid (groups POSIX Scheme) (scan-data "#")) +(getpriority (groups POSIX Scheme) (scan-data "#")) +(getproto (groups Scheme) (scan-data "#")) +(getprotobyname (groups Scheme) (scan-data "#")) +(getprotobynumber (groups Scheme) (scan-data "#")) +(getprotoent (groups Scheme) (scan-data "#")) +(getpw (groups POSIX Scheme) (scan-data "#")) +(getpwent (groups POSIX Scheme) (scan-data "#")) +(getpwnam (groups POSIX Scheme) (scan-data "#")) +(getpwuid (groups POSIX Scheme) (scan-data "#")) +(getserv (groups Scheme) (scan-data "#")) +(getservbyname (groups Scheme) (scan-data "#")) +(getservbyport (groups Scheme) (scan-data "#")) +(getservent (groups Scheme) (scan-data "#")) +(getsockname (groups Scheme) (scan-data "#")) +(getsockopt (groups Scheme) (scan-data "#")) +(gettimeofday (groups POSIX Scheme) (scan-data "#")) +(getuid (groups POSIX Scheme) (scan-data "#")) +(gh_append (groups guile-C-API gh C) (scan-data T)) +(gh_append2 (groups guile-C-API gh C) (scan-data T)) +(gh_append3 (groups guile-C-API gh C) (scan-data T)) +(gh_append4 (groups guile-C-API gh C) (scan-data T)) +(gh_apply (groups guile-C-API gh C) (scan-data T)) +(gh_bool2scm (groups guile-C-API gh C) (scan-data T)) +(gh_boolean_p (groups guile-C-API gh C) (scan-data T)) +(gh_caaar (groups guile-C-API gh C) (scan-data T)) +(gh_caadr (groups guile-C-API gh C) (scan-data T)) +(gh_caar (groups guile-C-API gh C) (scan-data T)) +(gh_cadar (groups guile-C-API gh C) (scan-data T)) +(gh_caddr (groups guile-C-API gh C) (scan-data T)) +(gh_cadr (groups guile-C-API gh C) (scan-data T)) +(gh_call0 (groups guile-C-API gh C) (scan-data T)) +(gh_call1 (groups guile-C-API gh C) (scan-data T)) +(gh_call2 (groups guile-C-API gh C) (scan-data T)) +(gh_call3 (groups guile-C-API gh C) (scan-data T)) +(gh_car (groups guile-C-API gh C) (scan-data T)) +(gh_catch (groups guile-C-API gh C) (scan-data T)) +(gh_cdaar (groups guile-C-API gh C) (scan-data T)) +(gh_cdadr (groups guile-C-API gh C) (scan-data T)) +(gh_cdar (groups guile-C-API gh C) (scan-data T)) +(gh_cddar (groups guile-C-API gh C) (scan-data T)) +(gh_cdddr (groups guile-C-API gh C) (scan-data T)) +(gh_cddr (groups guile-C-API gh C) (scan-data T)) +(gh_cdr (groups guile-C-API gh C) (scan-data T)) +(gh_char2scm (groups guile-C-API gh C) (scan-data T)) +(gh_char_p (groups guile-C-API gh C) (scan-data T)) +(gh_chars2byvect (groups guile-C-API gh C) (scan-data T)) +(gh_cons (groups guile-C-API gh C) (scan-data T)) +(gh_define (groups guile-C-API gh C) (scan-data T)) +(gh_display (groups guile-C-API gh C) (scan-data T)) +(gh_double2scm (groups guile-C-API gh C) (scan-data T)) +(gh_doubles2dvect (groups guile-C-API gh C) (scan-data T)) +(gh_doubles2scm (groups guile-C-API gh C) (scan-data T)) +(gh_enter (groups guile-C-API gh C) (scan-data T)) +(gh_eq_p (groups guile-C-API gh C) (scan-data T)) +(gh_equal_p (groups guile-C-API gh C) (scan-data T)) +(gh_eqv_p (groups guile-C-API gh C) (scan-data T)) +(gh_eval_file (groups guile-C-API gh C) (scan-data T)) +(gh_eval_file_with_catch (groups guile-C-API gh C) (scan-data T)) +(gh_eval_file_with_standard_handler (groups guile-C-API gh C) (scan-data T)) +(gh_eval_str (groups guile-C-API gh C) (scan-data T)) +(gh_eval_str_with_catch (groups guile-C-API gh C) (scan-data T)) +(gh_eval_str_with_stack_saving_handler (groups guile-C-API gh C) (scan-data T)) +(gh_eval_str_with_standard_handler (groups guile-C-API gh C) (scan-data T)) +(gh_exact_p (groups guile-C-API gh C) (scan-data T)) +(gh_floats2fvect (groups guile-C-API gh C) (scan-data T)) +(gh_get_substr (groups guile-C-API gh C) (scan-data T)) +(gh_inexact_p (groups guile-C-API gh C) (scan-data T)) +(gh_int2scm (groups guile-C-API gh C) (scan-data T)) +(gh_ints2scm (groups guile-C-API gh C) (scan-data T)) +(gh_length (groups guile-C-API gh C) (scan-data T)) +(gh_list_p (groups guile-C-API gh C) (scan-data T)) +(gh_long2scm (groups guile-C-API gh C) (scan-data T)) +(gh_longs2ivect (groups guile-C-API gh C) (scan-data T)) +(gh_lookup (groups guile-C-API gh C) (scan-data T)) +(gh_make_vector (groups guile-C-API gh C) (scan-data T)) +(gh_module_lookup (groups guile-C-API gh C) (scan-data T)) +(gh_new_procedure (groups guile-C-API gh C) (scan-data T)) +(gh_new_procedure0_0 (groups guile-C-API gh C) (scan-data T)) +(gh_new_procedure0_1 (groups guile-C-API gh C) (scan-data T)) +(gh_new_procedure0_2 (groups guile-C-API gh C) (scan-data T)) +(gh_new_procedure1_0 (groups guile-C-API gh C) (scan-data T)) +(gh_new_procedure1_1 (groups guile-C-API gh C) (scan-data T)) +(gh_new_procedure1_2 (groups guile-C-API gh C) (scan-data T)) +(gh_new_procedure2_0 (groups guile-C-API gh C) (scan-data T)) +(gh_new_procedure2_1 (groups guile-C-API gh C) (scan-data T)) +(gh_new_procedure2_2 (groups guile-C-API gh C) (scan-data T)) +(gh_new_procedure3_0 (groups guile-C-API gh C) (scan-data T)) +(gh_new_procedure4_0 (groups guile-C-API gh C) (scan-data T)) +(gh_new_procedure5_0 (groups guile-C-API gh C) (scan-data T)) +(gh_newline (groups guile-C-API gh C) (scan-data T)) +(gh_null_p (groups guile-C-API gh C) (scan-data T)) +(gh_number_p (groups guile-C-API gh C) (scan-data T)) +(gh_pair_p (groups guile-C-API gh C) (scan-data T)) +(gh_procedure_p (groups guile-C-API gh C) (scan-data T)) +(gh_repl (groups guile-C-API gh C) (scan-data T)) +(gh_scm2bool (groups guile-C-API gh C) (scan-data T)) +(gh_scm2char (groups guile-C-API gh C) (scan-data T)) +(gh_scm2chars (groups guile-C-API gh C) (scan-data T)) +(gh_scm2double (groups guile-C-API gh C) (scan-data T)) +(gh_scm2doubles (groups guile-C-API gh C) (scan-data T)) +(gh_scm2floats (groups guile-C-API gh C) (scan-data T)) +(gh_scm2int (groups guile-C-API gh C) (scan-data T)) +(gh_scm2long (groups guile-C-API gh C) (scan-data T)) +(gh_scm2longs (groups guile-C-API gh C) (scan-data T)) +(gh_scm2newstr (groups guile-C-API gh C) (scan-data T)) +(gh_scm2shorts (groups guile-C-API gh C) (scan-data T)) +(gh_scm2ulong (groups guile-C-API gh C) (scan-data T)) +(gh_set_car_x (groups guile-C-API gh C) (scan-data T)) +(gh_set_cdr_x (groups guile-C-API gh C) (scan-data T)) +(gh_set_substr (groups guile-C-API gh C) (scan-data T)) +(gh_shorts2svect (groups guile-C-API gh C) (scan-data T)) +(gh_standard_handler (groups guile-C-API gh C) (scan-data T)) +(gh_str02scm (groups guile-C-API gh C) (scan-data T)) +(gh_str2scm (groups guile-C-API gh C) (scan-data T)) +(gh_string_equal_p (groups guile-C-API gh C) (scan-data T)) +(gh_string_p (groups guile-C-API gh C) (scan-data T)) +(gh_symbol2newstr (groups guile-C-API gh C) (scan-data T)) +(gh_symbol2scm (groups guile-C-API gh C) (scan-data T)) +(gh_symbol_p (groups guile-C-API gh C) (scan-data T)) +(gh_ulong2scm (groups guile-C-API gh C) (scan-data T)) +(gh_ulongs2uvect (groups guile-C-API gh C) (scan-data T)) +(gh_uniform_vector_length (groups guile-C-API gh C) (scan-data T)) +(gh_uniform_vector_ref (groups guile-C-API gh C) (scan-data T)) +(gh_vector_length (groups guile-C-API gh C) (scan-data T)) +(gh_vector_p (groups guile-C-API gh C) (scan-data T)) +(gh_vector_ref (groups guile-C-API gh C) (scan-data T)) +(gh_vector_set_x (groups guile-C-API gh C) (scan-data T)) +(gh_write (groups guile-C-API gh C) (scan-data T)) +(gmtime (groups POSIX Scheme) (scan-data "#")) +(group:gid (groups POSIX Scheme) (scan-data "#")) +(group:mem (groups POSIX Scheme) (scan-data "#")) +(group:name (groups POSIX Scheme) (scan-data "#")) +(group:passwd (groups POSIX Scheme) (scan-data "#")) +(guardian-destroyed? (groups Scheme) (scan-data "#")) +(guardian-greedy? (groups Scheme) (scan-data "#")) +(handle-system-error (groups Scheme) (scan-data "#")) +(has-shown-backtrace-hint? (groups Scheme) (scan-data "")) +(has-shown-debugger-hint? (groups Scheme) (scan-data "")) +(has-suffix? (groups Scheme) (scan-data "#")) +(hash (groups Scheme) (scan-data "#")) +(hash-create-handle! (groups Scheme) (scan-data "#")) +(hash-fold (groups Scheme) (scan-data "#")) +(hash-get-handle (groups Scheme) (scan-data "#")) +(hash-ref (groups Scheme) (scan-data "#")) +(hash-remove! (groups Scheme) (scan-data "#")) +(hash-set! (groups Scheme) (scan-data "#")) +(hashq (groups Scheme) (scan-data "#")) +(hashq-create-handle! (groups Scheme) (scan-data "#")) +(hashq-get-handle (groups Scheme) (scan-data "#")) +(hashq-ref (groups Scheme) (scan-data "#")) +(hashq-remove! (groups Scheme) (scan-data "#")) +(hashq-set! (groups Scheme) (scan-data "#")) +(hashv (groups Scheme) (scan-data "#")) +(hashv-create-handle! (groups Scheme) (scan-data "#")) +(hashv-get-handle (groups Scheme) (scan-data "#")) +(hashv-ref (groups Scheme) (scan-data "#")) +(hashv-remove! (groups Scheme) (scan-data "#")) +(hashv-set! (groups Scheme) (scan-data "#")) +(hashx-create-handle! (groups Scheme) (scan-data "#")) +(hashx-get-handle (groups Scheme) (scan-data "#")) +(hashx-ref (groups Scheme) (scan-data "#")) +(hashx-set! (groups Scheme) (scan-data "#")) +(hook->list (groups Scheme) (scan-data "#list>")) +(hook-empty? (groups Scheme) (scan-data "#")) +(hook? (groups Scheme) (scan-data "#")) +(hostent:addr-list (groups Scheme) (scan-data "#")) +(hostent:addrtype (groups Scheme) (scan-data "#")) +(hostent:aliases (groups Scheme) (scan-data "#")) +(hostent:length (groups Scheme) (scan-data "#")) +(hostent:name (groups Scheme) (scan-data "#")) +(htonl (groups Scheme) (scan-data "#")) +(htons (groups Scheme) (scan-data "#")) +(identity (groups Scheme) (scan-data "#")) +(if (groups Scheme) (scan-data "")) +(imag-part (groups Scheme) (scan-data "#")) +(import-environment-imports (groups Scheme) (scan-data "#")) +(import-environment-set-imports! (groups Scheme) (scan-data "#")) +(import-environment? (groups Scheme) (scan-data "#")) +(in-vicinity (groups Scheme) (scan-data "#")) +(include-deprecated-features (groups Scheme) (scan-data "#")) +(inet-aton (groups Scheme) (scan-data "#")) +(inet-lnaof (groups Scheme) (scan-data "#")) +(inet-makeaddr (groups Scheme) (scan-data "#")) +(inet-netof (groups Scheme) (scan-data "#")) +(inet-ntoa (groups Scheme) (scan-data "#")) +(inet-ntop (groups Scheme) (scan-data "#")) +(inet-pton (groups Scheme) (scan-data "#")) +(inexact->exact (groups Scheme) (scan-data "#exact>")) +(inexact? (groups Scheme) (scan-data "#")) +(inf (groups Scheme) (scan-data "#")) +(inf? (groups Scheme) (scan-data "#")) +(inherit-print-state (groups Scheme) (scan-data "#")) +(input-port? (groups Scheme) (scan-data "#")) +(integer->char (groups Scheme) (scan-data "#char>")) +(integer-expt (groups Scheme) (scan-data "#")) +(integer-length (groups Scheme) (scan-data "#")) +(integer? (groups Scheme) (scan-data "#")) +(interaction-environment (groups Scheme) (scan-data "#")) +(internal-time-units-per-second (groups Scheme) (scan-data "")) +(iota (groups Scheme) (scan-data "#")) +(ipow-by-squaring (groups Scheme) (scan-data "#")) +(isatty? (groups POSIX Scheme) (scan-data "#")) +(issue-deprecation-warning (groups Scheme) (scan-data "#")) +(join-thread (groups Scheme) (scan-data "#")) +(keyword->symbol (groups Scheme) (scan-data "#symbol (kw)>")) +(keyword-dash-symbol (groups Scheme) (scan-data "#")) +(keyword-like-symbol->keyword (groups Scheme) (scan-data "#keyword (sym)>")) +(keyword? (groups Scheme) (scan-data "#")) +(kill (groups POSIX Scheme) (scan-data "#")) +(kw-arg-ref (groups Scheme) (scan-data "#")) +(lambda (groups Scheme) (scan-data "")) +(last-pair (groups Scheme) (scan-data "#")) +(last-stack-frame (groups Scheme) (scan-data "#")) +(lazy-catch (groups Scheme) (scan-data "#")) +(lazy-handler-dispatch (groups Scheme) (scan-data "#")) +(lcm (groups Scheme) (scan-data "#")) +(leaf-environment? (groups Scheme) (scan-data "#")) +(length (groups Scheme) (scan-data "#")) +(let (groups Scheme) (scan-data "")) +(let* (groups Scheme) (scan-data "")) +(letrec (groups Scheme) (scan-data "")) +(link (groups POSIX Scheme) (scan-data "#")) +(list (groups Scheme) (scan-data "#")) +(list->array (groups Scheme) (scan-data "#array (ndim lst)>")) +(list->string (groups Scheme) (scan-data "#string>")) +(list->symbol (groups Scheme) (scan-data "#symbol args>")) +(list->uniform-array (groups Scheme) (scan-data "#uniform-array>")) +(list->uniform-vector (groups Scheme) (scan-data "#uniform-vector (prot lst)>")) +(list->vector (groups Scheme) (scan-data "#vector>")) +(list->weak-vector (groups Scheme) (scan-data "#weak-vector>")) +(list-cdr-ref (groups Scheme) (scan-data "#")) +(list-cdr-set! (groups Scheme) (scan-data "#")) +(list-copy (groups Scheme) (scan-data "#")) +(list-head (groups Scheme) (scan-data "#")) +(list-index (groups Scheme) (scan-data "#")) +(list-ref (groups Scheme) (scan-data "#")) +(list-set! (groups Scheme) (scan-data "#")) +(list-tail (groups Scheme) (scan-data "#")) +(list? (groups Scheme) (scan-data "#")) +(listen (groups Scheme) (scan-data "#")) +(load (groups Scheme) (scan-data "#")) +(load-compiled (groups Scheme) (scan-data "")) +(load-emacs-interface (groups Scheme) (scan-data "#")) +(load-extension (groups Scheme) (scan-data "#")) +(load-from-path (groups Scheme) (scan-data "#")) +(load-module (groups Scheme) (scan-data "#")) +(load-user-init (groups Scheme) (scan-data "#")) +(local-define (groups Scheme) (scan-data "#")) +(local-eval (groups Scheme) (scan-data "#")) +(local-ref (groups Scheme) (scan-data "#")) +(local-remove (groups Scheme) (scan-data "#")) +(local-set! (groups Scheme) (scan-data "#")) +(localtime (groups POSIX Scheme) (scan-data "#")) +(lock-mutex (groups Scheme) (scan-data "#")) +(log (groups Scheme) (scan-data "#")) +(log10 (groups Scheme) (scan-data "#")) +(logand (groups Scheme) (scan-data "#")) +(logbit? (groups Scheme) (scan-data "#")) +(logcount (groups Scheme) (scan-data "#")) +(logior (groups Scheme) (scan-data "#")) +(lognot (groups Scheme) (scan-data "#")) +(logtest (groups Scheme) (scan-data "#")) +(logxor (groups Scheme) (scan-data "#")) +(lstat (groups POSIX Scheme) (scan-data "#")) +(macro-name (groups Scheme) (scan-data "#")) +(macro-table (groups Scheme) (scan-data "")) +(macro-transformer (groups Scheme) (scan-data "#")) +(macro-type (groups Scheme) (scan-data "#")) +(macro? (groups Scheme) (scan-data "#")) +(macroexpand (groups Scheme) (scan-data "#")) +(macroexpand-1 (groups Scheme) (scan-data "#")) +(magnitude (groups Scheme) (scan-data "#")) +(major-version (groups Scheme) (scan-data "#")) +(make-arbiter (groups Scheme) (scan-data "#")) +(make-array (groups Scheme) (scan-data "#")) +(make-autoload-interface (groups Scheme) (scan-data "#")) +(make-class-object (groups Scheme) (scan-data "#")) +(make-condition-variable (groups Scheme) (scan-data "#")) +(make-doubly-weak-hash-table (groups Scheme) (scan-data "#")) +(make-eval-environment (groups Scheme) (scan-data "#")) +(make-export-environment (groups Scheme) (scan-data "#")) +(make-fluid (groups Scheme) (scan-data "#")) +(make-guardian (groups Scheme) (scan-data "#")) +(make-hash-table (groups Scheme) (scan-data "#")) +(make-hook (groups Scheme) (scan-data "#")) +(make-import-environment (groups Scheme) (scan-data "#")) +(make-keyword-from-dash-symbol (groups Scheme) (scan-data "#")) +(make-leaf-environment (groups Scheme) (scan-data "#")) +(make-list (groups Scheme) (scan-data "#")) +(make-module (groups Scheme) (scan-data "#")) +(make-modules-in (groups Scheme) (scan-data "#")) +(make-mutex (groups Scheme) (scan-data "#")) +(make-object-property (groups Scheme) (scan-data "#")) +(make-polar (groups Scheme) (scan-data "#")) +(make-procedure-with-setter (groups Scheme) (scan-data "#")) +(make-record-type (groups Scheme) (scan-data "#")) +(make-rectangular (groups Scheme) (scan-data "#")) +(make-regexp (groups Scheme) (scan-data "#")) +(make-root-module (groups Scheme) (scan-data "#")) +(make-scm-module (groups Scheme) (scan-data "#")) +(make-shared-array (groups Scheme) (scan-data "#")) +(make-soft-port (groups Scheme) (scan-data "#")) +(make-stack (groups Scheme) (scan-data "#")) +(make-string (groups Scheme) (scan-data "#")) +(make-struct (groups Scheme) (scan-data "#")) +(make-struct-layout (groups Scheme) (scan-data "#")) +(make-subclass-object (groups Scheme) (scan-data "#")) +(make-symbol (groups Scheme) (scan-data "#")) +(make-undefined-variable (groups Scheme) (scan-data "#")) +(make-uniform-array (groups Scheme) (scan-data "#")) +(make-uniform-vector (groups Scheme) (scan-data "#uniform-array>")) +(make-variable (groups Scheme) (scan-data "#")) +(make-vector (groups Scheme) (scan-data "#")) +(make-vtable-vtable (groups Scheme) (scan-data "#")) +(make-weak-key-hash-table (groups Scheme) (scan-data "#")) +(make-weak-value-hash-table (groups Scheme) (scan-data "#")) +(make-weak-vector (groups Scheme) (scan-data "#")) +(map (groups Scheme) (scan-data "#")) +(map-in-order (groups Scheme) (scan-data "#")) +(mask-signals (groups Scheme) (scan-data "#")) +(max (groups Scheme) (scan-data "#")) +(member (groups Scheme) (scan-data "#")) +(memoized-environment (groups Scheme) (scan-data "#")) +(memoized? (groups Scheme) (scan-data "#")) +(memq (groups Scheme) (scan-data "#")) +(memv (groups Scheme) (scan-data "#")) +(merge (groups Scheme) (scan-data "#")) +(merge! (groups Scheme) (scan-data "#")) +(micro-version (groups Scheme) (scan-data "#")) +(min (groups Scheme) (scan-data "#")) +(minor-version (groups Scheme) (scan-data "#")) +(mkdir (groups POSIX Scheme) (scan-data "#")) +(mknod (groups POSIX Scheme) (scan-data "#")) +(mkstemp! (groups POSIX Scheme) (scan-data "#")) +(mktime (groups POSIX Scheme) (scan-data "#")) +(module-add! (groups Scheme) (scan-data "#")) +(module-binder (groups Scheme) (scan-data "#")) +(module-bound? (groups Scheme) (scan-data "#")) +(module-clear! (groups Scheme) (scan-data "#")) +(module-constructor (groups Scheme) (scan-data "#")) +(module-define! (groups Scheme) (scan-data "#")) +(module-defined? (groups Scheme) (scan-data "#")) +(module-ensure-local-variable! (groups Scheme) (scan-data "#")) +(module-eval-closure (groups Scheme) (scan-data "#")) +(module-export! (groups Scheme) (scan-data "#")) +(module-for-each (groups Scheme) (scan-data "#")) +(module-kind (groups Scheme) (scan-data "#")) +(module-local-variable (groups Scheme) (scan-data "#")) +(module-locally-bound? (groups Scheme) (scan-data "#")) +(module-make-local-var! (groups Scheme) (scan-data "#")) +(module-map (groups Scheme) (scan-data "#")) +(module-modified (groups Scheme) (scan-data "#")) +(module-name (groups Scheme) (scan-data "#")) +(module-obarray (groups Scheme) (scan-data "#")) +(module-obarray-get-handle (groups Scheme) (scan-data "#")) +(module-obarray-ref (groups Scheme) (scan-data "#")) +(module-obarray-remove! (groups Scheme) (scan-data "#")) +(module-obarray-set! (groups Scheme) (scan-data "#")) +(module-observe (groups Scheme) (scan-data "#")) +(module-observe-weak (groups Scheme) (scan-data "#")) +(module-observer-id (groups Scheme) (scan-data "#")) +(module-observers (groups Scheme) (scan-data "#")) +(module-public-interface (groups Scheme) (scan-data "#")) +(module-re-export! (groups Scheme) (scan-data "#")) +(module-ref (groups Scheme) (scan-data "#")) +(module-remove! (groups Scheme) (scan-data "#")) +(module-search (groups Scheme) (scan-data "#")) +(module-set! (groups Scheme) (scan-data "#")) +(module-symbol-binding (groups Scheme) (scan-data "#")) +(module-symbol-interned? (groups Scheme) (scan-data "#")) +(module-symbol-local-binding (groups Scheme) (scan-data "#")) +(module-symbol-locally-interned? (groups Scheme) (scan-data "#")) +(module-transformer (groups Scheme) (scan-data "#")) +(module-type (groups Scheme) (scan-data "")) +(module-unobserve (groups Scheme) (scan-data "#")) +(module-use! (groups Scheme) (scan-data "#")) +(module-uses (groups Scheme) (scan-data "#")) +(module-variable (groups Scheme) (scan-data "#")) +(module-weak-observers (groups Scheme) (scan-data "#")) +(module? (groups Scheme) (scan-data "#")) +(modulo (groups Scheme) (scan-data "#")) +(most-negative-fixnum (groups Scheme) (scan-data "")) +(most-positive-fixnum (groups Scheme) (scan-data "")) +(move->fdes (groups POSIX Scheme) (scan-data "#fdes (fd/port fd)>")) +(named-module-use! (groups Scheme) (scan-data "#")) +(nan (groups Scheme) (scan-data "#")) +(nan? (groups Scheme) (scan-data "#")) +(negative? (groups Scheme) (scan-data "#")) +(nested-define! (groups Scheme) (scan-data "#")) +(nested-ref (groups Scheme) (scan-data "#")) +(nested-remove! (groups Scheme) (scan-data "#")) +(nested-set! (groups Scheme) (scan-data "#")) +(netent:addrtype (groups Scheme) (scan-data "#")) +(netent:aliases (groups Scheme) (scan-data "#")) +(netent:name (groups Scheme) (scan-data "#")) +(netent:net (groups Scheme) (scan-data "#")) +(newline (groups Scheme) (scan-data "#")) +(nice (groups POSIX Scheme) (scan-data "#")) +(nil-cond (groups Scheme) (scan-data "")) +(noop (groups Scheme) (scan-data "#")) +(not (groups Scheme) (scan-data "#")) +(ntohl (groups Scheme) (scan-data "#")) +(ntohs (groups Scheme) (scan-data "#")) +(null? (groups Scheme) (scan-data "#")) +(number->string (groups Scheme) (scan-data "#string>")) +(number? (groups Scheme) (scan-data "#")) +(object->string (groups Scheme) (scan-data "#string>")) +(object-address (groups Scheme) (scan-data "#")) +(object-properties (groups Scheme) (scan-data "#")) +(object-property (groups Scheme) (scan-data "#")) +(odd? (groups Scheme) (scan-data "#")) +(open (groups POSIX Scheme) (scan-data "#")) +(open-fdes (groups POSIX Scheme) (scan-data "#")) +(open-file (groups Scheme) (scan-data "#")) +(open-input-file (groups Scheme) (scan-data "#")) +(open-input-string (groups Scheme) (scan-data "#")) +(open-io-file (groups Scheme) (scan-data "#")) +(open-output-file (groups Scheme) (scan-data "#")) +(open-output-string (groups Scheme) (scan-data "#")) +(opendir (groups POSIX Scheme) (scan-data "#")) +(operator? (groups Scheme) (scan-data "#")) +(or (groups Scheme) (scan-data "")) +(or-map (groups Scheme) (scan-data "#")) +(output-port? (groups Scheme) (scan-data "#")) +(pair? (groups Scheme) (scan-data "#")) +(parse-path (groups Scheme) (scan-data "#")) +(passwd:dir (groups POSIX Scheme) (scan-data "#")) +(passwd:gecos (groups POSIX Scheme) (scan-data "#")) +(passwd:gid (groups POSIX Scheme) (scan-data "#")) +(passwd:name (groups POSIX Scheme) (scan-data "#")) +(passwd:passwd (groups POSIX Scheme) (scan-data "#")) +(passwd:shell (groups POSIX Scheme) (scan-data "#")) +(passwd:uid (groups POSIX Scheme) (scan-data "#")) +(pause (groups POSIX Scheme) (scan-data "#")) +(peek (groups Scheme) (scan-data "#")) +(peek-char (groups Scheme) (scan-data "#")) +(pipe (groups POSIX Scheme) (scan-data "#")) +(pk (groups Scheme) (scan-data "#")) +(port->fdes (groups POSIX Scheme) (scan-data "#fdes (port)>")) +(port-closed? (groups Scheme) (scan-data "#")) +(port-column (groups Scheme) (scan-data "#")) +(port-filename (groups Scheme) (scan-data "#")) +(port-for-each (groups POSIX Scheme) (scan-data "#")) +(port-line (groups Scheme) (scan-data "#")) +(port-mode (groups POSIX Scheme) (scan-data "#")) +(port-revealed (groups POSIX Scheme) (scan-data "#")) +(port-with-print-state (groups Scheme) (scan-data "#")) +(port? (groups Scheme) (scan-data "#")) +(positive? (groups Scheme) (scan-data "#")) +(primitive-eval (groups Scheme) (scan-data "#")) +(primitive-exit (groups POSIX Scheme) (scan-data "#")) +(primitive-fork (groups POSIX Scheme) (scan-data "#")) +(primitive-load (groups Scheme) (scan-data "#")) +(primitive-load-path (groups Scheme) (scan-data "#")) +(primitive-macro? (groups Scheme) (scan-data "#")) +(primitive-make-property (groups Scheme) (scan-data "#")) +(primitive-move->fdes (groups POSIX Scheme) (scan-data "#fdes>")) +(primitive-property-del! (groups Scheme) (scan-data "#")) +(primitive-property-ref (groups Scheme) (scan-data "#")) +(primitive-property-set! (groups Scheme) (scan-data "#")) +(print-disable (groups Scheme) (scan-data "#")) +(print-enable (groups Scheme) (scan-data "#")) +(print-options (groups Scheme) (scan-data "#")) +(print-options-interface (groups Scheme) (scan-data "#")) +(print-set! (groups Scheme) (scan-data "")) +(procedure (groups Scheme) (scan-data "#")) +(procedure->macro (groups Scheme) (scan-data "#macro>")) +(procedure->memoizing-macro (groups Scheme) (scan-data "#memoizing-macro>")) +(procedure->syntax (groups Scheme) (scan-data "#syntax>")) +(procedure-documentation (groups Scheme) (scan-data "#")) +(procedure-environment (groups Scheme) (scan-data "#")) +(procedure-name (groups Scheme) (scan-data "#")) +(procedure-properties (groups Scheme) (scan-data "#")) +(procedure-property (groups Scheme) (scan-data "#")) +(procedure-source (groups Scheme) (scan-data "#")) +(procedure-with-setter? (groups Scheme) (scan-data "#")) +(procedure? (groups Scheme) (scan-data "#")) +(process-define-module (groups Scheme) (scan-data "#")) +(process-use-modules (groups Scheme) (scan-data "#")) +(program-arguments (groups POSIX Scheme) (scan-data "#")) +(promise? (groups Scheme) (scan-data "#")) +(protoent:aliases (groups Scheme) (scan-data "#")) +(protoent:name (groups Scheme) (scan-data "#")) +(protoent:proto (groups Scheme) (scan-data "#")) +(provide (groups Scheme) (scan-data "#")) +(provided? (groups Scheme) (scan-data "#")) +(purify-module! (groups Scheme) (scan-data "#")) +(putenv (groups POSIX Scheme) (scan-data "#")) +(quasiquote (groups Scheme) (scan-data "")) +(quit (groups Scheme) (scan-data "#")) +(quote (groups Scheme) (scan-data "")) +(quotient (groups Scheme) (scan-data "#")) +(raise (groups POSIX Scheme) (scan-data "#")) +(random (groups Scheme) (scan-data "#")) +(random:exp (groups Scheme) (scan-data "#")) +(random:hollow-sphere! (groups Scheme) (scan-data "#")) +(random:normal (groups Scheme) (scan-data "#")) +(random:normal-vector! (groups Scheme) (scan-data "#")) +(random:solid-sphere! (groups Scheme) (scan-data "#")) +(random:uniform (groups Scheme) (scan-data "#")) +(rational? (groups Scheme) (scan-data "#")) +(re-export (groups Scheme) (scan-data "")) +(re-export-syntax (groups Scheme) (scan-data "")) +(read (groups Scheme) (scan-data "#")) +(read-char (groups Scheme) (scan-data "#")) +(read-disable (groups Scheme) (scan-data "#")) +(read-enable (groups Scheme) (scan-data "#")) +(read-eval? (groups Scheme) (scan-data "")) +(read-hash-extend (groups Scheme) (scan-data "#")) +(read-hash-procedures (groups Scheme) (scan-data "")) +(read-options (groups Scheme) (scan-data "#")) +(read-options-interface (groups Scheme) (scan-data "#")) +(read-set! (groups Scheme) (scan-data "")) +(read:array (groups Scheme) (scan-data "#")) +(read:uniform-vector (groups Scheme) (scan-data "#")) +(readdir (groups POSIX Scheme) (scan-data "#")) +(readlink (groups POSIX Scheme) (scan-data "#")) +(real-part (groups Scheme) (scan-data "#")) +(real? (groups Scheme) (scan-data "#")) +(record-accessor (groups Scheme) (scan-data "#")) +(record-constructor (groups Scheme) (scan-data "#")) +(record-modifier (groups Scheme) (scan-data "#")) +(record-predicate (groups Scheme) (scan-data "#")) +(record-type-descriptor (groups Scheme) (scan-data "#")) +(record-type-fields (groups Scheme) (scan-data "#")) +(record-type-name (groups Scheme) (scan-data "#")) +(record-type-vtable (groups Scheme) (scan-data "")) +(record-type? (groups Scheme) (scan-data "#")) +(record? (groups Scheme) (scan-data "#")) +(recv! (groups Scheme) (scan-data "#")) +(recvfrom! (groups Scheme) (scan-data "#")) +(redirect-port (groups POSIX Scheme) (scan-data "#")) +(regexp-exec (groups Scheme) (scan-data "#")) +(regexp/basic (groups Scheme) (scan-data "")) +(regexp/extended (groups Scheme) (scan-data "")) +(regexp/icase (groups Scheme) (scan-data "")) +(regexp/newline (groups Scheme) (scan-data "")) +(regexp/notbol (groups Scheme) (scan-data "")) +(regexp/noteol (groups Scheme) (scan-data "")) +(regexp? (groups Scheme) (scan-data "#")) +(release-arbiter (groups Scheme) (scan-data "#")) +(release-port-handle (groups POSIX Scheme) (scan-data "#")) +(remainder (groups Scheme) (scan-data "#")) +(remove-hook! (groups Scheme) (scan-data "#")) +(rename-file (groups POSIX Scheme) (scan-data "#")) +(repl (groups Scheme) (scan-data "#")) +(repl-reader (groups Scheme) (scan-data "#")) +(reset-hook! (groups Scheme) (scan-data "#")) +(resolve-interface (groups Scheme) (scan-data "#")) +(resolve-module (groups Scheme) (scan-data "#")) +(restore-signals (groups POSIX Scheme) (scan-data "#")) +(restricted-vector-sort! (groups Scheme) (scan-data "#")) +(reverse (groups Scheme) (scan-data "#")) +(reverse! (groups Scheme) (scan-data "#")) +(rewinddir (groups POSIX Scheme) (scan-data "#")) +(rmdir (groups POSIX Scheme) (scan-data "#")) +(round (groups Scheme) (scan-data "#")) +(run-asyncs (groups Scheme) (scan-data "#")) +(run-hook (groups Scheme) (scan-data "#")) +(save-module-excursion (groups Scheme) (scan-data "#")) +(save-stack (groups Scheme) (scan-data "#")) +(scheme-file-suffix (groups Scheme) (scan-data "#")) +(scm-error (groups Scheme) (scan-data "#")) +(scm-repl-print-unspecified (groups Scheme) (scan-data "")) +(scm-repl-prompt (groups Scheme) (scan-data "")) +(scm-repl-silent (groups Scheme) (scan-data "")) +(scm-repl-verbose (groups Scheme) (scan-data "")) +(scm-style-repl (groups Scheme) (scan-data "#")) +(scm_I_am_dead (groups scm C) (scan-data B)) +(scm_abs (groups scm C) (scan-data T)) +(scm_accept (groups scm C) (scan-data T)) +(scm_access (groups scm C) (scan-data T)) +(scm_accessor_method_slot_definition (groups scm C) (scan-data T)) +(scm_acons (groups scm C) (scan-data T)) +(scm_acosh (groups scm C) (scan-data T)) +(scm_add_feature (groups scm C) (scan-data T)) +(scm_add_hook_x (groups scm C) (scan-data T)) +(scm_add_method (groups scm C) (scan-data T)) +(scm_add_slot (groups scm C) (scan-data T)) +(scm_add_to_port_table (groups scm C) (scan-data T)) +(scm_addbig (groups scm C) (scan-data T)) +(scm_after_gc_c_hook (groups scm C) (scan-data B)) +(scm_after_gc_hook (groups scm C) (scan-data B)) +(scm_after_sweep_c_hook (groups scm C) (scan-data B)) +(scm_aind (groups scm C) (scan-data T)) +(scm_alarm (groups scm C) (scan-data T)) +(scm_alloc_struct (groups scm C) (scan-data T)) +(scm_allocate_string (groups scm C) (scan-data T)) +(scm_angle (groups scm C) (scan-data T)) +(scm_append (groups scm C) (scan-data T)) +(scm_append_x (groups scm C) (scan-data T)) +(scm_apply (groups scm C) (scan-data T)) +(scm_apply_0 (groups scm C) (scan-data T)) +(scm_apply_1 (groups scm C) (scan-data T)) +(scm_apply_2 (groups scm C) (scan-data T)) +(scm_apply_3 (groups scm C) (scan-data T)) +(scm_apply_generic (groups scm C) (scan-data T)) +(scm_apply_with_dynamic_root (groups scm C) (scan-data T)) +(scm_arg_type_key (groups scm C) (scan-data B)) +(scm_args_number_key (groups scm C) (scan-data B)) +(scm_array_contents (groups scm C) (scan-data T)) +(scm_array_copy_x (groups scm C) (scan-data T)) +(scm_array_dimensions (groups scm C) (scan-data T)) +(scm_array_equal_p (groups scm C) (scan-data T)) +(scm_array_fill_int (groups scm C) (scan-data T)) +(scm_array_fill_x (groups scm C) (scan-data T)) +(scm_array_for_each (groups scm C) (scan-data T)) +(scm_array_identity (groups scm C) (scan-data T)) +(scm_array_in_bounds_p (groups scm C) (scan-data T)) +(scm_array_index_map_x (groups scm C) (scan-data T)) +(scm_array_map_x (groups scm C) (scan-data T)) +(scm_array_p (groups scm C) (scan-data T)) +(scm_array_prototype (groups scm C) (scan-data T)) +(scm_array_rank (groups scm C) (scan-data T)) +(scm_array_set_x (groups scm C) (scan-data T)) +(scm_array_to_list (groups scm C) (scan-data T)) +(scm_ash (groups scm C) (scan-data T)) +(scm_asinh (groups scm C) (scan-data T)) +(scm_assoc (groups scm C) (scan-data T)) +(scm_assoc_ref (groups scm C) (scan-data T)) +(scm_assoc_remove_x (groups scm C) (scan-data T)) +(scm_assoc_set_x (groups scm C) (scan-data T)) +(scm_assq (groups scm C) (scan-data T)) +(scm_assq_ref (groups scm C) (scan-data T)) +(scm_assq_remove_x (groups scm C) (scan-data T)) +(scm_assq_set_x (groups scm C) (scan-data T)) +(scm_assv (groups scm C) (scan-data T)) +(scm_assv_ref (groups scm C) (scan-data T)) +(scm_assv_remove_x (groups scm C) (scan-data T)) +(scm_assv_set_x (groups scm C) (scan-data T)) +(scm_async (groups scm C) (scan-data T)) +(scm_async_click (groups scm C) (scan-data T)) +(scm_async_mark (groups scm C) (scan-data T)) +(scm_asyncs_pending_p (groups scm C) (scan-data D)) +(scm_atanh (groups scm C) (scan-data T)) +(scm_backtrace (groups scm C) (scan-data T)) +(scm_badargsp (groups scm C) (scan-data T)) +(scm_basename (groups scm C) (scan-data T)) +(scm_basic_basic_make_class (groups scm C) (scan-data T)) +(scm_basic_make_class (groups scm C) (scan-data T)) +(scm_before_gc_c_hook (groups scm C) (scan-data B)) +(scm_before_mark_c_hook (groups scm C) (scan-data B)) +(scm_before_sweep_c_hook (groups scm C) (scan-data B)) +(scm_big_and (groups scm C) (scan-data T)) +(scm_big_ior (groups scm C) (scan-data T)) +(scm_big_test (groups scm C) (scan-data T)) +(scm_big_xor (groups scm C) (scan-data T)) +(scm_bigcomp (groups scm C) (scan-data T)) +(scm_bigequal (groups scm C) (scan-data T)) +(scm_bigprint (groups scm C) (scan-data T)) +(scm_bind (groups scm C) (scan-data T)) +(scm_bit_count (groups scm C) (scan-data T)) +(scm_bit_count_star (groups scm C) (scan-data T)) +(scm_bit_extract (groups scm C) (scan-data T)) +(scm_bit_invert_x (groups scm C) (scan-data T)) +(scm_bit_position (groups scm C) (scan-data T)) +(scm_bit_set_star_x (groups scm C) (scan-data T)) +(scm_block_gc (groups scm C) (scan-data D)) +(scm_body_thunk (groups scm C) (scan-data T)) +(scm_boolean_p (groups scm C) (scan-data T)) +(scm_boot_guile (groups scm C) (scan-data T)) +(scm_boot_guile_1_live (groups scm C) (scan-data D)) +(scm_c_call_with_current_module (groups scm C) (scan-data T)) +(scm_c_chars2byvect (groups scm C) (scan-data T)) +(scm_c_chars2scm (groups scm C) (scan-data T)) +(scm_c_default_rstate (groups scm C) (scan-data T)) +(scm_c_define (groups scm C) (scan-data T)) +(scm_c_define_gsubr (groups scm C) (scan-data T)) +(scm_c_define_gsubr_with_generic (groups scm C) (scan-data T)) +(scm_c_define_module (groups scm C) (scan-data T)) +(scm_c_define_subr (groups scm C) (scan-data T)) +(scm_c_define_subr_with_generic (groups scm C) (scan-data T)) +(scm_c_doubles2dvect (groups scm C) (scan-data T)) +(scm_c_doubles2scm (groups scm C) (scan-data T)) +(scm_c_environment_cell (groups scm C) (scan-data T)) +(scm_c_environment_fold (groups scm C) (scan-data T)) +(scm_c_environment_observe (groups scm C) (scan-data T)) +(scm_c_environment_ref (groups scm C) (scan-data T)) +(scm_c_eval_string (groups scm C) (scan-data T)) +(scm_c_exp1 (groups scm C) (scan-data T)) +(scm_c_export (groups scm C) (scan-data T)) +(scm_c_floats2fvect (groups scm C) (scan-data T)) +(scm_c_floats2scm (groups scm C) (scan-data T)) +(scm_c_get_internal_run_time (groups scm C) (scan-data T)) +(scm_c_hook_add (groups scm C) (scan-data T)) +(scm_c_hook_init (groups scm C) (scan-data T)) +(scm_c_hook_remove (groups scm C) (scan-data T)) +(scm_c_hook_run (groups scm C) (scan-data T)) +(scm_c_ints2ivect (groups scm C) (scan-data T)) +(scm_c_ints2scm (groups scm C) (scan-data T)) +(scm_c_issue_deprecation_warning (groups scm C) (scan-data T)) +(scm_c_issue_deprecation_warning_fmt (groups scm C) (scan-data T)) +(scm_c_load_extension (groups scm C) (scan-data T)) +(scm_c_longs2ivect (groups scm C) (scan-data T)) +(scm_c_longs2scm (groups scm C) (scan-data T)) +(scm_c_lookup (groups scm C) (scan-data T)) +(scm_c_make_gsubr (groups scm C) (scan-data T)) +(scm_c_make_gsubr_with_generic (groups scm C) (scan-data T)) +(scm_c_make_hash_table (groups scm C) (scan-data T)) +(scm_c_make_keyword (groups scm C) (scan-data T)) +(scm_c_make_rstate (groups scm C) (scan-data T)) +(scm_c_make_subr (groups scm C) (scan-data T)) +(scm_c_make_subr_with_generic (groups scm C) (scan-data T)) +(scm_c_make_vector (groups scm C) (scan-data T)) +(scm_c_memq (groups scm C) (scan-data T)) +(scm_c_module_define (groups scm C) (scan-data T)) +(scm_c_module_lookup (groups scm C) (scan-data T)) +(scm_c_normal01 (groups scm C) (scan-data T)) +(scm_c_primitive_load (groups scm C) (scan-data T)) +(scm_c_primitive_load_path (groups scm C) (scan-data T)) +(scm_c_random (groups scm C) (scan-data T)) +(scm_c_random_bignum (groups scm C) (scan-data T)) +(scm_c_read (groups scm C) (scan-data T)) +(scm_c_read_string (groups scm C) (scan-data T)) +(scm_c_register_extension (groups scm C) (scan-data T)) +(scm_c_resolve_module (groups scm C) (scan-data T)) +(scm_c_run_hook (groups scm C) (scan-data T)) +(scm_c_scm2chars (groups scm C) (scan-data T)) +(scm_c_scm2doubles (groups scm C) (scan-data T)) +(scm_c_scm2floats (groups scm C) (scan-data T)) +(scm_c_scm2ints (groups scm C) (scan-data T)) +(scm_c_scm2longs (groups scm C) (scan-data T)) +(scm_c_scm2shorts (groups scm C) (scan-data T)) +(scm_c_shorts2scm (groups scm C) (scan-data T)) +(scm_c_shorts2svect (groups scm C) (scan-data T)) +(scm_c_source_property_breakpoint_p (groups scm C) (scan-data T)) +(scm_c_string2str (groups scm C) (scan-data T)) +(scm_c_substring2str (groups scm C) (scan-data T)) +(scm_c_symbol2str (groups scm C) (scan-data T)) +(scm_c_uints2uvect (groups scm C) (scan-data T)) +(scm_c_ulongs2uvect (groups scm C) (scan-data T)) +(scm_c_uniform01 (groups scm C) (scan-data T)) +(scm_c_use_module (groups scm C) (scan-data T)) +(scm_c_with_fluid (groups scm C) (scan-data T)) +(scm_c_with_fluids (groups scm C) (scan-data T)) +(scm_c_write (groups scm C) (scan-data T)) +(scm_call_0 (groups scm C) (scan-data T)) +(scm_call_1 (groups scm C) (scan-data T)) +(scm_call_2 (groups scm C) (scan-data T)) +(scm_call_3 (groups scm C) (scan-data T)) +(scm_call_4 (groups scm C) (scan-data T)) +(scm_call_generic_0 (groups scm C) (scan-data T)) +(scm_call_generic_1 (groups scm C) (scan-data T)) +(scm_call_generic_2 (groups scm C) (scan-data T)) +(scm_call_generic_3 (groups scm C) (scan-data T)) +(scm_call_with_dynamic_root (groups scm C) (scan-data T)) +(scm_call_with_input_string (groups scm C) (scan-data T)) +(scm_call_with_new_thread (groups scm C) (scan-data T)) +(scm_call_with_output_string (groups scm C) (scan-data T)) +(scm_casei_streq (groups scm C) (scan-data T)) +(scm_catch (groups scm C) (scan-data T)) +(scm_cellp (groups scm C) (scan-data T)) +(scm_cells_allocated (groups scm C) (scan-data D)) +(scm_ceval (groups scm C) (scan-data T)) +(scm_ceval_ptr (groups scm C) (scan-data B)) +(scm_change_object_class (groups scm C) (scan-data T)) +(scm_char_alphabetic_p (groups scm C) (scan-data T)) +(scm_char_ci_eq_p (groups scm C) (scan-data T)) +(scm_char_ci_geq_p (groups scm C) (scan-data T)) +(scm_char_ci_gr_p (groups scm C) (scan-data T)) +(scm_char_ci_leq_p (groups scm C) (scan-data T)) +(scm_char_ci_less_p (groups scm C) (scan-data T)) +(scm_char_downcase (groups scm C) (scan-data T)) +(scm_char_eq_p (groups scm C) (scan-data T)) +(scm_char_geq_p (groups scm C) (scan-data T)) +(scm_char_gr_p (groups scm C) (scan-data T)) +(scm_char_is_both_p (groups scm C) (scan-data T)) +(scm_char_leq_p (groups scm C) (scan-data T)) +(scm_char_less_p (groups scm C) (scan-data T)) +(scm_char_lower_case_p (groups scm C) (scan-data T)) +(scm_char_numeric_p (groups scm C) (scan-data T)) +(scm_char_p (groups scm C) (scan-data T)) +(scm_char_ready_p (groups scm C) (scan-data T)) +(scm_char_to_integer (groups scm C) (scan-data T)) +(scm_char_upcase (groups scm C) (scan-data T)) +(scm_char_upper_case_p (groups scm C) (scan-data T)) +(scm_char_whitespace_p (groups scm C) (scan-data T)) +(scm_charnames (groups scm C) (scan-data D)) +(scm_charnums (groups scm C) (scan-data R)) +(scm_chdir (groups scm C) (scan-data T)) +(scm_check_apply_p (groups scm C) (scan-data B)) +(scm_check_entry_p (groups scm C) (scan-data B)) +(scm_check_exit_p (groups scm C) (scan-data B)) +(scm_chmod (groups scm C) (scan-data T)) +(scm_chown (groups scm C) (scan-data T)) +(scm_chroot (groups scm C) (scan-data T)) +(scm_class_accessor (groups scm C) (scan-data B)) +(scm_class_boolean (groups scm C) (scan-data B)) +(scm_class_char (groups scm C) (scan-data B)) +(scm_class_class (groups scm C) (scan-data B)) +(scm_class_complex (groups scm C) (scan-data B)) +(scm_class_direct_methods (groups scm C) (scan-data T)) +(scm_class_direct_slots (groups scm C) (scan-data T)) +(scm_class_direct_subclasses (groups scm C) (scan-data T)) +(scm_class_direct_supers (groups scm C) (scan-data T)) +(scm_class_double (groups scm C) (scan-data B)) +(scm_class_entity (groups scm C) (scan-data B)) +(scm_class_entity_class (groups scm C) (scan-data B)) +(scm_class_entity_with_setter (groups scm C) (scan-data B)) +(scm_class_environment (groups scm C) (scan-data T)) +(scm_class_float (groups scm C) (scan-data B)) +(scm_class_foreign_class (groups scm C) (scan-data B)) +(scm_class_foreign_object (groups scm C) (scan-data B)) +(scm_class_foreign_slot (groups scm C) (scan-data B)) +(scm_class_generic (groups scm C) (scan-data B)) +(scm_class_generic_with_setter (groups scm C) (scan-data B)) +(scm_class_input_output_port (groups scm C) (scan-data B)) +(scm_class_input_port (groups scm C) (scan-data B)) +(scm_class_int (groups scm C) (scan-data B)) +(scm_class_integer (groups scm C) (scan-data B)) +(scm_class_keyword (groups scm C) (scan-data B)) +(scm_class_list (groups scm C) (scan-data B)) +(scm_class_method (groups scm C) (scan-data B)) +(scm_class_name (groups scm C) (scan-data T)) +(scm_class_null (groups scm C) (scan-data B)) +(scm_class_number (groups scm C) (scan-data B)) +(scm_class_object (groups scm C) (scan-data B)) +(scm_class_of (groups scm C) (scan-data T)) +(scm_class_opaque (groups scm C) (scan-data B)) +(scm_class_operator_class (groups scm C) (scan-data B)) +(scm_class_operator_with_setter_class (groups scm C) (scan-data B)) +(scm_class_output_port (groups scm C) (scan-data B)) +(scm_class_pair (groups scm C) (scan-data B)) +(scm_class_port (groups scm C) (scan-data B)) +(scm_class_precedence_list (groups scm C) (scan-data T)) +(scm_class_primitive_generic (groups scm C) (scan-data B)) +(scm_class_procedure (groups scm C) (scan-data B)) +(scm_class_procedure_class (groups scm C) (scan-data B)) +(scm_class_procedure_with_setter (groups scm C) (scan-data B)) +(scm_class_protected (groups scm C) (scan-data B)) +(scm_class_protected_opaque (groups scm C) (scan-data B)) +(scm_class_protected_read_only (groups scm C) (scan-data B)) +(scm_class_read_only (groups scm C) (scan-data B)) +(scm_class_real (groups scm C) (scan-data B)) +(scm_class_scm (groups scm C) (scan-data B)) +(scm_class_self (groups scm C) (scan-data B)) +(scm_class_simple_method (groups scm C) (scan-data B)) +(scm_class_slots (groups scm C) (scan-data T)) +(scm_class_string (groups scm C) (scan-data B)) +(scm_class_symbol (groups scm C) (scan-data B)) +(scm_class_top (groups scm C) (scan-data B)) +(scm_class_unknown (groups scm C) (scan-data B)) +(scm_class_vector (groups scm C) (scan-data B)) +(scm_close (groups scm C) (scan-data T)) +(scm_close_fdes (groups scm C) (scan-data T)) +(scm_close_input_port (groups scm C) (scan-data T)) +(scm_close_output_port (groups scm C) (scan-data T)) +(scm_close_port (groups scm C) (scan-data T)) +(scm_closedir (groups scm C) (scan-data T)) +(scm_closure (groups scm C) (scan-data T)) +(scm_closure_p (groups scm C) (scan-data T)) +(scm_compile_shell_switches (groups scm C) (scan-data T)) +(scm_complex_equalp (groups scm C) (scan-data T)) +(scm_components (groups scm C) (scan-data B)) +(scm_compute_applicable_methods (groups scm C) (scan-data T)) +(scm_connect (groups scm C) (scan-data T)) +(scm_cons (groups scm C) (scan-data T)) +(scm_cons2 (groups scm C) (scan-data T)) +(scm_cons_source (groups scm C) (scan-data T)) +(scm_cons_star (groups scm C) (scan-data T)) +(scm_copy_big_dec (groups scm C) (scan-data T)) +(scm_copy_file (groups scm C) (scan-data T)) +(scm_copy_fluids (groups scm C) (scan-data T)) +(scm_copy_random_state (groups scm C) (scan-data T)) +(scm_copy_smaller (groups scm C) (scan-data T)) +(scm_copy_tree (groups scm C) (scan-data T)) +(scm_count_argv (groups scm C) (scan-data T)) +(scm_critical_section_mutex (groups scm C) (scan-data B)) +(scm_crypt (groups scm C) (scan-data T)) +(scm_ctermid (groups scm C) (scan-data T)) +(scm_current_error_port (groups scm C) (scan-data T)) +(scm_current_input_port (groups scm C) (scan-data T)) +(scm_current_load_port (groups scm C) (scan-data T)) +(scm_current_module (groups scm C) (scan-data T)) +(scm_current_module_lookup_closure (groups scm C) (scan-data T)) +(scm_current_module_transformer (groups scm C) (scan-data T)) +(scm_current_output_port (groups scm C) (scan-data T)) +(scm_current_time (groups scm C) (scan-data T)) +(scm_cuserid (groups scm C) (scan-data T)) +(scm_cvref (groups scm C) (scan-data T)) +(scm_dapply (groups scm C) (scan-data T)) +(scm_dblprec (groups scm C) (scan-data B)) +(scm_debug_eframe_size (groups scm C) (scan-data B)) +(scm_debug_mode (groups scm C) (scan-data B)) +(scm_debug_object_p (groups scm C) (scan-data T)) +(scm_debug_options (groups scm C) (scan-data T)) +(scm_debug_opts (groups scm C) (scan-data D)) +(scm_default_init_heap_size_1 (groups scm C) (scan-data D)) +(scm_default_init_heap_size_2 (groups scm C) (scan-data D)) +(scm_default_max_segment_size (groups scm C) (scan-data D)) +(scm_default_min_yield_1 (groups scm C) (scan-data D)) +(scm_default_min_yield_2 (groups scm C) (scan-data D)) +(scm_define (groups scm C) (scan-data T)) +(scm_definedp (groups scm C) (scan-data T)) +(scm_delete (groups scm C) (scan-data T)) +(scm_delete1_x (groups scm C) (scan-data T)) +(scm_delete_file (groups scm C) (scan-data T)) +(scm_delete_x (groups scm C) (scan-data T)) +(scm_delq (groups scm C) (scan-data T)) +(scm_delq1_x (groups scm C) (scan-data T)) +(scm_delq_x (groups scm C) (scan-data T)) +(scm_delv (groups scm C) (scan-data T)) +(scm_delv1_x (groups scm C) (scan-data T)) +(scm_delv_x (groups scm C) (scan-data T)) +(scm_deprecated_newcell (groups scm C) (scan-data T)) +(scm_deprecated_newcell2 (groups scm C) (scan-data T)) +(scm_destroy_guardian_x (groups scm C) (scan-data T)) +(scm_deval (groups scm C) (scan-data T)) +(scm_difference (groups scm C) (scan-data T)) +(scm_dimensions_to_uniform_array (groups scm C) (scan-data T)) +(scm_directory_stream_p (groups scm C) (scan-data T)) +(scm_dirname (groups scm C) (scan-data T)) +(scm_display (groups scm C) (scan-data T)) +(scm_display_application (groups scm C) (scan-data T)) +(scm_display_backtrace (groups scm C) (scan-data T)) +(scm_display_error (groups scm C) (scan-data T)) +(scm_display_error_message (groups scm C) (scan-data T)) +(scm_divbigdig (groups scm C) (scan-data T)) +(scm_divide (groups scm C) (scan-data T)) +(scm_done_free (groups scm C) (scan-data T)) +(scm_done_malloc (groups scm C) (scan-data T)) +(scm_dot_string (groups scm C) (scan-data B)) +(scm_double2num (groups scm C) (scan-data T)) +(scm_doubly_weak_hash_table_p (groups scm C) (scan-data T)) +(scm_dowinds (groups scm C) (scan-data T)) +(scm_downcase (groups scm C) (scan-data T)) +(scm_drain_input (groups scm C) (scan-data T)) +(scm_dup2 (groups scm C) (scan-data T)) +(scm_dup_to_fdes (groups scm C) (scan-data T)) +(scm_dynamic_args_call (groups scm C) (scan-data T)) +(scm_dynamic_call (groups scm C) (scan-data T)) +(scm_dynamic_func (groups scm C) (scan-data T)) +(scm_dynamic_link (groups scm C) (scan-data T)) +(scm_dynamic_object_p (groups scm C) (scan-data T)) +(scm_dynamic_root (groups scm C) (scan-data T)) +(scm_dynamic_unlink (groups scm C) (scan-data T)) +(scm_dynamic_wind (groups scm C) (scan-data T)) +(scm_enable_primitive_generic_x (groups scm C) (scan-data T)) +(scm_enclose_array (groups scm C) (scan-data T)) +(scm_end_input (groups scm C) (scan-data T)) +(scm_ensure_accessor (groups scm C) (scan-data T)) +(scm_entity_p (groups scm C) (scan-data T)) +(scm_env_module (groups scm C) (scan-data T)) +(scm_env_top_level (groups scm C) (scan-data T)) +(scm_environ (groups scm C) (scan-data T)) +(scm_environment_bound_p (groups scm C) (scan-data T)) +(scm_environment_cell (groups scm C) (scan-data T)) +(scm_environment_define (groups scm C) (scan-data T)) +(scm_environment_fold (groups scm C) (scan-data T)) +(scm_environment_observe (groups scm C) (scan-data T)) +(scm_environment_observe_weak (groups scm C) (scan-data T)) +(scm_environment_p (groups scm C) (scan-data T)) +(scm_environment_ref (groups scm C) (scan-data T)) +(scm_environment_set_x (groups scm C) (scan-data T)) +(scm_environment_undefine (groups scm C) (scan-data T)) +(scm_environment_unobserve (groups scm C) (scan-data T)) +(scm_environments_prehistory (groups scm C) (scan-data T)) +(scm_eof_object_p (groups scm C) (scan-data T)) +(scm_eq_p (groups scm C) (scan-data T)) +(scm_equal_p (groups scm C) (scan-data T)) +(scm_eqv_p (groups scm C) (scan-data T)) +(scm_error (groups scm C) (scan-data T)) +(scm_error_environment_immutable_binding (groups scm C) (scan-data T)) +(scm_error_environment_immutable_location (groups scm C) (scan-data T)) +(scm_error_environment_unbound (groups scm C) (scan-data T)) +(scm_error_num_args_subr (groups scm C) (scan-data T)) +(scm_error_revive_threads (groups scm C) (scan-data T)) +(scm_error_scm (groups scm C) (scan-data T)) +(scm_eval (groups scm C) (scan-data T)) +(scm_eval_args (groups scm C) (scan-data T)) +(scm_eval_body (groups scm C) (scan-data T)) +(scm_eval_car (groups scm C) (scan-data T)) +(scm_eval_closure_lookup (groups scm C) (scan-data T)) +(scm_eval_environment_imported (groups scm C) (scan-data T)) +(scm_eval_environment_local (groups scm C) (scan-data T)) +(scm_eval_environment_p (groups scm C) (scan-data T)) +(scm_eval_environment_set_imported_x (groups scm C) (scan-data T)) +(scm_eval_environment_set_local_x (groups scm C) (scan-data T)) +(scm_eval_options_interface (groups scm C) (scan-data T)) +(scm_eval_opts (groups scm C) (scan-data D)) +(scm_eval_stack (groups scm C) (scan-data B)) +(scm_eval_string (groups scm C) (scan-data T)) +(scm_eval_x (groups scm C) (scan-data T)) +(scm_evaluator_trap_table (groups scm C) (scan-data D)) +(scm_evaluator_traps (groups scm C) (scan-data T)) +(scm_even_p (groups scm C) (scan-data T)) +(scm_evict_ports (groups scm C) (scan-data T)) +(scm_exact_p (groups scm C) (scan-data T)) +(scm_exact_to_inexact (groups scm C) (scan-data T)) +(scm_execl (groups scm C) (scan-data T)) +(scm_execle (groups scm C) (scan-data T)) +(scm_execlp (groups scm C) (scan-data T)) +(scm_exit_status (groups scm C) (scan-data T)) +(scm_expmem (groups scm C) (scan-data D)) +(scm_export_environment_p (groups scm C) (scan-data T)) +(scm_export_environment_private (groups scm C) (scan-data T)) +(scm_export_environment_set_private_x (groups scm C) (scan-data T)) +(scm_export_environment_set_signature_x (groups scm C) (scan-data T)) +(scm_export_environment_signature (groups scm C) (scan-data T)) +(scm_f_apply (groups scm C) (scan-data B)) +(scm_f_gsubr_apply (groups scm C) (scan-data B)) +(scm_fcntl (groups scm C) (scan-data T)) +(scm_fdes_to_port (groups scm C) (scan-data T)) +(scm_fdes_to_ports (groups scm C) (scan-data T)) +(scm_fdopen (groups scm C) (scan-data T)) +(scm_file_port_p (groups scm C) (scan-data T)) +(scm_fileno (groups scm C) (scan-data T)) +(scm_fill_input (groups scm C) (scan-data T)) +(scm_find_executable (groups scm C) (scan-data T)) +(scm_find_method (groups scm C) (scan-data T)) +(scm_finish_srcprop (groups scm C) (scan-data T)) +(scm_float2num (groups scm C) (scan-data T)) +(scm_flock (groups scm C) (scan-data T)) +(scm_fluid_p (groups scm C) (scan-data T)) +(scm_fluid_ref (groups scm C) (scan-data T)) +(scm_fluid_set_x (groups scm C) (scan-data T)) +(scm_flush (groups scm C) (scan-data T)) +(scm_flush_all_ports (groups scm C) (scan-data T)) +(scm_flush_ws (groups scm C) (scan-data T)) +(scm_for_each (groups scm C) (scan-data T)) +(scm_force (groups scm C) (scan-data T)) +(scm_force_output (groups scm C) (scan-data T)) +(scm_fork (groups scm C) (scan-data T)) +(scm_frame_arguments (groups scm C) (scan-data T)) +(scm_frame_evaluating_args_p (groups scm C) (scan-data T)) +(scm_frame_next (groups scm C) (scan-data T)) +(scm_frame_number (groups scm C) (scan-data T)) +(scm_frame_overflow_p (groups scm C) (scan-data T)) +(scm_frame_p (groups scm C) (scan-data T)) +(scm_frame_previous (groups scm C) (scan-data T)) +(scm_frame_procedure (groups scm C) (scan-data T)) +(scm_frame_procedure_p (groups scm C) (scan-data T)) +(scm_frame_real_p (groups scm C) (scan-data T)) +(scm_frame_source (groups scm C) (scan-data T)) +(scm_free0 (groups scm C) (scan-data T)) +(scm_free_print_state (groups scm C) (scan-data T)) +(scm_free_subr_entry (groups scm C) (scan-data T)) +(scm_freelist (groups scm C) (scan-data D)) +(scm_freelist2 (groups scm C) (scan-data D)) +(scm_fsync (groups scm C) (scan-data T)) +(scm_ftell (groups scm C) (scan-data T)) +(scm_gc (groups scm C) (scan-data T)) +(scm_gc_cells_collected (groups scm C) (scan-data B)) +(scm_gc_cells_marked_acc (groups scm C) (scan-data D)) +(scm_gc_cells_swept (groups scm C) (scan-data D)) +(scm_gc_cells_swept_acc (groups scm C) (scan-data D)) +(scm_gc_for_newcell (groups scm C) (scan-data T)) +(scm_gc_free (groups scm C) (scan-data T)) +(scm_gc_heap_lock (groups scm C) (scan-data D)) +(scm_gc_malloc (groups scm C) (scan-data T)) +(scm_gc_malloc_collected (groups scm C) (scan-data B)) +(scm_gc_mark (groups scm C) (scan-data T)) +(scm_gc_mark_dependencies (groups scm C) (scan-data T)) +(scm_gc_mark_time_taken (groups scm C) (scan-data D)) +(scm_gc_ports_collected (groups scm C) (scan-data B)) +(scm_gc_protect_object (groups scm C) (scan-data T)) +(scm_gc_realloc (groups scm C) (scan-data T)) +(scm_gc_register_collectable_memory (groups scm C) (scan-data T)) +(scm_gc_register_root (groups scm C) (scan-data T)) +(scm_gc_register_roots (groups scm C) (scan-data T)) +(scm_gc_running_p (groups scm C) (scan-data D)) +(scm_gc_stats (groups scm C) (scan-data T)) +(scm_gc_strdup (groups scm C) (scan-data T)) +(scm_gc_strndup (groups scm C) (scan-data T)) +(scm_gc_sweep (groups scm C) (scan-data T)) +(scm_gc_sweep_time_taken (groups scm C) (scan-data D)) +(scm_gc_time_taken (groups scm C) (scan-data D)) +(scm_gc_times (groups scm C) (scan-data D)) +(scm_gc_unprotect_object (groups scm C) (scan-data T)) +(scm_gc_unregister_collectable_memory (groups scm C) (scan-data T)) +(scm_gc_unregister_root (groups scm C) (scan-data T)) +(scm_gc_unregister_roots (groups scm C) (scan-data T)) +(scm_gc_yield (groups scm C) (scan-data B)) +(scm_gcd (groups scm C) (scan-data T)) +(scm_generic_capability_p (groups scm C) (scan-data T)) +(scm_generic_function_methods (groups scm C) (scan-data T)) +(scm_generic_function_name (groups scm C) (scan-data T)) +(scm_gensym (groups scm C) (scan-data T)) +(scm_geq_p (groups scm C) (scan-data T)) +(scm_get_internal_real_time (groups scm C) (scan-data T)) +(scm_get_internal_run_time (groups scm C) (scan-data T)) +(scm_get_keyword (groups scm C) (scan-data T)) +(scm_get_meta_args (groups scm C) (scan-data T)) +(scm_get_one_zombie (groups scm C) (scan-data T)) +(scm_get_output_string (groups scm C) (scan-data T)) +(scm_get_pre_modules_obarray (groups scm C) (scan-data T)) +(scm_get_print_state (groups scm C) (scan-data T)) +(scm_get_stack_base (groups scm C) (scan-data T)) +(scm_getc (groups scm C) (scan-data T)) +(scm_getcwd (groups scm C) (scan-data T)) +(scm_getegid (groups scm C) (scan-data T)) +(scm_getenv (groups scm C) (scan-data T)) +(scm_geteuid (groups scm C) (scan-data T)) +(scm_getgid (groups scm C) (scan-data T)) +(scm_getgrgid (groups scm C) (scan-data T)) +(scm_getgroups (groups scm C) (scan-data T)) +(scm_gethost (groups scm C) (scan-data T)) +(scm_gethostname (groups scm C) (scan-data T)) +(scm_getitimer (groups scm C) (scan-data T)) +(scm_getlogin (groups scm C) (scan-data T)) +(scm_getnet (groups scm C) (scan-data T)) +(scm_getpass (groups scm C) (scan-data T)) +(scm_getpeername (groups scm C) (scan-data T)) +(scm_getpgrp (groups scm C) (scan-data T)) +(scm_getpid (groups scm C) (scan-data T)) +(scm_getppid (groups scm C) (scan-data T)) +(scm_getpriority (groups scm C) (scan-data T)) +(scm_getproto (groups scm C) (scan-data T)) +(scm_getpwuid (groups scm C) (scan-data T)) +(scm_getserv (groups scm C) (scan-data T)) +(scm_getsockname (groups scm C) (scan-data T)) +(scm_getsockopt (groups scm C) (scan-data T)) +(scm_gettimeofday (groups scm C) (scan-data T)) +(scm_getuid (groups scm C) (scan-data T)) +(scm_gmtime (groups scm C) (scan-data T)) +(scm_gr_p (groups scm C) (scan-data T)) +(scm_grow_tok_buf (groups scm C) (scan-data T)) +(scm_gsubr_apply (groups scm C) (scan-data T)) +(scm_guard (groups scm C) (scan-data T)) +(scm_guardian_destroyed_p (groups scm C) (scan-data T)) +(scm_guardian_greedy_p (groups scm C) (scan-data T)) +(scm_handle_by_message (groups scm C) (scan-data T)) +(scm_handle_by_message_noexit (groups scm C) (scan-data T)) +(scm_handle_by_proc (groups scm C) (scan-data T)) +(scm_handle_by_proc_catching_all (groups scm C) (scan-data T)) +(scm_handle_by_throw (groups scm C) (scan-data T)) +(scm_hash (groups scm C) (scan-data T)) +(scm_hash_create_handle_x (groups scm C) (scan-data T)) +(scm_hash_fn_create_handle_x (groups scm C) (scan-data T)) +(scm_hash_fn_get_handle (groups scm C) (scan-data T)) +(scm_hash_fn_ref (groups scm C) (scan-data T)) +(scm_hash_fn_remove_x (groups scm C) (scan-data T)) +(scm_hash_fn_set_x (groups scm C) (scan-data T)) +(scm_hash_fold (groups scm C) (scan-data T)) +(scm_hash_get_handle (groups scm C) (scan-data T)) +(scm_hash_ref (groups scm C) (scan-data T)) +(scm_hash_remove_x (groups scm C) (scan-data T)) +(scm_hash_set_x (groups scm C) (scan-data T)) +(scm_hasher (groups scm C) (scan-data T)) +(scm_hashq (groups scm C) (scan-data T)) +(scm_hashq_create_handle_x (groups scm C) (scan-data T)) +(scm_hashq_get_handle (groups scm C) (scan-data T)) +(scm_hashq_ref (groups scm C) (scan-data T)) +(scm_hashq_remove_x (groups scm C) (scan-data T)) +(scm_hashq_set_x (groups scm C) (scan-data T)) +(scm_hashv (groups scm C) (scan-data T)) +(scm_hashv_create_handle_x (groups scm C) (scan-data T)) +(scm_hashv_get_handle (groups scm C) (scan-data T)) +(scm_hashv_ref (groups scm C) (scan-data T)) +(scm_hashv_remove_x (groups scm C) (scan-data T)) +(scm_hashv_set_x (groups scm C) (scan-data T)) +(scm_hashx_create_handle_x (groups scm C) (scan-data T)) +(scm_hashx_get_handle (groups scm C) (scan-data T)) +(scm_hashx_ref (groups scm C) (scan-data T)) +(scm_hashx_remove_x (groups scm C) (scan-data T)) +(scm_hashx_set_x (groups scm C) (scan-data T)) +(scm_heap_org (groups scm C) (scan-data B)) +(scm_heap_table (groups scm C) (scan-data D)) +(scm_hook_empty_p (groups scm C) (scan-data T)) +(scm_hook_p (groups scm C) (scan-data T)) +(scm_hook_to_list (groups scm C) (scan-data T)) +(scm_htonl (groups scm C) (scan-data T)) +(scm_htons (groups scm C) (scan-data T)) +(scm_i_adjbig (groups scm libguile-internal C) (scan-data T)) +(scm_i_big2dbl (groups scm libguile-internal C) (scan-data T)) +(scm_i_big2inum (groups scm libguile-internal C) (scan-data T)) +(scm_i_copy_rstate (groups scm libguile-internal C) (scan-data T)) +(scm_i_copybig (groups scm libguile-internal C) (scan-data T)) +(scm_i_dbl2big (groups scm libguile-internal C) (scan-data T)) +(scm_i_display_error (groups scm libguile-internal C) (scan-data T)) +(scm_i_dummy (groups scm libguile-internal C) (scan-data B)) +(scm_i_eval (groups scm libguile-internal C) (scan-data T)) +(scm_i_eval_x (groups scm libguile-internal C) (scan-data T)) +(scm_i_get_keyword (groups scm libguile-internal C) (scan-data T)) +(scm_i_init_rstate (groups scm libguile-internal C) (scan-data T)) +(scm_i_int2big (groups scm libguile-internal C) (scan-data T)) +(scm_i_long2big (groups scm libguile-internal C) (scan-data T)) +(scm_i_long_long2big (groups scm libguile-internal C) (scan-data T)) +(scm_i_make_class_object (groups scm libguile-internal C) (scan-data T)) +(scm_i_mem2number (groups scm libguile-internal C) (scan-data T)) +(scm_i_mkbig (groups scm libguile-internal C) (scan-data T)) +(scm_i_normbig (groups scm libguile-internal C) (scan-data T)) +(scm_i_procedure_arity (groups scm libguile-internal C) (scan-data T)) +(scm_i_ptrdiff2big (groups scm libguile-internal C) (scan-data T)) +(scm_i_short2big (groups scm libguile-internal C) (scan-data T)) +(scm_i_size2big (groups scm libguile-internal C) (scan-data T)) +(scm_i_terminating (groups scm libguile-internal C) (scan-data B)) +(scm_i_uint2big (groups scm libguile-internal C) (scan-data T)) +(scm_i_ulong2big (groups scm libguile-internal C) (scan-data T)) +(scm_i_ulong_long2big (groups scm libguile-internal C) (scan-data T)) +(scm_i_uniform32 (groups scm libguile-internal C) (scan-data T)) +(scm_i_ushort2big (groups scm libguile-internal C) (scan-data T)) +(scm_i_variable_print (groups scm libguile-internal C) (scan-data T)) +(scm_ice_9_already_loaded (groups scm C) (scan-data D)) +(scm_igc (groups scm C) (scan-data T)) +(scm_ihash (groups scm C) (scan-data T)) +(scm_ihashq (groups scm C) (scan-data T)) +(scm_ihashv (groups scm C) (scan-data T)) +(scm_iint2str (groups scm C) (scan-data T)) +(scm_ilength (groups scm C) (scan-data T)) +(scm_ilookup (groups scm C) (scan-data T)) +(scm_imag_part (groups scm C) (scan-data T)) +(scm_import_environment_imports (groups scm C) (scan-data T)) +(scm_import_environment_p (groups scm C) (scan-data T)) +(scm_import_environment_set_imports_x (groups scm C) (scan-data T)) +(scm_include_deprecated_features (groups scm C) (scan-data T)) +(scm_inet_aton (groups scm C) (scan-data T)) +(scm_inet_makeaddr (groups scm C) (scan-data T)) +(scm_inet_netof (groups scm C) (scan-data T)) +(scm_inet_ntoa (groups scm C) (scan-data T)) +(scm_inet_ntop (groups scm C) (scan-data T)) +(scm_inet_pton (groups scm C) (scan-data T)) +(scm_inexact_p (groups scm C) (scan-data T)) +(scm_inexact_to_exact (groups scm C) (scan-data T)) +(scm_inf (groups scm C) (scan-data T)) +(scm_inf_p (groups scm C) (scan-data T)) +(scm_init_alist (groups scm C) (scan-data T)) +(scm_init_arbiters (groups scm C) (scan-data T)) +(scm_init_async (groups scm C) (scan-data T)) +(scm_init_backtrace (groups scm C) (scan-data T)) +(scm_init_boolean (groups scm C) (scan-data T)) +(scm_init_chars (groups scm C) (scan-data T)) +(scm_init_continuations (groups scm C) (scan-data T)) +(scm_init_debug (groups scm C) (scan-data T)) +(scm_init_deprecation (groups scm C) (scan-data T)) +(scm_init_dynamic_linking (groups scm C) (scan-data T)) +(scm_init_dynwind (groups scm C) (scan-data T)) +(scm_init_environments (groups scm C) (scan-data T)) +(scm_init_eq (groups scm C) (scan-data T)) +(scm_init_error (groups scm C) (scan-data T)) +(scm_init_eval (groups scm C) (scan-data T)) +(scm_init_evalext (groups scm C) (scan-data T)) +(scm_init_extensions (groups scm C) (scan-data T)) +(scm_init_feature (groups scm C) (scan-data T)) +(scm_init_filesys (groups scm C) (scan-data T)) +(scm_init_fluids (groups scm C) (scan-data T)) +(scm_init_fports (groups scm C) (scan-data T)) +(scm_init_gc (groups scm C) (scan-data T)) +(scm_init_gdbint (groups scm C) (scan-data T)) +(scm_init_goops (groups scm C) (scan-data T)) +(scm_init_goops_builtins (groups scm C) (scan-data T)) +(scm_init_gsubr (groups scm C) (scan-data T)) +(scm_init_guardians (groups scm C) (scan-data T)) +(scm_init_guile (groups scm C) (scan-data T)) +(scm_init_hash (groups scm C) (scan-data T)) +(scm_init_hashtab (groups scm C) (scan-data T)) +(scm_init_hooks (groups scm C) (scan-data T)) +(scm_init_ioext (groups scm C) (scan-data T)) +(scm_init_iselect (groups scm C) (scan-data T)) +(scm_init_keywords (groups scm C) (scan-data T)) +(scm_init_lang (groups scm C) (scan-data T)) +(scm_init_list (groups scm C) (scan-data T)) +(scm_init_load (groups scm C) (scan-data T)) +(scm_init_load_path (groups scm C) (scan-data T)) +(scm_init_macros (groups scm C) (scan-data T)) +(scm_init_mallocs (groups scm C) (scan-data T)) +(scm_init_modules (groups scm C) (scan-data T)) +(scm_init_net_db (groups scm C) (scan-data T)) +(scm_init_numbers (groups scm C) (scan-data T)) +(scm_init_objects (groups scm C) (scan-data T)) +(scm_init_objprop (groups scm C) (scan-data T)) +(scm_init_options (groups scm C) (scan-data T)) +(scm_init_opts (groups scm C) (scan-data T)) +(scm_init_pairs (groups scm C) (scan-data T)) +(scm_init_ports (groups scm C) (scan-data T)) +(scm_init_posix (groups scm C) (scan-data T)) +(scm_init_print (groups scm C) (scan-data T)) +(scm_init_procprop (groups scm C) (scan-data T)) +(scm_init_procs (groups scm C) (scan-data T)) +(scm_init_properties (groups scm C) (scan-data T)) +(scm_init_ramap (groups scm C) (scan-data T)) +(scm_init_random (groups scm C) (scan-data T)) +(scm_init_rdelim (groups scm C) (scan-data T)) +(scm_init_rdelim_builtins (groups scm C) (scan-data T)) +(scm_init_read (groups scm C) (scan-data T)) +(scm_init_regex_posix (groups scm C) (scan-data T)) +(scm_init_root (groups scm C) (scan-data T)) +(scm_init_rw (groups scm C) (scan-data T)) +(scm_init_rw_builtins (groups scm C) (scan-data T)) +(scm_init_scmsigs (groups scm C) (scan-data T)) +(scm_init_script (groups scm C) (scan-data T)) +(scm_init_simpos (groups scm C) (scan-data T)) +(scm_init_socket (groups scm C) (scan-data T)) +(scm_init_sort (groups scm C) (scan-data T)) +(scm_init_srcprop (groups scm C) (scan-data T)) +(scm_init_stackchk (groups scm C) (scan-data T)) +(scm_init_stacks (groups scm C) (scan-data T)) +(scm_init_stime (groups scm C) (scan-data T)) +(scm_init_storage (groups scm C) (scan-data T)) +(scm_init_strings (groups scm C) (scan-data T)) +(scm_init_strop (groups scm C) (scan-data T)) +(scm_init_strorder (groups scm C) (scan-data T)) +(scm_init_strports (groups scm C) (scan-data T)) +(scm_init_struct (groups scm C) (scan-data T)) +(scm_init_subr_table (groups scm C) (scan-data T)) +(scm_init_symbols (groups scm C) (scan-data T)) +(scm_init_threads (groups scm C) (scan-data T)) +(scm_init_throw (groups scm C) (scan-data T)) +(scm_init_unif (groups scm C) (scan-data T)) +(scm_init_values (groups scm C) (scan-data T)) +(scm_init_variable (groups scm C) (scan-data T)) +(scm_init_vectors (groups scm C) (scan-data T)) +(scm_init_version (groups scm C) (scan-data T)) +(scm_init_vports (groups scm C) (scan-data T)) +(scm_init_weaks (groups scm C) (scan-data T)) +(scm_initialized_p (groups scm C) (scan-data D)) +(scm_input_port_p (groups scm C) (scan-data T)) +(scm_instance_p (groups scm C) (scan-data T)) +(scm_int2num (groups scm C) (scan-data T)) +(scm_integer_expt (groups scm C) (scan-data T)) +(scm_integer_length (groups scm C) (scan-data T)) +(scm_integer_p (groups scm C) (scan-data T)) +(scm_integer_to_char (groups scm C) (scan-data T)) +(scm_interaction_environment (groups scm C) (scan-data T)) +(scm_internal_catch (groups scm C) (scan-data T)) +(scm_internal_cwdr (groups scm C) (scan-data T)) +(scm_internal_dynamic_wind (groups scm C) (scan-data T)) +(scm_internal_hash_fold (groups scm C) (scan-data T)) +(scm_internal_lazy_catch (groups scm C) (scan-data T)) +(scm_internal_parse_path (groups scm C) (scan-data T)) +(scm_internal_select (groups scm C) (scan-data T)) +(scm_internal_stack_catch (groups scm C) (scan-data T)) +(scm_intprint (groups scm C) (scan-data T)) +(scm_ints_disabled (groups scm C) (scan-data D)) +(scm_iprin1 (groups scm C) (scan-data T)) +(scm_iprlist (groups scm C) (scan-data T)) +(scm_ipruk (groups scm C) (scan-data T)) +(scm_isatty_p (groups scm C) (scan-data T)) +(scm_issue_deprecation_warning (groups scm C) (scan-data T)) +(scm_istr2bve (groups scm C) (scan-data T)) +(scm_isymnames (groups scm C) (scan-data D)) +(scm_ithrow (groups scm C) (scan-data T)) +(scm_join_thread (groups scm C) (scan-data T)) +(scm_keyword_dash_symbol (groups scm C) (scan-data T)) +(scm_keyword_p (groups scm C) (scan-data T)) +(scm_kill (groups scm C) (scan-data T)) +(scm_last_pair (groups scm C) (scan-data T)) +(scm_last_stack_frame (groups scm C) (scan-data T)) +(scm_lazy_catch (groups scm C) (scan-data T)) +(scm_lcm (groups scm C) (scan-data T)) +(scm_leaf_environment_p (groups scm C) (scan-data T)) +(scm_length (groups scm C) (scan-data T)) +(scm_leq_p (groups scm C) (scan-data T)) +(scm_less_p (groups scm C) (scan-data T)) +(scm_lfwrite (groups scm C) (scan-data T)) +(scm_link (groups scm C) (scan-data T)) +(scm_list (groups scm C) (scan-data T)) +(scm_list_1 (groups scm C) (scan-data T)) +(scm_list_2 (groups scm C) (scan-data T)) +(scm_list_3 (groups scm C) (scan-data T)) +(scm_list_4 (groups scm C) (scan-data T)) +(scm_list_5 (groups scm C) (scan-data T)) +(scm_list_cdr_set_x (groups scm C) (scan-data T)) +(scm_list_copy (groups scm C) (scan-data T)) +(scm_list_head (groups scm C) (scan-data T)) +(scm_list_n (groups scm C) (scan-data T)) +(scm_list_p (groups scm C) (scan-data T)) +(scm_list_ref (groups scm C) (scan-data T)) +(scm_list_set_x (groups scm C) (scan-data T)) +(scm_list_tail (groups scm C) (scan-data T)) +(scm_list_to_uniform_array (groups scm C) (scan-data T)) +(scm_listen (groups scm C) (scan-data T)) +(scm_listofnullstr (groups scm C) (scan-data B)) +(scm_lnaof (groups scm C) (scan-data T)) +(scm_load_extension (groups scm C) (scan-data T)) +(scm_load_goops (groups scm C) (scan-data T)) +(scm_load_startup_files (groups scm C) (scan-data T)) +(scm_local_eval (groups scm C) (scan-data T)) +(scm_localtime (groups scm C) (scan-data T)) +(scm_lock_mutex (groups scm C) (scan-data T)) +(scm_logand (groups scm C) (scan-data T)) +(scm_logbit_p (groups scm C) (scan-data T)) +(scm_logcount (groups scm C) (scan-data T)) +(scm_logior (groups scm C) (scan-data T)) +(scm_lognot (groups scm C) (scan-data T)) +(scm_logtest (groups scm C) (scan-data T)) +(scm_logxor (groups scm C) (scan-data T)) +(scm_long2num (groups scm C) (scan-data T)) +(scm_long_long2num (groups scm C) (scan-data T)) +(scm_lookup (groups scm C) (scan-data T)) +(scm_lookup_closure_module (groups scm C) (scan-data T)) +(scm_lookupcar (groups scm C) (scan-data T)) +(scm_lreadparen (groups scm C) (scan-data T)) +(scm_lreadr (groups scm C) (scan-data T)) +(scm_lreadrecparen (groups scm C) (scan-data T)) +(scm_lstat (groups scm C) (scan-data T)) +(scm_m_and (groups scm C) (scan-data T)) +(scm_m_apply (groups scm C) (scan-data T)) +(scm_m_at_call_with_values (groups scm C) (scan-data T)) +(scm_m_atbind (groups scm C) (scan-data T)) +(scm_m_atdispatch (groups scm C) (scan-data T)) +(scm_m_atfop (groups scm C) (scan-data T)) +(scm_m_atslot_ref (groups scm C) (scan-data T)) +(scm_m_atslot_set_x (groups scm C) (scan-data T)) +(scm_m_begin (groups scm C) (scan-data T)) +(scm_m_case (groups scm C) (scan-data T)) +(scm_m_cond (groups scm C) (scan-data T)) +(scm_m_cont (groups scm C) (scan-data T)) +(scm_m_define (groups scm C) (scan-data T)) +(scm_m_delay (groups scm C) (scan-data T)) +(scm_m_do (groups scm C) (scan-data T)) +(scm_m_expand_body (groups scm C) (scan-data T)) +(scm_m_generalized_set_x (groups scm C) (scan-data T)) +(scm_m_if (groups scm C) (scan-data T)) +(scm_m_lambda (groups scm C) (scan-data T)) +(scm_m_let (groups scm C) (scan-data T)) +(scm_m_letrec (groups scm C) (scan-data T)) +(scm_m_letstar (groups scm C) (scan-data T)) +(scm_m_nil_cond (groups scm C) (scan-data T)) +(scm_m_or (groups scm C) (scan-data T)) +(scm_m_quasiquote (groups scm C) (scan-data T)) +(scm_m_quote (groups scm C) (scan-data T)) +(scm_m_set_x (groups scm C) (scan-data T)) +(scm_m_undefine (groups scm C) (scan-data T)) +(scm_macro_name (groups scm C) (scan-data T)) +(scm_macro_p (groups scm C) (scan-data T)) +(scm_macro_transformer (groups scm C) (scan-data T)) +(scm_macro_type (groups scm C) (scan-data T)) +(scm_macroexp (groups scm C) (scan-data T)) +(scm_magnitude (groups scm C) (scan-data T)) +(scm_major_version (groups scm C) (scan-data T)) +(scm_makacro (groups scm C) (scan-data T)) +(scm_makcclo (groups scm C) (scan-data T)) +(scm_make (groups scm C) (scan-data T)) +(scm_make_arbiter (groups scm C) (scan-data T)) +(scm_make_class (groups scm C) (scan-data T)) +(scm_make_class_object (groups scm C) (scan-data T)) +(scm_make_complex (groups scm C) (scan-data T)) +(scm_make_condition_variable (groups scm C) (scan-data T)) +(scm_make_continuation (groups scm C) (scan-data T)) +(scm_make_debugobj (groups scm C) (scan-data T)) +(scm_make_doubly_weak_hash_table (groups scm C) (scan-data T)) +(scm_make_environment (groups scm C) (scan-data T)) +(scm_make_eval_environment (groups scm C) (scan-data T)) +(scm_make_export_environment (groups scm C) (scan-data T)) +(scm_make_extended_class (groups scm C) (scan-data T)) +(scm_make_fluid (groups scm C) (scan-data T)) +(scm_make_foreign_object (groups scm C) (scan-data T)) +(scm_make_guardian (groups scm C) (scan-data T)) +(scm_make_hook (groups scm C) (scan-data T)) +(scm_make_import_environment (groups scm C) (scan-data T)) +(scm_make_initial_fluids (groups scm C) (scan-data T)) +(scm_make_keyword_from_dash_symbol (groups scm C) (scan-data T)) +(scm_make_leaf_environment (groups scm C) (scan-data T)) +(scm_make_memoized (groups scm C) (scan-data T)) +(scm_make_method_cache (groups scm C) (scan-data T)) +(scm_make_mutex (groups scm C) (scan-data T)) +(scm_make_polar (groups scm C) (scan-data T)) +(scm_make_port_classes (groups scm C) (scan-data T)) +(scm_make_port_type (groups scm C) (scan-data T)) +(scm_make_print_state (groups scm C) (scan-data T)) +(scm_make_procedure_with_setter (groups scm C) (scan-data T)) +(scm_make_ra (groups scm C) (scan-data T)) +(scm_make_real (groups scm C) (scan-data T)) +(scm_make_rectangular (groups scm C) (scan-data T)) +(scm_make_regexp (groups scm C) (scan-data T)) +(scm_make_root (groups scm C) (scan-data T)) +(scm_make_shared_array (groups scm C) (scan-data T)) +(scm_make_smob (groups scm C) (scan-data T)) +(scm_make_smob_type (groups scm C) (scan-data T)) +(scm_make_soft_port (groups scm C) (scan-data T)) +(scm_make_srcprops (groups scm C) (scan-data T)) +(scm_make_stack (groups scm C) (scan-data T)) +(scm_make_string (groups scm C) (scan-data T)) +(scm_make_struct (groups scm C) (scan-data T)) +(scm_make_struct_layout (groups scm C) (scan-data T)) +(scm_make_subclass_object (groups scm C) (scan-data T)) +(scm_make_symbol (groups scm C) (scan-data T)) +(scm_make_synt (groups scm C) (scan-data T)) +(scm_make_undefined_variable (groups scm C) (scan-data T)) +(scm_make_uve (groups scm C) (scan-data T)) +(scm_make_variable (groups scm C) (scan-data T)) +(scm_make_vector (groups scm C) (scan-data T)) +(scm_make_vtable_vtable (groups scm C) (scan-data T)) +(scm_make_weak_key_hash_table (groups scm C) (scan-data T)) +(scm_make_weak_value_hash_table (groups scm C) (scan-data T)) +(scm_make_weak_vector (groups scm C) (scan-data T)) +(scm_makfrom0str (groups scm C) (scan-data T)) +(scm_makfrom0str_opt (groups scm C) (scan-data T)) +(scm_makfromstrs (groups scm C) (scan-data T)) +(scm_makmacro (groups scm C) (scan-data T)) +(scm_makmmacro (groups scm C) (scan-data T)) +(scm_makprom (groups scm C) (scan-data T)) +(scm_malloc (groups scm C) (scan-data T)) +(scm_malloc_obj (groups scm C) (scan-data T)) +(scm_mallocated (groups scm C) (scan-data D)) +(scm_map (groups scm C) (scan-data T)) +(scm_mark0 (groups scm C) (scan-data T)) +(scm_mark_locations (groups scm C) (scan-data T)) +(scm_mark_subr_table (groups scm C) (scan-data T)) +(scm_markcdr (groups scm C) (scan-data T)) +(scm_markstream (groups scm C) (scan-data T)) +(scm_mask_ints (groups scm C) (scan-data D)) +(scm_mask_signals (groups scm C) (scan-data T)) +(scm_masktab (groups scm C) (scan-data B)) +(scm_master_freelist (groups scm C) (scan-data D)) +(scm_master_freelist2 (groups scm C) (scan-data D)) +(scm_max (groups scm C) (scan-data T)) +(scm_max_segment_size (groups scm C) (scan-data B)) +(scm_mcache_compute_cmethod (groups scm C) (scan-data T)) +(scm_mcache_lookup_cmethod (groups scm C) (scan-data T)) +(scm_mem2string (groups scm C) (scan-data T)) +(scm_mem2symbol (groups scm C) (scan-data T)) +(scm_mem2uninterned_symbol (groups scm C) (scan-data T)) +(scm_member (groups scm C) (scan-data T)) +(scm_memoize_method (groups scm C) (scan-data T)) +(scm_memoized_environment (groups scm C) (scan-data T)) +(scm_memoized_p (groups scm C) (scan-data T)) +(scm_memory_alloc_key (groups scm C) (scan-data B)) +(scm_memory_error (groups scm C) (scan-data T)) +(scm_memq (groups scm C) (scan-data T)) +(scm_memv (groups scm C) (scan-data T)) +(scm_merge (groups scm C) (scan-data T)) +(scm_merge_x (groups scm C) (scan-data T)) +(scm_metaclass_operator (groups scm C) (scan-data B)) +(scm_metaclass_standard (groups scm C) (scan-data B)) +(scm_method_generic_function (groups scm C) (scan-data T)) +(scm_method_procedure (groups scm C) (scan-data T)) +(scm_method_specializers (groups scm C) (scan-data T)) +(scm_micro_version (groups scm C) (scan-data T)) +(scm_min (groups scm C) (scan-data T)) +(scm_minor_version (groups scm C) (scan-data T)) +(scm_misc_error (groups scm C) (scan-data T)) +(scm_misc_error_key (groups scm C) (scan-data B)) +(scm_mkdir (groups scm C) (scan-data T)) +(scm_mknod (groups scm C) (scan-data T)) +(scm_mkstemp (groups scm C) (scan-data T)) +(scm_mkstrport (groups scm C) (scan-data T)) +(scm_mktime (groups scm C) (scan-data T)) +(scm_mode_bits (groups scm C) (scan-data T)) +(scm_module_define (groups scm C) (scan-data T)) +(scm_module_goops (groups scm C) (scan-data B)) +(scm_module_lookup (groups scm C) (scan-data T)) +(scm_module_lookup_closure (groups scm C) (scan-data T)) +(scm_module_reverse_lookup (groups scm C) (scan-data T)) +(scm_module_system_booted_p (groups scm C) (scan-data D)) +(scm_module_tag (groups scm C) (scan-data B)) +(scm_module_transformer (groups scm C) (scan-data T)) +(scm_modules_prehistory (groups scm C) (scan-data T)) +(scm_modulo (groups scm C) (scan-data T)) +(scm_mtrigger (groups scm C) (scan-data B)) +(scm_mulbig (groups scm C) (scan-data T)) +(scm_must_free (groups scm C) (scan-data T)) +(scm_must_malloc (groups scm C) (scan-data T)) +(scm_must_realloc (groups scm C) (scan-data T)) +(scm_must_strdup (groups scm C) (scan-data T)) +(scm_must_strndup (groups scm C) (scan-data T)) +(scm_n_charnames (groups scm C) (scan-data D)) +(scm_n_heap_segs (groups scm C) (scan-data D)) +(scm_nan (groups scm C) (scan-data T)) +(scm_nan_p (groups scm C) (scan-data T)) +(scm_nconc2last (groups scm C) (scan-data T)) +(scm_negative_p (groups scm C) (scan-data T)) +(scm_newline (groups scm C) (scan-data T)) +(scm_nice (groups scm C) (scan-data T)) +(scm_no_applicable_method (groups scm C) (scan-data B)) +(scm_noop (groups scm C) (scan-data T)) +(scm_not (groups scm C) (scan-data T)) +(scm_ntohl (groups scm C) (scan-data T)) +(scm_ntohs (groups scm C) (scan-data T)) +(scm_null_p (groups scm C) (scan-data T)) +(scm_num2dbl (groups scm C) (scan-data T)) +(scm_num2double (groups scm C) (scan-data T)) +(scm_num2float (groups scm C) (scan-data T)) +(scm_num2int (groups scm C) (scan-data T)) +(scm_num2long (groups scm C) (scan-data T)) +(scm_num2long_long (groups scm C) (scan-data T)) +(scm_num2ptrdiff (groups scm C) (scan-data T)) +(scm_num2short (groups scm C) (scan-data T)) +(scm_num2size (groups scm C) (scan-data T)) +(scm_num2uint (groups scm C) (scan-data T)) +(scm_num2ulong (groups scm C) (scan-data T)) +(scm_num2ulong_long (groups scm C) (scan-data T)) +(scm_num2ushort (groups scm C) (scan-data T)) +(scm_num_eq_p (groups scm C) (scan-data T)) +(scm_num_overflow (groups scm C) (scan-data T)) +(scm_num_overflow_key (groups scm C) (scan-data B)) +(scm_number_p (groups scm C) (scan-data T)) +(scm_number_to_string (groups scm C) (scan-data T)) +(scm_numptob (groups scm C) (scan-data B)) +(scm_numsmob (groups scm C) (scan-data B)) +(scm_object_address (groups scm C) (scan-data T)) +(scm_object_properties (groups scm C) (scan-data T)) +(scm_object_property (groups scm C) (scan-data T)) +(scm_object_to_string (groups scm C) (scan-data T)) +(scm_odd_p (groups scm C) (scan-data T)) +(scm_open (groups scm C) (scan-data T)) +(scm_open_fdes (groups scm C) (scan-data T)) +(scm_open_file (groups scm C) (scan-data T)) +(scm_open_input_string (groups scm C) (scan-data T)) +(scm_open_output_string (groups scm C) (scan-data T)) +(scm_opendir (groups scm C) (scan-data T)) +(scm_operator_p (groups scm C) (scan-data T)) +(scm_options (groups scm C) (scan-data T)) +(scm_out_of_range (groups scm C) (scan-data T)) +(scm_out_of_range_key (groups scm C) (scan-data B)) +(scm_out_of_range_pos (groups scm C) (scan-data T)) +(scm_output_port_p (groups scm C) (scan-data T)) +(scm_pair_p (groups scm C) (scan-data T)) +(scm_parse_path (groups scm C) (scan-data T)) +(scm_pause (groups scm C) (scan-data T)) +(scm_peek_char (groups scm C) (scan-data T)) +(scm_permanent_object (groups scm C) (scan-data T)) +(scm_pipe (groups scm C) (scan-data T)) +(scm_port_class (groups scm C) (scan-data D)) +(scm_port_closed_p (groups scm C) (scan-data T)) +(scm_port_column (groups scm C) (scan-data T)) +(scm_port_filename (groups scm C) (scan-data T)) +(scm_port_for_each (groups scm C) (scan-data T)) +(scm_port_line (groups scm C) (scan-data T)) +(scm_port_mode (groups scm C) (scan-data T)) +(scm_port_non_buffer (groups scm C) (scan-data T)) +(scm_port_p (groups scm C) (scan-data T)) +(scm_port_print (groups scm C) (scan-data T)) +(scm_port_revealed (groups scm C) (scan-data T)) +(scm_port_table (groups scm C) (scan-data B)) +(scm_port_table_room (groups scm C) (scan-data D)) +(scm_port_table_size (groups scm C) (scan-data D)) +(scm_port_with_print_state (groups scm C) (scan-data T)) +(scm_ports_prehistory (groups scm C) (scan-data T)) +(scm_positive_p (groups scm C) (scan-data T)) +(scm_pre_modules_obarray (groups scm C) (scan-data B)) +(scm_primitive_eval (groups scm C) (scan-data T)) +(scm_primitive_eval_x (groups scm C) (scan-data T)) +(scm_primitive_exit (groups scm C) (scan-data T)) +(scm_primitive_generic_generic (groups scm C) (scan-data T)) +(scm_primitive_load (groups scm C) (scan-data T)) +(scm_primitive_load_path (groups scm C) (scan-data T)) +(scm_primitive_make_property (groups scm C) (scan-data T)) +(scm_primitive_move_to_fdes (groups scm C) (scan-data T)) +(scm_primitive_property_del_x (groups scm C) (scan-data T)) +(scm_primitive_property_ref (groups scm C) (scan-data T)) +(scm_primitive_property_set_x (groups scm C) (scan-data T)) +(scm_prin1 (groups scm C) (scan-data T)) +(scm_print_carefully_p (groups scm C) (scan-data B)) +(scm_print_complex (groups scm C) (scan-data T)) +(scm_print_options (groups scm C) (scan-data T)) +(scm_print_opts (groups scm C) (scan-data D)) +(scm_print_port_mode (groups scm C) (scan-data T)) +(scm_print_real (groups scm C) (scan-data T)) +(scm_print_state_vtable (groups scm C) (scan-data D)) +(scm_print_struct (groups scm C) (scan-data T)) +(scm_print_symbol_name (groups scm C) (scan-data T)) +(scm_printer_apply (groups scm C) (scan-data T)) +(scm_procedure (groups scm C) (scan-data T)) +(scm_procedure_documentation (groups scm C) (scan-data T)) +(scm_procedure_environment (groups scm C) (scan-data T)) +(scm_procedure_name (groups scm C) (scan-data T)) +(scm_procedure_p (groups scm C) (scan-data T)) +(scm_procedure_properties (groups scm C) (scan-data T)) +(scm_procedure_property (groups scm C) (scan-data T)) +(scm_procedure_source (groups scm C) (scan-data T)) +(scm_procedure_with_setter_p (groups scm C) (scan-data T)) +(scm_product (groups scm C) (scan-data T)) +(scm_program_arguments (groups scm C) (scan-data T)) +(scm_promise_p (groups scm C) (scan-data T)) +(scm_pseudolong (groups scm C) (scan-data T)) +(scm_ptobs (groups scm C) (scan-data B)) +(scm_ptrdiff2num (groups scm C) (scan-data T)) +(scm_putc (groups scm C) (scan-data T)) +(scm_putenv (groups scm C) (scan-data T)) +(scm_puts (groups scm C) (scan-data T)) +(scm_quotient (groups scm C) (scan-data T)) +(scm_ra2contig (groups scm C) (scan-data T)) +(scm_ra_difference (groups scm C) (scan-data T)) +(scm_ra_divide (groups scm C) (scan-data T)) +(scm_ra_eqp (groups scm C) (scan-data T)) +(scm_ra_greqp (groups scm C) (scan-data T)) +(scm_ra_grp (groups scm C) (scan-data T)) +(scm_ra_leqp (groups scm C) (scan-data T)) +(scm_ra_lessp (groups scm C) (scan-data T)) +(scm_ra_matchp (groups scm C) (scan-data T)) +(scm_ra_product (groups scm C) (scan-data T)) +(scm_ra_set_contp (groups scm C) (scan-data T)) +(scm_ra_sum (groups scm C) (scan-data T)) +(scm_raequal (groups scm C) (scan-data T)) +(scm_raise (groups scm C) (scan-data T)) +(scm_ramapc (groups scm C) (scan-data T)) +(scm_random (groups scm C) (scan-data T)) +(scm_random_exp (groups scm C) (scan-data T)) +(scm_random_hollow_sphere_x (groups scm C) (scan-data T)) +(scm_random_normal (groups scm C) (scan-data T)) +(scm_random_normal_vector_x (groups scm C) (scan-data T)) +(scm_random_solid_sphere_x (groups scm C) (scan-data T)) +(scm_random_uniform (groups scm C) (scan-data T)) +(scm_raprin1 (groups scm C) (scan-data T)) +(scm_read (groups scm C) (scan-data T)) +(scm_read_char (groups scm C) (scan-data T)) +(scm_read_delimited_x (groups scm C) (scan-data T)) +(scm_read_hash_extend (groups scm C) (scan-data T)) +(scm_read_line (groups scm C) (scan-data T)) +(scm_read_options (groups scm C) (scan-data T)) +(scm_read_opts (groups scm C) (scan-data D)) +(scm_read_string_x_partial (groups scm C) (scan-data T)) +(scm_read_token (groups scm C) (scan-data T)) +(scm_readdir (groups scm C) (scan-data T)) +(scm_readlink (groups scm C) (scan-data T)) +(scm_real_equalp (groups scm C) (scan-data T)) +(scm_real_p (groups scm C) (scan-data T)) +(scm_real_part (groups scm C) (scan-data T)) +(scm_realloc (groups scm C) (scan-data T)) +(scm_recv (groups scm C) (scan-data T)) +(scm_recvfrom (groups scm C) (scan-data T)) +(scm_redirect_port (groups scm C) (scan-data T)) +(scm_regexp_exec (groups scm C) (scan-data T)) +(scm_regexp_p (groups scm C) (scan-data T)) +(scm_release_arbiter (groups scm C) (scan-data T)) +(scm_remainder (groups scm C) (scan-data T)) +(scm_remember_upto_here (groups scm C) (scan-data T)) +(scm_remember_upto_here_1 (groups scm C) (scan-data T)) +(scm_remember_upto_here_2 (groups scm C) (scan-data T)) +(scm_remove_from_port_table (groups scm C) (scan-data T)) +(scm_remove_hook_x (groups scm C) (scan-data T)) +(scm_rename (groups scm C) (scan-data T)) +(scm_report_stack_overflow (groups scm C) (scan-data T)) +(scm_reset_hook_x (groups scm C) (scan-data T)) +(scm_resolve_module (groups scm C) (scan-data T)) +(scm_restore_signals (groups scm C) (scan-data T)) +(scm_restricted_vector_sort_x (groups scm C) (scan-data T)) +(scm_return_first (groups scm C) (scan-data T)) +(scm_return_first_int (groups scm C) (scan-data T)) +(scm_revealed_count (groups scm C) (scan-data T)) +(scm_reverse (groups scm C) (scan-data T)) +(scm_reverse_lookup (groups scm C) (scan-data T)) +(scm_reverse_x (groups scm C) (scan-data T)) +(scm_rewinddir (groups scm C) (scan-data T)) +(scm_rmdir (groups scm C) (scan-data T)) +(scm_round (groups scm C) (scan-data T)) +(scm_run_asyncs (groups scm C) (scan-data T)) +(scm_run_hook (groups scm C) (scan-data T)) +(scm_s_bindings (groups scm C) (scan-data R)) +(scm_s_body (groups scm C) (scan-data R)) +(scm_s_clauses (groups scm C) (scan-data R)) +(scm_s_duplicate_bindings (groups scm C) (scan-data R)) +(scm_s_duplicate_formals (groups scm C) (scan-data R)) +(scm_s_expression (groups scm C) (scan-data R)) +(scm_s_formals (groups scm C) (scan-data R)) +(scm_s_set_x (groups scm C) (scan-data R)) +(scm_s_slot_set_x (groups scm C) (scan-data D)) +(scm_s_test (groups scm C) (scan-data R)) +(scm_s_variable (groups scm C) (scan-data R)) +(scm_search_path (groups scm C) (scan-data T)) +(scm_seed_to_random_state (groups scm C) (scan-data T)) +(scm_seek (groups scm C) (scan-data T)) +(scm_select (groups scm C) (scan-data T)) +(scm_send (groups scm C) (scan-data T)) +(scm_sendto (groups scm C) (scan-data T)) +(scm_set_car_x (groups scm C) (scan-data T)) +(scm_set_cdr_x (groups scm C) (scan-data T)) +(scm_set_current_error_port (groups scm C) (scan-data T)) +(scm_set_current_input_port (groups scm C) (scan-data T)) +(scm_set_current_module (groups scm C) (scan-data T)) +(scm_set_current_output_port (groups scm C) (scan-data T)) +(scm_set_object_procedure_x (groups scm C) (scan-data T)) +(scm_set_object_properties_x (groups scm C) (scan-data T)) +(scm_set_object_property_x (groups scm C) (scan-data T)) +(scm_set_port_close (groups scm C) (scan-data T)) +(scm_set_port_column_x (groups scm C) (scan-data T)) +(scm_set_port_end_input (groups scm C) (scan-data T)) +(scm_set_port_equalp (groups scm C) (scan-data T)) +(scm_set_port_filename_x (groups scm C) (scan-data T)) +(scm_set_port_flush (groups scm C) (scan-data T)) +(scm_set_port_free (groups scm C) (scan-data T)) +(scm_set_port_input_waiting (groups scm C) (scan-data T)) +(scm_set_port_line_x (groups scm C) (scan-data T)) +(scm_set_port_mark (groups scm C) (scan-data T)) +(scm_set_port_print (groups scm C) (scan-data T)) +(scm_set_port_revealed_x (groups scm C) (scan-data T)) +(scm_set_port_seek (groups scm C) (scan-data T)) +(scm_set_port_truncate (groups scm C) (scan-data T)) +(scm_set_procedure_properties_x (groups scm C) (scan-data T)) +(scm_set_procedure_property_x (groups scm C) (scan-data T)) +(scm_set_program_arguments (groups scm C) (scan-data T)) +(scm_set_smob_apply (groups scm C) (scan-data T)) +(scm_set_smob_equalp (groups scm C) (scan-data T)) +(scm_set_smob_free (groups scm C) (scan-data T)) +(scm_set_smob_mark (groups scm C) (scan-data T)) +(scm_set_smob_print (groups scm C) (scan-data T)) +(scm_set_source_properties_x (groups scm C) (scan-data T)) +(scm_set_source_property_x (groups scm C) (scan-data T)) +(scm_set_struct_vtable_name_x (groups scm C) (scan-data T)) +(scm_setegid (groups scm C) (scan-data T)) +(scm_seteuid (groups scm C) (scan-data T)) +(scm_setgid (groups scm C) (scan-data T)) +(scm_setgrent (groups scm C) (scan-data T)) +(scm_sethost (groups scm C) (scan-data T)) +(scm_sethostname (groups scm C) (scan-data T)) +(scm_setitimer (groups scm C) (scan-data T)) +(scm_setlocale (groups scm C) (scan-data T)) +(scm_setnet (groups scm C) (scan-data T)) +(scm_setpgid (groups scm C) (scan-data T)) +(scm_setpriority (groups scm C) (scan-data T)) +(scm_setproto (groups scm C) (scan-data T)) +(scm_setpwent (groups scm C) (scan-data T)) +(scm_setserv (groups scm C) (scan-data T)) +(scm_setsid (groups scm C) (scan-data T)) +(scm_setsockopt (groups scm C) (scan-data T)) +(scm_setter (groups scm C) (scan-data T)) +(scm_setuid (groups scm C) (scan-data T)) +(scm_setvbuf (groups scm C) (scan-data T)) +(scm_shap2ra (groups scm C) (scan-data T)) +(scm_shared_array_increments (groups scm C) (scan-data T)) +(scm_shared_array_offset (groups scm C) (scan-data T)) +(scm_shared_array_root (groups scm C) (scan-data T)) +(scm_shell (groups scm C) (scan-data T)) +(scm_shell_usage (groups scm C) (scan-data T)) +(scm_short2num (groups scm C) (scan-data T)) +(scm_shutdown (groups scm C) (scan-data T)) +(scm_sigaction (groups scm C) (scan-data T)) +(scm_signal_condition_variable (groups scm C) (scan-data T)) +(scm_simple_format (groups scm C) (scan-data T)) +(scm_single_thread_p (groups scm C) (scan-data T)) +(scm_size2num (groups scm C) (scan-data T)) +(scm_sleep (groups scm C) (scan-data T)) +(scm_sloppy_assoc (groups scm C) (scan-data T)) +(scm_sloppy_assq (groups scm C) (scan-data T)) +(scm_sloppy_assv (groups scm C) (scan-data T)) +(scm_slot_bound_p (groups scm C) (scan-data T)) +(scm_slot_bound_using_class_p (groups scm C) (scan-data T)) +(scm_slot_exists_p (groups scm C) (scan-data T)) +(scm_slot_exists_using_class_p (groups scm C) (scan-data T)) +(scm_slot_ref (groups scm C) (scan-data T)) +(scm_slot_ref_using_class (groups scm C) (scan-data T)) +(scm_slot_set_using_class_x (groups scm C) (scan-data T)) +(scm_slot_set_x (groups scm C) (scan-data T)) +(scm_smob_class (groups scm C) (scan-data D)) +(scm_smob_free (groups scm C) (scan-data T)) +(scm_smob_prehistory (groups scm C) (scan-data T)) +(scm_smob_print (groups scm C) (scan-data T)) +(scm_smobs (groups scm C) (scan-data B)) +(scm_socket (groups scm C) (scan-data T)) +(scm_socketpair (groups scm C) (scan-data T)) +(scm_sort (groups scm C) (scan-data T)) +(scm_sort_list (groups scm C) (scan-data T)) +(scm_sort_list_x (groups scm C) (scan-data T)) +(scm_sort_x (groups scm C) (scan-data T)) +(scm_sorted_p (groups scm C) (scan-data T)) +(scm_source_properties (groups scm C) (scan-data T)) +(scm_source_property (groups scm C) (scan-data T)) +(scm_spawn_thread (groups scm C) (scan-data T)) +(scm_srcprops_to_plist (groups scm C) (scan-data T)) +(scm_stable_sort (groups scm C) (scan-data T)) +(scm_stable_sort_x (groups scm C) (scan-data T)) +(scm_stack_checking_enabled_p (groups scm C) (scan-data B)) +(scm_stack_id (groups scm C) (scan-data T)) +(scm_stack_length (groups scm C) (scan-data T)) +(scm_stack_p (groups scm C) (scan-data T)) +(scm_stack_ref (groups scm C) (scan-data T)) +(scm_stack_report (groups scm C) (scan-data T)) +(scm_stack_size (groups scm C) (scan-data T)) +(scm_stack_type (groups scm C) (scan-data B)) +(scm_standard_eval_closure (groups scm C) (scan-data T)) +(scm_standard_interface_eval_closure (groups scm C) (scan-data T)) +(scm_start_stack (groups scm C) (scan-data T)) +(scm_stat (groups scm C) (scan-data T)) +(scm_status_exit_val (groups scm C) (scan-data T)) +(scm_status_stop_sig (groups scm C) (scan-data T)) +(scm_status_term_sig (groups scm C) (scan-data T)) +(scm_str2string (groups scm C) (scan-data T)) +(scm_str2symbol (groups scm C) (scan-data T)) +(scm_strdup (groups scm C) (scan-data T)) +(scm_strerror (groups scm C) (scan-data T)) +(scm_strftime (groups scm C) (scan-data T)) +(scm_string (groups scm C) (scan-data T)) +(scm_string_append (groups scm C) (scan-data T)) +(scm_string_capitalize (groups scm C) (scan-data T)) +(scm_string_capitalize_x (groups scm C) (scan-data T)) +(scm_string_ci_equal_p (groups scm C) (scan-data T)) +(scm_string_ci_geq_p (groups scm C) (scan-data T)) +(scm_string_ci_gr_p (groups scm C) (scan-data T)) +(scm_string_ci_leq_p (groups scm C) (scan-data T)) +(scm_string_ci_less_p (groups scm C) (scan-data T)) +(scm_string_ci_to_symbol (groups scm C) (scan-data T)) +(scm_string_copy (groups scm C) (scan-data T)) +(scm_string_downcase (groups scm C) (scan-data T)) +(scm_string_downcase_x (groups scm C) (scan-data T)) +(scm_string_equal_p (groups scm C) (scan-data T)) +(scm_string_fill_x (groups scm C) (scan-data T)) +(scm_string_geq_p (groups scm C) (scan-data T)) +(scm_string_gr_p (groups scm C) (scan-data T)) +(scm_string_hash (groups scm C) (scan-data T)) +(scm_string_index (groups scm C) (scan-data T)) +(scm_string_length (groups scm C) (scan-data T)) +(scm_string_leq_p (groups scm C) (scan-data T)) +(scm_string_less_p (groups scm C) (scan-data T)) +(scm_string_null_p (groups scm C) (scan-data T)) +(scm_string_p (groups scm C) (scan-data T)) +(scm_string_ref (groups scm C) (scan-data T)) +(scm_string_rindex (groups scm C) (scan-data T)) +(scm_string_set_x (groups scm C) (scan-data T)) +(scm_string_split (groups scm C) (scan-data T)) +(scm_string_to_list (groups scm C) (scan-data T)) +(scm_string_to_number (groups scm C) (scan-data T)) +(scm_string_to_symbol (groups scm C) (scan-data T)) +(scm_string_upcase (groups scm C) (scan-data T)) +(scm_string_upcase_x (groups scm C) (scan-data T)) +(scm_strndup (groups scm C) (scan-data T)) +(scm_strport_to_string (groups scm C) (scan-data T)) +(scm_strptime (groups scm C) (scan-data T)) +(scm_struct_create_handle (groups scm C) (scan-data T)) +(scm_struct_free_0 (groups scm C) (scan-data T)) +(scm_struct_free_entity (groups scm C) (scan-data T)) +(scm_struct_free_light (groups scm C) (scan-data T)) +(scm_struct_free_standard (groups scm C) (scan-data T)) +(scm_struct_ihashq (groups scm C) (scan-data T)) +(scm_struct_p (groups scm C) (scan-data T)) +(scm_struct_prehistory (groups scm C) (scan-data T)) +(scm_struct_ref (groups scm C) (scan-data T)) +(scm_struct_set_x (groups scm C) (scan-data T)) +(scm_struct_table (groups scm C) (scan-data B)) +(scm_struct_vtable (groups scm C) (scan-data T)) +(scm_struct_vtable_name (groups scm C) (scan-data T)) +(scm_struct_vtable_p (groups scm C) (scan-data T)) +(scm_struct_vtable_tag (groups scm C) (scan-data T)) +(scm_structs_to_free (groups scm C) (scan-data B)) +(scm_subr_p (groups scm C) (scan-data T)) +(scm_subr_table (groups scm C) (scan-data B)) +(scm_subr_table_room (groups scm C) (scan-data D)) +(scm_subr_table_size (groups scm C) (scan-data D)) +(scm_substring (groups scm C) (scan-data T)) +(scm_substring_fill_x (groups scm C) (scan-data T)) +(scm_substring_move_x (groups scm C) (scan-data T)) +(scm_sum (groups scm C) (scan-data T)) +(scm_swap_bindings (groups scm C) (scan-data T)) +(scm_swap_fluids (groups scm C) (scan-data T)) +(scm_swap_fluids_reverse (groups scm C) (scan-data T)) +(scm_switch_counter (groups scm C) (scan-data D)) +(scm_sym2var (groups scm C) (scan-data T)) +(scm_sym_and (groups scm C) (scan-data B)) +(scm_sym_apply (groups scm C) (scan-data B)) +(scm_sym_apply_frame (groups scm C) (scan-data B)) +(scm_sym_arity (groups scm C) (scan-data B)) +(scm_sym_arrow (groups scm C) (scan-data B)) +(scm_sym_at_call_with_values (groups scm C) (scan-data B)) +(scm_sym_atapply (groups scm C) (scan-data B)) +(scm_sym_atcall_cc (groups scm C) (scan-data B)) +(scm_sym_begin (groups scm C) (scan-data B)) +(scm_sym_breakpoint (groups scm C) (scan-data B)) +(scm_sym_case (groups scm C) (scan-data B)) +(scm_sym_column (groups scm C) (scan-data B)) +(scm_sym_cond (groups scm C) (scan-data B)) +(scm_sym_copy (groups scm C) (scan-data B)) +(scm_sym_define (groups scm C) (scan-data B)) +(scm_sym_delay (groups scm C) (scan-data B)) +(scm_sym_do (groups scm C) (scan-data B)) +(scm_sym_dot (groups scm C) (scan-data B)) +(scm_sym_else (groups scm C) (scan-data B)) +(scm_sym_enter_frame (groups scm C) (scan-data B)) +(scm_sym_exit_frame (groups scm C) (scan-data B)) +(scm_sym_filename (groups scm C) (scan-data B)) +(scm_sym_if (groups scm C) (scan-data B)) +(scm_sym_lambda (groups scm C) (scan-data B)) +(scm_sym_let (groups scm C) (scan-data B)) +(scm_sym_letrec (groups scm C) (scan-data B)) +(scm_sym_letstar (groups scm C) (scan-data B)) +(scm_sym_line (groups scm C) (scan-data B)) +(scm_sym_name (groups scm C) (scan-data B)) +(scm_sym_or (groups scm C) (scan-data B)) +(scm_sym_quasiquote (groups scm C) (scan-data B)) +(scm_sym_quote (groups scm C) (scan-data B)) +(scm_sym_set_x (groups scm C) (scan-data B)) +(scm_sym_system_procedure (groups scm C) (scan-data B)) +(scm_sym_trace (groups scm C) (scan-data B)) +(scm_sym_unquote (groups scm C) (scan-data B)) +(scm_sym_uq_splicing (groups scm C) (scan-data B)) +(scm_symbol_fref (groups scm C) (scan-data T)) +(scm_symbol_fset_x (groups scm C) (scan-data T)) +(scm_symbol_hash (groups scm C) (scan-data T)) +(scm_symbol_interned_p (groups scm C) (scan-data T)) +(scm_symbol_p (groups scm C) (scan-data T)) +(scm_symbol_pref (groups scm C) (scan-data T)) +(scm_symbol_pset_x (groups scm C) (scan-data T)) +(scm_symbol_to_string (groups scm C) (scan-data T)) +(scm_symbols_prehistory (groups scm C) (scan-data T)) +(scm_symlink (groups scm C) (scan-data T)) +(scm_sync (groups scm C) (scan-data T)) +(scm_sys_allocate_instance (groups scm C) (scan-data T)) +(scm_sys_atan2 (groups scm C) (scan-data T)) +(scm_sys_compute_applicable_methods (groups scm C) (scan-data T)) +(scm_sys_compute_slots (groups scm C) (scan-data T)) +(scm_sys_expt (groups scm C) (scan-data T)) +(scm_sys_fast_slot_ref (groups scm C) (scan-data T)) +(scm_sys_fast_slot_set_x (groups scm C) (scan-data T)) +(scm_sys_inherit_magic_x (groups scm C) (scan-data T)) +(scm_sys_initialize_object (groups scm C) (scan-data T)) +(scm_sys_invalidate_class (groups scm C) (scan-data T)) +(scm_sys_invalidate_method_cache_x (groups scm C) (scan-data T)) +(scm_sys_library_dir (groups scm C) (scan-data T)) +(scm_sys_make_void_port (groups scm C) (scan-data T)) +(scm_sys_method_more_specific_p (groups scm C) (scan-data T)) +(scm_sys_modify_class (groups scm C) (scan-data T)) +(scm_sys_modify_instance (groups scm C) (scan-data T)) +(scm_sys_package_data_dir (groups scm C) (scan-data T)) +(scm_sys_prep_layout_x (groups scm C) (scan-data T)) +(scm_sys_protects (groups scm C) (scan-data B)) +(scm_sys_search_load_path (groups scm C) (scan-data T)) +(scm_sys_set_object_setter_x (groups scm C) (scan-data T)) +(scm_sys_site_dir (groups scm C) (scan-data T)) +(scm_sys_tag_body (groups scm C) (scan-data T)) +(scm_syserror (groups scm C) (scan-data T)) +(scm_syserror_msg (groups scm C) (scan-data T)) +(scm_system (groups scm C) (scan-data T)) +(scm_system_async (groups scm C) (scan-data T)) +(scm_system_async_mark (groups scm C) (scan-data T)) +(scm_system_async_mark_from_signal_handler (groups scm C) (scan-data T)) +(scm_system_environment (groups scm C) (scan-data B)) +(scm_system_error_key (groups scm C) (scan-data B)) +(scm_system_module_env_p (groups scm C) (scan-data T)) +(scm_tables_prehistory (groups scm C) (scan-data T)) +(scm_take0str (groups scm C) (scan-data T)) +(scm_take_from_input_buffers (groups scm C) (scan-data T)) +(scm_take_str (groups scm C) (scan-data T)) +(scm_tc16_allocated (groups scm C) (scan-data B)) +(scm_tc16_array (groups scm C) (scan-data B)) +(scm_tc16_condvar (groups scm C) (scan-data B)) +(scm_tc16_continuation (groups scm C) (scan-data B)) +(scm_tc16_debugobj (groups scm C) (scan-data B)) +(scm_tc16_dir (groups scm C) (scan-data B)) +(scm_tc16_dynamic_obj (groups scm C) (scan-data B)) +(scm_tc16_environment (groups scm C) (scan-data B)) +(scm_tc16_eval_closure (groups scm C) (scan-data B)) +(scm_tc16_fluid (groups scm C) (scan-data B)) +(scm_tc16_fport (groups scm C) (scan-data B)) +(scm_tc16_hook (groups scm C) (scan-data B)) +(scm_tc16_keyword (groups scm C) (scan-data B)) +(scm_tc16_macro (groups scm C) (scan-data B)) +(scm_tc16_malloc (groups scm C) (scan-data B)) +(scm_tc16_memoized (groups scm C) (scan-data B)) +(scm_tc16_mutex (groups scm C) (scan-data B)) +(scm_tc16_observer (groups scm C) (scan-data B)) +(scm_tc16_port_with_ps (groups scm C) (scan-data B)) +(scm_tc16_promise (groups scm C) (scan-data B)) +(scm_tc16_regex (groups scm C) (scan-data B)) +(scm_tc16_root (groups scm C) (scan-data B)) +(scm_tc16_rstate (groups scm C) (scan-data B)) +(scm_tc16_srcprops (groups scm C) (scan-data B)) +(scm_tc16_strport (groups scm C) (scan-data B)) +(scm_tc16_thread (groups scm C) (scan-data B)) +(scm_tc16_void_port (groups scm C) (scan-data D)) +(scm_tcgetpgrp (groups scm C) (scan-data T)) +(scm_tcsetpgrp (groups scm C) (scan-data T)) +(scm_the_last_stack_fluid_var (groups scm C) (scan-data B)) +(scm_the_rng (groups scm C) (scan-data B)) +(scm_thread_count (groups scm C) (scan-data D)) +(scm_thread_sleep (groups scm C) (scan-data T)) +(scm_thread_usleep (groups scm C) (scan-data T)) +(scm_threads_init (groups scm C) (scan-data T)) +(scm_threads_mark_stacks (groups scm C) (scan-data T)) +(scm_throw (groups scm C) (scan-data T)) +(scm_thunk_p (groups scm C) (scan-data T)) +(scm_times (groups scm C) (scan-data T)) +(scm_tmpnam (groups scm C) (scan-data T)) +(scm_top_level_env (groups scm C) (scan-data T)) +(scm_transpose_array (groups scm C) (scan-data T)) +(scm_truncate (groups scm C) (scan-data T)) +(scm_truncate_file (groups scm C) (scan-data T)) +(scm_try_arbiter (groups scm C) (scan-data T)) +(scm_ttyname (groups scm C) (scan-data T)) +(scm_type_eval_environment (groups scm C) (scan-data D)) +(scm_type_export_environment (groups scm C) (scan-data D)) +(scm_type_import_environment (groups scm C) (scan-data D)) +(scm_type_leaf_environment (groups scm C) (scan-data D)) +(scm_tzset (groups scm C) (scan-data T)) +(scm_uint2num (groups scm C) (scan-data T)) +(scm_ulong2num (groups scm C) (scan-data T)) +(scm_ulong_long2num (groups scm C) (scan-data T)) +(scm_umask (groups scm C) (scan-data T)) +(scm_uname (groups scm C) (scan-data T)) +(scm_ungetc (groups scm C) (scan-data T)) +(scm_ungets (groups scm C) (scan-data T)) +(scm_uniform_array_read_x (groups scm C) (scan-data T)) +(scm_uniform_array_write (groups scm C) (scan-data T)) +(scm_uniform_element_size (groups scm C) (scan-data T)) +(scm_uniform_vector_length (groups scm C) (scan-data T)) +(scm_uniform_vector_ref (groups scm C) (scan-data T)) +(scm_unlock_mutex (groups scm C) (scan-data T)) +(scm_unmask_signals (groups scm C) (scan-data T)) +(scm_unmemocar (groups scm C) (scan-data T)) +(scm_unmemocopy (groups scm C) (scan-data T)) +(scm_unmemoize (groups scm C) (scan-data T)) +(scm_unread_char (groups scm C) (scan-data T)) +(scm_unread_string (groups scm C) (scan-data T)) +(scm_upcase (groups scm C) (scan-data T)) +(scm_usage_name (groups scm C) (scan-data D)) +(scm_ushort2num (groups scm C) (scan-data T)) +(scm_usleep (groups scm C) (scan-data T)) +(scm_utime (groups scm C) (scan-data T)) +(scm_valid_object_procedure_p (groups scm C) (scan-data T)) +(scm_valid_oport_value_p (groups scm C) (scan-data T)) +(scm_values (groups scm C) (scan-data T)) +(scm_values_vtable (groups scm C) (scan-data B)) +(scm_var_random_state (groups scm C) (scan-data B)) +(scm_variable_bound_p (groups scm C) (scan-data T)) +(scm_variable_p (groups scm C) (scan-data T)) +(scm_variable_ref (groups scm C) (scan-data T)) +(scm_variable_set_x (groups scm C) (scan-data T)) +(scm_vector (groups scm C) (scan-data T)) +(scm_vector_equal_p (groups scm C) (scan-data T)) +(scm_vector_fill_x (groups scm C) (scan-data T)) +(scm_vector_length (groups scm C) (scan-data T)) +(scm_vector_move_left_x (groups scm C) (scan-data T)) +(scm_vector_move_right_x (groups scm C) (scan-data T)) +(scm_vector_p (groups scm C) (scan-data T)) +(scm_vector_ref (groups scm C) (scan-data T)) +(scm_vector_set_x (groups scm C) (scan-data T)) +(scm_vector_to_list (groups scm C) (scan-data T)) +(scm_version (groups scm C) (scan-data T)) +(scm_void_port (groups scm C) (scan-data T)) +(scm_wait_condition_variable (groups scm C) (scan-data T)) +(scm_waitpid (groups scm C) (scan-data T)) +(scm_weak_key_hash_table_p (groups scm C) (scan-data T)) +(scm_weak_value_hash_table_p (groups scm C) (scan-data T)) +(scm_weak_vector (groups scm C) (scan-data T)) +(scm_weak_vector_p (groups scm C) (scan-data T)) +(scm_weak_vectors (groups scm C) (scan-data B)) +(scm_weaks_prehistory (groups scm C) (scan-data T)) +(scm_with_fluids (groups scm C) (scan-data T)) +(scm_with_traps (groups scm C) (scan-data T)) +(scm_wrap_component (groups scm C) (scan-data T)) +(scm_wrap_object (groups scm C) (scan-data T)) +(scm_write (groups scm C) (scan-data T)) +(scm_write_char (groups scm C) (scan-data T)) +(scm_write_line (groups scm C) (scan-data T)) +(scm_write_string_partial (groups scm C) (scan-data T)) +(scm_wrong_num_args (groups scm C) (scan-data T)) +(scm_wrong_type_arg (groups scm C) (scan-data T)) +(scm_wrong_type_arg_msg (groups scm C) (scan-data T)) +(scm_yield (groups scm C) (scan-data T)) +(scm_your_base (groups scm C) (scan-data D)) +(scm_zero_p (groups scm C) (scan-data T)) +(search-path (groups Scheme) (scan-data "#")) +(seed->random-state (groups Scheme) (scan-data "#random-state>")) +(seek (groups Scheme) (scan-data "#")) +(select (groups POSIX Scheme) (scan-data "#")) +(send (groups Scheme) (scan-data "#")) +(sendto (groups Scheme) (scan-data "#")) +(servent:aliases (groups Scheme) (scan-data "#")) +(servent:name (groups Scheme) (scan-data "#")) +(servent:port (groups Scheme) (scan-data "#")) +(servent:proto (groups Scheme) (scan-data "#")) +(set! (groups Scheme) (scan-data "")) +(set-autoloaded! (groups Scheme) (scan-data "#")) +(set-batch-mode?! (groups Scheme) (scan-data "#")) +(set-car! (groups Scheme) (scan-data "#")) +(set-cdr! (groups Scheme) (scan-data "#")) +(set-current-error-port (groups Scheme) (scan-data "#")) +(set-current-input-port (groups Scheme) (scan-data "#")) +(set-current-module (groups Scheme) (scan-data "#")) +(set-current-output-port (groups Scheme) (scan-data "#")) +(set-defmacro-transformer! (groups Scheme) (scan-data "#")) +(set-module-binder! (groups Scheme) (scan-data "#")) +(set-module-eval-closure! (groups Scheme) (scan-data "#")) +(set-module-kind! (groups Scheme) (scan-data "#")) +(set-module-name! (groups Scheme) (scan-data "#")) +(set-module-obarray! (groups Scheme) (scan-data "#")) +(set-module-observer-id! (groups Scheme) (scan-data "#")) +(set-module-observers! (groups Scheme) (scan-data "#")) +(set-module-public-interface! (groups Scheme) (scan-data "#")) +(set-module-transformer! (groups Scheme) (scan-data "#")) +(set-module-uses! (groups Scheme) (scan-data "#")) +(set-object-procedure! (groups Scheme) (scan-data "#")) +(set-object-properties! (groups Scheme) (scan-data "#")) +(set-object-property! (groups Scheme) (scan-data "#")) +(set-port-column! (groups Scheme) (scan-data "#")) +(set-port-filename! (groups Scheme) (scan-data "#")) +(set-port-line! (groups Scheme) (scan-data "#")) +(set-port-revealed! (groups POSIX Scheme) (scan-data "#")) +(set-procedure-properties! (groups Scheme) (scan-data "#")) +(set-procedure-property! (groups Scheme) (scan-data "#")) +(set-repl-prompt! (groups Scheme) (scan-data "#")) +(set-source-properties! (groups Scheme) (scan-data "#")) +(set-source-property! (groups Scheme) (scan-data "#")) +(set-struct-vtable-name! (groups Scheme) (scan-data "#")) +(set-symbol-property! (groups Scheme) (scan-data "#")) +(set-system-module! (groups Scheme) (scan-data "#")) +(set-tm:gmtoff (groups POSIX Scheme) (scan-data "#")) +(set-tm:hour (groups POSIX Scheme) (scan-data "#")) +(set-tm:isdst (groups POSIX Scheme) (scan-data "#")) +(set-tm:mday (groups POSIX Scheme) (scan-data "#")) +(set-tm:min (groups POSIX Scheme) (scan-data "#")) +(set-tm:mon (groups POSIX Scheme) (scan-data "#")) +(set-tm:sec (groups POSIX Scheme) (scan-data "#")) +(set-tm:wday (groups POSIX Scheme) (scan-data "#")) +(set-tm:yday (groups POSIX Scheme) (scan-data "#")) +(set-tm:year (groups POSIX Scheme) (scan-data "#")) +(set-tm:zone (groups POSIX Scheme) (scan-data "#")) +(setegid (groups POSIX Scheme) (scan-data "#")) +(setenv (groups POSIX Scheme) (scan-data "#")) +(seteuid (groups POSIX Scheme) (scan-data "#")) +(setgid (groups POSIX Scheme) (scan-data "#")) +(setgr (groups POSIX Scheme) (scan-data "#")) +(setgrent (groups POSIX Scheme) (scan-data "#")) +(sethost (groups Scheme) (scan-data "#")) +(sethostent (groups Scheme) (scan-data "#")) +(sethostname (groups POSIX Scheme) (scan-data "#")) +(setitimer (groups POSIX Scheme) (scan-data "#")) +(setlocale (groups POSIX Scheme) (scan-data "#")) +(setnet (groups Scheme) (scan-data "#")) +(setnetent (groups Scheme) (scan-data "#")) +(setpgid (groups POSIX Scheme) (scan-data "#")) +(setpriority (groups POSIX Scheme) (scan-data "#")) +(setproto (groups Scheme) (scan-data "#")) +(setprotoent (groups Scheme) (scan-data "#")) +(setpw (groups POSIX Scheme) (scan-data "#")) +(setpwent (groups POSIX Scheme) (scan-data "#")) +(setserv (groups Scheme) (scan-data "#")) +(setservent (groups Scheme) (scan-data "#")) +(setsid (groups POSIX Scheme) (scan-data "#")) +(setsockopt (groups Scheme) (scan-data "#")) +(setter (groups Scheme) (scan-data "#")) +(setuid (groups POSIX Scheme) (scan-data "#")) +(setvbuf (groups POSIX Scheme) (scan-data "#")) +(shared-array-increments (groups Scheme) (scan-data "#")) +(shared-array-offset (groups Scheme) (scan-data "#")) +(shared-array-root (groups Scheme) (scan-data "#")) +(shutdown (groups Scheme) (scan-data "#")) +(sigaction (groups POSIX Scheme) (scan-data "#")) +(signal-condition-variable (groups Scheme) (scan-data "#")) +(signal-handlers (groups Scheme) (scan-data "")) +(simple-format (groups Scheme) (scan-data "#")) +(sin (groups Scheme) (scan-data "#")) +(single-active-thread? (groups Scheme) (scan-data "#")) +(sinh (groups Scheme) (scan-data "#")) +(sleep (groups POSIX Scheme) (scan-data "#")) +(sloppy-assoc (groups Scheme) (scan-data "#")) +(sloppy-assq (groups Scheme) (scan-data "#")) +(sloppy-assv (groups Scheme) (scan-data "#")) +(sockaddr:addr (groups Scheme) (scan-data "#")) +(sockaddr:fam (groups Scheme) (scan-data "#")) +(sockaddr:path (groups Scheme) (scan-data "#")) +(sockaddr:port (groups Scheme) (scan-data "#")) +(socket (groups Scheme) (scan-data "#")) +(socketpair (groups Scheme) (scan-data "#")) +(sort (groups Scheme) (scan-data "#")) +(sort! (groups Scheme) (scan-data "#")) +(sort-list (groups Scheme) (scan-data "#")) +(sort-list! (groups Scheme) (scan-data "#")) +(sorted? (groups Scheme) (scan-data "#")) +(source-properties (groups Scheme) (scan-data "#")) +(source-property (groups Scheme) (scan-data "#")) +(source-whash (groups Scheme) (scan-data "")) +(sqrt (groups Scheme) (scan-data "#")) +(stable-sort (groups Scheme) (scan-data "#")) +(stable-sort! (groups Scheme) (scan-data "#")) +(stack-id (groups Scheme) (scan-data "#")) +(stack-length (groups Scheme) (scan-data "#")) +(stack-ref (groups Scheme) (scan-data "#")) +(stack-saved? (groups Scheme) (scan-data "")) +(stack? (groups Scheme) (scan-data "#")) +(standard-eval-closure (groups Scheme) (scan-data "#")) +(standard-interface-eval-closure (groups Scheme) (scan-data "#")) +(start-stack (groups Scheme) (scan-data "")) +(stat (groups POSIX Scheme) (scan-data "#")) +(stat:atime (groups POSIX Scheme) (scan-data "#")) +(stat:blksize (groups POSIX Scheme) (scan-data "#")) +(stat:blocks (groups POSIX Scheme) (scan-data "#")) +(stat:ctime (groups POSIX Scheme) (scan-data "#")) +(stat:dev (groups POSIX Scheme) (scan-data "#")) +(stat:gid (groups POSIX Scheme) (scan-data "#")) +(stat:ino (groups POSIX Scheme) (scan-data "#")) +(stat:mode (groups POSIX Scheme) (scan-data "#")) +(stat:mtime (groups POSIX Scheme) (scan-data "#")) +(stat:nlink (groups POSIX Scheme) (scan-data "#")) +(stat:perms (groups POSIX Scheme) (scan-data "#")) +(stat:rdev (groups POSIX Scheme) (scan-data "#")) +(stat:size (groups POSIX Scheme) (scan-data "#")) +(stat:type (groups POSIX Scheme) (scan-data "#")) +(stat:uid (groups POSIX Scheme) (scan-data "#")) +(status:exit-val (groups POSIX Scheme) (scan-data "#")) +(status:stop-sig (groups POSIX Scheme) (scan-data "#")) +(status:term-sig (groups POSIX Scheme) (scan-data "#")) +(strerror (groups Scheme) (scan-data "#")) +(strftime (groups POSIX Scheme) (scan-data "#")) +(string (groups Scheme) (scan-data "#")) +(string->list (groups Scheme) (scan-data "#list>")) +(string->number (groups Scheme) (scan-data "#number>")) +(string->symbol (groups Scheme) (scan-data "#symbol>")) +(string-append (groups Scheme) (scan-data "#")) +(string-capitalize (groups Scheme) (scan-data "#")) +(string-capitalize! (groups Scheme) (scan-data "#")) +(string-ci->symbol (groups Scheme) (scan-data "#symbol>")) +(string-ci<=? (groups Scheme) (scan-data "#")) +(string-ci")) +(string-ci=? (groups Scheme) (scan-data "#")) +(string-ci>=? (groups Scheme) (scan-data "#=?>")) +(string-ci>? (groups Scheme) (scan-data "#?>")) +(string-copy (groups Scheme) (scan-data "#")) +(string-downcase (groups Scheme) (scan-data "#")) +(string-downcase! (groups Scheme) (scan-data "#")) +(string-fill! (groups Scheme) (scan-data "#")) +(string-index (groups Scheme) (scan-data "#")) +(string-length (groups Scheme) (scan-data "#")) +(string-null? (groups Scheme) (scan-data "#")) +(string-ref (groups Scheme) (scan-data "#")) +(string-rindex (groups Scheme) (scan-data "#")) +(string-set! (groups Scheme) (scan-data "#")) +(string-split (groups Scheme) (scan-data "#")) +(string-upcase (groups Scheme) (scan-data "#")) +(string-upcase! (groups Scheme) (scan-data "#")) +(string<=? (groups Scheme) (scan-data "#")) +(string")) +(string=? (groups Scheme) (scan-data "#")) +(string>=? (groups Scheme) (scan-data "#=?>")) +(string>? (groups Scheme) (scan-data "#?>")) +(string? (groups Scheme) (scan-data "#")) +(strptime (groups POSIX Scheme) (scan-data "#")) +(struct-layout (groups Scheme) (scan-data "#")) +(struct-ref (groups Scheme) (scan-data "#")) +(struct-set! (groups Scheme) (scan-data "#")) +(struct-vtable (groups Scheme) (scan-data "#")) +(struct-vtable-name (groups Scheme) (scan-data "#")) +(struct-vtable-tag (groups Scheme) (scan-data "#")) +(struct-vtable? (groups Scheme) (scan-data "#")) +(struct? (groups Scheme) (scan-data "#")) +(substring (groups Scheme) (scan-data "#")) +(substring-fill! (groups Scheme) (scan-data "#")) +(substring-move! (groups Scheme) (scan-data "#")) +(symbol (groups Scheme) (scan-data "#")) +(symbol->keyword (groups Scheme) (scan-data "#keyword (symbol)>")) +(symbol->string (groups Scheme) (scan-data "#string>")) +(symbol-append (groups Scheme) (scan-data "#")) +(symbol-fref (groups Scheme) (scan-data "#")) +(symbol-fset! (groups Scheme) (scan-data "#")) +(symbol-hash (groups Scheme) (scan-data "#")) +(symbol-interned? (groups Scheme) (scan-data "#")) +(symbol-pref (groups Scheme) (scan-data "#")) +(symbol-prefix-proc (groups Scheme) (scan-data "#")) +(symbol-property (groups Scheme) (scan-data "#")) +(symbol-property-remove! (groups Scheme) (scan-data "#")) +(symbol-pset! (groups Scheme) (scan-data "#")) +(symbol? (groups Scheme) (scan-data "#")) +(symlink (groups POSIX Scheme) (scan-data "#")) +(sync (groups POSIX Scheme) (scan-data "#")) +(system (groups POSIX Scheme) (scan-data "#")) +(system-async (groups Scheme) (scan-data "#")) +(system-async-mark (groups Scheme) (scan-data "#")) +(system-error-errno (groups Scheme) (scan-data "#")) +(tan (groups Scheme) (scan-data "#")) +(tanh (groups Scheme) (scan-data "#")) +(tcgetpgrp (groups POSIX Scheme) (scan-data "#")) +(tcsetpgrp (groups POSIX Scheme) (scan-data "#")) +(the-environment (groups Scheme) (scan-data "")) +(the-eof-object (groups Scheme) (scan-data "")) +(the-last-stack (groups Scheme) (scan-data "")) +(the-root-environment (groups Scheme) (scan-data "")) +(the-root-module (groups Scheme) (scan-data "")) +(the-scm-module (groups Scheme) (scan-data "")) +(throw (groups Scheme) (scan-data "#")) +(thunk? (groups Scheme) (scan-data "#")) +(times (groups POSIX Scheme) (scan-data "#")) +(tm:gmtoff (groups POSIX Scheme) (scan-data "#")) +(tm:hour (groups POSIX Scheme) (scan-data "#")) +(tm:isdst (groups POSIX Scheme) (scan-data "#")) +(tm:mday (groups POSIX Scheme) (scan-data "#")) +(tm:min (groups POSIX Scheme) (scan-data "#")) +(tm:mon (groups POSIX Scheme) (scan-data "#")) +(tm:sec (groups POSIX Scheme) (scan-data "#")) +(tm:wday (groups POSIX Scheme) (scan-data "#")) +(tm:yday (groups POSIX Scheme) (scan-data "#")) +(tm:year (groups POSIX Scheme) (scan-data "#")) +(tm:zone (groups POSIX Scheme) (scan-data "#")) +(tmpnam (groups POSIX Scheme) (scan-data "#")) +(tms:clock (groups POSIX Scheme) (scan-data "#")) +(tms:cstime (groups POSIX Scheme) (scan-data "#")) +(tms:cutime (groups POSIX Scheme) (scan-data "#")) +(tms:stime (groups POSIX Scheme) (scan-data "#")) +(tms:utime (groups POSIX Scheme) (scan-data "#")) +(top-repl (groups Scheme) (scan-data "#")) +(transform-usage-lambda (groups Scheme) (scan-data "#")) +(transpose-array (groups Scheme) (scan-data "#")) +(trap-disable (groups Scheme) (scan-data "#")) +(trap-enable (groups Scheme) (scan-data "#")) +(trap-set! (groups Scheme) (scan-data "")) +(traps (groups Scheme) (scan-data "#")) +(truncate (groups Scheme) (scan-data "#")) +(truncate-file (groups Scheme) (scan-data "#")) +(try-arbiter (groups Scheme) (scan-data "#")) +(try-load-module (groups Scheme) (scan-data "#")) +(try-module-autoload (groups Scheme) (scan-data "#")) +(ttyname (groups POSIX Scheme) (scan-data "#")) +(turn-on-debugging (groups Scheme) (scan-data "#")) +(tzset (groups POSIX Scheme) (scan-data "#")) +(umask (groups POSIX Scheme) (scan-data "#")) +(uname (groups POSIX Scheme) (scan-data "#")) +(undefine (groups Scheme) (scan-data "")) +(uniform-array-read! (groups Scheme) (scan-data "#")) +(uniform-array-set1! (groups Scheme) (scan-data "#")) +(uniform-array-write (groups Scheme) (scan-data "#")) +(uniform-vector-fill! (groups Scheme) (scan-data "#")) +(uniform-vector-length (groups Scheme) (scan-data "#")) +(uniform-vector-read! (groups Scheme) (scan-data "#")) +(uniform-vector-ref (groups Scheme) (scan-data "#")) +(uniform-vector-set! (groups Scheme) (scan-data "#")) +(uniform-vector-write (groups Scheme) (scan-data "#")) +(uniform-vector? (groups Scheme) (scan-data "#")) +(unlock-mutex (groups Scheme) (scan-data "#")) +(unmask-signals (groups Scheme) (scan-data "#")) +(unmemoize (groups Scheme) (scan-data "#")) +(unread-char (groups POSIX Scheme) (scan-data "#")) +(unread-string (groups POSIX Scheme) (scan-data "#")) +(unsetenv (groups Scheme) (scan-data "#")) +(unspecified? (groups Scheme) (scan-data "#")) +(use-emacs-interface (groups Scheme) (scan-data "")) +(use-modules (groups Scheme) (scan-data "")) +(use-srfis (groups Scheme) (scan-data "#")) +(use-syntax (groups Scheme) (scan-data "")) +(using-readline? (groups Scheme) (scan-data "#")) +(usleep (groups POSIX Scheme) (scan-data "#")) +(utime (groups POSIX Scheme) (scan-data "#")) +(utsname:machine (groups POSIX Scheme) (scan-data "#")) +(utsname:nodename (groups POSIX Scheme) (scan-data "#")) +(utsname:release (groups POSIX Scheme) (scan-data "#")) +(utsname:sysname (groups POSIX Scheme) (scan-data "#")) +(utsname:version (groups POSIX Scheme) (scan-data "#")) +(valid-object-procedure? (groups Scheme) (scan-data "#")) +(values (groups Scheme) (scan-data "#")) +(variable-bound? (groups Scheme) (scan-data "#")) +(variable-ref (groups Scheme) (scan-data "#")) +(variable-set! (groups Scheme) (scan-data "#")) +(variable? (groups Scheme) (scan-data "#")) +(vector (groups Scheme) (scan-data "#")) +(vector->list (groups Scheme) (scan-data "#list>")) +(vector-fill! (groups Scheme) (scan-data "#")) +(vector-length (groups Scheme) (scan-data "#")) +(vector-move-left! (groups Scheme) (scan-data "#")) +(vector-move-right! (groups Scheme) (scan-data "#")) +(vector-ref (groups Scheme) (scan-data "#")) +(vector-set! (groups Scheme) (scan-data "#")) +(vector? (groups Scheme) (scan-data "#")) +(version (groups Scheme) (scan-data "#")) +(vtable-index-layout (groups Scheme) (scan-data "")) +(vtable-index-printer (groups Scheme) (scan-data "")) +(vtable-index-vtable (groups Scheme) (scan-data "")) +(vtable-offset-user (groups Scheme) (scan-data "")) +(wait-condition-variable (groups Scheme) (scan-data "#")) +(waitpid (groups POSIX Scheme) (scan-data "#")) +(warn (groups Scheme) (scan-data "#")) +(weak-key-hash-table? (groups Scheme) (scan-data "#")) +(weak-value-hash-table? (groups Scheme) (scan-data "#")) +(weak-vector (groups Scheme) (scan-data "#")) +(weak-vector? (groups Scheme) (scan-data "#")) +(while (groups Scheme) (scan-data "")) +(with-error-to-file (groups Scheme) (scan-data "#")) +(with-error-to-port (groups Scheme) (scan-data "#")) +(with-error-to-string (groups Scheme) (scan-data "#")) +(with-fluids (groups Scheme) (scan-data "")) +(with-fluids* (groups Scheme) (scan-data "#")) +(with-input-from-file (groups Scheme) (scan-data "#")) +(with-input-from-port (groups Scheme) (scan-data "#")) +(with-input-from-string (groups Scheme) (scan-data "#")) +(with-output-to-file (groups Scheme) (scan-data "#")) +(with-output-to-port (groups Scheme) (scan-data "#")) +(with-output-to-string (groups Scheme) (scan-data "#")) +(with-traps (groups Scheme) (scan-data "#")) +(write (groups Scheme) (scan-data "#")) +(write-char (groups Scheme) (scan-data "#")) +(xformer-table (groups Scheme) (scan-data "")) +(yield (groups Scheme) (scan-data "#")) +(zero? (groups Scheme) (scan-data "#")) +) ;; end of interface +) ;; eof diff --git a/guile18/doc/guile.1 b/guile18/doc/guile.1 new file mode 100644 index 0000000000..46ea952990 --- /dev/null +++ b/guile18/doc/guile.1 @@ -0,0 +1,99 @@ +.\" Written by Robert Merkel (rgmerk@mira.net) +.\" augmented by Rob Browning +.\" Process this file with +.\" groff -man -Tascii foo.1 +.\" +.TH GUILE 1 +.SH NAME +guile \- a Scheme interpreter +.SH SYNOPSIS +.B guile [-q] [-ds] [--help] [--version] [--emacs] [--debug] +.B [-l FILE] [-e FUNCTION] [\] +.B [-c EXPR] [-s SCRIPT] [--] +.SH DESCRIPTION +GNU Guile is an interpreter for the Scheme programming language. It +implements R5RS, providing additional features +necessary for real-world use. It is extremely simple to embed guile +into a C program, calling C from Scheme and Scheme from C. Guile's +design makes it very suitable for use as an "extension" or "glue" +language, but it also works well as a stand-alone scheme development +environment. + +The +.B guile +executable itself provides a stand-alone interpreter for scheme +programs, for either interactive use or executing scripts. + +This manpage provides only brief instruction in invoking +.B guile +from the command line. Please consult the guile info documentation +(type +.B info guile +at a command prompt) for more information. There is also a tutorial +.B (info guile-tut) +available. + +.SH OPTIONS +.IP -l FILE +Load scheme source code from file. +.IP -e FUNCTION +After reading script, apply FUNCTION to command-line arguments +.IP -ds +do -s SCRIPT at this point (note that this argument must be used in +conjuction with -s) +.IP --help +Describe command line options and exit +.IP --debug +Start guile with debugging evaluator and backtraces enabled +(useful for debugging guile scripts) +.IP --version +Display guile version and exit. +.IP --emacs +Enable emacs protocol for use from within emacs (experimental) +.IP -- +Stop argument processing, start guile in interactive mode. +.IP -c EXPR +Stop argument processing, evaluate EXPR as a scheme expression. +.IP -s SCRIPT-FILE +Load Scheme source from SCRIPT-FILE and execute as a script. + +.SH ENVIRONMENT +.\".TP \w'MANROFFSEQ\ \ 'u +.TP +.B GUILE_LOAD_PATH +If +.RB $ GUILE_LOAD_PATH +is set, its value is used to agument the path to search for scheme +files when loading. It should be a colon separated list of +directories which will be prepended to the default %load-path. + +.SH FILES +.I ~/.guile +is a guile script that is executed before any other processing occurs. +For example, the following .guile activates guile's readline +interface: + +.RS 4 +(use-modules (ice-9 readline)) +.RS 0 +(activate-readline) + +.SH "SEE ALSO" +The full documentation for guile is maintained as a Texinfo manual. If +the info and guile programs are properly installed at your site, the +command +.IP +.B info guile +.PP +should give you access to the complete manual. + +http://www.schemers.org provides a general introduction to the +Scheme language. + +.SH AUTHORS +Robert Merkel wrote this manpage. +Rob Browning has added to it. + +.B guile +is GNU software. Guile is originally based on Aubrey Jaffer's +SCM interpreter, and is the work of many individuals. diff --git a/guile18/doc/hacks.el b/guile18/doc/hacks.el new file mode 100644 index 0000000000..c5a3f576be --- /dev/null +++ b/guile18/doc/hacks.el @@ -0,0 +1,16 @@ +;;;; hacks.el --- a few functions to help me work on the manual +;;;; Jim Blandy --- October 1998 + +(defun jh-exemplify-region (start end) + (interactive "r") + (save-excursion + (save-restriction + (narrow-to-region start end) + + ;; Texinfo doesn't handle tabs well. + (untabify (point-min) (point-max)) + + ;; Quote any characters special to texinfo. + (goto-char (point-min)) + (while (re-search-forward "[{}@]" nil t) + (replace-match "@\\&"))))) diff --git a/guile18/doc/maint/ChangeLog-2008 b/guile18/doc/maint/ChangeLog-2008 new file mode 100644 index 0000000000..0c6e618d63 --- /dev/null +++ b/guile18/doc/maint/ChangeLog-2008 @@ -0,0 +1,75 @@ +2004-08-25 Marius Vollmer + + * docstring.el (docstring-process-alist): Consider entries in + reverse order. That puts them in new-docstrings.texi in the same + order as in the C source. + +2004-08-23 Marius Vollmer + + * docstring.el: Replaced all "@c module" markers with "@c + module-for-docstring", making it less likely to collide with a + real commentary. + +2002-10-19 Neil Jerram + + * guile.texi: Replaced by regenerated libguile version. + +2002-07-10 Gary Houston + + * docstring.el: optional 2nd environment variable to locate + built files. + +2002-07-09 Gary Houston + + * docstring.el: defined caddr, used in several places but missing + for some reason. + +2002-04-02 Thien-Thi Nguyen + + * doctring.el: List commands in commentary; nfc. + +2002-03-15 Neil Jerram + + * guile.texi: Replaced by regenerated libguile version. + +2002-03-12 Neil Jerram + + * guile.texi: Replaced by regenerated libguile version. + +2002-03-08 Neil Jerram + + * docstring.el (docstring-libguile-directory, + docstring-display-location, docstring-show-source): New. + +2001-11-16 Neil Jerram + + * guile.texi: Replaced by regenerated libguile version. + + * docstring.el (make-module-description-list): Exclude @deffn's + with category {C Function}. + (docstring-process-alist): Bind key "d" to + docstring-ediff-this-line in the docstring output buffer. + +2001-11-13 Neil Jerram + + * guile.texi: Replaced by libguile version (after automatically + updating docstrings in the reference manual). + +2001-11-07 Neil Jerram + + * guile.texi: Replaced by libguile version (after automatically + updating docstrings in the reference manual). + + * docstring.el (docstring-manual-directory): Added "/ref" to end. + (docstring-manual-files): Now calculated automatically, since by + definition all the .texi files in doc/ref are reference manual + files. + +2001-04-03 Martin Grabmueller + + * guile.texi: Automated docstring merging. + +2001-03-23 Neil Jerram + + * ChangeLog, README, docstring.el, guile.texi: New files. + diff --git a/guile18/doc/maint/README b/guile18/doc/maint/README new file mode 100644 index 0000000000..adfa13f82b --- /dev/null +++ b/guile18/doc/maint/README @@ -0,0 +1,35 @@ +README for guile-core/doc/maint -*- text -*- + +The files in this directory are used by the maintainers to automate +the process of updating the Guile reference manual when the docstrings +in the libguile C source change. + +- ChangeLog is the change log for files in this directory. + +- README is this file. + +- docstring.el is a helpful Emacs Lisp library (see source for + customization). The two key entry points are: + `docstring-process-module' and + `docstring-ediff-this-line'. + +- guile.texi is a snapshot of the built file libguile/guile.texi, + copied last time the reference manual was determined to be in sync + with the libguile source. + +docstring.el requires the setting of an environment variable, e.g., + +export GUILE_MAINTAINER_GUILE_CORE_DIR=$HOME/guile/guile-core + +If the build directory differs from the source directory, an additional +variable is required: + +export GUILE_MAINTAINER_BUILD_CORE_DIR=$HOME/guile/guile-core-build + +If you've just fixed a docstring in, say, ../libguile/strop.c, do in emacs: + + M-x load-file RET .../doc/maint/docstring.el RET + M-x docstring-process-module RET (guile) RET + +Save all modified .texi files and copy the current ../libguile/guile.texi +to ./guile.texi, then commit. See elisp var `docstring-snarfed-roots'. diff --git a/guile18/doc/maint/docstring.el b/guile18/doc/maint/docstring.el new file mode 100644 index 0000000000..2b5639eb65 --- /dev/null +++ b/guile18/doc/maint/docstring.el @@ -0,0 +1,622 @@ +;;; docstring.el --- utilities for Guile docstring maintenance +;;; +;;; Copyright (C) 2001, 2004 Neil Jerram +;;; +;;; This file is not part of GNU Emacs, but the same permissions apply. +;;; +;;; GNU Emacs is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2, or (at your option) +;;; any later version. +;;; +;;; GNU Emacs is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Emacs; see the file COPYING. If not, write to the +;;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;;; Boston, MA 02110-1301, USA. + +;;; Commentary: + +;; The basic premise of these utilities is that - at least in the +;; short term - we can get a lot of reference manual mileage by +;; co-opting the docstrings that are snarfed automatically from +;; Guile's C and Scheme source code. But this leads to problems of +;; synchronization... How do you track when a docstring has been +;; updated in the source and so needs updating in the reference +;; manual. What if a procedure is removed from the Guile source? And +;; so on. To complicate matters, the exact snarfed docstring text +;; will probably need to be modified so that it fits into the flow of +;; the manual section in which it appears. Can we design solutions to +;; synchronization problems that continue to work even when the manual +;; text has been enhanced in this way? +;; +;; This file implements an approach to this problem that I have found +;; useful. It involves keeping track of three copies of each +;; docstring: +;; +;; "MANUAL" = the docstring as it appears in the reference manual. +;; +;; "SNARFED" = the docstring as snarfed from the current C or Scheme +;; source. +;; +;; "TRACKING" = the docstring as it appears in a tracking file whose +;; purpose is to record the most recent snarfed docstrings +;; that are known to be in sync with the reference manual. +;; +;; The approaches are as follows. +;; +;; 1. Comparison of MANUAL-DOC, SOURCE-DOC and TRACK-DOC, to produce a +;; summary output buffer in which keystrokes are defined to bring up +;; detailed comparisons. +;; +;; 2. Comparison of MANUAL-DOC, SOURCE-DOC and TRACK-DOC using Ediff. +;; +;; Here is a brief list of commands available (via "M-x COMMAND"): +;; +;; docstring-process-current-buffer +;; docstring-process-current-region BEG END +;; docstring-process-module MODULE +;; docstring-ediff-this-line +;; docstring-show-source + + +(defvar guile-core-dir (or (getenv "GUILE_MAINTAINER_GUILE_CORE_DIR") + (error "GUILE_MAINTAINER_GUILE_CORE_DIR not set")) + "*Full path of guile-core source directory.") + +(defvar guile-build-dir (or (getenv "GUILE_MAINTAINER_BUILD_CORE_DIR") + guile-core-dir) + "*Full path of guile-core build directory. Defaults to guile-core-dir.") + +(defvar docstring-manual-directory (expand-file-name "doc/ref" guile-core-dir) + "*The directory containing the Texinfo source for the Guile reference manual.") + +(defvar docstring-tracking-root (expand-file-name "doc/maint" guile-core-dir) + "*Root directory for docstring tracking files. The tracking file +for module (a b c) is expected to be in the file +/a/b/c.texi.") + +(defvar docstring-snarfed-roots (mapcar + #'(lambda (frag) + (expand-file-name frag guile-build-dir)) + '("libguile" "ice-9" "oop")) + "*List of possible root directories for snarfed docstring files. +For each entry in this list, the snarfed docstring file for module (a +b c) is looked for in the file /a/b/c.texi.") + +(defvar docstring-manual-files + (directory-files docstring-manual-directory nil "\\.texi$" t) + "List of Texinfo source files that comprise the Guile reference manual.") + +(defvar docstring-new-docstrings-file "new-docstrings.texi" + "The name of a file in the Guile reference manual source directory +to which new docstrings should be added.") + +;; Apply FN in turn to each element in the list CANDIDATES until the +;; first application that returns non-nil. +(defun or-map (fn candidates args) + (let ((result nil)) + (while candidates + (setq result (apply fn (car candidates) args)) + (if result + (setq result (cons (car candidates) result) + candidates nil) + (setq candidates (cdr candidates)))) + result)) + +;; Return t if the current buffer position is in the scope of the +;; specified MODULE, as determined by "@c module-for-docstring ..." comments in the +;; buffer. DEFAULT-OK specifies the return value in the case that +;; there are no preceding module comments at all. +(defun docstring-in-module (module default-ok) + (save-excursion + (if (re-search-backward "^@c module-for-docstring " nil t) + (progn + (search-forward "@c module-for-docstring ") + (equal module (read (current-buffer)))) + default-ok))) + +;; Find a docstring in the specified FILE-NAME for the item in module +;; MODULE and with description DESCRIPTION. MODULE should be a list +;; of symbols, Guile-style, for example: '(ice-9 session). +;; DESCRIPTION should be the string that is expected after the @deffn, +;; for example "primitive acons" or "syntax let*". +(defun find-docstring (file-name module description) + (and (file-exists-p file-name) + (let ((buf (find-file-noselect file-name)) + (deffn-regexp (concat "^@deffnx? " + (regexp-quote description) + "[ \n\t]")) + found + result) + (save-excursion + (set-buffer buf) + (goto-char (point-min)) + (while (and (not found) + (re-search-forward deffn-regexp nil t)) + (save-excursion + (goto-char (match-beginning 0)) + (beginning-of-line) + (if (docstring-in-module module t) + (setq found t)))) + (if found + (setq result + (list (current-buffer) + (progn + (re-search-backward "^@deffn ") + (beginning-of-line) + (point)) + (progn + (re-search-forward "^@end deffn") + (forward-line 1) + (point)))))) + result))) + +;; Find the reference manual version of the specified docstring. +;; MODULE and DESCRIPTION specify the docstring as per +;; `find-docstring'. The set of files that `find-manual-docstring' +;; searches is determined by the value of the `docstring-manual-files' +;; variable. +(defun find-manual-docstring (module description) + (let* ((result + (or-map 'find-docstring + (mapcar (function (lambda (file-name) + (concat docstring-manual-directory + "/" + file-name))) + (cons docstring-new-docstrings-file + docstring-manual-files)) + (list module + description))) + (matched-file-name (and (cdr result) + (file-name-nondirectory (car result))))) + (if matched-file-name + (setq docstring-manual-files + (cons matched-file-name + (delete matched-file-name docstring-manual-files)))) + (cdr result))) + +;; Convert MODULE to a directory subpath. +(defun module-to-path (module) + (mapconcat (function (lambda (component) + (symbol-name component))) + module + "/")) + +;; Find the current snarfed version of the specified docstring. +;; MODULE and DESCRIPTION specify the docstring as per +;; `find-docstring'. The file that `find-snarfed-docstring' looks in +;; is automatically generated from MODULE. +(defun find-snarfed-docstring (module description) + (let ((modpath (module-to-path module))) + (cdr (or-map (function (lambda (root) + (find-docstring (concat root + "/" + modpath + ".texi") + module + description))) + docstring-snarfed-roots + nil)))) + +;; Find the tracking version of the specified docstring. MODULE and +;; DESCRIPTION specify the docstring as per `find-docstring'. The +;; file that `find-tracking-docstring' looks in is automatically +;; generated from MODULE. +(defun find-tracking-docstring (module description) + (find-docstring (concat docstring-tracking-root + "/" + (module-to-path module) + ".texi") + module + description)) + +;; Extract an alist of modules and descriptions from the current +;; buffer. +(defun make-module-description-list () + (let ((alist nil) + (module '(guile))) + (save-excursion + (goto-char (point-min)) + (while (re-search-forward "^\\(@c module-for-docstring \\|@deffnx? \\({[^}]+}\\|[^ ]+\\) \\([^ \n]+\\)\\)" + nil + t) + (let ((matched (buffer-substring (match-beginning 1) + (match-end 1)))) + (if (string-equal matched "@c module-for-docstring ") + (setq module (read (current-buffer))) + (let ((type (buffer-substring (match-beginning 2) + (match-end 2)))) + (if (string-equal type "{C Function}") + nil + (setq matched + (concat type + " " + (buffer-substring (match-beginning 3) + (match-end 3)))) + (message "Found docstring: %S: %s" module matched) + (let ((descriptions (assoc module alist))) + (setq alist + (cons (cons module (cons matched (cdr-safe descriptions))) + (if descriptions + (delete descriptions alist) + alist)))))))))) + alist)) + +;; missing in some environments? +(defun caddr (list) + (nth 2 list)) + +;; Return the docstring from the specified LOCATION. LOCATION is a +;; list of three elements: buffer, start position and end position. +(defun location-to-docstring (location) + (and location + (save-excursion + (set-buffer (car location)) + (buffer-substring (cadr location) (caddr location))))) + +;; Perform a comparison of the specified docstring. MODULE and +;; DESCRIPTION are as per usual. +(defun docstring-compare (module description) + (let* ((manual-location (find-manual-docstring module description)) + (snarf-location (find-snarfed-docstring module description)) + (track-location (find-tracking-docstring module description)) + + (manual-docstring (location-to-docstring manual-location)) + (snarf-docstring (location-to-docstring snarf-location)) + (track-docstring (location-to-docstring track-location)) + + action + issue) + + ;; Decide what to do. + (cond ((null snarf-location) + (setq action nil + issue (if manual-location + 'consider-removal + nil))) + + ((null manual-location) + (setq action 'add-to-manual issue nil)) + + ((null track-location) + (setq action nil + issue (if (string-equal manual-docstring snarf-docstring) + nil + 'check-needed))) + + ((string-equal track-docstring snarf-docstring) + (setq action nil issue nil)) + + ((string-equal track-docstring manual-docstring) + (setq action 'auto-update-manual issue nil)) + + (t + (setq action nil issue 'update-needed))) + + ;; Return a pair indicating any automatic action that can be + ;; taken, and any issue for resolution. + (cons action issue))) + +;; Add the specified docstring to the manual. +(defun docstring-add-to-manual (module description) + (let ((buf (find-file-noselect (concat docstring-manual-directory + "/" + docstring-new-docstrings-file)))) + (save-excursion + (set-buffer buf) + (goto-char (point-max)) + (or (docstring-in-module module nil) + (insert "\n@c module-for-docstring " (prin1-to-string module) "\n")) + (insert "\n" (location-to-docstring (find-snarfed-docstring module + description)))))) + +;; Auto-update the specified docstring in the manual. +(defun docstring-auto-update-manual (module description) + (let ((manual-location (find-manual-docstring module description)) + (track-location (find-tracking-docstring module description))) + (save-excursion + (set-buffer (car manual-location)) + (goto-char (cadr manual-location)) + (delete-region (cadr manual-location) (caddr manual-location)) + (insert (location-to-docstring (find-snarfed-docstring module + description)))))) + +;; Process an alist of modules and descriptions, and produce a summary +;; buffer describing actions taken and issues to be resolved. +(defun docstring-process-alist (alist) + (let (check-needed-list + update-needed-list + consider-removal-list + added-to-manual-list + auto-updated-manual-list) + + (mapcar + (function (lambda (module-list) + (let ((module (car module-list))) + (message "Module: %S" module) + (mapcar + (function (lambda (description) + (message "Comparing docstring: %S: %s" module description) + (let* ((ai (docstring-compare module description)) + (action (car ai)) + (issue (cdr ai))) + + (cond ((eq action 'add-to-manual) + (docstring-add-to-manual module description) + (setq added-to-manual-list + (cons (cons module description) + added-to-manual-list))) + + ((eq action 'auto-update-manual) + (docstring-auto-update-manual module description) + (setq auto-updated-manual-list + (cons (cons module description) + auto-updated-manual-list)))) + + (cond ((eq issue 'check-needed) + (setq check-needed-list + (cons (cons module description) + check-needed-list))) + + ((eq issue 'update-needed) + (setq update-needed-list + (cons (cons module description) + update-needed-list))) + + ((eq issue 'consider-removal) + (setq consider-removal-list + (cons (cons module description) + consider-removal-list))))))) + (reverse (cdr module-list)))))) + alist) + + ;; Prepare a buffer describing the results. + (set-buffer (get-buffer-create "*Docstring Results*")) + (erase-buffer) + + (insert " +The following items have been automatically added to the manual in +file `" docstring-manual-directory "/" docstring-new-docstrings-file "'.\n\n") + (if added-to-manual-list + (mapcar (function (lambda (moddesc) + (insert (prin1-to-string (car moddesc)) + ": " + (cdr moddesc) + "\n"))) + added-to-manual-list) + (insert "(none)\n")) + + (insert " +The following items have been automatically updated in the manual.\n\n") + (if auto-updated-manual-list + (mapcar (function (lambda (moddesc) + (insert (prin1-to-string (car moddesc)) + ": " + (cdr moddesc) + "\n"))) + auto-updated-manual-list) + (insert "(none)\n")) + + (insert " +The following items are already documented in the manual but are not +mentioned in the reference copy of the snarfed docstrings file. +You should check that the manual documentation matches the docstring +in the current snarfed docstrings file.\n\n") + (if check-needed-list + (mapcar (function (lambda (moddesc) + (insert (prin1-to-string (car moddesc)) + ": " + (cdr moddesc) + "\n"))) + check-needed-list) + (insert "(none)\n")) + + (insert " +The following items have manual documentation that is different from +the docstring in the reference copy of the snarfed docstrings file, +and the snarfed docstring has changed. You need to update the manual +documentation by hand with reference to the snarfed docstring changes.\n\n") + (if update-needed-list + (mapcar (function (lambda (moddesc) + (insert (prin1-to-string (car moddesc)) + ": " + (cdr moddesc) + "\n"))) + update-needed-list) + (insert "(none)\n")) + + (insert " +The following items are documented in the manual but are no longer +present in the snarfed docstrings file. You should consider whether +the existing manual documentation is still pertinent. If it is, its +docstring module comment may need updating, to connect it with a +new snarfed docstring file.\n\n") + (if consider-removal-list + (mapcar (function (lambda (moddesc) + (insert (prin1-to-string (car moddesc)) + ": " + (cdr moddesc) + "\n"))) + consider-removal-list) + (insert "(none)\n")) + (insert "\n") + + (goto-char (point-min)) + (local-set-key "d" 'docstring-ediff-this-line) + + ;; Popup the issues buffer. + (let ((pop-up-frames t)) + (set-window-point (display-buffer (current-buffer)) + (point-min))))) + +(defun docstring-process-current-buffer () + (interactive) + (docstring-process-alist (make-module-description-list))) + +(defun docstring-process-current-region (beg end) + (interactive "r") + (narrow-to-region beg end) + (unwind-protect + (save-excursion + (docstring-process-alist (make-module-description-list))) + (widen))) + +(defun docstring-process-module (module) + (interactive "xModule: ") + (let ((modpath (module-to-path module)) + (mdlist nil)) + (mapcar (function (lambda (root) + (let ((fn (concat root + "/" + modpath + ".texi"))) + (if (file-exists-p fn) + (save-excursion + (find-file fn) + (message "Getting docstring list from %s" fn) + (setq mdlist + (append mdlist + (make-module-description-list)))))))) + docstring-snarfed-roots) + (docstring-process-alist mdlist))) + +(defun docstring-ediff-this-line () + (interactive) + (let (module + description) + (save-excursion + (beginning-of-line) + (setq module (read (current-buffer))) + (forward-char 2) + (setq description (buffer-substring (point) + (progn + (end-of-line) + (point))))) + + (message "Ediff docstring: %S: %s" module description) + + (let ((track-location (or (find-tracking-docstring module description) + (docstring-temp-location "No docstring in tracking file"))) + (snarf-location (or (find-snarfed-docstring module description) + (docstring-temp-location "No docstring in snarfed file"))) + (manual-location (or (find-manual-docstring module description) + (docstring-temp-location "No docstring in manual")))) + + (setq docstring-ediff-buffers + (list (car track-location) + (car snarf-location) + (car manual-location))) + + (docstring-narrow-to-location track-location) + (docstring-narrow-to-location snarf-location) + (docstring-narrow-to-location manual-location) + + (add-hook 'ediff-quit-hook 'docstring-widen-ediff-buffers) + + (ediff-buffers3 (nth 0 docstring-ediff-buffers) + (nth 1 docstring-ediff-buffers) + (nth 2 docstring-ediff-buffers))))) + +(defun docstring-narrow-to-location (location) + (save-excursion + (set-buffer (car location)) + (narrow-to-region (cadr location) (caddr location)))) + +(defun docstring-temp-location (str) + (let ((buf (generate-new-buffer "*Docstring Temp*"))) + (save-excursion + (set-buffer buf) + (erase-buffer) + (insert str "\n") + (list buf (point-min) (point-max))))) + +(require 'ediff) + +(defvar docstring-ediff-buffers '()) + +(defun docstring-widen-ediff-buffers () + (remove-hook 'ediff-quit-hook 'docstring-widen-ediff-buffers) + (save-excursion + (mapcar (function (lambda (buffer) + (set-buffer buffer) + (widen))) + docstring-ediff-buffers))) + + +;;; Tests: + +;(find-docstring "/home/neil/Guile/cvs/guile-core/doc/maint/guile.texi" nil "primitive sloppy-assq") +;(find-manual-docstring '(guile) "primitive sloppy-assq") +;(find-tracking-docstring '(guile) "primitive sloppy-assq") +;(find-snarfed-docstring '(guile) "primitive sloppy-assq") + +(defvar docstring-libguile-directory (expand-file-name "libguile" + guile-core-dir) + "*The directory containing the C source for libguile.") + +(defvar docstring-libguile-build-directory (expand-file-name "libguile" + guile-build-dir) + "*The directory containing the libguile build directory.") + +(defun docstring-display-location (file line) + (let ((buffer (find-file-noselect + (expand-file-name file docstring-libguile-directory)))) + (if buffer + (let* ((window (or (get-buffer-window buffer) + (display-buffer buffer))) + (pos (save-excursion + (set-buffer buffer) + (goto-line line) + (point)))) + (set-window-point window pos))))) + +(defun docstring-show-source () + "Given that point is sitting in a docstring in one of the Texinfo +source files for the Guile manual, and that that docstring may be +snarfed automatically from a libguile C file, determine whether the +docstring is from libguile and, if it is, display the relevant C file +at the line from which the docstring was snarfed. + +Why? When updating snarfed docstrings, you should usually edit the C +source rather than the Texinfo source, so that your updates benefit +Guile's online help as well. This function locates the C source for a +docstring so that it is easy for you to do this." + (interactive) + (let* ((deffn-line + (save-excursion + (end-of-line) + (or (re-search-backward "^@deffn " nil t) + (error "No docstring here!")) + (buffer-substring (point) + (progn + (end-of-line) + (point))))) + (guile-texi-file + (expand-file-name "guile.texi" docstring-libguile-build-directory)) + (source-location + (save-excursion + (set-buffer (find-file-noselect guile-texi-file)) + (save-excursion + (goto-char (point-min)) + (or (re-search-forward (concat "^" + (regexp-quote deffn-line) + "$") + nil t) + (error "Docstring not from libguile")) + (forward-line -1) + (if (looking-at "^@c snarfed from \\([^:]+\\):\\([0-9]+\\)$") + (cons (match-string 1) + (string-to-int (match-string 2))) + (error "Corrupt docstring entry in guile.texi")))))) + (docstring-display-location (car source-location) + (cdr source-location)))) + + +(provide 'docstring) + +;;; docstring.el ends here diff --git a/guile18/doc/mbapi.texi b/guile18/doc/mbapi.texi new file mode 100644 index 0000000000..3f53ccdb27 --- /dev/null +++ b/guile18/doc/mbapi.texi @@ -0,0 +1,987 @@ +\input texinfo +@setfilename mbapi.info +@settitle Multibyte API +@setchapternewpage off + +@c Open issues: + +@c What's the best way to report errors? Should functions return a +@c magic value, according to C tradition, or should they signal a +@c Guile exception? + +@c + + +@node Working With Multibyte Strings in C +@chapter Working With Multibyte Strings in C + +Guile allows strings to contain characters drawn from a wide variety of +languages, including many Asian, Eastern European, and Middle Eastern +languages, in a uniform and unrestricted way. The string representation +normally used in C code --- an array of @sc{ASCII} characters --- is not +sufficient for Guile strings, since they may contain characters not +present in @sc{ASCII}. + +Instead, Guile uses a very large character set, and encodes each +character as a sequence of one or more bytes. We call this +variable-width encoding a @dfn{multibyte} encoding. Guile uses this +single encoding internally for all strings, symbol names, error +messages, etc., and performs appropriate conversions upon input and +output. + +The use of this variable-width encoding is almost invisible to Scheme +code. Strings are still indexed by character number, not by byte +offset; @code{string-length} still returns the length of a string in +characters, not in bytes. @code{string-ref} and @code{string-set!} are +no longer guaranteed to be constant-time operations, but Guile uses +various strategies to reduce the impact of this change. + +However, the encoding is visible via Guile's C interface, which gives +the user direct access to a string's bytes. This chapter explains how +to work with Guile multibyte text in C code. Since variable-width +encodings are clumsier to work with than simple fixed-width encodings, +Guile provides a set of standard macros and functions for manipulating +multibyte text to make the job easier. Furthermore, Guile makes some +promises about the encoding which you can use in writing your own text +processing code. + +While we discuss guaranteed properties of Guile's encoding, and provide +functions to operate on its character set, we do not actually specify +either the character set or encoding here. This is because we expect +both of them to change in the future: currently, Guile uses the same +encoding as GNU Emacs 20.4, but we hope to change Guile (and GNU Emacs +as well) to use Unicode and UTF-8, with some extensions. This will make +it more comfortable to use Guile with other systems which use UTF-8, +like the GTk user interface toolkit. + +@menu +* Multibyte String Terminology:: +* Promised Properties of the Guile Multibyte Encoding:: +* Functions for Operating on Multibyte Text:: +* Multibyte Text Processing Errors:: +* Why Guile Does Not Use a Fixed-Width Encoding:: +@end menu + + +@node Multibyte String Terminology, Promised Properties of the Guile Multibyte Encoding, Working With Multibyte Strings in C, Working With Multibyte Strings in C +@section Multibyte String Terminology + +In the descriptions which follow, we make the following definitions: +@table @dfn + +@item byte +A @dfn{byte} is a number between 0 and 255. It has no inherent textual +interpretation. So 65 is a byte, not a character. + +@item character +A @dfn{character} is a unit of text. It has no inherent numeric value. +@samp{A} and @samp{.} are characters, not bytes. (This is different +from the C language's definition of @dfn{character}; in this chapter, we +will always use a phrase like ``the C language's @code{char} type'' when +that's what we mean.) + +@item character set +A @dfn{character set} is an invertible mapping between numbers and a +given set of characters. @sc{ASCII} is a character set assigning +characters to the numbers 0 through 127. It maps @samp{A} onto the +number 65, and @samp{.} onto 46. + +Note that a character set maps characters onto numbers, @emph{not +necessarily} onto bytes. For example, the Unicode character set maps +the Greek lower-case @samp{alpha} character onto the number 945, which +is not a byte. + +(This is what Internet standards would call a "coding character set".) + +@item encoding +An encoding maps numbers onto sequences of bytes. For example, the +UTF-8 encoding, defined in the Unicode Standard, would map the number +945 onto the sequence of bytes @samp{206 177}. When using the +@sc{ASCII} character set, every number assigned also happens to be a +byte, so there is an obvious trivial encoding for @sc{ASCII} in bytes. + +(This is what Internet standards would call a "character encoding +scheme".) + +@end table + +Thus, to turn a character into a sequence of bytes, you need a character +set to assign a number to that character, and then an encoding to turn +that number into a sequence of bytes. + +Likewise, to interpret a sequence of bytes as a sequence of characters, +you use an encoding to extract a sequence of numbers from the bytes, and +then a character set to turn the numbers into characters. + +Errors can occur while carrying out either of these processes. For +example, under a particular encoding, a given string of bytes might not +correspond to any number. For example, the byte sequence @samp{128 128} +is not a valid encoding of any number under UTF-8. + +Having carefully defined our terminology, we will now abuse it. + +We will sometimes use the word @dfn{character} to refer to the number +assigned to a character by a character set, in contexts where it's +obvious we mean a number. + +Sometimes there is a close association between a particular encoding and +a particular character set. Thus, we may sometimes refer to the +character set and encoding together as an @dfn{encoding}. + + +@node Promised Properties of the Guile Multibyte Encoding, Functions for Operating on Multibyte Text, Multibyte String Terminology, Working With Multibyte Strings in C +@section Promised Properties of the Guile Multibyte Encoding + +Internally, Guile uses a single encoding for all text --- symbols, +strings, error messages, etc. Here we list a number of helpful +properties of Guile's encoding. It is correct to write code which +assumes these properties; code which uses these assumptions will be +portable to all future versions of Guile, as far as we know. + +@b{Every @sc{ASCII} character is encoded as a single byte from 0 to 127, in +the obvious way.} This means that a standard C string containing only +@sc{ASCII} characters is a valid Guile string (except for the terminator; +Guile strings store the length explicitly, so they can contain null +characters). + +@b{The encodings of non-@sc{ASCII} characters use only bytes between 128 +and 255.} That is, when we turn a non-@sc{ASCII} character into a +series of bytes, none of those bytes can ever be mistaken for the +encoding of an @sc{ASCII} character. This means that you can search a +Guile string for an @sc{ASCII} character using the standard +@code{memchr} library function. By extension, you can search for an +@sc{ASCII} substring in a Guile string using a traditional substring +search algorithm --- you needn't add special checks to verify encoding +boundaries, etc. + +@b{No character encoding is a subsequence of any other character +encoding.} (This is just a stronger version of the previous promise.) +This means that you can search for occurrences of one Guile string +within another Guile string just as if they were raw byte strings. You +can use the stock @code{memmem} function (provided on GNU systems, at +least) for such searches. If you don't need the ability to represent +null characters in your text, you can still use null-termination for +strings, and use the traditional string-handling functions like +@code{strlen}, @code{strstr}, and @code{strcat}. + +@b{You can always determine the full length of a character's encoding +from its first byte.} Guile provides the macro @code{scm_mb_len} which +computes the encoding's length from its first byte. Given the first +rule, you can see that @code{scm_mb_len (@var{b})}, for any @code{0 <= +@var{b} <= 127}, returns 1. + +@b{Given an arbitrary byte position in a Guile string, you can always +find the beginning and end of the character containing that byte without +scanning too far in either direction.} This means that, if you are sure +a byte sequence is a valid encoding of a character sequence, you can +find character boundaries without keeping track of the beginning and +ending of the overall string. This promise relies on the fact that, in +addition to storing the string's length explicitly, Guile always either +terminates the string's storage with a zero byte, or shares it with +another string which is terminated this way. + + +@node Functions for Operating on Multibyte Text, Multibyte Text Processing Errors, Promised Properties of the Guile Multibyte Encoding, Working With Multibyte Strings in C +@section Functions for Operating on Multibyte Text + +Guile provides a variety of functions, variables, and types for working +with multibyte text. + +@menu +* Basic Multibyte Character Processing:: +* Finding Character Encoding Boundaries:: +* Multibyte String Functions:: +* Exchanging Guile Text With the Outside World in C:: +* Implementing Your Own Text Conversions:: +@end menu + + +@node Basic Multibyte Character Processing, Finding Character Encoding Boundaries, Functions for Operating on Multibyte Text, Functions for Operating on Multibyte Text +@subsection Basic Multibyte Character Processing + +Here are the essential types and functions for working with Guile text. +Guile uses the C type @code{unsigned char *} to refer to text encoded +with Guile's encoding. + +Note that any operation marked here as a ``Libguile Macro'' might +evaluate its argument multiple times. + +@deftp {Libguile Type} scm_char_t +This is a signed integral type large enough to hold any character in +Guile's character set. All character numbers are positive. +@end deftp + +@deftypefn {Libguile Macro} scm_char_t scm_mb_get (const unsigned char *@var{p}) +Return the character whose encoding starts at @var{p}. If @var{p} does +not point at a valid character encoding, the behavior is undefined. +@end deftypefn + +@deftypefn {Libguile Macro} int scm_mb_put (unsigned char *@var{p}, scm_char_t @var{c}) +Place the encoded form of the Guile character @var{c} at @var{p}, and +return its length in bytes. If @var{c} is not a Guile character, the +behavior is undefined. +@end deftypefn + +@deftypevr {Libguile Constant} int scm_mb_max_len +The maximum length of any character's encoding, in bytes. You may +assume this is relatively small --- less than a dozen or so. +@end deftypevr + +@deftypefn {Libguile Macro} int scm_mb_len (unsigned char @var{b}) +If @var{b} is the first byte of a character's encoding, return the full +length of the character's encoding, in bytes. If @var{b} is not a valid +leading byte, the behavior is undefined. +@end deftypefn + +@deftypefn {Libguile Macro} int scm_mb_char_len (scm_char_t @var{c}) +Return the length of the encoding of the character @var{c}, in bytes. +If @var{c} is not a valid Guile character, the behavior is undefined. +@end deftypefn + +@deftypefn {Libguile Function} scm_char_t scm_mb_get_func (const unsigned char *@var{p}) +@deftypefnx {Libguile Function} int scm_mb_put_func (unsigned char *@var{p}, scm_char_t @var{c}) +@deftypefnx {Libguile Function} int scm_mb_len_func (unsigned char @var{b}) +@deftypefnx {Libguile Function} int scm_mb_char_len_func (scm_char_t @var{c}) +These are functions identical to the corresponding macros. You can use +them in situations where the overhead of a function call is acceptable, +and the cleaner semantics of function application are desireable. +@end deftypefn + + +@node Finding Character Encoding Boundaries, Multibyte String Functions, Basic Multibyte Character Processing, Functions for Operating on Multibyte Text +@subsection Finding Character Encoding Boundaries + +These are functions for finding the boundaries between characters in +multibyte text. + +Note that any operation marked here as a ``Libguile Macro'' might +evaluate its argument multiple times, unless the definition promises +otherwise. + +@deftypefn {Libguile Macro} int scm_mb_boundary_p (const unsigned char *@var{p}) +Return non-zero iff @var{p} points to the start of a character in +multibyte text. + +This macro will evaluate its argument only once. +@end deftypefn + +@deftypefn {Libguile Function} {const unsigned char *} scm_mb_floor (const unsigned char *@var{p}) +``Round'' @var{p} to the previous character boundary. That is, if +@var{p} points to the middle of the encoding of a Guile character, +return a pointer to the first byte of the encoding. If @var{p} points +to the start of the encoding of a Guile character, return @var{p} +unchanged. +@end deftypefn + +@deftypefn {libguile Function} {const unsigned char *} scm_mb_ceiling (const unsigned char *@var{p}) +``Round'' @var{p} to the next character boundary. That is, if @var{p} +points to the middle of the encoding of a Guile character, return a +pointer to the first byte of the encoding of the next character. If +@var{p} points to the start of the encoding of a Guile character, return +@var{p} unchanged. +@end deftypefn + +Note that it is usually not friendly for functions to silently correct +byte offsets that point into the middle of a character's encoding. Such +offsets almost always indicate a programming error, and they should be +reported as early as possible. So, when you write code which operates +on multibyte text, you should not use functions like these to ``clean +up'' byte offsets which the originator believes to be correct; instead, +your code should signal a @code{text:not-char-boundary} error as soon as +it detects an invalid offset. @xref{Multibyte Text Processing Errors}. + + +@node Multibyte String Functions, Exchanging Guile Text With the Outside World in C, Finding Character Encoding Boundaries, Functions for Operating on Multibyte Text +@subsection Multibyte String Functions + +These functions allow you to operate on multibyte strings: sequences of +character encodings. + +@deftypefn {Libguile Function} int scm_mb_count (const unsigned char *@var{p}, int @var{len}) +Return the number of Guile characters encoded by the @var{len} bytes at +@var{p}. + +If the sequence contains any invalid character encodings, or ends with +an incomplete character encoding, signal a @code{text:bad-encoding} +error. +@end deftypefn + +@deftypefn {Libguile Macro} scm_char_t scm_mb_walk (unsigned char **@var{pp}) +Return the character whose encoding starts at @code{*@var{pp}}, and +advance @code{*@var{pp}} to the start of the next character. Return -1 +if @code{*@var{pp}} does not point to a valid character encoding. +@end deftypefn + +@deftypefn {Libguile Function} {const unsigned char *} scm_mb_prev (const unsigned char *@var{p}) +If @var{p} points to the middle of the encoding of a Guile character, +return a pointer to the first byte of the encoding. If @var{p} points +to the start of the encoding of a Guile character, return the start of +the previous character's encoding. + +This is like @code{scm_mb_floor}, but the returned pointer will always +be before @var{p}. If you use this function to drive an iteration, it +guarantees backward progress. +@end deftypefn + +@deftypefn {Libguile Function} {const unsigned char *} scm_mb_next (const unsigned char *@var{p}) +If @var{p} points to the encoding of a Guile character, return a pointer +to the first byte of the encoding of the next character. + +This is like @code{scm_mb_ceiling}, but the returned pointer will always +be after @var{p}. If you use this function to drive an iteration, it +guarantees forward progress. +@end deftypefn + +@deftypefn {Libguile Function} {const unsigned char *} scm_mb_index (const unsigned char *@var{p}, int @var{len}, int @var{i}) +Assuming that the @var{len} bytes starting at @var{p} are a +concatenation of valid character encodings, return a pointer to the +start of the @var{i}'th character encoding in the sequence. + +This function scans the sequence from the beginning to find the +@var{i}'th character, and will generally require time proportional to +the distance from @var{p} to the returned address. + +If the sequence contains any invalid character encodings, or ends with +an incomplete character encoding, signal a @code{text:bad-encoding} +error. +@end deftypefn + +It is common to process the characters in a string from left to right. +However, if you fetch each character using @code{scm_mb_index}, each +call will scan the text from the beginning, so your loop will require +time proportional to at least the square of the length of the text. To +avoid this poor performance, you can use an @code{scm_mb_cache} +structure and the @code{scm_mb_index_cached} macro. + +@deftp {Libguile Type} {struct scm_mb_cache} +This structure holds information that allows a string scanning operation +to use the results from a previous scan of the string. It has the +following members: +@table @code + +@item character +An index, in characters, into the string. + +@item byte +The index, in bytes, of the start of that character. + +@end table + +In other words, @code{byte} is the byte offset of the +@code{character}'th character of the string. Note that if @code{byte} +and @code{character} are equal, then all characters before that point +must have encodings exactly one byte long, and the string can be indexed +normally. + +All elements of a @code{struct scm_mb_cache} structure should be +initialized to zero before its first use, and whenever the string's text +changes. +@end deftp + +@deftypefn {Libguile Macro} const unsigned char *scm_mb_index_cached (const unsigned char *@var{p}, int @var{len}, int @var{i}, struct scm_mb_cache *@var{cache}) +@deftypefnx {Libguile Function} const unsigned char *scm_mb_index_cached_func (const unsigned char *@var{p}, int @var{len}, int @var{i}, struct scm_mb_cache *@var{cache}) +This macro and this function are identical to @code{scm_mb_index}, +except that they may consult and update *@var{cache} in order to avoid +scanning the string from the beginning. @code{scm_mb_index_cached} is a +macro, so it may have less overhead than +@code{scm_mb_index_cached_func}, but it may evaluate its arguments more +than once. + +Using @code{scm_mb_index_cached} or @code{scm_mb_index_cached_func}, you +can scan a string from left to right, or from right to left, in time +proportional to the length of the string. As long as each character +fetched is less than some constant distance before or after the previous +character fetched with @var{cache}, each access will require constant +time. +@end deftypefn + +Guile also provides functions to convert between an encoded sequence of +characters, and an array of @code{scm_char_t} objects. + +@deftypefn {Libguile Function} scm_char_t *scm_mb_multibyte_to_fixed (const unsigned char *@var{p}, int @var{len}, int *@var{result_len}) +Convert the variable-width text in the @var{len} bytes at @var{p} +to an array of @code{scm_char_t} values. Return a pointer to the array, +and set @code{*@var{result_len}} to the number of elements it contains. +The returned array is allocated with @code{malloc}, and it is the +caller's responsibility to free it. + +If the text is not a sequence of valid character encodings, this +function will signal a @code{text:bad-encoding} error. +@end deftypefn + +@deftypefn {Libguile Function} unsigned char *scm_mb_fixed_to_multibyte (const scm_char_t *@var{fixed}, int @var{len}, int *@var{result_len}) +Convert the array of @code{scm_char_t} values to a sequence of +variable-width character encodings. Return a pointer to the array of +bytes, and set @code{*@var{result_len}} to its length, in bytes. + +The returned byte sequence is terminated with a zero byte, which is not +counted in the length returned in @code{*@var{result_len}}. + +The returned byte sequence is allocated with @code{malloc}; it is the +caller's responsibility to free it. + +If the text is not a sequence of valid character encodings, this +function will signal a @code{text:bad-encoding} error. +@end deftypefn + + +@node Exchanging Guile Text With the Outside World in C, Implementing Your Own Text Conversions, Multibyte String Functions, Functions for Operating on Multibyte Text +@subsection Exchanging Guile Text With the Outside World in C + +[[This is kind of a heavy-weight model, given that one end of the +conversion is always going to be the Guile encoding. Any way to shorten +things a bit?]] + +Guile provides functions for converting between Guile's internal text +representation and encodings popular in the outside world. These +functions are closely modeled after the @code{iconv} functions available +on some systems. + +To convert text between two encodings, you should first call +@code{scm_mb_iconv_open} to indicate the source and destination +encodings; this function returns a context object which records the +conversion to perform. + +Then, you should call @code{scm_mb_iconv} to actually convert the text. +This function expects input and output buffers, and a pointer to the +context you got from @var{scm_mb_iconv_open}. You don't need to pass +all your input to @code{scm_mb_iconv} at once; you can invoke it on +successive blocks of input (as you read it from a file, say), and it +will convert as much as it can each time, indicating when you should +grow your output buffer. + +An encoding may be @dfn{stateless}, or @dfn{stateful}. In most +encodings, a contiguous group of bytes from the sequence completely +specifies a particular character; these are stateless encodings. +However, some encodings require you to look back an unbounded number of +bytes in the stream to assign a meaning to a particular byte sequence; +such encodings are stateful. + +For example, in the @samp{ISO-2022-JP} encoding for Japanese text, the +byte sequence @samp{27 36 66} indicates that subsequent bytes should be +taken in pairs and interpreted as characters from the JIS-0208 character +set. An arbitrary number of byte pairs may follow this sequence. The +byte sequence @samp{27 40 66} indicates that subsequent bytes should be +interpreted as @sc{ASCII}. In this encoding, you cannot tell whether a +given byte is an @sc{ASCII} character without looking back an arbitrary +distance for the most recent escape sequence, so it is a stateful +encoding. + +In Guile, if a conversion involves a stateful encoding, the context +object carries any necessary state. Thus, you can have many independent +conversions to or from stateful encodings taking place simultaneously, +as long as each data stream uses its own context object for the +conversion. + +@deftp {Libguile Type} {struct scm_mb_iconv} +This is the type for context objects, which represent the encodings and +current state of an ongoing text conversion. A @code{struct +scm_mb_iconv} records the source and destination encodings, and keeps +track of any information needed to handle stateful encodings. +@end deftp + +@deftypefn {Libguile Function} {struct scm_mb_iconv *} scm_mb_iconv_open (const char *@var{tocode}, const char *@var{fromcode}) +Return a pointer to a new @code{struct scm_mb_iconv} context object, +ready to convert from the encoding named @var{fromcode} to the encoding +named @var{tocode}. For stateful encodings, the context object is in +some appropriate initial state, ready for use with the +@code{scm_mb_iconv} function. + +When you are done using a context object, you may call +@code{scm_mb_iconv_close} to free it. + +If either @var{tocode} or @var{fromcode} is not the name of a known +encoding, this function will signal the @code{text:unknown-conversion} +error, described below. + +@c Try to use names here from the IANA list: +@c see ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets +Guile supports at least these encodings: +@table @samp + +@item US-ASCII +@sc{US-ASCII}, in the standard one-character-per-byte encoding. + +@item ISO-8859-1 +The usual character set for Western European languages, in its usual +one-character-per-byte encoding. + +@item Guile-MB +Guile's current internal multibyte encoding. The actual encoding this +name refers to will change from one version of Guile to the next. You +should use this when converting data between external sources and the +encoding used by Guile objects. + +You should @emph{not} use this as the encoding for data presented to the +outside world, for two reasons. 1) Its meaning will change over time, +so data written using the @samp{guile} encoding with one version of +Guile might not be readable with the @samp{guile} encoding in another +version of Guile. 2) It currently corresponds to @samp{Emacs-Mule}, +which invented for Emacs's internal use, and was never intended to serve +as an exchange medium. + +@item Guile-Wide +Guile's character set, as an array of @code{scm_char_t} values. + +Note that this encoding is even less suitable for public use than +@samp{Guile}, since the exact sequence of bytes depends heavily on the +size and endianness the host system uses for @code{scm_char_t}. Using +this encoding is very much like calling the +@code{scm_mb_multibyte_to_fixed} or @code{scm_mb_fixed_to_multibyte} +functions, except that @code{scm_mb_iconv} gives you more control over +buffer allocation and management. + +@item Emacs-Mule +This is the variable-length encoding for multi-lingual text by GNU +Emacs, at least through version 20.4. You probably should not use this +encoding, as it is designed only for Emacs's internal use. However, we +provide it here because it's trivial to support, and some people +probably do have @samp{emacs-mule}-format files lying around. + +@end table + +(At the moment, this list doesn't include any character sets suitable for +external use that can actually handle multilingual data; this is +unfortunate, as it encourages users to write data in Emacs-Mule format, +which nobody but Emacs and Guile understands. We hope to add support +for Unicode in UTF-8 soon, which should solve this problem.) + +Case is not significant in encoding names. + +You can define your own conversions; see @ref{Implementing Your Own Text +Conversions}. +@end deftypefn + +@deftypefn {Libguile Function} int scm_mb_have_encoding (const char *@var{encoding}) +Return a non-zero value if Guile supports the encoding named @var{encoding}[[]] +@end deftypefn + +@deftypefn {Libguile Function} size_t scm_mb_iconv (struct scm_mb_iconv *@var{context}, const char **@var{inbuf}, size_t *@var{inbytesleft}, char **@var{outbuf}, size_t *@var{outbytesleft}) +Convert a sequence of characters from one encoding to another. The +argument @var{context} specifies the encodings to use for the input and +output, and carries state for stateful encodings; use +@code{scm_mb_iconv_open} to create a @var{context} object for a +particular conversion. + +Upon entry to the function, @code{*@var{inbuf}} should point to the +input buffer, and @code{*@var{inbytesleft}} should hold the number of +input bytes present in the buffer; @code{*@var{outbuf}} should point to +the output buffer, and @code{*@var{outbytesleft}} should hold the number +of bytes available to hold the conversion results in that buffer. + +Upon exit from the function, @code{*@var{inbuf}} points to the first +unconsumed byte of input, and @code{*@var{inbytesleft}} holds the number +of unconsumed input bytes; @code{*@var{outbuf}} points to the byte after +the last output byte, and @code{*@var{outbyteleft}} holds the number of +bytes left unused in the output buffer. + +For stateful encodings, @var{context} carries encoding state from one +call to @code{scm_mb_iconv} to the next. Thus, successive calls to +@var{scm_mb_iconv} which use the same context object can convert a +stream of data one chunk at a time. + +If @var{inbuf} is zero or @code{*@var{inbuf}} is zero, then the call is +taken as a request to reset the states of the input and the output +encodings. If @var{outbuf} is non-zero and @code{*@var{outbuf}} is +non-zero, then @code{scm_mb_iconv} stores a byte sequence in the output +buffer to put the output encoding in its initial state. If the output +buffer is not large enough to hold this byte sequence, +@code{scm_mb_iconv} returns @code{scm_mb_iconv_too_big}, and leaves +the shift states of @var{context}'s input and output encodings +unchanged. + +The @code{scm_mb_iconv} function always consumes only complete +characters or shift sequences from the input buffer, and the output +buffer always contains a sequence of complete characters or escape +sequences. + +If the input sequence contains characters which are not expressible in +the output encoding, @code{scm_mb_iconv} converts it in an +implementation-defined way. It may simply delete the character. + +Some encodings use byte sequences which do not correspond to any textual +character. For example, the escape sequence of a stateful encoding has +no textual meaning. When converting from such an encoding, a call to +@code{scm_mb_iconv} might consume input but produce no output, since the +input sequence might contain only escape sequences. + +Normally, @code{scm_mb_iconv} returns the number of input characters it +could not convert perfectly to the ouput encoding. However, it may +return one of the @code{scm_mb_iconv_} codes described below, to +indicate an error. All of these codes are negative values. + +If the input sequence contains an invalid character encoding, conversion +stops before the invalid input character, and @code{scm_mb_iconv} +returns the constant value @code{scm_mb_iconv_bad_encoding}. + +If the input sequence ends with an incomplete character encoding, +@code{scm_mb_iconv} will leave it in the input buffer, unconsumed, and +return the constant value @code{scm_mb_iconv_incomplete_encoding}. This +is not necessarily an error, if you expect to call @code{scm_mb_iconv} +again with more data which might contain the rest of the encoding +fragment. + +If the output buffer does not contain enough room to hold the converted +form of the complete input text, @code{scm_mb_iconv} converts as much as +it can, changes the input and output pointers to reflect the amount of +text successfully converted, and then returns +@code{scm_mb_iconv_too_big}. +@end deftypefn + +Here are the status codes that might be returned by @code{scm_mb_iconv}. +They are all negative integers. +@table @code + +@item scm_mb_iconv_too_big +The conversion needs more room in the output buffer. Some characters +may have been consumed from the input buffer, and some characters may +have been placed in the available space in the output buffer. + +@item scm_mb_iconv_bad_encoding +@code{scm_mb_iconv} encountered an invalid character encoding in the +input buffer. Conversion stopped before the invalid character, so there +may be some characters consumed from the input buffer, and some +converted text in the output buffer. + +@item scm_mb_iconv_incomplete_encoding +The input buffer ends with an incomplete character encoding. The +incomplete encoding is left in the input buffer, unconsumed. This is +not necessarily an error, if you expect to call @code{scm_mb_iconv} +again with more data which might contain the rest of the incomplete +encoding. + +@end table + + +Finally, Guile provides a function for destroying conversion contexts. + +@deftypefn {Libguile Function} void scm_mb_iconv_close (struct scm_mb_iconv *@var{context}) +Deallocate the conversion context object @var{context}, and all other +resources allocated by the call to @code{scm_mb_iconv_open} which +returned @var{context}. +@end deftypefn + + +@node Implementing Your Own Text Conversions, , Exchanging Guile Text With the Outside World in C, Functions for Operating on Multibyte Text +@subsection Implementing Your Own Text Conversions + +[[note that conversions to and from Guile must produce streams +containing only valid character encodings, or else Guile will crash]] + +This section describes the interface for adding your own encoding +conversions for use with @code{scm_mb_iconv}. The interface here is +borrowed from the GNOME Project's @file{libunicode} library. + +Guile's @code{scm_mb_iconv} function works by converting the input text +to a stream of @code{scm_char_t} characters, and then converting +those characters to the desired output encoding. This makes it easy +for Guile to choose the appropriate conversion back ends for an +arbitrary pair of input and output encodings, but it also means that the +accuracy and quality of the conversions depends on the fidelity of +Guile's internal character set to the source and destination encodings. +Since @code{scm_mb_iconv} will be used almost exclusively for converting +to and from Guile's internal character set, this shouldn't be a problem. + +To add support for a particular encoding to Guile, you must provide one +function (called the @dfn{read} function) which converts from your +encoding to an array of @code{scm_char_t}'s, and another function +(called the @dfn{write} function) to convert from an array of +@code{scm_char_t}'s back into your encoding. To convert from some +encoding @var{a} to some other encoding @var{b}, Guile pairs up +@var{a}'s read function with @var{b}'s write function. Each call to +@code{scm_mb_iconv} passes text in encoding @var{a} through the read +function, to produce an array of @code{scm_char_t}'s, and then passes +that array to the write function, to produce text in encoding @var{b}. + +For stateful encodings, a read or write function can hang its own data +structures off the conversion object, and provide its own functions to +allocate and destroy them; this allows read and write functions to +maintain whatever state they like. + +The Guile conversion back end represents each available encoding with a +@code{struct scm_mb_encoding} object. + +@deftp {Libguile Type} {struct scm_mb_encoding} +This data structure describes an encoding. It has the following +members: + +@table @code + +@item char **names +An array of strings, giving the various names for this encoding. The +array should be terminated by a zero pointer. Case is not significant +in encoding names. + +The @code{scm_mb_iconv_open} function searches the list of registered +encodings for an encoding whose @code{names} array matches its +@var{tocode} or @var{fromcode} argument. + +@item int (*init) (void **@var{cookie}) +An initialization function for the encoding's private data. +@code{scm_mb_iconv_open} will call this function, passing it the address +of the cookie for this encoding in this context. (We explain cookies +below.) There is no way for the @code{init} function to tell whether +the encoding will be used for reading or writing. + +Note that @code{init} receives a @emph{pointer} to the cookie, not the +cookie itself. Because the type of @var{cookie} is @code{void **}, the +C compiler will not check it as carefully as it would other types. + +The @code{init} member may be zero, indicating that no initialization is +necessary for this encoding. + +@item int (*destroy) (void **@var{cookie}) +A deallocation function for the encoding's private data. +@code{scm_mb_iconv_close} calls this function, passing it the address of +the cookie for this encoding in this context. The @code{destroy} +function should free any data the @code{init} function allocated. + +Note that @code{destroy} receives a @emph{pointer} to the cookie, not the +cookie itself. Because the type of @var{cookie} is @code{void **}, the +C compiler will not check it as carefully as it would other types. + +The @code{destroy} member may be zero, indicating that this encoding +doesn't need to perform any special action to destroy its local data. + +@item int (*reset) (void *@var{cookie}, char **@var{outbuf}, size_t *@var{outbytesleft}) +Put the encoding into its initial shift state. Guile calls this +function whether the encoding is being used for input or output, so this +should take appropriate steps for both directions. If @var{outbuf} and +@var{outbytesleft} are valid, the reset function should emit an escape +sequence to reset the output stream to its initial state; @var{outbuf} +and @var{outbytesleft} should be handled just as for +@code{scm_mb_iconv}. + +This function can return an @code{scm_mb_iconv_} error code +(@pxref{Exchanging Guile Text With the Outside World in C}). If it +returns @code{scm_mb_iconv_too_big}, then the output buffer's shift +state must be left unchanged. + +Note that @code{reset} receives the cookie's value itself, not a pointer +to the cookie, as the @code{init} and @code{destroy} functions do. + +The @code{reset} member may be zero, indicating that this encoding +doesn't use a shift state. + +@item enum scm_mb_read_result (*read) (void *@var{cookie}, const char **@var{inbuf}, size_t *@var{inbytesleft}, scm_char_t **@var{outbuf}, size_t *@var{outcharsleft}) +Read some bytes and convert into an array of Guile characters. This is +the encoding's read function. + +On entry, there are *@var{inbytesleft} bytes of text at *@var{inbuf} to +be converted, and *@var{outcharsleft} characters available at +*@var{outbuf} to hold the results. + +On exit, *@var{inbytesleft} and *@var{inbuf} indicate the input bytes +still not consumed. *@var{outcharsleft} and *@var{outbuf} indicate the +output buffer space still not filled. (By exclusion, these indicate +which input bytes were consumed, and which output characters were +produced.) + +Return one of the @code{enum scm_mb_read_result} values, described below. + +Note that @code{read} receives the cookie's value itself, not a pointer +to the cookie, as the @code{init} and @code{destroy} functions do. + +@item enum scm_mb_write_result (*write) (void *@var{cookie}, scm_char_t **@var{inbuf}, size_t *@var{incharsleft}, **@var{outbuf}, size_t *@var{outbytesleft}) +Convert an array of Guile characters to output bytes. This is +the encoding's write function. + +On entry, there are *@var{incharsleft} Guile characters available at +*@var{inbuf}, and *@var{outbytesleft} bytes available to store output at +*@var{outbuf}. + +On exit, *@var{incharsleft} and *@var{inbuf} indicate the number of +Guile characters left unconverted (because there was insufficient room +in the output buffer to hold their converted forms), and +*@var{outbytesleft} and *@var{outbuf} indicate the unused portion of the +output buffer. + +Return one of the @code{scm_mb_write_result} values, described below. + +Note that @code{write} receives the cookie's value itself, not a pointer +to the cookie, as the @code{init} and @code{destroy} functions do. + +@item struct scm_mb_encoding *next +This is used by Guile to maintain a linked list of encodings. It is +filled in when you call @code{scm_mb_register_encoding} to add your +encoding to the list. + +@end table +@end deftp + +Here is the enumerated type for the values an encoding's read function +can return: + +@deftp {Libguile Type} {enum scm_mb_read_result} +This type represents the result of a call to an encoding's read +function. It has the following values: + +@table @code + +@item scm_mb_read_ok +The read function consumed at least one byte of input. + +@item scm_mb_read_incomplete +The data present in the input buffer does not contain a complete +character encoding. No input was consumed, and no characters were +produced as output. This is not necessarily an error status, if there +is more data to pass through. + +@item scm_mb_read_error +The input contains an invalid character encoding. + +@end table +@end deftp + +Here is the enumerated type for the values an encoding's write function +can return: + +@deftp {Libguile Type} {enum scm_mb_write_result} +This type represents the result of a call to an encoding's write +function. It has the following values: + +@table @code + +@item scm_mb_write_ok +The write function was able to convert all the characters in @var{inbuf} +successfully. + +@item scm_mb_write_too_big +The write function filled the output buffer, but there are still +characters in @var{inbuf} left unconsumed; @var{inbuf} and +@var{incharsleft} indicate the unconsumed portion of the input buffer. + +@end table +@end deftp + + +Conversions to or from stateful encodings need to keep track of each +encoding's current state. Each conversion context contains two +@code{void *} variables called @dfn{cookies}, one for the input +encoding, and one for the output encoding. These cookies are passed to +the encodings' functions, for them to use however they please. A +stateful encoding can use its cookie to hold a pointer to some object +which maintains the context's current shift state. Stateless encodings +will probably not use their cookies. + +The cookies' lifetime is the same as that of the context object. When +the user calls @code{scm_mb_iconv_close} to destroy a context object, +@code{scm_mb_iconv_close} calls the input and output encodings' +@code{destroy} functions, passing them their respective cookies, so each +encoding can free any data it allocated for that context. + +Note that, if a read or write function returns a successful result code +like @code{scm_mb_read_ok} or @code{scm_mb_write_ok}, then the remaining +input, together with the output, must together represent the complete +input text; the encoding may not store any text temporarily in its +cookie. This is because, if @code{scm_mb_iconv} returns a successful +result to the user, it is correct for the user to assume that all the +consumed input has been converted and placed in the output buffer. +There is no ``flush'' operation to push any final results out of the +encodings' buffers. + +Here is the function you call to register a new encoding with the +conversion system: + +@deftypefn {Libguile Function} void scm_mb_register_encoding (struct scm_mb_encoding *@var{encoding}) +Add the encoding described by @code{*@var{encoding}} to the set +understood by @code{scm_mb_iconv_open}. Once you have registered your +encoding, you can use it by calling @code{scm_mb_iconv_open} with one of +the names in @code{@var{encoding}->names}. +@end deftypefn + + +@node Multibyte Text Processing Errors, Why Guile Does Not Use a Fixed-Width Encoding, Functions for Operating on Multibyte Text, Working With Multibyte Strings in C +@section Multibyte Text Processing Errors + +This section describes error conditions which code can signal to +indicate problems encountered while processing multibyte text. In each +case, the arguments @var{message} and @var{args} are an error format +string and arguments to be substituted into the string, as accepted by +the @code{display-error} function. + +@deffn Condition text:not-char-boundary func message args object offset +By calling @var{func}, the program attempted to access a character at +byte offset @var{offset} in the Guile object @var{object}, but +@var{offset} is not the start of a character's encoding in @var{object}. + +Typically, @var{object} is a string or symbol. If the function signalling +the error cannot find the Guile object that contains the text it is +inspecting, it should use @code{#f} for @var{object}. +@end deffn + +@deffn Condition text:bad-encoding func message args object +By calling @var{func}, the program attempted to interpret the text in +@var{object}, but @var{object} contains a byte sequence which is not a +valid encoding for any character. +@end deffn + +@deffn Condition text:not-guile-char func message args number +By calling @var{func}, the program attempted to treat @var{number} as the +number of a character in the Guile character set, but @var{number} does +not correspond to any character in the Guile character set. +@end deffn + +@deffn Condition text:unknown-conversion func message args from to +By calling @var{func}, the program attempted to convert from an encoding +named @var{from} to an encoding named @var{to}, but Guile does not +support such a conversion. +@end deffn + +@deftypevr {Libguile Variable} SCM scm_text_not_char_boundary +@deftypevrx {Libguile Variable} SCM scm_text_bad_encoding +@deftypevrx {Libguile Variable} SCM scm_text_not_guile_char +These variables hold the scheme symbol objects whose names are the +condition symbols above. You can use these when signalling these +errors, instead of looking them up yourself. +@end deftypevr + + +@node Why Guile Does Not Use a Fixed-Width Encoding, , Multibyte Text Processing Errors, Working With Multibyte Strings in C +@section Why Guile Does Not Use a Fixed-Width Encoding + +Multibyte encodings are clumsier to work with than encodings which use a +fixed number of bytes for every character. For example, using a +fixed-width encoding, we can extract the @var{i}th character of a string +in constant time, and we can always substitute the @var{i}th character +of a string with any other character without reallocating or copying the +string. + +However, there are no fixed-width encodings which include the characters +we wish to include, and also fit in a reasonable amount of space. +Despite the Unicode standard's claims to the contrary, Unicode is not +really a fixed-width encoding. Unicode uses surrogate pairs to +represent characters outside the 16-bit range; a surrogate pair must be +treated as a single character, but occupies two 16-bit spaces. As of +this writing, there are already plans to assign characters to the +surrogate character codes. Three- and four-byte encodings are +too wasteful for a majority of Guile's users, who only need @sc{ASCII} +and a few accented characters. + +Another alternative would be to have several different fixed-width +string representations, each with a different element size. For each +string, Guile would use the smallest element size capable of +accomodating the string's text. This would allow users of English and +the Western European languages to use the traditional memory-efficient +encodings. However, if Guile has @var{n} string representations, then +users must write @var{n} versions of any code which manipulates text +directly --- one for each element size. And if a user wants to operate +on two strings simultaneously, and wants to avoid testing the string +sizes within the loop, she must make @var{n}*@var{n} copies of the loop. +Most users will simply not bother. Instead, they will write code which +supports only one string size, leaving us back where we started. By +using a single internal representation, Guile makes it easier for users +to write multilingual code. + +[[What about tagging each string with its encoding? +"Every extension must be written to deal with every encoding"]] + +[[You don't really want to index strings anyway.]] + +Finally, Guile's multibyte encoding is not so bad. Unlike a two- or +four-byte encoding, it is efficient in space for American and European +users. Furthermore, the properties described above mean that many +functions can be coded just as they would for a single-byte encoding; +see @ref{Promised Properties of the Guile Multibyte Encoding}. + +@bye diff --git a/guile18/doc/mltext.texi b/guile18/doc/mltext.texi new file mode 100644 index 0000000000..73071f501a --- /dev/null +++ b/guile18/doc/mltext.texi @@ -0,0 +1,146 @@ +@node Working with Multilingual Text +@chapter Working with Multilingual Text + +@node Guile Character Properties, Exchanging Text With The Outside World, Multibyte String Functions, Functions for Operating on Multibyte Text +@section Guile Character Properties + +These functions give information about the nature of a given Guile +character. These are defined for any @code{scm_mb_char_t} value. + +@deftypefn {Libguile Function} int scm_mb_isalnum (scm_mb_char_t @var{c}) +Return non-zero iff @var{c} is an alphabetic or numeric character. +@end deftypefn + +@deftypefn {Libguile Function} int scm_mb_is_alpha (scm_mb_char_t @var{c}) +Return non-zero iff @var{c} is an alphabetic character. +@end deftypefn + +@deftypefn {Libguile Function} int scm_mb_iscntrl (scm_mb_char_t @var{c}) +Return non-zero iff @var{c} is a control character. +@end deftypefn + +@deftypefn {Libguile Function} int scm_mb_isdigit (scm_mb_char_t @var{c}) +Return non-zero iff @var{c} is a digit. +@end deftypefn + +@deftypefn {Libguile Function} int scm_mb_isgraph (scm_mb_char_t @var{c}) +Return non-zero iff @var{c} is a visible character. +@end deftypefn + +@deftypefn {Libguile Function} int scm_mb_isupper (scm_mb_char_t @var{c}) +Return non-zero iff @var{c} is an upper-case character. +@end deftypefn + +@deftypefn {Libguile Function} int scm_mb_islower (scm_mb_char_t @var{c}) +Return non-zero iff @var{c} is a lower-case character. +@end deftypefn + +@deftypefn {Libguile Function} int scm_mb_istitle (scm_mb_char_t @var{c}) +Return non-zero iff @var{c} is a title-case character. See the Unicode +standard for an explanation of title case. +@end deftypefn + +@deftypefn {Libguile Function} int scm_mb_isprint (scm_mb_char_t @var{c}) +Return non-zero iff @var{c} is a printable character. +@end deftypefn + +@deftypefn {Libguile Function} int scm_mb_ispunct (scm_mb_char_t @var{c}) +Return non-zero iff @var{c} is a punctuation character. +@end deftypefn + +@deftypefn {Libguile Function} int scm_mb_isspace (scm_mb_char_t @var{c}) +Return non-zero iff @var{c} is a whitespace character. +@end deftypefn + +@deftypefn {Libguile Function} int scm_mb_isxdigit (scm_mb_char_t @var{c}) +Return non-zero iff @var{c} is a hexadecimal digit. +@end deftypefn + +@deftypefn {Libguile Function} int scm_mb_isdefined (scm_mb_char_t @var{c}) +Return non-zero iff @var{c} is a valid character. +@end deftypefn + +@deftypefn {Libguile Function} scm_mb_char_t scm_mb_char_toupper (scm_mb_char_t @var{c}) +@deftypefnx {Libguile Function} scm_mb_char_t scm_mb_char_tolower (scm_mb_char_t @var{c}) +@deftypefnx {Libguile Function} scm_mb_char_t scm_mb_char_totitle (scm_mb_char_t @var{c}) +Convert @var{c} to upper, lower, or title case. If @var{c} has no +equivalent in the requested case, or is already in that case, return it +unchanged. +@end deftypefn + +@deftypefn {Libguile Function} in scm_mb_digit_value (scm_mb_char_t @var{c}) +If @var{c} is a hexadecimal digit (according to +@code{scm_mb_isxdigit}), then return its numeric value. Otherwise +return -1. +@end deftypefn + +@deftypefn {Libguile Function} in scm_mb_digit_value (scm_mb_char_t @var{c}) +If @var{c} is a digit (according to @code{scm_mb_isdigit}), then +return its numeric value. Otherwise return -1. +@end deftypefn + + +@node Multibyte Character Tables, Multibyte Character Categories, Exchanging Text With The Outside World, Functions for Operating on Multibyte Text +@section Multibyte Character Tables + +A @dfn{character table} is a table mapping @code{scm_mb_char_t} values +onto Guile objects. Guile provides functions for creating character +tables, setting entries, and looking up characters. Character tables +are Guile objects, so they are managed by Guile's garbage collector. + +A character table can have a ``parent'' table, from which it inherits +values for characters. If a character table @var{child}, with a parent +table @var{parent} maps some character @var{c} to the value +@code{SCM_UNDEFINED}, then @code{scm_c_char_table_ref (@var{child}, +@var{c})} will look up @var{c} in @var{parent}, and return the value it +finds there. + +This section describes only the C API for working with character tables. +For the Scheme-level API, see @ref{some other section}. + +@deftypefn {Libguile Function} scm_make_char_table (SCM @var{init}, SCM @var{parent}) +Return a new character table object which maps every character to +@var{init}. If @var{parent} is a character table, then @var{parent} is +the new table's parent. If @var{parent} table is @code{SCM_UNDEFINED}, +then the new table has no parent. Otherwise, signal a type error. +@end deffn + +@deftypefn {Libguile Function} SCM scm_c_char_table_ref (SCM @var{table}, scm_mb_char_t @var{c}) +Look up the character @var{c} in the character table @var{table}, and +return the value found there. If @var{table} maps @var{c} to +@code{SCM_UNDEFINED}, and @var{table} has a parent, then look up @var{c} +in the parent. + +If @var{table} is not a character table, signal an error. +@end deftypefn + +@deftypefn {Libguile Function} SCM scm_c_char_table_set_x (SCM @var{table}, scm_mb_char_t @var{c}, SCM @var{value}) +Set @var{table}'s value for the character @var{c} to @var{value}. +If @var{value} is @code{SCM_UNDEFINED}, then @var{table}'s parent's +value will show through for @var{c}. + +If @var{table} is not a character table, signal an error. + +This function changes only @var{table} itself, never @var{table}'s +parent. +@end deftypefn + +[[this is all wrong. what about default values?]] + + + + + +@node Multibyte Character Categories, , Multibyte Character Tables, Functions for Operating on Multibyte Text +@section Multibyte Character Categories + +[[This will describe an ADT representing subsets of the Guile character +set.]] + + + + +@node Exchanging Guile Text With the Outside World +@subsection Exchanging Guile Text With the Outside World + +[[Scheme-level functions for converting between encodings]] diff --git a/guile18/doc/oldfmt.c b/guile18/doc/oldfmt.c new file mode 100644 index 0000000000..fc82ba92af --- /dev/null +++ b/guile18/doc/oldfmt.c @@ -0,0 +1,193 @@ +/* Copyright (C) 2000,2001, 2006, 2008 Free Software Foundation, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + + + +/* From NEWS: + * + * * New primitive: `simple-format', affects `scm-error', scm_display_error, & scm_error message strings + * + * (ice-9 boot) makes `format' an alias for `simple-format' until possibly + * extended by the more sophisticated version in (ice-9 format) + * + * (simple-format port message . args) + * Write MESSAGE to DESTINATION, defaulting to `current-output-port'. + * MESSAGE can contain ~A (was %s) and ~S (was %S) escapes. When printed, + * the escapes are replaced with corresponding members of ARGS: + * ~A formats using `display' and ~S formats using `write'. + * If DESTINATION is #t, then use the `current-output-port', + * if DESTINATION is #f, then return a string containing the formatted text. + * Does not add a trailing newline." + * + * The two C procedures: scm_display_error and scm_error, as well as the + * primitive `scm-error', now use scm_format to do their work. This means + * that the message strings of all code must be updated to use ~A where %s + * was used before, and ~S where %S was used before. + * + * During the period when there still are a lot of old Guiles out there, + * you might want to support both old and new versions of Guile. + * + * There are basically two methods to achieve this. Both methods use + * autoconf. Put + * + * AC_CHECK_FUNCS(scm_simple_format) + * + * in your configure.in. + * + * Method 1: Use the string concatenation features of ANSI C's + * preprocessor. + * + * In C: + * + * #ifdef HAVE_SCM_SIMPLE_FORMAT + * #define FMT_S "~S" + * #else + * #define FMT_S "%S" + * #endif + * + * Then represent each of your error messages using a preprocessor macro: + * + * #define E_SPIDER_ERROR "There's a spider in your " ## FMT_S ## "!!!" + * + * In Scheme: + * + * (define fmt-s (if (defined? 'simple-format) "~S" "%S")) + * (define make-message string-append) + * + * (define e-spider-error + * (make-message "There's a spider in your " fmt-s "!!!")) + * + * Method 2: Use the oldfmt function found in doc/oldfmt.c. + * + * In C: + * + * scm_misc_error ("picnic", scm_c_oldfmt0 ("There's a spider in your ~S!!!"), + * ...); + * + * In Scheme: + * + * (scm-error 'misc-error "picnic" (oldfmt "There's a spider in your ~S!!!") + * ...) + * + */ + +/* + * Take a format string FROM adhering to the new standard format (~A and ~S + * as placeholders) of length N and return a string which is adapted + * to the format used by the Guile interpreter which you are running. + * + * On successive calls with similar strings but different storage, the + * same string with same storage is returned. This is necessary since + * the existence of a garbage collector in the system may cause the same + * format string to be represented with different storage at different + * calls. + */ + +char * +scm_c_oldfmt (char *from, int n) +{ +#ifdef HAVE_SCM_SIMPLE_FORMAT + return from; +#else + static struct { int n; char *from; char *to; } *strings; + static int size = 0; + static int n_strings = 0; + char *to; + int i; + + for (i = 0; i < n_strings; ++i) + if (n == strings[i].n && strncmp (from, strings[i].from, n) == 0) + return strings[i].to; + + if (n_strings == size) + { + if (size == 0) + { + size = 10; + strings = scm_must_malloc (size * sizeof (*strings), s_oldfmt); + } + else + { + int oldsize = size; + size = 3 * oldsize / 2; + strings = scm_must_realloc (strings, + oldsize * sizeof (*strings), + size * sizeof (*strings), + s_oldfmt); + } + } + + strings[n_strings].n = n; + strings[n_strings].from = strncpy (scm_must_malloc (n, s_oldfmt), from, n); + to = strings[n_strings].to = scm_must_malloc (n + 1, s_oldfmt); + n_strings++; + + for (i = 0; i < n; ++i) + { + if (from[i] == '~' && ++i < n) + { + if (from[i] == 'A') + { + to[i - 1] = '%'; + to[i] = 's'; + } + else if (from[i] == 'S') + { + to[i - 1] = '%'; + to[i] = 'S'; + } + else + { + to[i - 1] = '~'; + to[i] = from[i]; + } + continue; + } + to[i] = from[i]; + } + to[i] = '\0'; + + return to; +#endif +} + +char * +scm_c_oldfmt0 (char *s) +{ +#ifdef HAVE_SCM_SIMPLE_FORMAT + return s; +#else + return scm_c_oldfmt (s, strlen (s)); +#endif +} + +SCM_PROC (s_oldfmt, "oldfmt", 1, 0, 0, scm_oldfmt); + +SCM +scm_oldfmt (SCM s) +{ +#ifdef HAVE_SCM_SIMPLE_FORMAT + return s; +#else + int n; + SCM_ASSERT (SCM_NIMP (s) && SCM_STRINGP (s), s, 1, s_oldfmt); + n = SCM_LENGTH (s); + return scm_return_first (scm_mem2string (scm_c_oldfmt (SCM_ROCHARS (s), n), + n), + s); +#endif +} diff --git a/guile18/doc/r5rs/ChangeLog-2008 b/guile18/doc/r5rs/ChangeLog-2008 new file mode 100644 index 0000000000..b5e4e9a3c2 --- /dev/null +++ b/guile18/doc/r5rs/ChangeLog-2008 @@ -0,0 +1,17 @@ +2004-11-05 Marius Vollmer + + * r5rs.texi: Use @ifnottex instead of @ifinfo around the "Top" + node declaration so that html can be generated. Use only lower + case inside @sc. Move editors outside of author table, which + looks better in html. + +2001-08-27 Neil Jerram + + * Makefile.am (TEXINFO_TEX): Added; avoids shipping multiple copies of + texinfo.tex in a single distribution. + +2001-08-27 Neil Jerram + + The change log for files in this directory continues backwards + from 2001-08-27 in ../ChangeLog, as all the Guile documentation + prior to this date was contained in a single directory. diff --git a/guile18/doc/r5rs/Makefile.am b/guile18/doc/r5rs/Makefile.am new file mode 100644 index 0000000000..4af0c951a4 --- /dev/null +++ b/guile18/doc/r5rs/Makefile.am @@ -0,0 +1,26 @@ +## Process this file with Automake to create Makefile.in +## +## Copyright (C) 1998, 2006, 2008 Free Software Foundation, Inc. +## +## This file is part of GUILE. +## +## GUILE is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2, or +## (at your option) any later version. +## +## GUILE is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public +## License along with GUILE; see the file COPYING. If not, write +## to the Free Software Foundation, Inc., 51 Franklin Street, Fifth +## Floor, Boston, MA 02110-1301 USA + +AUTOMAKE_OPTIONS = gnu + +info_TEXINFOS = r5rs.texi + +EXTRA_DIST = ChangeLog-2008 diff --git a/guile18/doc/r5rs/r5rs.texi b/guile18/doc/r5rs/r5rs.texi new file mode 100644 index 0000000000..605a9762d3 --- /dev/null +++ b/guile18/doc/r5rs/r5rs.texi @@ -0,0 +1,8537 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header +@setfilename r5rs.info +@settitle Revised(5) Scheme + +@c This copy of r5rs.texi differs from Aubrey Jaffer's master copy +@c by a set of changes to allow the building of r5rs.dvi from r5rs.texi. +@c Aubrey Jaffer's view - which I agree with - is that, given that +@c people have the option of building r5rs.dvi from the original +@c LaTeX distribution for R5RS, it is not worth fixing his master +@c copy of r5rs.texi and the tool which autogenerates it. On the +@c other hand, it is a marginal convenience for people to be able to +@c build hardcopy from r5rs.texi, even if the results are less good +@c than with the original LaTeX. Hence the following fixes. +@c (lines 714, 725, 728, 1614, 2258): Remove invalid parentheses from +@c @deffn statements. +@c (line 2316): Change @deffnx to @deffn, and insert `@end deffn' to +@c terminate preceding @deffn. +@c (line 7320): Insert `@c ' at beginning of lines that are intended +@c to be @ignore'd. +@c +@c NJ 2001/1/26 + +@c \documentclass[twoside]{algol60} + +@c \pagestyle{headings} +@c \showboxdepth=0 + + + +@c \def\headertitle{Revised$^{5}$ Scheme} +@c \def\integerversion{5} + +@c Sizes and dimensions + +@c \topmargin -.375in % Nominal distance from top of page to top of + +@c box containing running head. +@c \headsep 15pt % Space between running head and text. + +@c \textheight 663pt % Height of text (including footnotes and figures, + +@c excluding running head and foot). + +@c \textwidth 523pt % Width of text line. +@c \columnsep 15pt % Space between columns +@c \columnseprule 0pt % Width of rule between columns. + +@c \parskip 5pt plus 2pt minus 2pt % Extra vertical space between paragraphs. +@c \parindent 0pt % Width of paragraph indentation. +@c \topsep 0pt plus 2pt % Extra vertical space, in addition to + +@c \parskip, added above and below list and + +@c paragraphing environments. + +@c \oddsidemargin -.5in % Left margin on odd-numbered pages. +@c \evensidemargin -.5in % Left margin on even-numbered pages. + +@c % End of sizes and dimensions + +@paragraphindent 0 +@c %**end of header +@c syncodeindex fn cp + +@ifinfo +@dircategory The Algorithmic Language Scheme +@direntry +* R5RS: (r5rs). The Revised(5) Report on Scheme. +@end direntry +@end ifinfo + + +@c \parindent 0pt %!! 15pt % Width of paragraph indentation. + + @b{20 February 1998} +@c \hfil \today{} + +@c @include{first} +@titlepage + +@c HTML first page +@title Scheme +@subtitle Revised(5) Report on the Algorithmic Language Scheme +@c First page + +@c \thispagestyle{empty} + +@c \todo{"another" report?} + + +@author R@sc{ICHARD} K@sc{ELSEY}, W@sc{ILLIAM} C@sc{LINGER, AND} J@sc{ONATHAN} R@sc{EES} (@i{Editors}) +@author H. A@sc{BELSON} +@author R. K. D@sc{YBVIG} +@author C. T. H@sc{AYNES} +@author G. J. R@sc{OZAS} +@author N. I. A@sc{DAMS IV} +@author D. P. F@sc{RIEDMAN} +@author E. K@sc{OHLBECKER} +@author G. L. S@sc{TEELE} J@sc{R}. +@author D. H. B@sc{ARTLEY} +@author R. H@sc{ALSTEAD} +@author D. O@sc{XLEY} +@author G. J. S@sc{USSMAN} +@author G. B@sc{ROOKS} +@author C. H@sc{ANSON} +@author K. M. P@sc{ITMAN} +@author M. W@sc{AND} +@author + + +@c {\it Dedicated to the Memory of ALGOL 60} +@i{Dedicated to the Memory of Robert Hieb} +@c [For the macros in R5RS -RK] + + + + +@unnumbered Summary + + +The report gives a defining description of the programming language +Scheme. Scheme is a statically scoped and properly tail-recursive +dialect of the Lisp programming language invented by Guy Lewis +Steele Jr.@: and Gerald Jay Sussman. It was designed to have an +exceptionally clear and simple semantics and few different ways to +form expressions. A wide variety of programming paradigms, including +imperative, functional, and message passing styles, find convenient +expression in Scheme. + +The introduction offers a brief history of the language and of +the report. + +The first three chapters present the fundamental ideas of the +language and describe the notational conventions used for describing the +language and for writing programs in the language. + +Chapters @ref{Expressions} and @ref{Program structure} describe +the syntax and semantics of expressions, programs, and definitions. + +Chapter @ref{Standard procedures} describes Scheme's built-in +procedures, which include all of the language's data manipulation and +input/output primitives. + +Chapter @ref{Formal syntax and semantics} provides a formal syntax for Scheme +written in extended BNF, along with a formal denotational semantics. +An example of the use of the language follows the formal syntax and +semantics. + +The report concludes with a list of references and an +alphabetic index. + +@ignore todo +expand the summary so that it fills up the column. +@end ignore + + +@c \vfill +@c \begin{center} +@c {\large \bf +@c *** DRAFT*** \\ +@c %August 31, 1989 +@c \today +@c }\end{center} + + + + + +@c \addvspace{3.5pt} % don't shrink this gap +@c \renewcommand{\tocshrink}{-3.5pt} % value determined experimentally + + + + + + +@page + +@end titlepage + +@c INFO first page +@ifnottex + +@c First page + +@c \thispagestyle{empty} + +@c \todo{"another" report?} + + +@node top, Introduction, (dir), (dir) +@top Revised(5) Report on the Algorithmic Language Scheme + +@sp 1 + + +@quotation +R@sc{ichard} K@sc{elsey}, W@sc{illiam} C@sc{linger, and} J@sc{onathan} R@sc{ees} (@i{Editors}) +@sp 1 +@multitable @columnfractions 0.25 0.25 0.25 0.25 +@item H. A@sc{belson} @tab R. K. D@sc{ybvig} @tab C. T. H@sc{aynes} @tab G. J. R@sc{ozas} +@item N. I. A@sc{dams IV} @tab D. P. F@sc{riedman} @tab E. K@sc{ohlbecker} @tab G. L. S@sc{teele} J@sc{r}. +@item D. H. B@sc{artley} @tab R. H@sc{alstead} @tab D. O@sc{xley} @tab G. J. S@sc{ussman} +@item G. B@sc{rooks} @tab C. H@sc{anson} @tab K. M. P@sc{itman} @tab M. W@sc{and} +@item +@end multitable +@end quotation + + +@sp 2 + +@c {\it Dedicated to the Memory of ALGOL 60} +@i{Dedicated to the Memory of Robert Hieb} +@c [For the macros in R5RS -RK] + +@sp 3 + + + + +@majorheading Summary + + +The report gives a defining description of the programming language +Scheme. Scheme is a statically scoped and properly tail-recursive +dialect of the Lisp programming language invented by Guy Lewis +Steele Jr.@: and Gerald Jay Sussman. It was designed to have an +exceptionally clear and simple semantics and few different ways to +form expressions. A wide variety of programming paradigms, including +imperative, functional, and message passing styles, find convenient +expression in Scheme. + +The introduction offers a brief history of the language and of +the report. + +The first three chapters present the fundamental ideas of the +language and describe the notational conventions used for describing the +language and for writing programs in the language. + +Chapters @ref{Expressions} and @ref{Program structure} describe +the syntax and semantics of expressions, programs, and definitions. + +Chapter @ref{Standard procedures} describes Scheme's built-in +procedures, which include all of the language's data manipulation and +input/output primitives. + +Chapter @ref{Formal syntax and semantics} provides a formal syntax for Scheme +written in extended BNF, along with a formal denotational semantics. +An example of the use of the language follows the formal syntax and +semantics. + +The report concludes with a list of references and an +alphabetic index. + +@ignore todo +expand the summary so that it fills up the column. +@end ignore + + +@c \vfill +@c \begin{center} +@c {\large \bf +@c *** DRAFT*** \\ +@c %August 31, 1989 +@c \today +@c }\end{center} + + + + + +@c \addvspace{3.5pt} % don't shrink this gap +@c \renewcommand{\tocshrink}{-3.5pt} % value determined experimentally + +@unnumbered Contents + +@menu +* Introduction:: +* Overview of Scheme:: +* Lexical conventions:: +* Basic concepts:: +* Expressions:: +* Program structure:: +* Standard procedures:: +* Formal syntax and semantics:: +* Notes:: +* Additional material:: +* Example:: +* Bibliography:: +* Index:: +@end menu + + + + + +@page + +@end ifnottex + + +@c @include{intro} +@node Introduction, Overview of Scheme, top, top +@unnumbered Introduction + +@menu +* Background:: +* Acknowledgements:: +@end menu + + + + +Programming languages should be designed not by piling feature on top of +feature, but by removing the weaknesses and restrictions that make additional +features appear necessary. Scheme demonstrates that a very small number +of rules for forming expressions, with no restrictions on how they are +composed, suffice to form a practical and efficient programming language +that is flexible enough to support most of the major programming +paradigms in use today. + +@c Scheme has influenced the evolution of Lisp. +Scheme +was one of the first programming languages to incorporate first class +procedures as in the lambda calculus, thereby proving the usefulness of +static scope rules and block structure in a dynamically typed language. +Scheme was the first major dialect of Lisp to distinguish procedures +from lambda expressions and symbols, to use a single lexical +environment for all variables, and to evaluate the operator position +of a procedure call in the same way as an operand position. By relying +entirely on procedure calls to express iteration, Scheme emphasized the +fact that tail-recursive procedure calls are essentially goto's that +pass arguments. Scheme was the first widely used programming language to +embrace first class escape procedures, from which all previously known +sequential control structures can be synthesized. A subsequent +version of Scheme introduced the concept of exact and inexact numbers, +an extension of Common Lisp's generic arithmetic. +More recently, Scheme became the first programming language to support +hygienic macros, which permit the syntax of a block-structured language +to be extended in a consistent and reliable manner. +@c A few +@c of these innovations have recently been incorporated into Common Lisp, while +@c others remain to be adopted. + +@ignore todo +Ramsdell: +I would like to make a few comments on presentation. The most +important comment is about section organization. Newspaper writers +spend most of their time writing the first three paragraphs of any +article. This part of the article is often the only part read by +readers, and is important in enticing readers to continue. In the +same way, The first page is most likely to be the only page read by +many SIGPLAN readers. If I had my choice of what I would ask them to +read, it would be the material in section 1.1, the Semantics section +that notes that scheme is lexically scoped, tail recursive, weakly +typed, ... etc. I would expand on the discussion on continuations, +as they represent one important difference between Scheme and other +languages. The introduction, with its history of scheme, its history +of scheme reports and meetings, and acknowledgements giving names of +people that the reader will not likely know, is not that one page I +would like all to read. I suggest moving the history to the back of +the report, and use the first couple of pages to convince the reader +that the language documented in this report is worth studying. + +@end ignore + + +@node Background, Acknowledgements, Introduction, Introduction +@unnumberedsec Background + + +The first description of Scheme was written in +1975 [Scheme75]. A revised report [Scheme78] +@ignore todo +italicize or not? +@end ignore + appeared in 1978, which described the evolution +of the language as its MIT implementation was upgraded to support an +innovative compiler [Rabbit]. Three distinct projects began in +1981 and 1982 to use variants of Scheme for courses at MIT, Yale, and +Indiana University [Rees82], [MITScheme], [Scheme311]. An introductory +computer science textbook using Scheme was published in +1984 [SICP]. + +@c \vest As might be expected of a language used primarily for education and +@c research, Scheme has always evolved rapidly. This was no problem when +@c Scheme was used only within MIT, but +As Scheme became more widespread, +local dialects began to diverge until students and researchers +occasionally found it difficult to understand code written at other +sites. +Fifteen representatives of the major implementations of Scheme therefore +met in October 1984 to work toward a better and more widely accepted +standard for Scheme. +@c Participating in this workshop were Hal Abelson, Norman Adams, David +@c Bartley, Gary Brooks, William Clinger, Daniel Friedman, Robert Halstead, +@c Chris Hanson, Christopher Haynes, Eugene Kohlbecker, Don Oxley, Jonathan Rees, +@c Guillermo Rozas, Gerald Jay Sussman, and Mitchell Wand. Kent Pitman +@c made valuable contributions to the agenda for the workshop but was +@c unable to attend the sessions. + +@c Subsequent electronic mail discussions and committee work completed the +@c definition of the language. +@c Gerry Sussman drafted the section on numbers, Chris Hanson drafted the +@c sections on characters and strings, and Gary Brooks and William Clinger +@c drafted the sections on input and output. +@c William Clinger recorded the decisions of the workshop and +@c compiled the pieces into a coherent document. +@c The ``Revised revised report on Scheme''~\cite{RRRS} +Their report [RRRS] +was published at MIT and Indiana University in the summer of 1985. +Further revision took place in the spring of 1986 [R3RS], +@c , again accomplished +@c almost entirely by electronic mail, resulted in the present report. +and in the spring of 1988 [R4RS]. +The present report reflects further revisions agreed upon in a meeting +at Xerox PARC in June 1992. + +@c \vest The number 3 in the title is part of the title, not a reference to +@c a footnote. The word ``revised'' is raised to the third power because +@c the report is a revision of a report that was already twice revised. + +@ignore todo +Write an editors' note? +@end ignore + + + +@sp 3 + +We intend this report to belong to the entire Scheme community, and so +we grant permission to copy it in whole or in part without fee. In +particular, we encourage implementors of Scheme to use this report as +a starting point for manuals and other documentation, modifying it as +necessary. + + + + +@node Acknowledgements, , Background, Introduction +@unnumberedsec Acknowledgements + + +We would like to thank the following people for their help: Alan Bawden, Michael +Blair, George Carrette, Andy Cromarty, Pavel Curtis, Jeff Dalton, Olivier Danvy, +Ken Dickey, Bruce Duba, Marc Feeley, +Andy Freeman, Richard Gabriel, Yekta G"ursel, Ken Haase, Robert +Hieb, Paul Hudak, Morry Katz, Chris Lindblad, Mark Meyer, Jim Miller, Jim Philbin, +John Ramsdell, Mike Shaff, Jonathan Shapiro, Julie Sussman, +Perry Wagle, Daniel Weise, Henry Wu, and Ozan Yigit. +We thank Carol Fessenden, Daniel +Friedman, and Christopher Haynes for permission to use text from the Scheme 311 +version 4 reference manual. We thank Texas Instruments, Inc. for permission to +use text from the @emph{TI Scheme Language Reference Manual}[TImanual85]. +We gladly acknowledge the influence of manuals for MIT Scheme[MITScheme], +T[Rees84], Scheme 84[Scheme84],Common Lisp[CLtL], +and Algol 60[Naur63]. + +We also thank Betty Dexter for the extreme effort she put into +setting this report in @TeX{}, and Donald Knuth for designing the program +that caused her troubles. + +The Artificial Intelligence Laboratory of the +Massachusetts Institute of Technology, the Computer Science +Department of Indiana University, the Computer and Information +Sciences Department of the University of Oregon, and the NEC Research +Institute supported the preparation of this report. Support for the MIT +work was provided in part by +the Advanced Research Projects Agency of the Department of Defense under Office +of Naval Research contract N00014-80-C-0505. Support for the Indiana +University work was provided by NSF grants NCS 83-04567 and NCS +83-03325. + + + + +@sp 2 + +@c \clearchapterstar{Description of the language} %\unskip\vskip -2ex +@c @include{struct} + +@c 1. Structure of the language + +@node Overview of Scheme, Lexical conventions, Introduction, top +@chapter Overview of Scheme + +@menu +* Semantics:: +* Syntax:: +* Notation and terminology:: +@end menu + + +@node Semantics, Syntax, Overview of Scheme, Overview of Scheme +@section Semantics + + + +This section gives an overview of Scheme's semantics. A +detailed informal semantics is the subject of +chapters @ref{Basic concepts} through @ref{Standard procedures}. For reference +purposes, section @ref{Formal semantics} provides a formal +semantics of Scheme. + +Following Algol, Scheme is a statically scoped programming +language. Each use of a variable is associated with a lexically +apparent binding of that variable. + +Scheme has latent as opposed to manifest types. Types +are associated with values (also called objects) rather than +@cindex @w{object} +with variables. (Some authors refer to languages with latent types as +weakly typed or dynamically typed languages.) Other languages with +latent types are APL, Snobol, and other dialects of Lisp. Languages +with manifest types (sometimes referred to as strongly typed or +statically typed languages) include Algol 60, Pascal, and C. + +All objects created in the course of a Scheme computation, including +procedures and continuations, have unlimited extent. +No Scheme object is ever destroyed. The reason that +implementations of Scheme do not (usually!) run out of storage is that +they are permitted to reclaim the storage occupied by an object if +they can prove that the object cannot possibly matter to any future +computation. Other languages in which most objects have unlimited +extent include APL and other Lisp dialects. + +Implementations of Scheme are required to be properly tail-recursive. +This allows the execution of an iterative computation in constant space, +even if the iterative computation is described by a syntactically +recursive procedure. Thus with a properly tail-recursive implementation, +iteration can be expressed using the ordinary procedure-call +mechanics, so that special iteration constructs are useful only as +syntactic sugar. See section @ref{Proper tail recursion}. + +Scheme procedures are objects in their own right. Procedures can be +created dynamically, stored in data structures, returned as results of +procedures, and so on. Other languages with these properties include +Common Lisp and ML. +@ignore todo +Rozas: Scheme had them first. +@end ignore + + +One distinguishing feature of Scheme is that continuations, which +in most other languages only operate behind the scenes, also have +``first-class'' status. Continuations are useful for implementing a +wide variety of advanced control constructs, including non-local exits, +backtracking, and coroutines. See section @ref{Control features}. + +Arguments to Scheme procedures are always passed by value, which +means that the actual argument expressions are evaluated before the +procedure gains control, whether the procedure needs the result of the +evaluation or not. ML, C, and APL are three other languages that always +pass arguments by value. +This is distinct from the lazy-evaluation semantics of Haskell, +or the call-by-name semantics of Algol 60, where an argument +expression is not evaluated unless its value is needed by the +procedure. + +@ignore todo +Lisp's call by value should be explained more +accurately. What's funny is that all values are references. +@end ignore + + +Scheme's model of arithmetic is designed to remain as independent as +possible of the particular ways in which numbers are represented within a +computer. In Scheme, every integer is a rational number, every rational is a +real, and every real is a complex number. Thus the distinction between integer +and real arithmetic, so important to many programming languages, does not +appear in Scheme. In its place is a distinction between exact arithmetic, +which corresponds to the mathematical ideal, and inexact arithmetic on +approximations. As in Common Lisp, exact arithmetic is not limited to +integers. + +@node Syntax, Notation and terminology, Semantics, Overview of Scheme +@section Syntax + + +Scheme, like most dialects of Lisp, employs a fully parenthesized prefix +notation for programs and (other) data; the grammar of Scheme generates a +sublanguage of the language used for data. An important +consequence of this simple, uniform representation is the susceptibility of +Scheme programs and data to uniform treatment by other Scheme programs. +For example, the @samp{eval} procedure evaluates a Scheme program expressed +as data. + +The @samp{read} procedure performs syntactic as well as lexical decomposition of +the data it reads. The @samp{read} procedure parses its input as data +(section @pxref{External representation}), not as program. + +The formal syntax of Scheme is described in section @ref{Formal syntax}. + + +@node Notation and terminology, , Syntax, Overview of Scheme +@section Notation and terminology + +@menu +* Primitive; library; and optional features:: +* Error situations and unspecified behavior:: +* Entry format:: +* Evaluation examples:: +* Naming conventions:: +@end menu + + + +@node Primitive; library; and optional features, Error situations and unspecified behavior, Notation and terminology, Notation and terminology +@subsection Primitive; library; and optional features + + + +It is required that every implementation of Scheme support all +features that are not marked as being @dfn{optional}. Implementations are +@cindex @w{optional} +free to omit optional features of Scheme or to add extensions, +provided the extensions are not in conflict with the language reported +here. In particular, implementations must support portable code by +providing a syntactic mode that preempts no lexical conventions of this +report. + +To aid in understanding and implementing Scheme, some features are marked +as @dfn{library}. These can be easily implemented in terms of the other, +@cindex @w{library} +primitive, features. They are redundant in the strict sense of +the word, but they capture common patterns of usage, and are therefore +provided as convenient abbreviations. + +@node Error situations and unspecified behavior, Entry format, Primitive; library; and optional features, Notation and terminology +@subsection Error situations and unspecified behavior + + + +@cindex @w{error} +When speaking of an error situation, this report uses the phrase ``an +error is signalled'' to indicate that implementations must detect and +report the error. If such wording does not appear in the discussion of +an error, then implementations are not required to detect or report the +error, though they are encouraged to do so. An error situation that +implementations are not required to detect is usually referred to simply +as ``an error.'' + +For example, it is an error for a procedure to be passed an argument that +the procedure is not explicitly specified to handle, even though such +domain errors are seldom mentioned in this report. Implementations may +extend a procedure's domain of definition to include such arguments. + +This report uses the phrase ``may report a violation of an +implementation restriction'' to indicate circumstances under which an +implementation is permitted to report that it is unable to continue +execution of a correct program because of some restriction imposed by the +implementation. Implementation restrictions are of course discouraged, +but implementations are encouraged to report violations of implementation +restrictions. +@cindex @w{implementation restriction} + +For example, an implementation may report a violation of an +implementation restriction if it does not have enough storage to run a +program. + +If the value of an expression is said to be ``unspecified,'' then +the expression must evaluate to some object without signalling an error, +but the value depends on the implementation; this report explicitly does +not say what value should be returned. +@cindex @w{unspecified} + +@ignore todo +Talk about unspecified behavior vs. unspecified values. +@end ignore + + +@ignore todo +Look at KMP's situations paper. +@end ignore + + + +@node Entry format, Evaluation examples, Error situations and unspecified behavior, Notation and terminology +@subsection Entry format + + +Chapters @ref{Expressions} and @ref{Standard procedures} are organized +into entries. Each entry describes one language feature or a group of +related features, where a feature is either a syntactic construct or a +built-in procedure. An entry begins with one or more header lines of the form + + +@noindent +@deffn {@var{category}} @var{template} + +@end deffn + +for required, primitive features, or + + +@noindent +@deffn {@var{qualifier} @var{category}} @var{template} + +@end deffn + +where @var{qualifier} is either ``library'' or ``optional'' as defined + in section @ref{Primitive; library; and optional features}. + +If @var{category} is ``syntax'', the entry describes an expression +type, and the template gives the syntax of the expression type. +Components of expressions are designated by syntactic variables, which +are written using angle brackets, for example, @r{}, +@r{}. Syntactic variables should be understood to denote segments of +program text; for example, @r{} stands for any string of +characters which is a syntactically valid expression. The notation + +@format + @r{} @dots{} +@end format + +indicates zero or more occurrences of a @r{}, and + +@format + @r{} @r{} @dots{} +@end format + +indicates one or more occurrences of a @r{}. + +If @var{category} is ``procedure'', then the entry describes a procedure, and +the header line gives a template for a call to the procedure. Argument +names in the template are @var{italicized}. Thus the header line + + +@noindent +@deffn {procedure} vector-ref @var{vector} @var{k} + +@end deffn + +indicates that the built-in procedure @t{vector-ref} takes +two arguments, a vector @var{vector} and an exact non-negative integer +@var{k} (see below). The header lines + + +@noindent + +@deffn {procedure} make-vector @var{k} + + +@deffnx {procedure} make-vector @var{k} @var{fill} + +@end deffn + +indicate that the @t{make-vector} procedure must be defined to take +either one or two arguments. + + +It is an error for an operation to be presented with an argument that it +is not specified to handle. For succinctness, we follow the convention +that if an argument name is also the name of a type listed in +section @ref{Disjointness of types}, then that argument must be of the named type. +For example, the header line for @t{vector-ref} given above dictates that the +first argument to @t{vector-ref} must be a vector. The following naming +conventions also imply type restrictions: +@c \newcommand{\foo}[1]{\vr{#1}, \vri{#1}, $\ldots$ \vrj{#1}, $\ldots$} + + +@center @c begin-tabular +@quotation +@table @asis +@item @var{obj} +any object +@item @var{list}, @var{list1}, @dots{} @var{listj}, @dots{} +list (see section @pxref{Pairs and lists}) +@item @var{z}, @var{z1}, @dots{} @var{zj}, @dots{} +complex number +@item @var{x}, @var{x1}, @dots{} @var{xj}, @dots{} +real number +@item @var{y}, @var{y1}, @dots{} @var{yj}, @dots{} +real number +@item @var{q}, @var{q1}, @dots{} @var{qj}, @dots{} +rational number +@item @var{n}, @var{n1}, @dots{} @var{nj}, @dots{} +integer +@item @var{k}, @var{k1}, @dots{} @var{kj}, @dots{} +exact non-negative integer +@item +@end table +@end quotation + + + + +@ignore todo +Provide an example entry?? +@end ignore + + + +@node Evaluation examples, Naming conventions, Entry format, Notation and terminology +@subsection Evaluation examples + + +The symbol ``@result{}'' used in program examples should be read +``evaluates to.'' For example, + + +@example + +(* 5 8) ==> 40 + +@end example + + +means that the expression @t{(* 5 8)} evaluates to the object @t{40}. +Or, more precisely: the expression given by the sequence of characters +``@t{(* 5 8)}'' evaluates, in the initial environment, to an object +that may be represented externally by the sequence of characters ``@t{40}''. See section @ref{External representations} for a discussion of external +representations of objects. + +@node Naming conventions, , Evaluation examples, Notation and terminology +@subsection Naming conventions + + +By convention, the names of procedures that always return a boolean +value usually end +in ``@code{?}''. Such procedures are called predicates. +@vindex @w{?} + +By convention, the names of procedures that store values into previously +allocated locations (see section @pxref{Storage model}) usually end in +``@code{!}''. +@vindex @w{!} +Such procedures are called mutation procedures. +By convention, the value returned by a mutation procedure is unspecified. + +By convention, ``@code{->}'' appears within the names of procedures that +@vindex @w{->} +take an object of one type and return an analogous object of another type. +For example, @samp{list->vector} takes a list and returns a vector whose +elements are the same as those of the list. + + + +@ignore todo +Terms that need defining: thunk, command (what else?). +@end ignore + + +@c @include{lex} + +@c Lexical structure + +@c %\vfill\eject +@node Lexical conventions, Basic concepts, Overview of Scheme, top +@chapter Lexical conventions + +@menu +* Identifiers:: +* Whitespace and comments:: +* Other notations:: +@end menu + + +This section gives an informal account of some of the lexical +conventions used in writing Scheme programs. For a formal syntax of +Scheme, see section @ref{Formal syntax}. + +Upper and lower case forms of a letter are never distinguished +except within character and string constants. For example, @samp{Foo} is +the same identifier as @samp{FOO}, and @t{#x1AB} is the same number as +@t{#X1ab}. + +@node Identifiers, Whitespace and comments, Lexical conventions, Lexical conventions +@section Identifiers + + + +Most identifiers allowed by other programming +@cindex @w{identifier} +languages are also acceptable to Scheme. The precise rules for forming +identifiers vary among implementations of Scheme, but in all +implementations a sequence of letters, digits, and ``extended alphabetic +characters'' that begins with a character that cannot begin a number is +an identifier. In addition, @code{+}, @code{-}, and @code{...} are identifiers. +@vindex @w{...} +@vindex @w{-} +@vindex @w{+} +Here are some examples of identifiers: + + +@example + +lambda q +list->vector soup ++ V17a +<=? a34kTMNs +the-word-recursion-has-many-meanings + +@end example + + +Extended alphabetic characters may be used within identifiers as if +they were letters. The following are extended alphabetic characters: + + +@example + +! $ % & * + - . / : < = > ? @@ ^ _ ~ +@end example + + +See section @ref{Lexical structure} for a formal syntax of identifiers. + +Identifiers have two uses within Scheme programs: + + +@itemize @bullet + +@item +Any identifier may be used as a variable +or as a syntactic keyword +(see sections @pxref{Variables; syntactic keywords; and regions} and @pxref{Macros}). + +@item +When an identifier appears as a literal or within a literal +(see section @pxref{Literal expressions}), it is being used to denote a @emph{symbol} +(see section @pxref{Symbols}). + + +@end itemize + +@cindex @w{syntactic keyword} +@cindex @w{variable} + +@c \label{keywordsection} +@c The following identifiers are syntactic keywords, and should not be used +@c as variables: + +@c \begin{scheme} +@c => do or +@c and else quasiquote +@c begin if quote +@c case lambda set! +@c cond let unquote +@c define let* unquote-splicing +@c delay letrec% +@c \end{scheme} + +@c Some implementations allow all identifiers, including syntactic +@c keywords, to be used as variables. This is a compatible extension to +@c the language, but ambiguities in the language result when the +@c restriction is relaxed, and the ways in which these ambiguities are +@c resolved vary between implementations. + + +@node Whitespace and comments, Other notations, Identifiers, Lexical conventions +@section Whitespace and comments + + +@dfn{Whitespace} characters are spaces and newlines. +@cindex @w{Whitespace} +(Implementations typically provide additional whitespace characters such +as tab or page break.) Whitespace is used for improved readability and +as necessary to separate tokens from each other, a token being an +indivisible lexical unit such as an identifier or number, but is +otherwise insignificant. Whitespace may occur between any two tokens, +but not within a token. Whitespace may also occur inside a string, +where it is significant. + +A semicolon (@t{;}) indicates the start of a +comment. The comment continues to the +@cindex @w{;} +@cindex @w{comment} +end of the line on which the semicolon appears. Comments are invisible +to Scheme, but the end of the line is visible as whitespace. This +prevents a comment from appearing in the middle of an identifier or +number. + + +@example + +;;; The FACT procedure computes the factorial +;;; of a non-negative integer. +(define fact + (lambda (n) + (if (= n 0) + 1 ;Base case: return 1 + (* n (fact (- n 1)))))) + +@end example + + + +@node Other notations, , Whitespace and comments, Lexical conventions +@section Other notations + + +@ignore todo +Rewrite? +@end ignore + + +For a description of the notations used for numbers, see +section @ref{Numbers}. + + +@table @t + + +@item @t{.@: + -} +These are used in numbers, and may also occur anywhere in an identifier +except as the first character. A delimited plus or minus sign by itself +is also an identifier. +A delimited period (not occurring within a number or identifier) is used +in the notation for pairs (section @pxref{Pairs and lists}), and to indicate a +rest-parameter in a formal parameter list (section @pxref{Procedures}). +A delimited sequence of three successive periods is also an identifier. + +@item @t{( )} +Parentheses are used for grouping and to notate lists +(section @pxref{Pairs and lists}). + +@item @t{'} +The single quote character is used to indicate literal data (section @pxref{Literal expressions}). + +@item @t{`} +The backquote character is used to indicate almost-constant +data (section @pxref{Quasiquotation}). + +@item @t{, ,@@} +The character comma and the sequence comma at-sign are used in conjunction +with backquote (section @pxref{Quasiquotation}). + +@item @t{"} +The double quote character is used to delimit strings (section @pxref{Strings}). + +@item \ +Backslash is used in the syntax for character constants +(section @pxref{Characters}) and as an escape character within string +constants (section @pxref{Strings}). + +@c A box used because \verb is not allowed in command arguments. + +@item @w{@t{[ ] @{ @} |}} +Left and right square brackets and curly braces and vertical bar +are reserved for possible future extensions to the language. + +@item # + Sharp sign is used for a variety of purposes depending on +the character that immediately follows it: + +@item @t{#t} @t{#f} +These are the boolean constants (section @pxref{Booleans}). + +@item #\ +This introduces a character constant (section @pxref{Characters}). + +@item #@t{(} +This introduces a vector constant (section @pxref{Vectors}). Vector constants +are terminated by @t{)} . + +@item @t{#e #i #b #o #d #x} +These are used in the notation for numbers (section @pxref{Syntax of numerical constants}). + +@end table + + +@c @include{basic} + +@c \vfill\eject +@node Basic concepts, Expressions, Lexical conventions, top +@chapter Basic concepts + +@menu +* Variables; syntactic keywords; and regions:: +* Disjointness of types:: +* External representations:: +* Storage model:: +* Proper tail recursion:: +@end menu + + + +@node Variables; syntactic keywords; and regions, Disjointness of types, Basic concepts, Basic concepts +@section Variables; syntactic keywords; and regions + + + + +An identifier may name a type of syntax, or it may name +@cindex @w{identifier} +a location where a value can be stored. An identifier that names a type +of syntax is called a @emph{syntactic keyword} +@cindex @w{syntactic keyword} +and is said to be @emph{bound} to that syntax. An identifier that names a +location is called a @emph{variable} and is said to be +@cindex @w{variable} +@emph{bound} to that location. The set of all visible +bindings in effect at some point in a program is +@cindex @w{binding} +known as the @emph{environment} in effect at that point. The value +stored in the location to which a variable is bound is called the +variable's value. By abuse of terminology, the variable is sometimes +said to name the value or to be bound to the value. This is not quite +accurate, but confusion rarely results from this practice. + +@ignore todo +Define ``assigned'' and ``unassigned'' perhaps? +@end ignore + + +@ignore todo +In programs without side effects, one can safely pretend that the +variables are bound directly to the arguments. Or: +In programs without @code{set!}, one can safely pretend that the +@vindex @w{set!} +variable is bound directly to the value. +@end ignore + + +Certain expression types are used to create new kinds of syntax +and bind syntactic keywords to those new syntaxes, while other +expression types create new locations and bind variables to those +locations. These expression types are called @emph{binding constructs}. + +@cindex @w{binding construct} +Those that bind syntactic keywords are listed in section @ref{Macros}. +The most fundamental of the variable binding constructs is the +@samp{lambda} expression, because all other variable binding constructs +can be explained in terms of @samp{lambda} expressions. The other +variable binding constructs are @samp{let}, @samp{let*}, @samp{letrec}, +and @samp{do} expressions (see sections @pxref{Procedures}, @pxref{Binding constructs}, and +@pxref{Iteration}). + +@c Note: internal definitions not mentioned here. + +Like Algol and Pascal, and unlike most other dialects of Lisp +except for Common Lisp, Scheme is a statically scoped language with +block structure. To each place where an identifier is bound in a program +there corresponds a @dfn{region} of the program text within which +@cindex @w{region} +the binding is visible. The region is determined by the particular +binding construct that establishes the binding; if the binding is +established by a @samp{lambda} expression, for example, then its region +is the entire @samp{lambda} expression. Every mention of an identifier +refers to the binding of the identifier that established the +innermost of the regions containing the use. If there is no binding of +the identifier whose region contains the use, then the use refers to the +binding for the variable in the top level environment, if any +(chapters @pxref{Expressions} and @pxref{Standard procedures}); if there is no +binding for the identifier, +it is said to be @dfn{unbound}. +@cindex @w{top level environment} +@cindex @w{bound} +@cindex @w{unbound} + +@ignore todo +Mention that some implementations have multiple top level environments? +@end ignore + + +@ignore todo +Pitman sez: needs elaboration in case of @t{(let ...)} +@end ignore + + +@ignore todo +Pitman asks: say something about vars created after scheme starts? +@t{(define x 3) (define (f) x) (define (g) y) (define y 4)} +Clinger replies: The language was explicitly +designed to permit a view in which no variables are created after +Scheme starts. In files, you can scan out the definitions beforehand. +I think we're agreed on the principle that interactive use should +approximate that behavior as closely as possible, though we don't yet +agree on which programming environment provides the best approximation. +@end ignore + + +@node Disjointness of types, External representations, Variables; syntactic keywords; and regions, Basic concepts +@section Disjointness of types + + + +No object satisfies more than one of the following predicates: + + +@example + +boolean? pair? +symbol? number? +char? string? +vector? port? +procedure? + +@end example + + +These predicates define the types @emph{boolean}, @emph{pair}, @emph{symbol}, @emph{number}, @emph{char} (or @emph{character}), @emph{string}, @emph{vector}, @emph{port}, and @emph{procedure}. The empty list is a special +object of its own type; it satisfies none of the above predicates. + +@vindex symbol? +@vindex pair? +@vindex boolean? +@cindex @w{type} + +@vindex vector? +@vindex string? +@vindex char? +@vindex number? + +@cindex @w{empty list} +@vindex procedure? +@vindex port? + +Although there is a separate boolean type, +any Scheme value can be used as a boolean value for the purpose of a +conditional test. As explained in section @ref{Booleans}, all +values count as true in such a test except for @t{#f}. +@c and possibly the empty list. +@c The only value that is guaranteed to count as +@c false is \schfalse{}. It is explicitly unspecified whether the empty list +@c counts as true or as false. +This report uses the word ``true'' to refer to any +Scheme value except @t{#f}, and the word ``false'' to refer to +@t{#f}. +@cindex @w{false} +@cindex @w{true} + +@node External representations, Storage model, Disjointness of types, Basic concepts +@section External representations + + + +An important concept in Scheme (and Lisp) is that of the @emph{external +representation} of an object as a sequence of characters. For example, +an external representation of the integer 28 is the sequence of +characters ``@t{28}'', and an external representation of a list consisting +of the integers 8 and 13 is the sequence of characters ``@t{(8 13)}''. + +The external representation of an object is not necessarily unique. The +integer 28 also has representations ``@t{#e28.000}'' and ``@t{#x1c}'', and the +list in the previous paragraph also has the representations ``@t{( 08 13 +)}'' and ``@t{(8 .@: (13 .@: ()))}'' (see section @pxref{Pairs and lists}). + +Many objects have standard external representations, but some, such as +procedures, do not have standard representations (although particular +implementations may define representations for them). + +An external representation may be written in a program to obtain the +corresponding object (see @samp{quote}, section @pxref{Literal expressions}). + +External representations can also be used for input and output. The +procedure @samp{read} (section @pxref{Input}) parses external +representations, and the procedure @samp{write} (section @pxref{Output}) +generates them. Together, they provide an elegant and powerful +input/output facility. + +Note that the sequence of characters ``@t{(+ 2 6)}'' is @emph{not} an +external representation of the integer 8, even though it @emph{is} an +expression evaluating to the integer 8; rather, it is an external +representation of a three-element list, the elements of which are the symbol +@t{+} and the integers 2 and 6. Scheme's syntax has the property that +any sequence of characters that is an expression is also the external +representation of some object. This can lead to confusion, since it may +not be obvious out of context whether a given sequence of characters is +intended to denote data or program, but it is also a source of power, +since it facilitates writing programs such as interpreters and +compilers that treat programs as data (or vice versa). + +The syntax of external representations of various kinds of objects +accompanies the description of the primitives for manipulating the +objects in the appropriate sections of chapter @ref{Standard procedures}. + +@node Storage model, Proper tail recursion, External representations, Basic concepts +@section Storage model + + + +Variables and objects such as pairs, vectors, and strings implicitly +denote locations or sequences of locations. A string, for +@cindex @w{location} +example, denotes as many locations as there are characters in the string. +(These locations need not correspond to a full machine word.) A new value may be +stored into one of these locations using the @t{string-set!} procedure, but +the string continues to denote the same locations as before. + +An object fetched from a location, by a variable reference or by +a procedure such as @samp{car}, @samp{vector-ref}, or @samp{string-ref}, is +equivalent in the sense of @code{eqv?} +@c and \ide{eq?} ?? +(section @pxref{Equivalence predicates}) +@vindex @w{eqv?} +to the object last stored in the location before the fetch. + +Every location is marked to show whether it is in use. +No variable or object ever refers to a location that is not in use. +Whenever this report speaks of storage being allocated for a variable +or object, what is meant is that an appropriate number of locations are +chosen from the set of locations that are not in use, and the chosen +locations are marked to indicate that they are now in use before the variable +or object is made to denote them. + +In many systems it is desirable for constants (i.e. the values of +@cindex @w{constant} +literal expressions) to reside in read-only-memory. To express this, it is +convenient to imagine that every object that denotes locations is associated +with a flag telling whether that object is mutable or +@cindex @w{mutable} +immutable. In such systems literal constants and the strings +@cindex @w{immutable} +returned by @code{symbol->string} are immutable objects, while all objects +@vindex @w{symbol->string} +created by the other procedures listed in this report are mutable. It is an +error to attempt to store a new value into a location that is denoted by an +immutable object. + +@node Proper tail recursion, , Storage model, Basic concepts +@section Proper tail recursion + + + +Implementations of Scheme are required to be +@emph{properly tail-recursive}. +@cindex @w{proper tail recursion} +Procedure calls that occur in certain syntactic +contexts defined below are `tail calls'. A Scheme implementation is +properly tail-recursive if it supports an unbounded number of active +tail calls. A call is @emph{active} if the called procedure may still +return. Note that this includes calls that may be returned from either +by the current continuation or by continuations captured earlier by +@samp{call-with-current-continuation} that are later invoked. +In the absence of captured continuations, calls could +return at most once and the active calls would be those that had not +yet returned. +A formal definition of proper tail recursion can be found +in [propertailrecursion]. + + +@quotation +@emph{Rationale:} + +Intuitively, no space is needed for an active tail call because the +continuation that is used in the tail call has the same semantics as the +continuation passed to the procedure containing the call. Although an improper +implementation might use a new continuation in the call, a return +to this new continuation would be followed immediately by a return +to the continuation passed to the procedure. A properly tail-recursive +implementation returns to that continuation directly. + +Proper tail recursion was one of the central ideas in Steele and +Sussman's original version of Scheme. Their first Scheme interpreter +implemented both functions and actors. Control flow was expressed using +actors, which differed from functions in that they passed their results +on to another actor instead of returning to a caller. In the terminology +of this section, each actor finished with a tail call to another actor. + +Steele and Sussman later observed that in their interpreter the code +for dealing with actors was identical to that for functions and thus +there was no need to include both in the language. + +@end quotation + + +A @emph{tail call} is a procedure call that occurs +@cindex @w{tail call} +in a @emph{tail context}. Tail contexts are defined inductively. Note +that a tail context is always determined with respect to a particular lambda +expression. + + + +@itemize @bullet + +@item +The last expression within the body of a lambda expression, +shown as @r{} below, occurs in a tail context. + +@format +@t{(lambda + * * ) +} + +@end format + + + +@item +If one of the following expressions is in a tail context, +then the subexpressions shown as are in a tail context. +These were derived from rules in the grammar given in +chapter @ref{Formal syntax and semantics} by replacing some occurrences of +with . Only those rules that contain tail contexts +are shown here. + + +@format +@t{(if ) +(if ) + +(cond +) +(cond * (else )) + +(case + +) +(case + * + (else )) + +(and * ) +(or * ) + +(let (*) ) +(let (*) ) +(let* (*) ) +(letrec (*) ) + +(let-syntax (*) ) +(letrec-syntax (*) ) + +(begin ) + +(do (*) + ( ) + *) + +@r{where} + + --> ( ) + --> ((*) ) + + --> * + --> * +} + +@end format + + + +@item +If a @samp{cond} expression is in a tail context, and has a clause of +the form @samp{(@r{} => @r{})} +then the (implied) call to +the procedure that results from the evaluation of @r{} is in a +tail context. @r{} itself is not in a tail context. + + +@end itemize + + +Certain built-in procedures are also required to perform tail calls. +The first argument passed to @code{apply} and to +@vindex @w{apply} +@code{call-with-current-continuation}, and the second argument passed to +@vindex @w{call-with-current-continuation} +@code{call-with-values}, must be called via a tail call. +@vindex @w{call-with-values} +Similarly, @code{eval} must evaluate its argument as if it +@vindex @w{eval} +were in tail position within the @code{eval} procedure. +@vindex @w{eval} + +In the following example the only tail call is the call to @samp{f}. +None of the calls to @samp{g} or @samp{h} are tail calls. The reference to +@samp{x} is in a tail context, but it is not a call and thus is not a +tail call. + +@example + +(lambda () + (if (g) + (let ((x (h))) + x) + (and (g) (f)))) + +@end example + + + +@quotation +@emph{Note:} +Implementations are allowed, but not required, to +recognize that some non-tail calls, such as the call to @samp{h} +above, can be evaluated as though they were tail calls. +In the example above, the @samp{let} expression could be compiled +as a tail call to @samp{h}. (The possibility of @samp{h} returning +an unexpected number of values can be ignored, because in that +case the effect of the @samp{let} is explicitly unspecified and +implementation-dependent.) +@end quotation + + + +@c @include{expr} + +@c \vfill\eject +@node Expressions, Program structure, Basic concepts, top +@chapter Expressions + +@menu +* Primitive expression types:: +* Derived expression types:: +* Macros:: +@end menu + + + +@c \newcommand{\syntax}{{\em Syntax: }} +@c \newcommand{\semantics}{{\em Semantics: }} + +@c [Deleted for R5RS because of multiple-value returns. -RK] +@c A Scheme expression is a construct that returns a value, such as a +@c variable reference, literal, procedure call, or conditional. + +Expression types are categorized as @emph{primitive} or @emph{derived}. +Primitive expression types include variables and procedure calls. +Derived expression types are not semantically primitive, but can instead +be defined as macros. +With the exception of @samp{quasiquote}, whose macro definition is complex, +the derived expressions are classified as library features. +Suitable definitions are given in section @ref{Derived expression type}. + +@node Primitive expression types, Derived expression types, Expressions, Expressions +@section Primitive expression types + +@menu +* Variable references:: +* Literal expressions:: +* Procedure calls:: +* Procedures:: +* Conditionals:: +* Assignments:: +@end menu + + + +@node Variable references, Literal expressions, Primitive expression types, Primitive expression types +@subsection Variable references + + + +@deffn {syntax} @r{} + + +An expression consisting of a variable +@cindex @w{variable} +(section @pxref{Variables; syntactic keywords; and regions}) is a variable reference. The value of +the variable reference is the value stored in the location to which the +variable is bound. It is an error to reference an +unbound variable. +@cindex @w{unbound} + + +@format +@t{(define x 28) +x ==> 28 +} +@end format + +@end deffn + +@node Literal expressions, Procedure calls, Variable references, Primitive expression types +@subsection Literal expressions + + + + +@deffn {syntax} quote @r{} + +@deffnx {syntax} @t{'}@r{} + + +@deffnx {syntax} @r{} + + +@samp{(quote @r{})} evaluates to @r{}. +@cindex @w{'} +@r{} +may be any external representation of a Scheme object (see +section @pxref{External representations}). This notation is used to include literal +constants in Scheme code. + + +@format +@t{ +(quote a) ==> a +(quote #(a b c)) ==> #(a b c) +(quote (+ 1 2)) ==> (+ 1 2) +} +@end format + + +@samp{(quote @r{})} may be abbreviated as +@t{'}@r{}. The two notations are equivalent in all +respects. + + +@format +@t{'a ==> a +'#(a b c) ==> #(a b c) +'() ==> () +'(+ 1 2) ==> (+ 1 2) +'(quote a) ==> (quote a) +''a ==> (quote a) +} +@end format + + +Numerical constants, string constants, character constants, and boolean +constants evaluate ``to themselves''; they need not be quoted. + + +@format +@t{'"abc" ==> "abc" +"abc" ==> "abc" +'145932 ==> 145932 +145932 ==> 145932 +'#t ==> #t +#t ==> #t +} +@end format + + +As noted in section @ref{Storage model}, it is an error to alter a constant +(i.e. the value of a literal expression) using a mutation procedure like +@samp{set-car!} or @samp{string-set!}. + +@end deffn + + +@node Procedure calls, Procedures, Literal expressions, Primitive expression types +@subsection Procedure calls + + + +@deffn {syntax} @r{} @r{} @dots{}, + + +A procedure call is written by simply enclosing in parentheses +expressions for the procedure to be called and the arguments to be +passed to it. The operator and operand expressions are evaluated (in an +unspecified order) and the resulting procedure is passed the resulting +arguments. +@cindex @w{procedure call} +@cindex @w{call} + +@format +@t{ +(+ 3 4) ==> 7 +((if #f + *) 3 4) ==> 12 +} +@end format + + +A number of procedures are available as the values of variables in the +initial environment; for example, the addition and multiplication +procedures in the above examples are the values of the variables @samp{+} +and @samp{*}. New procedures are created by evaluating lambda expressions +(see section @pxref{Procedures}). +@ignore todo +At Friedman's request, flushed mention of other ways. +@end ignore + +@c or definitions (see section~\ref{define}). + +Procedure calls may return any number of values (see @code{values} in +@vindex @w{values} +section @pxref{Control features}). With the exception of @samp{values} +the procedures available in the initial environment return one +value or, for procedures such as @samp{apply}, pass on the values returned +by a call to one of their arguments. + +Procedure calls are also called @emph{combinations}. + +@cindex @w{combination} + + +@quotation +@emph{Note:} In contrast to other dialects of Lisp, the order of +evaluation is unspecified, and the operator expression and the operand +expressions are always evaluated with the same evaluation rules. +@end quotation + + + +@quotation +@emph{Note:} +Although the order of evaluation is otherwise unspecified, the effect of +any concurrent evaluation of the operator and operand expressions is +constrained to be consistent with some sequential order of evaluation. +The order of evaluation may be chosen differently for each procedure call. +@end quotation + + + +@quotation +@emph{Note:} In many dialects of Lisp, the empty combination, @t{()}, is a legitimate expression. In Scheme, combinations must have at +least one subexpression, so @t{()} is not a syntactically valid +expression. +@ignore todo +Dybvig: ``it should be obvious from the syntax.'' +@end ignore + +@end quotation + + +@ignore todo +Freeman: +I think an explanation as to why evaluation order is not specified +should be included. It should not include any reference to parallel +evaluation. Does any existing compiler generate better code because +the evaluation order is unspecified? Clinger: yes: T3, MacScheme v2, +probably MIT Scheme and Chez Scheme. But that's not the main reason +for leaving the order unspecified. +@end ignore + + +@end deffn + + +@node Procedures, Conditionals, Procedure calls, Primitive expression types +@subsection Procedures + + + + +@deffn {syntax} lambda @r{} @r{} + +@emph{Syntax:} +@r{} should be a formal arguments list as described below, +and @r{} should be a sequence of one or more expressions. + +@emph{Semantics:} +A lambda expression evaluates to a procedure. The environment in +effect when the lambda expression was evaluated is remembered as part of the +procedure. When the procedure is later called with some actual +arguments, the environment in which the lambda expression was evaluated will +be extended by binding the variables in the formal argument list to +fresh locations, the corresponding actual argument values will be stored +in those locations, and the expressions in the body of the lambda expression +will be evaluated sequentially in the extended environment. +The result(s) of the last expression in the body will be returned as +the result(s) of the procedure call. + + +@format +@t{(lambda (x) (+ x x)) ==> @emph{}a procedure +((lambda (x) (+ x x)) 4) ==> 8 + +(define reverse-subtract + (lambda (x y) (- y x))) +(reverse-subtract 7 10) ==> 3 + +(define add4 + (let ((x 4)) + (lambda (y) (+ x y)))) +(add4 6) ==> 10 +} +@end format + + +@r{} should have one of the following forms: + + + +@itemize @bullet + +@item +@t{(@r{} @dots{},)}: +The procedure takes a fixed number of arguments; when the procedure is +called, the arguments will be stored in the bindings of the +corresponding variables. + +@item +@r{}: +The procedure takes any number of arguments; when the procedure is +called, the sequence of actual arguments is converted into a newly +allocated list, and the list is stored in the binding of the +@r{}. + +@item +@t{(@r{} @dots{}, @r{} @b{.} +@r{})}: +If a space-delimited period precedes the last variable, then +the procedure takes n or more arguments, where n is the +number of formal arguments before the period (there must +be at least one). +The value stored in the binding of the last variable will be a +newly allocated +list of the actual arguments left over after all the other actual +arguments have been matched up against the other formal arguments. + +@end itemize + + +It is an error for a @r{} to appear more than once in +@r{}. + + +@format +@t{((lambda x x) 3 4 5 6) ==> (3 4 5 6) +((lambda (x y . z) z) + 3 4 5 6) ==> (5 6) +} +@end format + + +Each procedure created as the result of evaluating a lambda expression is +(conceptually) tagged +with a storage location, in order to make @code{eqv?} and +@vindex @w{eqv?} +@code{eq?} work on procedures (see section @pxref{Equivalence predicates}). +@vindex @w{eq?} + +@end deffn + + +@node Conditionals, Assignments, Procedures, Primitive expression types +@subsection Conditionals + + + +@deffn {syntax} if @r{} @r{} @r{} +@deffnx {syntax} if @r{} @r{} +@c \/ if hyper = italic + +@emph{Syntax:} +@r{}, @r{}, and @r{} may be arbitrary +expressions. + +@emph{Semantics:} +An @samp{if} expression is evaluated as follows: first, +@r{} is evaluated. If it yields a true value (see +@cindex @w{true} +section @pxref{Booleans}), then @r{} is evaluated and +its value(s) is(are) returned. Otherwise @r{} is evaluated and its +value(s) is(are) returned. If @r{} yields a false value and no +@r{} is specified, then the result of the expression is +unspecified. + + +@format +@t{(if (> 3 2) 'yes 'no) ==> yes +(if (> 2 3) 'yes 'no) ==> no +(if (> 3 2) + (- 3 2) + (+ 3 2)) ==> 1 +} +@end format + + +@end deffn + + +@node Assignments, , Conditionals, Primitive expression types +@subsection Assignments + + + + +@deffn {syntax} set! @r{} @r{} + +@r{} is evaluated, and the resulting value is stored in +the location to which @r{} is bound. @r{} must +be bound either in some region enclosing the @samp{set!} expression +@cindex @w{region} +or at top level. The result of the @samp{set!} expression is +unspecified. + + +@format +@t{(define x 2) +(+ x 1) ==> 3 +(set! x 4) ==> @emph{unspecified} +(+ x 1) ==> 5 +} +@end format + + +@end deffn + + +@node Derived expression types, Macros, Primitive expression types, Expressions +@section Derived expression types + +@menu +* Conditional:: +* Binding constructs:: +* Sequencing:: +* Iteration:: +* Delayed evaluation:: +* Quasiquotation:: +@end menu + + + +The constructs in this section are hygienic, as discussed in +section @ref{Macros}. +For reference purposes, section @ref{Derived expression type} gives macro definitions +that will convert most of the constructs described in this section +into the primitive constructs described in the previous section. + +@ignore todo +Mention that no definition of backquote is provided? +@end ignore + + +@node Conditional, Binding constructs, Derived expression types, Derived expression types +@subsection Conditionals + + + +@deffn {library syntax} cond @dots{}, + +@emph{Syntax:} +Each @r{} should be of the form + +@format +@t{(@r{} @r{} @dots{},) +} +@end format + +where @r{} is any expression. Alternatively, a @r{} may be +of the form + +@format +@t{(@r{} => @r{}) +} +@end format + +The last @r{} may be +an ``else clause,'' which has the form + +@format +@t{(else @r{} @r{} @dots{},)@r{.} +} +@end format + + +@cindex @w{else} + +@cindex @w{=>} + +@emph{Semantics:} +A @samp{cond} expression is evaluated by evaluating the @r{} +expressions of successive @r{}s in order until one of them +evaluates to a true value (see +@cindex @w{true} +section @pxref{Booleans}). When a @r{} evaluates to a true +value, then the remaining @r{}s in its @r{} are +evaluated in order, and the result(s) of the last @r{} in the +@r{} is(are) returned as the result(s) of the entire @samp{cond} +expression. If the selected @r{} contains only the +@r{} and no @r{}s, then the value of the +@r{} is returned as the result. If the selected @r{} uses the +@code{=>} alternate form, then the @r{} is evaluated. +@vindex @w{=>} +Its value must be a procedure that accepts one argument; this procedure is then +called on the value of the @r{} and the value(s) returned by this +procedure is(are) returned by the @samp{cond} expression. +If all @r{}s evaluate +to false values, and there is no else clause, then the result of +the conditional expression is unspecified; if there is an else +clause, then its @r{}s are evaluated, and the value(s) of +the last one is(are) returned. + + +@format +@t{(cond ((> 3 2) 'greater) + ((< 3 2) 'less)) ==> greater + +(cond ((> 3 3) 'greater) + ((< 3 3) 'less) + (else 'equal)) ==> equal + +(cond ((assv 'b '((a 1) (b 2))) => cadr) + (else #f)) ==> 2 +} +@end format + + + +@end deffn + + + +@deffn {library syntax} case @r{} @dots{}, + +@emph{Syntax:} +@r{} may be any expression. Each @r{} should have +the form + +@format +@t{((@r{} @dots{},) @r{} @r{} @dots{},)@r{,} +} +@end format + +where each @r{} is an external representation of some object. +All the @r{}s must be distinct. +The last @r{} may be an ``else clause,'' which has the form + +@format +@t{(else @r{} @r{} @dots{},)@r{.} +} +@end format + + +@vindex else + +@emph{Semantics:} +A @samp{case} expression is evaluated as follows. @r{} is +evaluated and its result is compared against each @r{}. If the +result of evaluating @r{} is equivalent (in the sense of +@samp{eqv?}; see section @pxref{Equivalence predicates}) to a @r{}, then the +expressions in the corresponding @r{} are evaluated from left +to right and the result(s) of the last expression in the @r{} is(are) +returned as the result(s) of the @samp{case} expression. If the result of +evaluating @r{} is different from every @r{}, then if +there is an else clause its expressions are evaluated and the +result(s) of the last is(are) the result(s) of the @samp{case} expression; +otherwise the result of the @samp{case} expression is unspecified. + + +@format +@t{(case (* 2 3) + ((2 3 5 7) 'prime) + ((1 4 6 8 9) 'composite)) ==> composite +(case (car '(c d)) + ((a) 'a) + ((b) 'b)) ==> @emph{unspecified} +(case (car '(c d)) + ((a e i o u) 'vowel) + ((w y) 'semivowel) + (else 'consonant)) ==> consonant +} +@end format + + +@end deffn + + + +@deffn {library syntax} and @dots{}, + +The @r{} expressions are evaluated from left to right, and the +value of the first expression that evaluates to a false value (see +section @pxref{Booleans}) is returned. Any remaining expressions +are not evaluated. If all the expressions evaluate to true values, the +value of the last expression is returned. If there are no expressions +then @t{#t} is returned. + + +@format +@t{(and (= 2 2) (> 2 1)) ==> #t +(and (= 2 2) (< 2 1)) ==> #f +(and 1 2 'c '(f g)) ==> (f g) +(and) ==> #t +} +@end format + + +@end deffn + + + +@deffn {library syntax} or @dots{}, + +The @r{} expressions are evaluated from left to right, and the value of the +first expression that evaluates to a true value (see +section @pxref{Booleans}) is returned. Any remaining expressions +are not evaluated. If all expressions evaluate to false values, the +value of the last expression is returned. If there are no +expressions then @t{#f} is returned. + + +@format +@t{(or (= 2 2) (> 2 1)) ==> #t +(or (= 2 2) (< 2 1)) ==> #t +(or #f #f #f) ==> #f +(or (memq 'b '(a b c)) + (/ 3 0)) ==> (b c) +} +@end format + + +@end deffn + + +@node Binding constructs, Sequencing, Conditional, Derived expression types +@subsection Binding constructs + + +The three binding constructs @samp{let}, @samp{let*}, and @samp{letrec} +give Scheme a block structure, like Algol 60. The syntax of the three +constructs is identical, but they differ in the regions they establish +@cindex @w{region} +for their variable bindings. In a @samp{let} expression, the initial +values are computed before any of the variables become bound; in a +@samp{let*} expression, the bindings and evaluations are performed +sequentially; while in a @samp{letrec} expression, all the bindings are in +effect while their initial values are being computed, thus allowing +mutually recursive definitions. + + +@deffn {library syntax} let @r{} @r{} + +@emph{Syntax:} +@r{} should have the form + +@format +@t{((@r{} @r{}) @dots{},)@r{,} +} +@end format + +where each @r{} is an expression, and @r{} should be a +sequence of one or more expressions. It is +an error for a @r{} to appear more than once in the list of variables +being bound. + +@emph{Semantics:} +The @r{}s are evaluated in the current environment (in some +unspecified order), the @r{}s are bound to fresh locations +holding the results, the @r{} is evaluated in the extended +environment, and the value(s) of the last expression of @r{} +is(are) returned. Each binding of a @r{} has @r{} as its +region. +@cindex @w{region} + + +@format +@t{(let ((x 2) (y 3)) + (* x y)) ==> 6 + +(let ((x 2) (y 3)) + (let ((x 7) + (z (+ x y))) + (* z x))) ==> 35 +} +@end format + + +See also named @samp{let}, section @ref{Iteration}. + +@end deffn + + + +@deffn {library syntax} let* @r{} @r{} + + +@emph{Syntax:} +@r{} should have the form + +@format +@t{((@r{} @r{}) @dots{},)@r{,} +} +@end format + +and @r{} should be a sequence of +one or more expressions. + +@emph{Semantics:} +@samp{Let*} is similar to @samp{let}, but the bindings are performed +sequentially from left to right, and the region of a binding indicated +@cindex @w{region} +by @samp{(@r{} @r{})} is that part of the @samp{let*} +expression to the right of the binding. Thus the second binding is done +in an environment in which the first binding is visible, and so on. + + +@format +@t{(let ((x 2) (y 3)) + (let* ((x 7) + (z (+ x y))) + (* z x))) ==> 70 +} +@end format + + +@end deffn + + + +@deffn {library syntax} letrec @r{} @r{} + +@emph{Syntax:} +@r{} should have the form + +@format +@t{((@r{} @r{}) @dots{},)@r{,} +} +@end format + +and @r{} should be a sequence of +one or more expressions. It is an error for a @r{} to appear more +than once in the list of variables being bound. + +@emph{Semantics:} +The @r{}s are bound to fresh locations holding undefined +values, the @r{}s are evaluated in the resulting environment (in +some unspecified order), each @r{} is assigned to the result +of the corresponding @r{}, the @r{} is evaluated in the +resulting environment, and the value(s) of the last expression in +@r{} is(are) returned. Each binding of a @r{} has the +entire @samp{letrec} expression as its region, making it possible to +@cindex @w{region} +define mutually recursive procedures. + + +@format +@t{(letrec ((even? + (lambda (n) + (if (zero? n) + #t + (odd? (- n 1))))) + (odd? + (lambda (n) + (if (zero? n) + #f + (even? (- n 1)))))) + (even? 88)) + ==> #t +} +@end format + + +One restriction on @samp{letrec} is very important: it must be possible +to evaluate each @r{} without assigning or referring to the value of any +@r{}. If this restriction is violated, then it is an error. The +restriction is necessary because Scheme passes arguments by value rather than by +name. In the most common uses of @samp{letrec}, all the @r{}s are +lambda expressions and the restriction is satisfied automatically. + +@c \todo{use or uses? --- Jinx.} + +@end deffn + + +@node Sequencing, Iteration, Binding constructs, Derived expression types +@subsection Sequencing + + + +@deffn {library syntax} begin @dots{}, + +The @r{}s are evaluated sequentially from left to right, +and the value(s) of the last @r{} is(are) returned. This +expression type is used to sequence side effects such as input and +output. + + +@format +@t{(define x 0) + +(begin (set! x 5) + (+ x 1)) ==> 6 + +(begin (display "4 plus 1 equals ") + (display (+ 4 1))) ==> @emph{unspecified} + @emph{and prints} 4 plus 1 equals 5 +} +@end format + + +@end deffn + + +@node Iteration, Delayed evaluation, Sequencing, Derived expression types +@subsection Iteration + +@c \unsection + + +@noindent + +@deffn {library syntax} do ((@r{} @r{} @r{}) @dots{}) (@r{} @r{} @dots{}) @r{} @dots{} +@cindex @w{do} + +@samp{Do} is an iteration construct. It specifies a set of variables to +be bound, how they are to be initialized at the start, and how they are +to be updated on each iteration. When a termination condition is met, +the loop exits after evaluating the @r{}s. + +@samp{Do} expressions are evaluated as follows: +The @r{} expressions are evaluated (in some unspecified order), +the @r{}s are bound to fresh locations, the results of the +@r{} expressions are stored in the bindings of the +@r{}s, and then the iteration phase begins. + +Each iteration begins by evaluating @r{}; if the result is +false (see section @pxref{Booleans}), then the @r{} +expressions are evaluated in order for effect, the @r{} +expressions are evaluated in some unspecified order, the +@r{}s are bound to fresh locations, the results of the +@r{}s are stored in the bindings of the +@r{}s, and the next iteration begins. + +If @r{} evaluates to a true value, then the +@r{}s are evaluated from left to right and the value(s) of +the last @r{} is(are) returned. If no @r{}s +are present, then the value of the @samp{do} expression is unspecified. + +The region of the binding of a @r{} +@cindex @w{region} +consists of the entire @samp{do} expression except for the @r{}s. +It is an error for a @r{} to appear more than once in the +list of @samp{do} variables. + +A @r{} may be omitted, in which case the effect is the +same as if @samp{(@r{} @r{} @r{})} had +been written instead of @samp{(@r{} @r{})}. + + +@format +@t{(do ((vec (make-vector 5)) + (i 0 (+ i 1))) + ((= i 5) vec) + (vector-set! vec i i)) ==> #(0 1 2 3 4) + +(let ((x '(1 3 5 7 9))) + (do ((x x (cdr x)) + (sum 0 (+ sum (car x)))) + ((null? x) sum))) ==> 25 +} +@end format + + +@c \end{entry} +@end deffn + + +@deffn {library syntax} let @r{} @r{} @r{} + + +``Named @samp{let}'' is a variant on the syntax of @code{let} which provides +@vindex @w{let} +a more general looping construct than @samp{do} and may also be used to express +recursions. +It has the same syntax and semantics as ordinary @samp{let} +except that @r{} is bound within @r{} to a procedure +whose formal arguments are the bound variables and whose body is +@r{}. Thus the execution of @r{} may be repeated by +invoking the procedure named by @r{}. + +@c | <-- right margin + +@format +@t{(let loop ((numbers '(3 -2 1 6 -5)) + (nonneg '()) + (neg '())) + (cond ((null? numbers) (list nonneg neg)) + ((>= (car numbers) 0) + (loop (cdr numbers) + (cons (car numbers) nonneg) + neg)) + ((< (car numbers) 0) + (loop (cdr numbers) + nonneg + (cons (car numbers) neg))))) + ==> ((6 1 3) (-5 -2)) +} +@end format + + +@end deffn + + +@node Delayed evaluation, Quasiquotation, Iteration, Derived expression types +@subsection Delayed evaluation + + + +@deffn {library syntax} delay @r{} + +@ignore todo +Fix. +@end ignore + + +The @samp{delay} construct is used together with the procedure @code{force} to +@vindex @w{force} +implement @dfn{lazy evaluation} or @dfn{call by need}. +@cindex @w{call by need} +@cindex @w{lazy evaluation} +@t{(delay @r{})} returns an object called a +@dfn{promise} which at some point in the future may be asked (by +@cindex @w{promise} +the @samp{force} procedure) +@ignore todo +Bartley's white lie; OK? +@end ignore + to evaluate +@r{}, and deliver the resulting value. +The effect of @r{} returning multiple values +is unspecified. + +See the description of @samp{force} (section @pxref{Control features}) for a +more complete description of @samp{delay}. + +@end deffn + + +@node Quasiquotation, , Delayed evaluation, Derived expression types +@subsection Quasiquotation + + + + +@deffn {syntax} quasiquote @r{} + +@deffnx {syntax} @t{`}@r{} + + +``Backquote'' or ``quasiquote'' expressions are useful +@cindex @w{backquote} +for constructing a list or vector structure when most but not all of the +desired structure is known in advance. If no +commas appear within the @r{}, the result of +@cindex @w{comma} +evaluating +@t{`}@r{} is equivalent to the result of evaluating +@t{'}@r{}. If a comma appears within the +@cindex @w{,} +@r{}, however, the expression following the comma is +evaluated (``unquoted'') and its result is inserted into the structure +instead of the comma and the expression. If a comma appears followed +immediately by an at-sign (@@), then the following +@cindex @w{,@@} +expression must evaluate to a list; the opening and closing parentheses +of the list are then ``stripped away'' and the elements of the list are +inserted in place of the comma at-sign expression sequence. A comma +at-sign should only appear within a list or vector @r{}. + +@c struck: "(in the sense of {\cf equal?})" after "equivalent" + + +@format +@t{`(list ,(+ 1 2) 4) ==> (list 3 4) +(let ((name 'a)) `(list ,name ',name)) + ==> (list a (quote a)) +`(a ,(+ 1 2) ,@@(map abs '(4 -5 6)) b) + ==> (a 3 4 5 6 b) +`((@samp{foo} ,(- 10 3)) ,@@(cdr '(c)) . ,(car '(cons))) + ==> ((foo 7) . cons) +`#(10 5 ,(sqrt 4) ,@@(map sqrt '(16 9)) 8) + ==> #(10 5 2 4 3 8) +} +@end format + + +Quasiquote forms may be nested. Substitutions are made only for +unquoted components appearing at the same nesting level +as the outermost backquote. The nesting level increases by one inside +each successive quasiquotation, and decreases by one inside each +unquotation. + + +@format +@t{`(a `(b ,(+ 1 2) ,(foo ,(+ 1 3) d) e) f) + ==> (a `(b ,(+ 1 2) ,(foo 4 d) e) f) +(let ((name1 'x) + (name2 'y)) + `(a `(b ,,name1 ,',name2 d) e)) + ==> (a `(b ,x ,'y d) e) +} +@end format + + +The two notations + @t{`}@r{} and @t{(quasiquote @r{})} + are identical in all respects. + @samp{,@r{}} is identical to @samp{(unquote @r{})}, + and + @samp{,@@@r{}} is identical to @samp{(unquote-splicing @r{})}. +The external syntax generated by @code{write} for two-element lists whose +@vindex @w{write} +car is one of these symbols may vary between implementations. + +@cindex @w{`} + + +@format +@t{(quasiquote (list (unquote (+ 1 2)) 4)) + ==> (list 3 4) +'(quasiquote (list (unquote (+ 1 2)) 4)) + ==> `(list ,(+ 1 2) 4) + @emph{}i.e., (quasiquote (list (unquote (+ 1 2)) 4)) +} +@end format + + +Unpredictable behavior can result if any of the symbols +@code{quasiquote}, @code{unquote}, or @code{unquote-splicing} appear in +@vindex @w{unquote-splicing} +@vindex @w{unquote} +@vindex @w{quasiquote} +positions within a @r{} otherwise than as described above. + +@end deffn + +@node Macros, , Derived expression types, Expressions +@section Macros + +@menu +* Binding constructs for syntactic keywords:: +* Pattern language:: +@end menu + + + +Scheme programs can define and use new derived expression types, + called @emph{macros}. +@cindex @w{macro} +Program-defined expression types have the syntax + +@example + +(@r{} @r{} ...) + +@end example + +where @r{} is an identifier that uniquely determines the +expression type. This identifier is called the @emph{syntactic +keyword}, or simply @emph{keyword}, of the macro. The +@cindex @w{macro keyword} +@cindex @w{keyword} +@cindex @w{syntactic keyword} +number of the @r{}s, and their syntax, depends on the +expression type. + +Each instance of a macro is called a @emph{use} +@cindex @w{macro use} +of the macro. +The set of rules that specifies +how a use of a macro is transcribed into a more primitive expression +is called the @emph{transformer} +@cindex @w{macro transformer} +of the macro. + +The macro definition facility consists of two parts: + + + +@itemize @bullet + +@item +A set of expressions used to establish that certain identifiers +are macro keywords, associate them with macro transformers, and control +the scope within which a macro is defined, and + +@item +a pattern language for specifying macro transformers. + +@end itemize + + +The syntactic keyword of a macro may shadow variable bindings, and local +variable bindings may shadow keyword bindings. All macros +@cindex @w{keyword} +defined using the pattern language are ``hygienic'' and ``referentially +transparent'' and thus preserve Scheme's lexical scoping [Kohlbecker86], [ +hygienic], [Bawden88], [macrosthatwork], [syntacticabstraction]: + +@cindex @w{hygienic} + +@cindex @w{referentially transparent} + + + + +@itemize @bullet + + +@item +If a macro transformer inserts a binding for an identifier +(variable or keyword), the identifier will in effect be renamed +throughout its scope to avoid conflicts with other identifiers. +Note that a @code{define} at top level may or may not introduce a binding; +see section @ref{Definitions}. + +@item +If a macro transformer inserts a free reference to an +identifier, the reference refers to the binding that was visible +where the transformer was specified, regardless of any local +bindings that may surround the use of the macro. + + +@end itemize + +@vindex @w{define} + +@c The low-level facility permits non-hygienic macros to be written, +@c and may be used to implement the high-level pattern language. + +@c The fourth section describes some features that would make the +@c low-level macro facility easier to use directly. + +@node Binding constructs for syntactic keywords, Pattern language, Macros, Macros +@subsection Binding constructs for syntactic keywords + + + +@samp{Let-syntax} and @samp{letrec-syntax} are +analogous to @samp{let} and @samp{letrec}, but they bind +syntactic keywords to macro transformers instead of binding variables +to locations that contain values. Syntactic keywords may also be +bound at top level; see section @ref{Syntax definitions}. + + +@deffn {syntax} let-syntax @r{} @r{} + +@emph{Syntax:} +@r{} should have the form + +@format +@t{((@r{} @r{}) @dots{},) +} +@end format + +Each @r{} is an identifier, +each @r{} is an instance of @samp{syntax-rules}, and +@r{} should be a sequence of one or more expressions. It is an error +for a @r{} to appear more than once in the list of keywords +being bound. + +@emph{Semantics:} +The @r{} is expanded in the syntactic environment +obtained by extending the syntactic environment of the +@samp{let-syntax} expression with macros whose keywords are +the @r{}s, bound to the specified transformers. +Each binding of a @r{} has @r{} as its region. + + +@format +@t{(let-syntax ((when (syntax-rules () + ((when test stmt1 stmt2 ...) + (if test + (begin stmt1 + stmt2 ...)))))) + (let ((if #t)) + (when if (set! if 'now)) + if)) ==> now + +(let ((x 'outer)) + (let-syntax ((m (syntax-rules () ((m) x)))) + (let ((x 'inner)) + (m)))) ==> outer +} +@end format + + +@end deffn + + +@deffn {syntax} letrec-syntax @r{} @r{} + +@emph{Syntax:} +Same as for @samp{let-syntax}. + +@emph{Semantics:} + The @r{} is expanded in the syntactic environment obtained by +extending the syntactic environment of the @samp{letrec-syntax} +expression with macros whose keywords are the +@r{}s, bound to the specified transformers. +Each binding of a @r{} has the @r{} +as well as the @r{} within its region, +so the transformers can +transcribe expressions into uses of the macros +introduced by the @samp{letrec-syntax} expression. + + +@format +@t{(letrec-syntax + ((my-or (syntax-rules () + ((my-or) #f) + ((my-or e) e) + ((my-or e1 e2 ...) + (let ((temp e1)) + (if temp + temp + (my-or e2 ...))))))) + (let ((x #f) + (y 7) + (temp 8) + (let odd?) + (if even?)) + (my-or x + (let temp) + (if y) + y))) ==> 7 +} +@end format + + +@end deffn + +@node Pattern language, , Binding constructs for syntactic keywords, Macros +@subsection Pattern language + + + +A @r{} has the following form: + + +@deffn {} syntax-rules @r{} @r{} @dots{}, + +@emph{Syntax:} +@r{} is a list of identifiers and each @r{} +should be of the form + +@format +@t{(@r{} @r{