[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

3.2 Integrare musica e testo

@translationof Integrating music and text

Questa sezione spiega come integrare LilyPond in vari formati di output.


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

3.2.1 LaTeX

LaTeX costituisce lo standard de facto per le pubblicazioni nell’ambito delle scienze esatte. Si basa sul motore tipografico TeX, che produce la migliore qualità tipografica possibile.

Si veda The Not So Short Introduction to LaTeX per una panoramica sull’uso di LaTeX.

lilypond-book fornisce i seguenti comandi e ambienti per includere la musica nei file LaTeX:

Nel file di input, la musica viene specificata con uno dei seguenti comandi:

 
\begin{lilypond}[le,opzioni,vanno,qui]
  CODICE LILYPOND
\end{lilypond}

\lilypond[le,opzioni,vanno,qui]{ CODICE LILYPOND }

\lilypondfile[le,opzioni,vanno,qui]{nomefile}

\musicxmlfile[le,opzioni,vanno,qui]{nomefile}

Inoltre, \lilypondversion mostra la versione di lilypond impiegata. L’esecuzione di lilypond-book produce un file che può essere ulteriormente elaborato con LaTeX.

Vediamo alcuni esempi. L’ambiente lilypond

 
\begin{lilypond}[quote,fragment,staffsize=26]
  c' d' e' f' g'2 g'2
\end{lilypond}

genera

[image of music]

La versione breve

 
\lilypond[quote,fragment,staffsize=11]{<c' e' g'>}

genera

[image of music]

Attualmente non è possibile includere { o } all’interno di \lilypond{}, dunque questo comando è utile solo se usato con l’opzione fragment.

La lunghezza predefinita del rigo musicale sarà regolata in base ai comandi presenti nel preambolo del documento, ovvero la parte del documento che precede \begin{document}. Il comando lilypond-book li invia a LaTeX per definire la larghezza del testo. La larghezza del rigo nei frammenti musicali è quindi regolato in base alla larghezza del testo. Si noti che questo algoritmo euristico può fallire facilmente; in questi casi occorre usare l’opzione line-width nel frammento musicale.

Ogni frammento chiamerà le seguenti macro se sono state definite dall’utente:

Frammenti di codice selezionati

Talvolta si ha necessità di mostrare degli elementi musicali (ad esempio le legature di portamento e di valore) che proseguono dopo la fine del frammento. È possibile inserirli mandando il rigo a capo e impedendo l’inclusione del restante output di LilyPond.

In LaTeX, si definisce \betweenLilyPondSystem in modo tale che l’inclusione di altri sistemi venga terminata una volta incluso il numero di sistemi richiesti. Dato che \betweenLilyPondSystem viene chiamato la prima volta dopo il primo sistema, includere solo il primo sistema è semplice.

 
\def\betweenLilyPondSystem#1{\endinput}

\begin{lilypond}[fragment]
  c'1\( e'( c'~ \break c' d) e f\)
\end{lilypond}

Se serve una maggior quantità di sistemi, occorre usare un condizionale TeX prima di \endinput. In questo esempio, sostituisci ‘2’ col numero di sistemi che desideri avere nell’output.

 
\def\betweenLilyPondSystem#1{
    \ifnum#1<2\else\expandafter\endinput\fi
}

(Dato che \endinput arresta immediatamente l’elaborazione del file di input corrente, occorre usare \expandafter per ritardare la chiamata di \endinput e far sì che avvenga dopo l’esecuzione di \fi, in modo da bilanciare la condizione \if-\fi.)

Ricorda che la definizione di \betweenLilyPondSystem è efficace finché TeX esce dal gruppo attuale (ad esempio l’ambiente LaTeX) o è sovrascritto da un’altra definizione (che vale, in gran parte dei casi, per il resto del documento). Per reimpostare la definizione, si scrive

 
\let\betweenLilyPondSystem\undefined

nel sorgente LaTeX.

Si potrebbe semplificare la procedura creando una macro TeX

 
\def\onlyFirstNSystems#1{
    \def\betweenLilyPondSystem##1{%
      \ifnum##1<#1\else\expandafter\endinput\fi}
}

e poi specificando prima di ogni frammento la quantità di sistemi desiderata,

 
\onlyFirstNSystems{3}
\begin{lilypond}…\end{lilypond}
\onlyFirstNSystems{1}
\begin{lilypond}…\end{lilypond}

Vedi anche

Esistono opzioni specifiche da linea di comando per lilypond-book e altri dettagli da conoscere quando si elaborano documenti LaTeX; si veda Utilizzo di lilypond-book.


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

3.2.2 Texinfo

@translationof Texinfo

Texinfo è il formato standard per la documentazione del progetto GNU. Un esempio di documento Texinfo è questo stesso manuale. Le versioni del manuale in formato HTML, PDF e Info vengono generate da un documento Texinfo.

lilypond-book fornisce i seguenti comandi e ambienti per includere musica nei file Texinfo:

Nel file di input, la musica viene specificata con uno dei seguenti comandi

 
@lilypond[le,opzioni,vanno,qui]
  IL TUO CODICE LILYPOND
@end lilypond

@lilypond[le,opzioni,vanno,qui]{ IL TUO CODICE LILYPOND }

@lilypondfile[le,opzioni,vanno,qui]{nomefile}

@musicxmlfile[le,opzioni,vanno,qui]{nomefile}

Inoltre, @lilypondversion mostra la versione di lilypond impiegata.

Quando si esegue lilypond-book su di esso, il risultato è un file Texinfo (con estensione ‘.texi’) contenente degli elementi @image per l’HTML, Info e l’output per la stampa. lilypond-book genera le immagini della musica in formati EPS e PDF per l’utilizzo nell’output per la stampa e in formato PNG per l’utilizzo nell’output HTML e Info.

Vediamo due piccoli esempi. Un ambiente lilypond

 
@lilypond[fragment]
c' d' e' f' g'2 g'
@end lilypond

genera

[image of music]

La versione breve

 
@lilypond[fragment,staffsize=11]{<c' e' g'>}

genera

[image of music]

Diversamente da LaTeX, @lilypond{…} non genera un’immagine nel testo. Prende sempre un paragrafo proprio.


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

3.2.3 HTML

@translationof HTML

lilypond-book fornisce i seguenti comandi e ambienti per includere musica nei file HTML:

Nel file di input, la musica viene specificata con uno dei seguenti comandi:

\begin{lilypond}[le,opzioni,vanno,qui] CODICE LILYPOND \end{lilypond}

\lilypond[le,opzioni,vanno,qui]{ CODICE LILYPOND }

\lilypondfile[le,opzioni,vanno,qui]{nomefile}

\musicxmlfile[le,opzioni,vanno,qui]{nomefile}

 
<lilypond le opzioni vanno qui>
  CODICE LILYPOND
</lilypond>

<lilypond le opzioni vanno qui: CODICE LILYPOND />

<lilypondfile le opzioni vanno qui>nomefile</lilypondfile>

<musicxmlfile le opzioni vanno qui>nomefile</musicxmlfile>

Ad esempio, puoi scrivere

 
<lilypond fragment relative=2>
\key c \minor c4 es g2
</lilypond>

lilypond-book genera quindi un file HTML con gli elementi appropriati per le immagini dei frammenti musicali:

[image of music]

Per le immagini in linea, si usa <lilypond … />, dove le opzioni sono distinte dalla musica attraverso i due punti, ad esempio

 
Un po' di musica in <lilypond relative=2: a b c/> una linea di testo.

Per includere file separati, si usa

 
<lilypondfile opzione1 opzione2 …>filename</lilypondfile>

<musicxmlfile> usa la stessa sintassi di <lilypondfile>, ma semplicemente si riferisce a un file MusicXML invece che a un file LilyPond.

Per una lista di opzioni da usare con gli elementi lilypond e lilypondfile, si veda Opzioni dei frammenti musicali.

Inoltre, <lilypondversion/> mostra la versione di lilypond impiegata.


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

3.2.4 DocBook

@translationof DocBook

Per inserire frammenti di codice LilyPond è una buona idea mantenere la conformità del documento DocBook, in modo da poter usare gli editor DocBook, la validazione, etc. Quindi non si usano elementi personalizzati, ma si specifica una convenzione basata sugli elementi DocBook standard.

Convenzioni comuni

Per inserire un frammento di qualsiasi tipo si usano gli elementi mediaobject e inlinemediaobject, in modo che il frammento possa essere formattato in linea o meno. Le opzioni di formattazione del frammento vengono sempre indicate nella proprietà role dell’elemento più interno (si vedano le prossime sezioni). Gli elementi sono scelti in modo da permettere agli editor DocBook di ottenere una formattazione ottimale. I file DocBook da elaborare con lilypond-book devono avere estensione ‘.lyxml’.

Includere un file LilyPond

Si tratta del caso più semplice. Bisogna usare l’estensione ‘.ly’ per il file da includere e inserirlo come uno standard imageobject, con la seguente struttura:

 
<mediaobject>
  <imageobject>
    <imagedata fileref="music1.ly" role="printfilename" />
  </imageobject>
</mediaobject>

Nota che sei libero di usare mediaobject o inlinemediaobject come elemento più esterno.

Includere codice LilyPond

È possibile includere codice LilyPond all’interno di un elemento programlisting in cui il linguaggio sia impostato su lilypond e con la seguente struttura:

 
<inlinemediaobject>
  <textobject>
    <programlisting language="lilypond" role="fragment verbatim staffsize=16 ragged-right relative=2">
\context Staff \with {
  \remove "Time_signature_engraver"
  \remove "Clef_engraver"}
  { c4( fis) }
    </programlisting>
  </textobject>
</inlinemediaobject>

Come si vede, l’elemento più esterno è mediaobject o inlinemediaobject e c’è un textobject che contiene al suo interno il programlisting.

Elaborare il documento DocBook

L’esecuzione di lilypond-book su un file ‘.lyxml’ creerà un documento DocBook valido con estensione ‘.xml’ che potrà essere ulteriormente elaborato. Usando dblatex, creerà automaticamente un file PDF da questo documento. Per generare l’HTML (HTML Help, JavaHelp etc.) si possono usare i fogli di stile DocBook XSL ufficiali; tuttavia è possibile che sia necessario modificarli un po’.


[ < ] [ > ]   [ << ] [ Su ] [ >> ]

This document was generated by gub on Luglio 13, 2020 using texi2html 1.82.

Altre lingue: English, català, deutsch, español, français, 日本語.
A proposito della selezione automatica della lingua.