LilyPond: manual de utilización del programa

# LilyPond — Utilización

Este archivo explica cómo ejecutar los programas que se distribuyen con LilyPond versión 2.14.1. Además sugiere ciertas “buenas prácticas” para una utilización eficiente.

Para mayor información sobre la forma en que este manual se relaciona con el resto de la documentación, o para leer este manual en otros formatos, consulte Manuales. Si le falta algún manual, encontrará toda la documentación en http://www.lilypond.org/.

# 1. Ejecutar LilyPond

Este capítulo detalla los aspectos técnicos de la ejecución de LilyPond.

## 1.1 Utilización normal

Casi todos los usuarios ejecutan LilyPond por medio de un interfaz gráfico; consulte Primeros pasos si no lo ha leído aún.

## 1.2 Utilización desde la línea de órdenes

Esta sección contiene información adicional sobre el uso de LilyPond en la línea de órdenes. Esta forma puede ser preferible para pasarle al programa algunas opciones adicionales. Además, existen algunos programas complementarios ‘de apoyo’ (como `midi2ly`) que sólo están disponibles en la línea de órdenes.

Al hablar de la ‘línea de órdenes’, nos referimos a la consola del sistema operativo. Los usuarios de Windows posiblemente estén más familiarizados con los términos ‘ventana de MS-DOS’ o ‘línea de comandos’; Los usuarios de MacOS X puede que estén más familiarizados con los términos ‘terminal’ o ‘consola’. Éstos podrían requerir algunas configuraciones adicionales y deberían consultar también el apartado MacOS X.

La descripción del uso de esta parte de los sistemas operativos se sale del ámbito de este manual; le rogamos que consulte otros documentos sobre este tema si no le resulta familiar la línea de órdenes.

### Invocar `lilypond`

El ejecutable `lilypond` se puede llamar desde la línea de órdenes de la siguiente manera:

>     lilypond [opción]… archivo…

Cuando se invoca con un nombre de archivo sin extensión, se prueba en primer lugar con la extensión ‘`.ly`’. Para leer la entrada desde stdin, utilice un guión (`-`) en sustitución de archivo.

Cuando se procesa ‘`archivo.ly`’, la salida resultante son los archivos ‘`archivo.ps`’ y ‘`archivo.pdf`’. Se pueden especificar varios archivos; cada uno de ellos se procesará de forma independiente1.

Si ‘`archivo.ly`’ contiene más de un bloque `\score`, el resto de las partituras se obtendrán como salida en archivos numerados, empezando por ‘`archivo-1.pdf`’. además, el valor de `output-suffix` (sufijo de salida) se insertará entre el nombre base y el número. Un archivo de entrada que contenga

>     #(define output-suffix "violin")
>     \score { … }
>     #(define output-suffix "cello")
>     \score { … }

producirá como salida base‘`-violin.pdf`’ y base‘`-cello-1.pdf`’.

#### Instrucciones estándar de la línea de órdenes

Si su terminal (o ventana de órdenes) contempla las redirecciones normales, quizá le sean de utilidad las siguientes instrucciones para redirigir la salida de la consola a un archivo:

- `lilypond archivo.ly 1>salidaestandar.log` para redirigir la salida normal
- `lilypond archivo.ly 2>salidadeerror.log` para redirigir los mensajes de error
- `lilypond archivo.ly &>todo.log` para redirigir toda la salida

Consulte la documentación de su shell para ver si contempla estas opciones, o si la sintaxis es distinta. Observe que son instrucciones del shell y que no tienen nada que ver con lilypond.

### Opciones de la línea de órdenes para `lilypond`

Están contempladas las siguientes opciones:

`-e,--evaluate=expresión`

  Evaluar la expresión de Scheme antes de analizar los archivos ‘`.ly`’. Se pueden pasar varias opciones `-e`, que se evaluarán en secuencia.

  La expresión se evaluará en el módulo `guile-user`, de manera que si quiere usar definiciones dentro de expresión, debe utilizar

  >     lilypond -e '(define-public a 42)'

  en la línea de órdenes, e incluir

  >     #(use-modules (guile-user))

  al principio del archivo ‘`.ly`’.

`-f,--format=formato`

  Formato de la salida. Como `formato` se puede elegir entre `ps`, `pdf` y `png`.

  Ejemplo: `lilypond -fpng archivo.ly`

`-d,--define-default=variable=valor`

  Establece la opción interna del programa variable al valor de Scheme valor. Si no se proporciona ningún valor, se usa #t. Para desactivar una opción se puede anteponer `no-` a la variable, p.ej.:

  >     -dno-point-and-click

  es lo mismo que

  >     -dpoint-and-click='#f'

  A continuación veremos algunas opciones interesantes.

  ‘`help`’

    La ejecución de `lilypond -dhelp` imprimirá todas las opciones `-d` que están disponibles.

  ‘`paper-size`’

    Esta opción establece el tamaño predeterminado del papel,

    >     -dpaper-size=\"letter\"

    Observe que la cadena se debe incluir dentro de comillas escapadas ( `\"` ).

  ‘`safe`’

    No confiar en la entrada ‘`.ly`’.

    Cuando el proceso de tipografía de LilyPond se encuentra disponible a través de un servidor web, SE DEBEN pasar las opciones `--safe` (seguro) o `--jail` (jaula). La opción `--safe` evita que el código de Scheme en línea arme un desastre, por ejemplo

    >     #(system "rm -rf /")
    >     {
    >       c4^#(ly:export (ly:gulp-file "/etc/passwd"))
    >     }

    La opción `-dsafe` funciona evaluando las expresiones en línea de Scheme dentro de un módulo especial seguro. Este módulo seguro deriva del módulo GUILE ‘`safe-r5rs`’, pero añade ciertas funciones del API de LilyPond. Estas funciones se relacionan en ‘`scm/safe-lily.scm`’.

    Además, el modo seguro prohíbe las directivas `\include` e inhabilita el uso de barras invertidas en las cadenas de TeX.

    En el modo seguro, no es posible la importación de variables de LilyPond dentro de Scheme.

    `-dsafe` no detecta la sobreutilización de recursos. Aún es posible hacer que el programa se cuelgue indefinidamente, por ejemplo alimentando el backend con estructuras de datos cíclicas. Por tanto, si se está utilizando LilyPond sobre un servidor web accesible públicamente, el proceso debe limitarse tanto en el uso de CPU como de memoria.

    El modo seguro impide que muchos fragmentos útiles de código de LilyPond se puedan compilar. La opción `--jail` es una alternativa más segura, pero su preparación requiere más trabajo.

  ‘`backend`’

    el formato de salida que usar para el back-end o extremo final. Para el `formato` se puede elegir entre

    `ps`

      para PostScript.

      Los archivos PostScript incluyen las tipografías TTF, Type1 y OTF. No se seleccionan subconjuntos de estas tipografías. Cuando se usan conjuntos de caracteres orientales, esto puede dar lugar a archivos enormes.

    `eps`

      para obtener PostScript encapsulado. Esto vuelca cada una de las páginas/sistemas como un archivo ‘`EPS`’ distinto, sin tipografías, y como un solo archivo ‘`EPS`’ encuadernado con todas las páginas/sistemas con las tipografías incluidas.

      Este modo se usa de forma predeterminada por parte de `lilypond-book`.

    `svg`

      para obtener SVG (gráficos vectoriales escalables).

      Crea un único archivo SVG que contiene toda la salida de música, con las tipografías incrustadas. Se necesita un visor de SVG que contemple las tipografías incrustadas, o un visor de SVG que pueda sustituir las tipografías incrustadas por tipografías OTF. Bajo UNIX, puede usar Inkscape (versión 0.42 o posterior), después de copiar las tipografías OTF del directorio de LilyPond (que normalmente es ‘`/usr/share/lilypond/VERSIÓN/fonts/otf/`’) al directorio ‘`~/.fonts/`’.

    `scm`

      para obtener un volcado de las instrucciones internas de dibujo basadas en Scheme, en bruto.

    `null`

      no producir una salida impresa; tiene el mismo efecto que `-dno-print-pages`.

    Ejemplo: `lilypond -dbackend=svg archivo.ly`

  ‘`preview`’

    Generar un archivo de salida que contenga solamente los títulos de cabecera y el primer sistema de música. Si se usan bloques `\bookpart`, los títulos y el primer sistema de todos los bloques `\bookpart` aparecerán en la salida. Los motores `ps`, `eps` y `svg` contemplan esta opción.

  ‘`print-pages`’

    Generar las páginas completas, el ajuste predeterminado. `-dno-print-pages` es útil en combinación con `-dpreview`.

`-h,--help`

  Mostrar un resumen de las formas de utilización.

`-H,--header=CAMPO`

  Volcar un campo de cabecera al archivo ‘`NOMBREBASE.CAMPO`’

`--include, -I=directorio`

  Añadir el directorio a la ruta de búsqueda de archivos de entrada.

  Se pueden escribir varias opciones -I. La búsqueda se inicia en el primer directorio definido, y si el archivo que se debe incluir no se encuentra, la búsqueda continúa en los directorios siguientes.

`-i,--init=archivo`

  Establecer el archivo de inicio a archivo (predeterminado: ‘`init.ly`’).

`-o,--output=ARCHIVO o CARPETA`

  Establecer el nombre del archivo de salida predeterminado a ARCHIVO o, si existe una carpeta con ese nombre, dirigir la salida hacia CARPETA, tomando el nombre de archivo del documento de entrada. Se añade el sufijo correspondiente (por ejemplo, `.pdf` para PDF) en los dos casos.

`--ps`

  Generar PostScript.

`--png`

  Generar imágenes de las páginas en formato PNG. Esto implica `--ps`. La resolución en PPP de la imagen se puede establecer con

  >     -dresolution=110

`--pdf`

  Generar PDF. Implica `--ps`.

`-j,--jail=usuario,grupo,jaula,directorio`

  Ejecutar `lilypond` en una jaula de chroot.

  La opción `--jail` (jaula) proporciona una alternativa más flexible a la opción `--safe` cuando el proceso de tipografía de LilyPond está disponible a través de un servidor web o cuando LilyPond ejecuta archivos fuente procedentes del exterior.

  La opción `--jail` funciona cambiando la raíz de `lilypond` a jaula justo antes de comenzar el proceso de compilación en sí. Entonces se cambian el usuario y el grupo a los que se han dado en la opción, y el directorio actual se cambia a directorio. Esta instalación garantiza que no es posible, al menos en teoría, escapar de la jaula. Observe que para que funcione `--jail` se debe ejecutar `lilypond` como root, lo que normalmente se puede hacer de una forma segura utilizando `sudo`.

  La instalación de una jaula es un asunto algo delicado, pues debemos asegurarnos de que LilyPond puede encontrar dentro de la jaula todo lo que necesita para poder compilar la fuente. Una configuración típica consta de los siguientes elementos:

  Preparar un sistema de archivos separado

    Se debe crear un sistema de archivos separado para LilyPond, de forma que se pueda montar con opciones seguras como `noexec`, `nodev` y `nosuid`. De esta forma, es imposible ejecutar programas o escribir directamente a un dispositivo desde LilyPond. Si no quiere crear una partición separada, tan sólo tiene que crear un archivo de un tamaño razonable y usarlo para montar un dispositivo loop. El sistema de archivos separado garantiza también que LilyPond nunca pueda escribir en un espacio mayor del que se le permita.

  Preparar un usuario separado

    Se debe usar un usuario y grupo separados (digamos `lily`/`lily`) con bajos privilegios para ejecutar LilyPond dentro de la jaula. Debería existir un solo directorio con permisos de escritura para este usuario, y debe pasarse en el valor directorio.

  Preparar la jaula

    LilyPond necesita leer algunos archivos mientras se ejecuta. Todos estos archivos se deben copiar dentro de la jaula, bajo la misma ruta en que aparecen en el sistema de archivos real de root. Todo el contenido de la instalación de LilyPond (por ejemplo ‘`/usr/share/lilypond`’) se debe copiar.

    Si surgen problemas, la forma más sencilla de rastrearlos es ejecutar LilyPond usando `strace`, lo que le permitirá determinar qué archivos faltan.

  Ejecutar LilyPond

    Dentro de una jaula montada con `noexec` es imposible ejecutar ningún programa externo. Por tanto, LilyPond se debe ejecutar con un backend que no necesite tal programa. Como ya mencionamos, también se debe ejecutar con privilegios del superusuario (que por supuesto perderá inmediatamente), posiblemente usando `sudo`. Es buena idea limitar el número de segundos de tiempo de CPU que LilyPond puede usar (p.ej., usando `ulimit -t`), y, si su sistema operativo lo contempla, el tamaño de la memoria que se puede reservar.

`-v,--version`

  Mostrar la información de la versión.

`-V,--verbose`

  Ser prolijo: mostrar las rutas completas de todos los archivos que se leen, y dar información cronométrica.

`-w,--warranty`

  Mostrar la garantía con que viene GNU LilyPond (¡no viene con NINGUNA GARANTÍA!).

### Variables de entorno

`lilypond` reconoce las siguientes variables de entorno:

`LILYPOND_DATADIR`

  Especifica un directorio en el que los mensajes de localización y de datos se buscarán de forma predeterminada. El directorio debe contener subdirectorios llamados ‘`ly/`’, ‘`ps/`’, ‘`tex/`’, etc.

`LANG`

  Selecciona el idioma de los mensajes de advertencia.

`LILYPOND_GC_YIELD`

  Una variable, como porcentaje, que ajusta el comportamiento de la administración de memoria. Con valores más altos, el programa usa más memoria; con valores más bajos, usa más tiempo de CPU. El valor predeterminado es `70`.

### LilyPond en una jaula de chroot

La preparación del servidor para que ejecute LilyPond en una jaula de chroot es una tarea muy complicada. Los pasos están relacionados más abajo. Los ejemplos que aparecen en cada uno de los pasos son válidos para Ubuntu Linux, y pueden requerir el uso de `sudo` según corresponda.

- Instale los paquetes necesarios: LilyPond, GhostScript e ImageMagick.
- Cree un usuario nuevo con el nombre de `lily`:

  >     adduser lily

  Esto también creará un nuevo grupo para el usuario `lily`, y una carpeta personal, `/home/lily`

- En la carpeta personal del usuario `lily`, cree un archivo para usarlo como un sistema de archivos separado:

  >     dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000

  Este ejemplo crea un archivo de 200MB para su uso como el sistema de archivos de la jaula.

- Cree un dispositivo loop, haga un sistema de archivos y móntelo, después cree una carpeta que sea escribible por el usuario `lily`:

  >     mkdir /mnt/lilyloop
  >     losetup /dev/loop0 /home/lily/loopfile
  >     mkfs -t ext3 /dev/loop0 200000
  >     mount -t ext3 /dev/loop0 /mnt/lilyloop
  >     mkdir /mnt/lilyloop/lilyhome
  >     chown lily /mnt/lilyloop/lilyhome

- En la configuración de los servidores, JAIL será `/mnt/lilyloop` y DIR será `/lilyhome`.
- Cree un gran árbol de directorios dentro de la jaula copiando los archivos necesarios, como se muestra en el guión de ejemplo que aparece más abajo.

  Puede usar `sed` para crear los archivos de copia necesarios para un ejecutable dado:

  >     for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done

### Guión de ejemplo para Ubuntu 8.04 de 32 bits

>     #!/bin/sh
>     ## aquí se fijan los valores predeterminados

>     username=lily
>     home=/home
>     loopdevice=/dev/loop0
>     jaildir=/mnt/lilyloop
>     # prefijo (¡sin la barra inicial!)
>     lilyprefix=usr/local
>     # el directorio en que lilypond se encuentra instalado en el sistema
>     lilydir=/$lilyprefix/lilypond/

>     userhome=$home/$username
>     loopfile=$userhome/loopfile
>     adduser $username
>     dd if=/dev/zero of=$loopfile bs=1k count=200000
>     mkdir $jaildir
>     losetup $loopdevice $loopfile
>     mkfs -t ext3 $loopdevice 200000
>     mount -t ext3 $loopdevice $jaildir
>     mkdir $jaildir/lilyhome
>     chown $username $jaildir/lilyhome
>     cd $jaildir

>     mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
>     chmod a+w tmp

>     cp -r -L $lilydir $lilyprefix
>     cp -L /bin/sh /bin/rm bin
>     cp -L /usr/bin/convert /usr/bin/gs usr/bin
>     cp -L /usr/share/fonts/truetype usr/share/fonts

>     # Ahora la magia de copiar las bibliotecas
>     for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done | sh -s

>     # Los archivos compartidos para ghostscript...
>           cp -L -r /usr/share/ghostscript usr/share
>     # Los archivos compartidos para ImageMagick
>           cp -L -r /usr/lib/ImageMagick* usr/lib

>     ### Ahora, suponiendo que tenemos test.ly en /mnt/lilyloop/lilyhome,
>     ### deberíamos poder ejecutar:
>     ### Observe que /$lilyprefix/bin/lilypond es un guión, que establece
>     ### un valor para LD_LIBRARY_PATH : esto es crucial
>           /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly

## 1.3 Mensajes de error

Pueden aparecer distintos mensajes de error al compilar un archivo:

Advertencia

  Algo tiene un aspecto sospechoso. Si estamos pidiendo algo fuera de lo común, entenderemos el mensaje y podremos ignorarlo. Sin embargo, las advertencias suelen indicar que algo va mal con el archivo de entrada.

Error

  Algo va claramente mal. El paso actual de procesamiento (análisis, interpretación o formateo visual) se dará por terminado, pero el siguiente paso se saltará.

Error fatal

  Algo va claramente mal, y LilyPond no puede seguir. Rara vez sucede esto. La causa más frecuente son las tipografías mal instaladas.

Error de Scheme

  Los errores que ocurren al ejecutar código de Scheme se interceptan por parte del intérprete de Scheme. Si se está ejecutando con las opciones `-V` o `--verbose` (prolijo) entonces se imprime una traza de llamadas de la función ofensiva.

Error de programación

  Ha habido algún tipo de inconsistencia interna. Estos mensajes de error están orientados a ayudar a los programadores y a los depuradores. Normalmente se pueden ignorar. En ocasiones aparecen en cantidades tan grandes que pueden entorpecer la visión de otros mensajes de salida.

Abortado (volcado de core)

  Esto señala un error de programación serio que ha causado la interrupción abrupta del programa. Estos errores se consideran críticos. Si se topa con uno, envíe un informe de fallo.

Se los errores y advertencias se pueden ligar a un punto del archivo de entrada, los mensajes tienen la forma siguiente:

>     archivo:línea:columna: mensaje
>     línea de entrada problemática

Se inserta un salto de línea en la línea problemática para indicar la columna en que se encontró el error. Por ejemplo,

>     prueba.ly:2:19: error: no es una duración: 5
>       { c'4 e'
>                5 g' }

Estas posiciones son la mejor suposición de LilyPond sobre dónde se ha producido el mensaje de error, pero (por su propia naturaleza) las advertencias y errores se producen cuando ocurre algo inesperado. Si no ve un error en la línea que se indica del archivo de entrada, trate de comprobar una o dos líneas por encima de la posición indicada.

Se ofrece más información sobre los errores en la sección Errores comunes.

## 1.4 Errores comunes

Las condiciones de error que se describen más abajo se producen con frecuencia, aunque su causa no es obvia o fácil de encontrar. Una vez se han visto y comprendido, se manejan sin problema.

### La música se sale de la página

La música que se sale de la página por el margen derecho o que aparece exageradamente comprimida está causada casi siempre por haber introducido una duración incorrecta para una nota, produciendo que la nota final de un compás se extienda más allá de la línea divisoria. Esto no es inválido si la nota final de un compás no termina sobre la línea divisoria introducida automáticamente, pues simplemente se supone que la nota se solapa encima del siguiente compás. Pero si se produce una larga secuencia tales notas solapadas, la música puede aparecer comprimida o salirse de la página porque los saltos de línea automáticos solamente se pueden insertar al final de compases completos, es decir, aquellos en que todas las notas terminan antes de o justo al final del compás.

Nota: Una duración incorrecta puede hacer que se inhiban los saltos de línea, lo que llevaría a una sola línea de música muy comprimida o que se salga de la página.

La duración incorrecta se puede encontrar fácilmente si se utilizan comprobaciones de compás, véase número de compás Comprobación de compás y de número de compás.

Si realmente queremos tener una serie de estos compases con notas solapadas, debemos insertar una línea divisoria invisible donde queramos el salto de línea. Para ver más detalles, consulte Barras de compás.

### Aparece un pentagrama de más

Si no se crean los contextos explícitamente con `\new` o con `\context`, se crearán discretamente tan pronto como se encuentra una instrucción que no se puede aplicar a un contexto existente. En partituras sencillas, la creación automática de los contextos es útil, y casi todos los ejemplos de los manuales de LilyPond se aprovechan de esta simplificación. Pero ocasionalmente la creación discreta de contextos puede hacer aflorar pentagramas o partituras nuevos e inesperados. Por ejemplo, podría esperarse que el código siguiente hiciera que todas las notas dentro del pentagrama siguiente estuvieran coloreadas de rojo, pero de hecho el resultado son dos pentagramas, permaneciendo el de abajo con las notas en el color negro predeterminado.

>     \override Staff.NoteHead #'color = #red
>     \new Staff { a }

Esto es así porque no existe ningún contexto `Staff` cuando se procesa la instrucción override de sobreescritura, se crea uno implícitamente y la sobreescritura se aplica a éste, pero entonces la instrucción `\new Staff` crea un pentagrama nuevo y distinto, en el que se colocan las notas. El código correcto para colorear todas las notas de rojo es

>     \new Staff {
>       \override Staff.NoteHead #'color = #red
>       a
>     }

Como segundo ejemplo, si una instrucción `\relative` se escribe dentro de una instrucción `\repeat`, el resultado son dos pentagramas, el segundo desplazado respecto al primero, porque la instrucción `\repeat` genera dos bloques `\relative`, cada uno de los cuales crea implícitamente bloques `Staff` y `Voice`.

>     \repeat unfold 2 {
>       \relative c' { c4 d e f }
>     }

El problema se resuelve instanciando el contexto `Voice` explícitamente:

>     \new Voice {
>       \repeat unfold 2 {
>         \relative c' { c4 d e f }
>       }
>     }

### Error aparente en `../ly/init.ly`

Pueden aparecer varios mensajes de error extraños acerca de errores de sintaxis en ‘`../ly/init.ly`’ si el archivo de entrada no está correctamente formado, por ejemplo si no contiene llaves o comillas correctamente emparejados.

El error más común es la falta de una llave de cierre, (`}`), al final de un bloque `score`. Aquí la solución es obvia: compruebe que el bloque `score` está correctamente cerrado. La estructura correcta de un archivo de entrada está descrita en funcionan los archivos de entrada de LilyPond Cómo funcionan los archivos de entrada de LilyPond. Usando un editor que resalte automáticamente las llaves correspondientes es de mucha ayuda para evitar estos errores.

Una segunda causa frecuente es la falta de un espacio entre la última sílaba de un bloque lyrics (de letra) y la llave de cierre, (`}`). Sin esta separación, se considera que la llave forma parte de la sílaba. Siempre se aconseja asegurarse de que hay espacios antes y después de todas las llaves. Para conocer la importancia de este asunto al utilizar letras de canciones, consulte Introducir la letra.

Este mensaje de error también puede aparecer si se omiten las comillas de terminación (`"`). En este caso, un mensaje de error adicional debería indicar un número de línea cercano al de aquella donde está el error. Las comillas desbalanceadas estarán por lo general una o dos líneas por encima.

### Mensaje de error Unbound variable %

Este mensaje de error aparece al final de los mensajes de la consola o del archivo de registro junto a un mensaje “GUILE señaló un error ...” cada vez que se llame a una rutina de Scheme que (incorrectamente) contenga un comentario de LilyPond en lugar de un comentario de Scheme.

Los comentarios de LilyPond comienzan con un símbolo de porcentaje, (`%`), y no se deben utilizar dentro de las rutinas de Scheme. Los comentarios de Scheme comienzan con punto y coma, (`;`).

### Mensaje de error FT_Get_Glyph_Name

Este mensaje de error aparece en la salida de la consola o en el archivo log de registro si un archivo de entrada contiene un carácter que no es ASCII y no se ha guardado en la codificación de caracteres UTF-8. Para ver más detalles, consulte texto Codificación del texto.

### Advertencia sobre que las afinidades del pentagrama sólo deben decrecer

Esta advertencia puede aparecer si no hay ningún pentagrama en la salida impresa, por ejemplo si sólo hay un contexto `ChordName` y un contexto `Lyrics` como en una hoja guía de acordes. Los mensajes de advertencia se pueden evitar haciendo que uno de los contextos se comporte como un pentagrama, insertando

>     \override VerticalAxisGroup #'staff-affinity = ##f

al comienzo. Para ver más detalles, consulte “Espaciado de las líneas que no son pautas” en de los sistemas Espaciado vertical flexible dentro de los sistemas.

# 2. Actualizar ficheros con `convert-ly`

La sintaxis del lenguaje de entrada de LilyPond se modifica de forma habitual para simplificarla o mejorarla de distintas maneras. Como efecto secundario, el intérprete de LilyPond a menudo ya no es compatible con los archivos de entrada antiguos. Para poner remedio a esto se puede utilizar el programa `convert-ly` para manejar casi todos los cambios de sintaxis entre versiones de LilyPond.

## 2.1 ¿Por qué cambia la sintaxis?

La sintaxis de la entrada de LilyPond cambia de manera ocasional. A medida que el propio LilyPond mejora, la sintaxis (el lenguaje de la entrada) se modifica en consonancia. A veces estos cambios se hacen para conseguir que la entrada sea más fácil de leer y escribir, y otras veces estos cambios son para dar cabida a nuevas funcionalidades de LilyPond.

Por ejemplo, se supone que todos los nombres de las propiedades de `\paper` y de `\layout` están escritos en la dorma `primero-segundo-tercero`. Sin embargo, en la versión 2.11.60, observamos que la propiedad `printallheaders` no seguía esta convención. ¿Deberíamos dejarla como está (confundiendo a los nuevos usuarios que tienen que tratar con un formato de entrada inconsistente), o cambiarla (fastidiando a los usuarios con experiencia que tienen partituras antiguas)? En este caso, decidimos cambiar el nombre a `print-all-headers`. Afortunadamente, este cambio se puede automatizar con nuestra herramienta `convert-ly`.

Sin embargo, lamentablemente `convert-ly` no puede tratar todos los cambios en la entrada. Por ejemplo, en la versión 2.4 y anteriores de LilyPond, los acentos y las letras no inglesas se introducían utilizando LaTeX: por ejemplo, `No\"el` (que significa ‘Navidad’ en francés). En LilyPond 2.6 y siguientes, el carácter especial `ë` debe introducirse directamente en el archivo de LilyPond como un carácter UTF-8. `convert-ly` no puede cambiar todos los caracteres especiales de LaTeX a caracteres de UTF-8; tendrá que actualizar manualmente sus archivos de LilyPond antiguos.

## 2.2 Invocar `convert-ly`

`convert-ly` utiliza los enunciados `\version` de los archivos de entrada para detectar el número de versión antiguo. En casi todos los casos, para actualizar el archivo de entrada basta con ejecutar

>     convert-ly -e miarchivo.ly

dentro del directorio que contiene el archivo. Con esto se actualiza ‘`miarchivo.ly`’ in situ y se preserva el archivo original ‘`miarchivo.ly~`’.

Nota: `convert-ly` siempre convierte hasta el último cambio de sintaxis que es capaz de manejar. Esto significa que el número de `version` que aparece en el archivo convertido suele ser inferior al número de versión del propio programa `convert-ly`.

Para convertir de una vez todos los archivos de entrada que hay en un directorio, use

>     convert-ly -e *.ly

De forma alternativa, si queremos especificar un nombre distinto para el archivo actualizado, preservando el archivo original con el mismo nombre, haga

>     convert-ly miarchivo.ly > minuevoarchivo.ly

El programa imprimirá una relación de los números de versión para los que se han hecho conversiones. Si no se imprime ningún número de versión, el archivo ya está actualizado.

Los usuarios de MacOS X pueden ejecutar esta instrucción bajo el menú `Compilar > Actualizar sintaxis`.

Los usuarios de Windows deben introducir esta instrucción en una ventana del terminal del sistema, que se encuentra por lo general bajo `Inicio > Accesorios > Símbolo del sistema`.

## 2.3 Opciones de la línea de órdenes para `convert-ly`

En general, el programa se invoca de la manera siguiente:

>     convert-ly [opción]… archivo…

Se pueden dar las siguientes opciones:

`-e,--edit`

  Aplicar las conversiones directamente al archivo de entrada, modificándolo in situ.

`-f,--from=versión_de_origen`

  Establece la versión desde la que convertir. Si no aparece esta opción, `convert-ly` tratará de adivinarla, basándose en el enunciado `\version` del archivo. Ejemplo: `--from=2.10.25`

`-n,--no-version`

  Normalmente `convert-ly` añade un indicador `\version` a la salida. La especificación de esta opción lo suprime.

`-s, --show-rules`

  Mostrar todas las conversiones conocidas y salir.

`--to=versión_final`

  Fijar la versión de destino de la conversión. De forma predeterminada se convierte a la última versión disponible.

`-h, --help`

  Imprimir la ayuda de la utilización.

Para actualizar fragmentos de LilyPond en archivos de texinfo, use

>     convert-ly --from=... --to=... --no-version *.itely

Para ver los cambios en la sintaxis de LilyPond entre dos versiones dadas, use

>     convert-ly --from=... --to=... -s

## 2.4 Problemas con `convert-ly`

Al ejecutar convert-ly en una ventana del Símbolo del Sistema bajo Windows sobre un archivo que tiene espacios en el nombre o en la ruta, es necesario encerrar todo el nombre del archivo de entrada con tres (!) pares de comillas:

>     convert-ly """D:/Mis partituras/Oda.ly""" > "D:/Mis partituras/nueva Oda.ly"

Si la orden simple `convert-ly -e *.ly` no funciona porque la instrucción expandida se hace muy larga, en vez de ello la orden `convert-ly` se puede poner dentro de un bucle. Este ejemplo para UNIX actualiza todos los documentos ‘`.ly`’ del directorio actual

>     for f in *.ly; do convert-ly -e $f; done;

En la ventana del terminal de órdenes de Windows, la instrucción correspondiente es

>     for %x in (*.ly) do convert-ly -e """%x"""

No se manejan todos los cambios en el lenguaje. Sólo se puede especificar una opción de salida. La actualización automática de Scheme y los interfaces Scheme de LilyPond es bastante improbable; prepárese para trucar el código de Scheme a mano.

## 2.5 Conversiones manuales

En teoría, un programa como `convert-ly` debería poder tratar cualquier cambio en la sintaxis. Después de todo, un programa de ordenador interpreta las versiones antigua y nueva, por lo que otro programa de ordenador podría traducir un archivo al otro2.

Sin embargo, el proyecto LilyPond cuenta con unos recursos limitados: no todas las conversiones se efectúan automáticamente. A continuación aparece una lista de los problemas conocidos.

    1.6->2.0:
     No siempre convierte el bajo cifrado correctamente, específicamente cosas como {<
    >}.  El comentario de Mats sobre cómo solventar el problema:
       Para poder ejecutar convert-ly
       sobre él, primero sustituí todas las apariciones de '{<' a algo mudo como '{#'
       y de forma similar sustituí '>}' con '&}'.  Después de la conversión, pude
       volver a cambiarlos de '{ #' a '{ <' y de '& }' a '> }'.
     No convierte todos los marcados de texto correctamente.  En sintaxis antigua,
     se podían agrupar varios marcados entre paréntesis, p.ej.
       -#'((bold italic) "cadena")
       Esto se convierte incorrectamente en
       -\markup{{\bold italic} "cadena"}
       en vez del correcto
       -\markup{\bold \italic "cadena"}
    2.0->2.2:
     No maneja \partcombine
     No hace \addlyrics => \lyricsto, esto rompe algunas partituras con varias estrofas.
    2.0->2.4:
     \magnify no se cambia por \fontsize.
        - \magnify #m => \fontsize #f, donde f = 6ln(m)/ln(2)
     remove-tag no se cambia.
        - \applyMusic #(remove-tag '. . .) => \keepWithTag #'. . .
     first-page-number no se cambia.
        - first-page-number no => print-first-page-number = ##f
     Los saltos de línea en las cadenas de cabecera no se convierten.
        - \\\\  como salto de línea en las cadenas de \header  => \markup \center-align <
          "Primera línea" "Segunda línea" >
     Los terminadores de crescendo y decrescendo no se convierten.
        - \rced => \!
        - \rc => \!
    2.2->2.4:
     \turnOff (usado en \set Staff.VoltaBracket = \turnOff) no se convierte
    adecuadamente.
    2.4.2->2.5.9
     \markup{ \center-align <{ ... }> } se tendría que convertir en:
     \markup{ \center-align {\line { ... }} }
     pero ahora, falta el \line.
    2.4->2.6
     Los caracteres especiales de LaTeX como $~$ en el texto no se convierten a UTF8.
    2.8
     \score{} ahora debe empezar con una expresión musical.  Cualquier otra cosa
     (en particular, \header{}) debe ir después de la música.

# 3. Ejecución de `lilypond-book`

Si quiere añadir imágenes de música a un documento, puede hacerlo simplemente de la forma en que lo haría con otros tipos de imágenes. Las imágenes se crean por separado, dando como resultado una salida PostScript o imágenes PNG, y luego se incluyen en un documento de LaTeX o de HTML.

`lilypond-book` ofrece una manera de automatizar este proceso: este programa extrae los fragmentos de música del documento, ejecuta `lilypond` sobre cada uno de ellos, y devuelve como salida el documento con la música sustituida por las imágenes. Las definiciones de ancho de línea y tamaño de letra de la música se ajustan de forma que coincidan con los ajustes de su documento.

Es un programa distinto a `lilypond` propiamente dicho, y se ejecuta sobre la línea de órdenes; para ver más información, consulte Utilización desde la línea de órdenes. Si tiene MacOS 10.3 o 10.4 y experimenta algún problema al ejecutar `lilypond-book`, consulte MacOS X.

Este procedimiento se puede aplicar a documentos de LaTeX, HTML, Texinfo o DocBook.

## 3.1 Un ejemplo de documento musicológico

Ciertos textos contienen ejemplos musicales. Son tratados musicales, cancioneros o manuales como este mismo. Estos textos se pueden hacer a mano, importando simplemente una imagen en formato PostScript en el editor de textos. Sin embargo, hay un procedimiento automático para reducir la carga de trabajo que esto implica los documentos de HTML, LaTeX, Texinfo y DocBook.

Un guión ejecutable llamado `lilypond-book` extrae los fragmentos de música, les da formato y vuelve a poner en su lugar la partitura resultante. A continuación presentamos un pequeño ejemplo de su utilización con LaTeX. El ejemplo contiene también texto explicativo, por lo que no vamos a comentarlo posteriormente.

### Entrada

>     \documentclass[a4paper]{article}

>     \begin{document}

>     Los documentos para \verb+lilypond-book+ pueden mezclar libremente
>     música y texto. Por ejemplo:

>     \begin{lilypond}
>     \relative c' {
>       c2 e2 \times 2/3 { f8 a b } a2 e4
>     }
>     \end{lilypond}

>     Las opciones se escriben entre corchetes.

>     \begin{lilypond}[fragment,quote,staffsize=26,verbatim]
>       c'4 f16
>     \end{lilypond}

>     Los ejemplos grandes se pueden grabar en archivos separados e
>     introducirse con \verb+\lilypondfile+.

>     \lilypondfile[quote,noindent]{screech-boink.ly}

>     (Si es necesario, sustituya @file{screech-boink.ly}
>     por cualquier archivo @file{.ly}
>     situado en el mismo directorio que este archivo.)

>     \end{document}

### Procesado

Guarde el código anterior como un archivo llamado ‘`lilybook.lytex`’, y luego ejecute en un terminal:

>     lilypond-book --output=out --pdf lilybook.lytex
>     lilypond-book (GNU LilyPond) 2.14.1
>     Leyendo lilybook.lytex...
>     ..montañas de mensajes suprimidos..
>     Compilando lilybook.tex...
>     cd out
>     pdflatex lilybook
>     ..montañas de mensajes suprimidos..
>     xpdf lilybook
>     (sustituya xpdf por su visor de PDF favorito)

La ejecución de `lilypond-book` y `latex` crea un gran número de archivos temporales, que podrían abarrotar el directorio de trabajo. Para poner remedio a esto utilice la opción `--output=directorio`. Creará los archivos en un subdirectorio aparte ‘`directorio`’.

Finalmente el resultado del ejemplo de LaTeX que acabamos de mostrar3. Así acaba la sección del tutorial.

### Salida

Los documentos para `lilypond-book` pueden mezclar libremente música y texto. Por ejemplo:

Las opciones se escriben entre corchetes.

>     c'4 f16

Los ejemplos grandes se pueden grabar en archivos separados e introducirse con `\lilypondfile`.

Si se requiere un campo `tagline`, ya sea predeterminado o personalizado, entonces el fragmento completo se debe incluir dentro de una construcción `\book { }`.

    \book{
      \header{
        title = "Una escala en LilyPond"
      }

      \relative c' {
        c d e f g a b c
      }
    }

## 3.2 Integrar música y texto

Aquí vamos a explicar cómo integrar LilyPond con algunos otros formatos de salida.

### 3.2.1 LaTeX

LaTeX es el estándar de facto para la publicación en el mundo de las ciencias exactas. Está construido encima del motor de composición tipográfica TeX, proporcionando la tipografía de mejor calidad que existe.

Consulte The Not So Short Introduction to LaTeX (Introducción no tan breve a LaTeX) para ver una panorámica sobre cómo usar LaTeX.

La música se introduce usando

>     \begin{lilypond}[las,opciones,van,aquí]
>       EL CÓDIGO DE LILYPOND
>     \end{lilypond}

o bien

>     \lilypondfile[las,opciones,van,aquí]{archivo}

o bien

>     \lilypond[las,opciones,van,aquí]{ EL CÓDIGO DE LILYPOND }

De forma adicional, `\lilypondversion` imprime la versión actual de lilypond.

La ejecución de `lilypond-book` deja como resultado un archivo que se puede procesar posteriormente con LaTeX.

A continuación mostramos algunos ejemplos. El entorno `lilypond`

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

produce

La versión corta

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

produce

Por el momento no es posible incluir llaves `{` o `}` dentro de `\lilypond{}`, así que esta instrucción solamente es útil con la opción `fragment`.

El ancho predeterminado de las líneas de música se ajusta mediante el examen de las instrucciones del preámbulo del documento, la parte del documento que está antes de `\begin{document}`. La instrucción `lilypond-book` los envía a LaTeX para averiguar la anchura del texto. El ancho de la línea para los fragmentos de música se ajusta entonces al ancho del texto. Observe que este algoritmo heurístico puede fácilmente fallar; en estos casos es necesario usar la opción `line-width` del fragmento de música.

Cada fragmento ejecutará los macros siguientes si han sido definidos por el usuario:

- `\preLilyPondExample` que se llama antes de la música,
- `\postLilyPondExample` que se llama después de la música,
- `\betweenLilyPondSystem[1]` se llama entre los sistemas si `lilypond-book` ha dividido el fragmento en varios archivos PostScript. Se debe definir de forma que tome un parámetro y recibirá el número de archivos ya incluidos dentro del fragmento actual. La acción predeterminada es simplemente insertar un `\linebreak`.

#### Fragmentos de código seleccionados

A veces es útil mostrar elementos de música (como ligaduras) como si continuasen más allá del final del fragmento. Esto se puede hacer dividiendo el pentagrama y suprimiendo la inclusión del resto de la salida de LilyPond.

En LaTeX, defina `\betweenLilyPondSystem` de tal forma que la la inclusión de otros sistemas se dé por terminada una vez que se ha alcanzado el número deseado de sistemas requeridos. Puesto que `\betweenLilyPondSystem` se llama en primer lugar después del primer sistema, incluir solamente el primer sistema es algo trivial.

>     \def\betweenLilyPondSystem#1{\endinput}

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

Si se necesita un mayor número de sistemas, se tiene que usar un condicional de TeX antes del `\endinput`. En este ejemplo, sustituya el ‘2’ por el número de sistemas que quiere en la salida:

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

(Dado que `\endinput` detiene inmediatamente el procesado del archivo de entrada actual, necesitamos `\expandafter` para posponer la llamada de `\endinput` después de ejecutar `\fi` de manera que la cláusula `\if`-`\fi` esté equilibrada.)

Recuerde que la definición de `\betweenLilyPondSystem` es efectiva hasta que TeX abandona el grupo actual (como el entorno LaTeX) o se sobreescribe por otra definición (lo que casi siempre es por el resto del documento). Para reponer la definición, escriba

>     \let\betweenLilyPondSystem\undefined

dentro de la fuente de LaTeX.

Se puede simplificar esto definiendo un macro de TeX:

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

y luego diciendo solamente cuántos sistemas quiere antes de cada fragmento:

>     \onlyFirstNSystems{3}
>     \begin{lilypond}...\end{lilypond}
>     \onlyFirstNSystems{1}
>     \begin{lilypond}...\end{lilypond}

#### Véase también

Hay opciones de línea de órdenes específicas de `lilypond-book` y otros detalles que conocer para procesar documentos deLaTeX véase Invocar `lilypond-book`.

### 3.2.2 Texinfo

Texinfo es el formato estándar para la documentación del proyecto GNU. Este mismo manual es un ejemplo de documento Texinfo. Las versiones HTML, PDF e Info del manual se hacen a partir del documento Texinfo.

En el archivo de entrada, la música se especifica con

>     @lilypond[las,opciones,van,aquí]
>       EL CÓDIGO DE LILYPOND
>     @end lilypond

o bien

>     @lilypond[las,opciones,van,aquí]{ EL CÓDIGO DE LILYPOND }

o bien

>     @lilypondfile[las,opciones,van,aquí]{archivo}

De forma adicional, `@lilypondversion` imprime la versión actual de lilypond.

Cuando se ejecuta `lilypond-book` sobre el archivo, se obtiene como resultado un archivo Texinfo (con la extensión ‘`.texi`’) que contiene etiquetas `@image` para el HTML, Info y la salida impresa. `lilypond-book` genera imágenes de la música en formatos EPS y PDF para usarlos en la salida impresa, y en formato PNG para usarlos en las salidas HTML e Info.

Aquí podemos ver dos ejemplos sencillos. Un entorno `lilypond`

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

produce

La versión corta

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

produce

No como LaTeX, `@lilypond{...}` no genera una imagen en línea. Siempre consiste en un párrafo para ella sola.

### 3.2.3 HTML

La música se introduce usando

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

`lilypond-book` entonces produce un archivo HTML con las etiquetas de imagen adecuadas para los fragmentos de música:

Para imágenes en línea, utilice `<lilypond ... />`, donde las opciones están separadas de la música por el símbolo de dos puntos, por ejemplo

>     Algo de música dentro de <lilypond relative=2: a b c/> una línea de texto.

Para incluir archivos externos, escriba

>     <lilypondfile opción1 opción2 ...>archivo</lilypondfile>

Para ver una lista de las opciones que utilizar con las etiquetas `lilypond` o `lilypondfile`, véase Opciones de fragmentos de música.

De forma adicional, `<lilypondversion/>` imprime la versión actual de lilypond.

### 3.2.4 DocBook

Para insertad fragmentos de LilyPond es bueno tratar de mantener la conformidad del documento de DocBook, permitiendo así el uso de editores de DocBook, validación, etc. Así pues, no usamos etiquetas personalizadas, sólo especificamos una convención basada en los elementos estándar de DocBook.

### Convenciones usuales

Para insertar toda clase de fragmentos utilizamos los elementos `mediaobject` y `inlinemediaobject`, de forma que nuestros fragmentos puedan ser formateados en línea o no en línea. Las opciones de formateo del fragmento se escriben siempre dentro de la propiedad `role` del elemento más interno (véanse las secciones siguientes). Las etiquetas se eligen de forma que permitan a los editores de DocBook formatear el contenido satisfactoriamente. Los archivos de DocBook que se van a procesar con `lilypond-book` deben tener la extensión ‘`.lyxml`’.

### Incluir un archivo de LilyPond

Este es el caso más sencillo. Debemos usar la extensión ‘`.ly`’ para el archivo incluido, e insertarlo como un `imageobject` estándar, con la estructura siguiente:

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

Observe que puede usar mediaobject o inlinemediaobject como el elemento más externo, a elección suya.

### Incluir código de LilyPond

Se puede incluir código de LilyPond mediante la utilización de un elemento `programlisting`, en que el lenguaje se establece como `lilypond` con la estructura siguiente:

>     <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>

Como puede ver, el elemento más externo es un `mediaobject` o un `inlinemediaobject`, y hay un elemento `textobject` que lleva el `programlisting` en su interior.

### Procesar el documento de DocBook

Al ejecutar `lilypond-book` sobre el archivo ‘`.lyxml`’ se creará un documento de DocBook válido que se puede procesar posteriormente con la extensión ‘`.xml`’. Si usa dblatex, creará un archivo PDF a partir de este documento automáticamente. Para la generación de HTML (HTML Help, JavaHelp, etc.) puede usar las hojas de estilo oficiales XSL de DocBook, aunque es posible que tenga que aplicarles algún tipo de personalización.

## 3.3 Opciones de fragmentos de música

Durante los próximos párrafos, una ‘instrucción de LilyPond’ se refiere a cualquier instrucción descrita en las secciones anteriores que se maneja por parte de `lilypond-book` para que produzca un fragmento de música. Por simplicidad, las instrucciones de LilyPond solamente se muestran en la sintaxis de LaTeX.

Observe que la cadena de opciones se analiza de izquierda a derecha; si una opción aparece varias veces, se toma la última solamente.

Están disponibles las siguientes opciones para las instrucciones de LilyPond:

`staffsize=altura`

  Establecer la altura del pentagrama como altura, medida en puntos.

`ragged-right`

  Producir líneas no justificadas por la derecha y con espaciado natural, es decir, se añade `ragged-right = ##t` al fragmento de LilyPond. Esta es la opción predeterminada para la instrucción `\lilypond{}` si no está presente la opción `line-width`. También es la opción predeterminada para el entorno `lilypond` si está establecida la opción `fragment`, y no se especifica la anchura de la línea explícitamente.

`noragged-right`

  Para fragmentos de una sola línea, permitir que la longitud del pentagrama se amplíe hasta igualar la anchura de la línea, es decir, se añade `ragged-right = ##f` al fragmento de LilyPond.

`line-width`
`line-width=tamaño\unidades`

  Establecer el ancho de línea como tamaño, utilizando unidades como unidad. unidades es una de las siguientes cadenas: `cm`, `mm`, `in` o `pt`. Esta opción afecta a la salida de LilyPond (esto es, a la longitud del pentagrama del fragmento musical), no al formato del texto.

  Si se usa sin ningún argumento, se establece el ancho de la línea a un valor predeterminado (calculado con un algoritmo heurístico).

  Si no se da ninguna opción `line-width`, `lilypond-book` trata de adivinar un valor predeterminado para los entornos `lilypond` que no usan la opción `ragged-right`.

`papersize=cadena`

  Donde cadena es un tamaño del papel definido en el archivo ‘`scm/paper.scm`’, es decir, `a5`, `quarto`, `11x17`, etc.

  Los valores no definidos en el archivo ‘`scm/paper.scm`’ se ignoran, se emite una advertencia y el fragmento se imprime utilizando el tamaño predeterminado `a4`.

`notime`

  No imprimir la indicación de compás, y desactivar las indicaciones temporales de la música (indicación del compás y líneas divisorias).

`fragment`

  Hacer que `lilypond-book` añada algunos códigos necesarios para que podamos escribir simplemente, por ejemplo,

  >     c'4

  sin `\layout`, `\score`, etc.

`nofragment`

  No incluir el código adicional que completa la sintaxis de LilyPond en los fragmentos de música. Al ser la opción predeterminada, `nofragment` normalmente es redundante.

`indent=tamaño\unidades`

  Establecer el sangrado del primer sistema de pentagramas como tamaño, utilizando unidades como unidad. unidades es una de las siguientes cadenas: `cm`, `mm`, `in` o `pt`. Esta opción afecta a LilyPond, no al formato del texto.

`noindent`

  Establecer el sangrado del primer sistema de la música como cero. Esta opción afecta a LilyPond, no al formato del texto. Puesto que el valor predeterminado es que no haya ningún sangrado, `noindent` normalmente es redundante.

`quote`

  Reducir la longitud de la línea de un fragmento musical en 2*0.4in (pulgadas) y colocar la salida dentro de un bloque de cita (quotation). El valor de ‘0.4in’ se puede controlar con la opción `exampleindent`.

`exampleindent`

  Establecer la longitud del sangrado que la opción `quote` aplica al fragmento musical.

`relative`
`relative=n`

  Usar el modo de octava relativa. De forma predeterminada, las notas se especifican con relación al Do central. El argumento entero opcional especifica la octava de la nota inicial, donde el valor predeterminado `1` es el Do central. La opción `relative` sólo funciona cuando está establecida la opción `fragment`, de manera que `fragment` viene implicada automáticamente por `relative`, independientemente de la presencia de `fragment` o de `nofragment` en la fuente.

LilyPond utiliza también `lilypond-book` para producir su propia documentación. Para hacerlo, están a nuestra disposición ciertas opciones algo esotéricas para los fragmentos musicales.

`verbatim`

  El argumento de una instrucción de LilyPond se copia al archivo de salida y se incluye dentro de un bloque «verbatim» o preformateado, seguido del texto que se escriba con la opción `intertext` (que no funciona aún); después se imprime la música en sí. Esta opción no funciona bien con `\lilypond{}` si forma parte de un párrafo.

  Si se usa la opción `verbatim` dentro de una instrucción `lilypondfile`, es posible incluir con estilo preformateado sólo una parte del archivo fuente. Si el archivo de código fuente contiene un comentario que contiene ‘`begin verbatim`’ (sin las comillas), la cita del bloque de estilo preformateado empezará después de la última vez que aparezca este comentario; de forma similar, la cita del bloque preformateado se detendrá justo antes de la primera vez que aparezca un comentario que contenga ‘`end verbatim`’, si lo hay. En el siguiente ejemplo de código fuente, la música se interpreta en el modo relativo, pero la cita preformateada no presentará el bloque `relative`, es decir

  >     \relative c' { % begin verbatim
  >       c4 e2 g4
  >       f2 e % end verbatim
  >     }

  se imprimirá como un bloque preformateado como

  >       c4 e2 g4
  >       f2 e

  Si queremos traducir los comentarios y los nombres de variable en la salida literal pero no en el código fuente, podemos establecer el valor de la variable de entorno `LYDOC_LOCALEDIR` a la ruta de un directorio; este directorio debe contener un árbol de catálogos de mensajes ‘`.mo`’ con `lilypond-doc` como dominio.

`addversion`

  (Sólo para la salida de Texinfo.) Anteponer la línea `\version @w{"@version{}"}` a la salida de `verbatim`.

`texidoc`

  (Sólo para la salida de Texinfo.) Si se llama a `lilypond` con la opción ‘`--header=texidoc`’, y el archivo que se procesa se llama ‘`fulanito.ly`’, crea un archivo ‘`fulanito.texidoc`’ si existe un campo `texidoc` dentro del bloque `\header` de cabecera. La opción `texidoc` hace que `lilypond-book` incluya estos archivos, añadiendo su contenido como un bloque de documentación inmediatamente antes del fragmento musical.

  Suponiendo que el archivo ‘`fulanito.ly`’ contiene

  >     \header {
  >       texidoc = "Este archivo es un ejemplo de una sola nota."
  >     }
  >     { c'4 }

  y que tenemos lo siguiente en nuestro documento de Texinfo ‘`prueba.texinfo`’

  >     @lilypondfile[texidoc]{fulanito.ly}

  la siguiente orden da como salida el resultado esperado:

  >     lilypond-book --pdf --process="lilypond \
  >       -dbackend=eps --header=texidoc" test.texinfo

  La mayoría de los documentos de prueba de LilyPond (en el directorio ‘`input`’ de la distribución) son pequeños archivos ‘`.ly`’ que tienen exactamente este aspecto.

  Por motivos de localización de idioma, si el documento de Texinfo contiene `@documentlanguage LANG` y la cabecera de ‘`loquesea.ly`’ contiene un campo `texidocLANG`, y `lilypond` se ejecuta con ‘`--header=texidocLANG`’, entonces se incluirá ‘`loquesea.texidocLANG`’ en lugar de ‘`loquesea.texidoc`’.

`lilyquote`

  (Sólo para la salida de Texinfo.) Esta opción es similar a quote, pero se pone dentro del bloque de cita solamente el fragmento de música (y el bloque preformateado que se da en la opción `verbatim`). Esta opción es útil si queremos citar (`quote`) el fragmento musical pero no el bloque de documentación `texidoc`.

`doctitle`

  (Sólo para la salida de Texinfo.) Esta opción funciona de forma parecida a la opción `texidoc`: si `lilypond` se llama con la opción ‘`--header=doctitle`’, y el archivo que procesar se llama ‘`loquesea.ly`’ y contiene un campo `doctitle` en el bloque `\header`, crea un archivo ‘`loquesea.doctitle`’. Cuando se usa la opción `doctitle`, el contenido de ‘`loquesea.doctitle`’, que debería ser una línea única de texto, se inserta en el documento de Texinfo como `@lydoctitle texto`. `@lydoctitle` debe ser un macro definido en el documento de Texinfo. La misma indicación referida al procesado de `texidoc` con idiomas localizados se aplica a `doctitle`.

`nogettext`

  (Sólo para la salida de Texinfo.) No traducir los comentarios y nombres de variable en el fragmento de código literal citado.

`printfilename`

  Si un archivo de entrada de LilyPond se incluye con `\lilypondfile`, imprimir el nombre del archivo inmediatamente antes del fragmento musical. Para la salida HTML, esto es un enlace. Sólo se imprime el nombre base del archivo, es decir, se elimina la parte del directorio de la ruta del archivo.

## 3.4 Invocar `lilypond-book`

`lilypond-book` produce un archivo con una de las siguientes extensiones: ‘`.tex`’, ‘`.texi`’, ‘`.html`’ o ‘`.xml`’, dependiendo del formato de salida. Todos los archivos ‘`.tex`’, ‘`.texi`’ y ‘`.xml`’ necesitan un procesado posterior.

### Instrucciones específicas de formato

#### LaTeX

Hay dos formas de procesar el documento en LaTeX para su impresión o publicación: hacer un archivo PDF directamente con PDFLaTeX, o generar un archivo PostScript con LaTeX a través de un traductor de DVI a PostScript como `dvips`. la primera forma es más sencilla y es la que se recomienda4, y cualquiera que sea el método que utilice, podrá convertir fácilmente entre PostScript y PDF con herramientas como `ps2pdf` y `pdf2ps` que vienen incluidas con GhostScript.

Para producir un archivo PDF por medio de PDFLaTeX, utilice

>     lilypond-book --pdf miarchivo.pdftex
>     pdflatex miarchivo.tex

Para producir una salida PDF por medio de LaTeX/`dvips`/`ps2pdf`, debe hacer

>     lilypond-book miarchivo.lytex
>     latex miarchivo.tex
>     dvips -Ppdf miarchivo.dvi
>     ps2pdf miarchivo.ps

El archivo ‘`.dvi`’ creado por este proceso no contiene las cabezas de las notas. Esto es normal; si sigue las instrucciones, las cabezas aparecerán en los archivos ‘`.ps`’ y ‘`.pdf`’.

La ejecución de `dvips` puede dar como resultado algunas advertencias sobre las fuentes tipográficas; son inocuas y se pueden ignorar. Si está ejecutando `latex` en modo de dos columnas, recuerde añadir `-t landscape` a las opciones de `dvips`.

#### Texinfo

Para producir un documento de Texinfo (en cualquier formato de salida), siga el procedimiento normal para Texinfo, esto es: o bien llame a `texi2pdf` o a `texi2dvi` o a `makeinfo`, según el formato de la salida que quiera crear. Consulte la documentación de Texinfo para ver más detalles.

### Opciones de la línea de órdenes

`lilypond-book` acepta las siguientes opciones de la línea de órdenes:

`-f formato`
`--format=formato`

  Especificar el tipo del documento que se va a procesar: `html`, `latex`, `texi` (predeterminado) o `docbook`. Si falta esta opción, `lilypond-book` tratará de detectar el formato automáticamente, véase Extensiones de nombres de archivo. Por el momento, `texi` es lo mismo que `texi-html`.

`-F filtro`
`--filter=filtro`

  Conducir los fragmentos a través de filter por medio de una tubería. `lilypond-book` no obedecerá –filter y –process al mismo tiempo. Por ejemplo,

  >     lilypond-book --filter='convert-ly --from=2.0.0 -' mi-libro.tely

`-h`
`--help`

  Imprimir un breve mensaje de ayuda.

`-I directorio`
`--include=directorio`

  Añadir directorio a la ruta de inclusión. `lilypond-book` busca también los fragmentos ya compilados en la ruta de inclusión, y no los vuelve a escribir en el directorio de salida, así que en ciertos casos es necesario invocar instrucciones de procesado posteriores como `makeinfo` o `latex` con las mismas opciones `-I directorio`.

`-o directorio`
`--output=directorio`

  Colocar los archivos generados en el directorio. La ejecución de `lilypond-book` genera montañas de pequeños archivos que luego procesará LilyPond. Para evitar toda esta parafernalia en el mismo directorio que la fuente, utilice la opción ‘`--output`’, y cambie a este directorio antes de ejecutar `latex` o `makeinfo`.

  >     lilypond-book --output=out miarchivo.lytex
  >     cd out
  >     ...

`--skip-lily-check`

  Evitar el fracaso si no se encuentra ninguna salida de lilypond. Se usa para la documentación de LilyPond en formato Info sin imágenes.

`--skip-png-check`

  Evitar el fracaso si no se encuentran las imágenes PNG de los archivos EPS. Se usa para la documentación de LilyPond en formato Info sin imágenes.

`--lily-output-dir=directorio`

  Escribir archivos lily-XXX en el directorio directorio, enlazar en el directorio de `--output`. Use esta opción para ahorrar tiempo de construcción para documentos de distintos directorios que comparten muchos fragmentos idénticos de código.

`--info-images-dir=directorio`

  Dar formato a la salida de Texinfo de manera que Info busque las imágenes de música en directorio.

`--latex-program=prog`

  Ejecutar el programa `prog` en vez de `latex`. Esto es útil si nuestro documento se procesa con `xelatex`, por ejemplo.

`--left-padding=cantidad`

  Rellenar las cajas EPS en esta medida, alrededor. cantidad se mide en milímetros, y es 3.0 como valor predeterminado. Esta opción se debe usar si las líneas de música están muy pegadas al margen derecho.

  El ancho de un sistema que está muy ajustado dentro de su rectángulo puede variar, debido a los elementos de notación que están pegados al margen izquierdo, como los números de compás y el nombre del instrumento. Esta opción acorta todas las líneas y las mueve a la derecha en la misma medida.

`-P instrucción`
`--process=instrucción`

  Procesar los fragmentos de LilyPond utilizando instrucción. La instrucción predeterminada es `lilypond`. `lilypond-book` no obedecerá a `--filter` y a `--process` al mismo tiempo.

`--pdf`

  Crear archivos PDF para su uso con PDFLaTeX.

`--use-source-file-names`

  Escribir los archivos de salida de los fragmentos de música con el mismo nombre de base que su archivo fuente. Esta opción sólo funciona para fragmentos incluidos con `lilypondfile` y sólo si los directorios determinados por las opciones `--output-dir` y `--lily-output-dir` son distintos.

`-V`
`--verbose`

  Ser prolijo.

`-v`
`--version`

  Imprimir la información de la versión.

#### Advertencias y problemas conocidos

La instrucción de Texinfo `@pagesizes` no se interpreta. De forma similar, las instrucciones de LaTeX que cambian los márgenes y anchos de línea después del preámbulo se ignoran.

Sólo se procesa el primer `\score` de un bloque LilyPond.

## 3.5 Extensiones de nombres de archivo

Puede usar cualquier extensión para el nombre del archivo de entrada, pero si no usa la extensión recomendada para un formato en particular tendrá que especificar manualmente el formato de salida; para ver más detalles, consulte Invocar `lilypond-book`. En caso contrario, `lilypond-book` selecciona automáticamente el formato de salida basándose en la extensión del nombre del archivo de entrada.

> extensión | formato de salida
> ‘`.html`’ | HTML
> ‘`.htmly`’ | HTML
> ‘`.itely`’ | Texinfo
> ‘`.latex`’ | LaTeX
> ‘`.lytex`’ | LaTeX
> ‘`.lyxml`’ | DocBook
> ‘`.tely`’ | Texinfo
> ‘`.tex`’ | LaTeX
> ‘`.texi`’ | Texinfo
> ‘`.texinfo`’ | Texinfo
> ‘`.xml`’ | HTML

Si usa la misma extensión para el archivo de entrada que la que usa `lilypond-book` para el archivo de salida, y si el archivo de entrada está en el mismo directorio que el directorio de trabajo de `lilypond-book`, debe usar la opción `--output` para que funcione `lilypond-book`, pues en caso contrario saldrá con un mensaje de error como “La salida sobreescribirá al archivo de entrada”.

## 3.6 Plantillas de lilypond-book

Estas plantillas se usan para `lilypond-book`. Si no está familiarizado con este programa, consulte LilyPond-book.

### 3.6.1 LaTeX

Podemos insertar fragmentos de LilyPond dentro de un documento de LaTeX.

>     \documentclass[]{article}

>     \begin{document}

>     Texto normal en LaTeX.

>     \begin{lilypond}
>     \relative c'' {
>       a4 b c d
>     }
>     \end{lilypond}

>     Más texto en LaTeX, y las opciones dentro de los corchetes.

>     \begin{lilypond}[fragment,relative=2,quote,staffsize=26,verbatim]
>     d4 c b a
>     \end{lilypond}
>     \end{document}

### 3.6.2 Texinfo

Podemos insertar fragmentos de LilyPond dentro de Texinfo; de hecho, todo el presente manual está escrito en Texinfo.

>     \input texinfo @node Top
>     @top

>     Texto en Texinfo

>     @lilypond
>     \relative c' {
>       a4 b c d
>     }
>     @end lilypond

>     Más texto en Texinfo, y las opciones dentro de los corchetes.

>     @lilypond[verbatim,fragment,ragged-right]
>     d4 c b a
>     @end lilypond

>     @bye

### 3.6.3 html

>     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
>     <!-- header_tag -->
>     <HTML>
>     <body>

>     <p>
>     Los documentos para lilypond-book pueden mezclar música y texto libremente.  Por
>     ejemplo,
>     <lilypond>
>     \relative c'' {
>       a4 b c d

>     <p>
>     Otro poco de lilypond, esta vez con opciones:

>     <lilypond fragment quote staffsize=26 verbatim>
>     a4 b c d
>     </lilypond>
>     </p>

>     </body>
>     </html>

### 3.6.4 xelatex

    \documentclass{article}
    \usepackage{ifxetex}
    \ifxetex
    %xetex specific stuff
    \usepackage{xunicode,fontspec,xltxtra}
    \setmainfont[Numbers=OldStyle]{Times New Roman}
    \setsansfont{Arial}
    \else
    %Esto se puede dejar vacío si no vamos a utilizar pdftex
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{mathptmx}%Times
    \usepackage{helvet}%Helvetica
    \fi
    %Aquí insertamos todos los paquetes que pdftex también entiende
    \usepackage[ngerman,finnish,english]{babel}
    \usepackage{graphicx}

    \begin{document}
    \title{Un documento breve con LilyPond y xelatex}
    \maketitle

    Las instrucciones \textbf{font} normales dentro del \emph{texto}
    funcionan, porque \textsf{están contempladas por \LaTeX{} y XeteX.}
    Si queremos usar instrucciones específicas como \verb+\XeTeX+, debemos
    incluirlas de nuevo dentro de un entorno \verb+\ifxetex+.  Podemos
    utilizar esto para imprimir la instrucción \ifxetex \XeTeX{} \else
    XeTeX \fi que no es conocida para el \LaTeX\ normal.

    Dentro del texto normal podemos utilizar instrucciones de LilyPond
    fácilmente, de esta forma:

    \begin{lilypond}
    {a2 b c'8 c' c' c'}
    \end{lilypond}

    \noindent
    y así sucesivamente.

    La fuente tipográfica de los fragmentos, establecida con LilyPond,
    tendrá que establecerse desde dentro del fragmento. Para esto puede
    leer la parte de lilypond-book en el manual de utilización.

    \selectlanguage{ngerman}
    Auch Umlaute funktionieren ohne die \LaTeX -Befehle, wie auch alle
    anderen
    seltsamen Zeichen: __ ______, wenn sie von der Schriftart
    unterst__tzt werden.
    \end{document}

## 3.7 Compartir el índice general

Estas funciones ya existen en el paquete OrchestralLily:

>     http://repo.or.cz/w/orchestrallily.git

Para conseguir más flexibilidad en el manejo del texto, algunos usuarios prefieren exportar la el índice general o tabla de contenidos desde lilypond y leerla dentro de LaTeX.

#### Exportación del índice general desde LilyPond

Esto supone que nuestra partitura tiene varios movimientos dentor del mismo archivo de salida de lilypond.

    #(define (oly:create-toc-file layout pages)
      (let* ((label-table (ly:output-def-lookup layout 'label-page-table)))
        (if (not (null? label-table))
          (let* ((format-line (lambda (toc-item)
                 (let* ((label (car toc-item))
                        (text  (caddr toc-item))
                        (label-page (and (list? label-table)
                                         (assoc label label-table)))
                        (page (and label-page (cdr label-page))))
                   (format #f "~a, section, 1, {~a}, ~a" page text label))))
                 (formatted-toc-items (map format-line (toc-items)))
                 (whole-string (string-join formatted-toc-items ",\n"))
                 (output-name (ly:parser-output-name parser))
                 (outfilename (format "~a.toc" output-name))
                 (outfile (open-output-file outfilename)))
            (if (output-port? outfile)
                (display whole-string outfile)
                (ly:warning (_ "Unable to open output file ~a for the TOC information") outfilename))
            (close-output-port outfile)))))

    \paper {
      #(define (page-post-process layout pages) (oly:create-toc-file layout pages))
    }

#### Importación del índice general dentro de LaTeX

En LaTeX, la cabecera debe incluir lo siguiente:

    \usepackage{pdfpages}
    \includescore{nombredelapartitura}

donde `\includescore` está definido como:

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % \includescore{PossibleExtension}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    % Leer las entradas del índice general para un archivo PDF
    % a partir del archivo .toc correspondeiente.
    % Esto requiere bastantes trucos de latex, porque leer cosas de un archivo
    % e insertarlo dentro de los argumentos de un macro no es posible
    % fácilmente.

    % Solución de Patrick Fimml en el canal #latex el 18 de abril de 2009:
    % \readfile{filename}{\variable}
    % lee el contenido del archivo en \variable (no definida si el
    % archivo no existe)
    \newread\readfile@f
    \def\readfile@line#1{%
    {\catcode`\^^M=10\global\read\readfile@f to \readfile@tmp}%
    \edef\do{\noexpand\g@addto@macro{\noexpand#1}{\readfile@tmp}}\do%
    \ifeof\readfile@f\else%
    \readfile@line{#1}%
    \fi%
    }
    \def\readfile#1#2{%
    \openin\readfile@f=#1 %
    \ifeof\readfile@f%
    \typeout{No TOC file #1 available!}%
    \else%
    \gdef#2{}%
    \readfile@line{#2}%
    \fi
    \closein\readfile@f%
    }%

    \newcommand{\includescore}[1]{
    \def\oly@fname{\oly@basename\@ifmtarg{#1}{}{_#1}}
    \let\oly@addtotoc\undefined
    \readfile{\oly@xxxxxxxxx}{\oly@addtotoc}
    \ifx\oly@addtotoc\undefined
    \includepdf[pages=-]{\oly@fname}
    \else
    \edef\includeit{\noexpand\includepdf[pages=-,addtotoc={\oly@addtotoc}]
    {\oly@fname}}\includeit
    \fi
    }

## 3.8 Métodos alternativos para mezclar texto y música

Otras formas de mezclar texto y música (sin `lilypond-book`) se estudian en Insertar la salida de LilyPond dentro de otros programas.

# 4. Programas externos

LilyPond es capaz de interactuar con otros programas de diversas maneras.

## 4.1 Apuntar y pulsar

«Point and click» (apuntar y pulsar con el ratón) le da la posibilidad de localizar notas del código de entrada pulsando sobre ellas dentro del visor de PDF. Ello facilita encontrar los fragmentos de la entrada que producen algún tipo de error en la partitura.

Cuando esta funcionalidad está activada, LilyPond añade hiper-enlaces al archivo PDF. Estos hiper-enlaces se envían al navegador de web, que a su vez abre un editor de texto con el cursor situado en el lugar correcto.

Para conseguir que esta cadena funcione, tendrá que configurar el visor de PDF de forma que siga los hiper-enlaces usando el guión ‘`lilypond-invoke-editor`’ proporcionado con LilyPond.

Para Xpdf sobre Unix, lo siguiente debe estar presente en ‘`xpdfrc`’5

>     urlCommand     "lilypond-invoke-editor %s"

El programa ‘`lilypond-invoke-editor`’ es un pequeño programa de apoyo. Invoca un editor para las URIs especiales de `textedit`, y lanza un navegador de web para el resto. Comprueba la variable de entorno `EDITOR` en busca de los siguientes patrones,

`emacs`

  esto invoca a

  >     emacsclient --no-wait +línea:columna archivo

`vim`

  esto invoca a

  >     gvim --remote +:línea:normcarácter archivo

`nedit`

  esto invoca a

  >       nc -noask +línea archivo'

La variable de entorno `LYEDITOR` se utiliza para sobreescribir esto. Contiene la instrucción de línea de órdenes para abrir el editor, donde `%(archivo)s`, `%(columna)s` y `%(línea)s` se sustituyen por el archivo, columna y línea respectivamente. El ajuste

>     emacsclient --no-wait +%(línea)s:%(columna)s %(archivo)s

para `LYEDITOR` equivale a la invocación estándar de emacsclient.

Los enlaces de apuntar y pulsar aumentan significativamente el tamaño de los archivos de salida. Para reducir el tamaño de los archivos PDF y PS, la posibilidad de apuntar y pulsar se puede desactivar escribiendo

>     \pointAndClickOff

dentro de un archivo ‘`.ly`’. Se puede activar explícitamente la posibilidad de apuntar y pulsar con

>     \pointAndClickOn

De forma alternativa, puede desactivar la posibilidad de apuntar y pulsar con una opción de la línea de órdenes:

>     lilypond -dno-point-and-click archivo.ly

Nota: Recuerde desactivar siempre la posibilidad Apuntar y pulsar en cualquier archivo de LilyPond que vaya a ser distribuido, para evitar incluir información de rutas de archivo relativas a su equipo dentro del archivo .pdf, lo que puede plantear un problema de seguridad.

## 4.2 Apoyo respecto de los editores de texto

Existe apoyo por parte de varios editores de texto para LilyPond.

### Modo de Emacs

Emacs tiene un ‘`lilypond-mode`’, que proporciona autocompleción de teclado, sangrado, compensación de paréntesis específica de LilyPond y resaltado de sintaxis con colores, útiles combinaciones de teclas para compilar y leer los manuales de LilyPond utilizando Info. Si el ‘`lilypond-mode`’ no está instalado en su sistema, siga leyendo.

Está incluido un modo de Emacs para escribir música y ejecutar LilyPond, en el archivo del código fuente dentro del directorio ‘`elisp`’. Haga `make install` para instalarlo dentro de elispdir. El archivo ‘`lilypond-init.el`’ se debe situar en load-path‘`/site-start.d/`’ o añadirse a su ‘`~/.emacs`’ o ‘`~/.emacs.el`’.

Como usuario, puede querer añadir su ruta a las fuentes (p.ej. ‘`~/site-lisp/`’) a su load-path añadiendo la siguiente línea (modificada) a su ‘`~/.emacs`’

>     (setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))

### Modo de Vim

Para Vim, se proporcionan para su uso con LilyPond un plug-in o complemento para el tipo de archivo, un modo de sangrado y un modo de resaltado de sintaxis. Para habilitar todas estas posibilidades, cree (o modifique) su archivo ‘`$HOME/.vimrc`’ de manera que contenga estas tres líneas en el mismo orden:

>     filetype off
>     set runtimepath+=/usr/local/share/lilypond/current/vim/
>     filetype on

Si LilyPond no está instalado en el directorio ‘`/usr/local/`’, cambie esta ruta de una forma adecuada. Este asunto se trata en Otras fuentes de información.

### Otros editores

Otros editores (de texto así como gráficos) tienen apoyo para LilyPond, pero sus archivos de configuración especiales no se distribuyen con LilyPond. Debe consultar la documentación de estos programas para obtener más información. Estos editores se encuentran relacionaddos en Entornos mejorados.

## 4.3 Conversión desde otros formatos

También se puede escribir la música a través de su importación desde otros formatos. Este capítulo trata de documentar las herramientas incluidas en la distribución que permiten hacerlo. Existen otras herramientas que producen código de entrada de LilyPond, como por ejemplo secuenciadores con interfaz gráfico y convertidores de XML. Consulte el website para ver más detalles.

Son programas distintos a `lilypond` propiamente dicho, y se ejecutan desde la línea de órdenes; consulte Utilización desde la línea de órdenes para ver más información. Si tiene MacOS 10.3 o 10.4 y tiene problemas para ejecutar alguno de estos guiones, p.ej. `convert-ly`, consulte MacOS X.

#### Advertencias y problemas conocidos

Por desgracia no disponemos de los recursos necesarios para poder mantener estos programas; le rogamos que los tome “tal cual están”. Se agradecerá el envío de parches correctores, pero los informes de fallo casi con certeza no se resolverán a medio plazo.

### 4.3.1 Invocar `midi2ly`

`midi2ly` traduce un archivo MIDI de tipo 1 a un archivo de código fuente de LilyPond.

El MIDI (Music Instrument Digital Interface, Interfase Digital para Instrumentos Musicales) es un estándar para instrumentos digitales: especifica la interconexión física, un protocolo en serie y un formato de archivo. El formato de archivo MIDI es un formato estándar de facto para exportar música de otros programas, por lo que esta posibilidad puede ser de utilidad al importar archivos de un programa que tiene un convertidor para un formato directo.

`midi2ly` convierte las pistas en contextos de Staff) y los canales en contextos de Voice. Se utiliza el modo relativo para las alturas, y las duraciones se escriben solamente cuando es necesario.

Es posible grabar un archivo MIDI usando un teclado digital y convertirlo después a ‘`.ly`’. Sin embargo, los intérpretes humanos no son lo suficientemente exactos desde el punto de vista rítmico como para hacer que sea trivial la conversión de MIDI a LY. Si se invoca con las opciones de cuantización (`-s` y `-d`), `midi2ly` intenta compensar los errores de medida, pero no lo hace muy bien. Por ello, no se recomienda usar `midi2ly` para archivos midi generados por seres humanos.

Se invoca a partir de la línea de órdenes como sigue:

>     midi2ly [opción]… archivo_midi

Observe que al decir ‘línea de órdenes’, queremos decir la línea de órdenes del sistema operativo. Consulte Conversión desde otros formatos para ver más información sobre esto.

`midi2ly` contempla las siguientes opciones:

`-a, --absolute-pitches`

  Imprimir alturas absolutas.

`-d, --duration-quant=DURACIÓN`

  Cuantizar las duraciones a DURACIÓN.

`-e, --explicit-durations`

  Imprimir valores de figura explícitos.

`-h,--help`

  Mostrar un resumen de las instrucciones de utilización.

`-k, --key=alteración[:minor]`

  Establecer la tonalidad predeterminada. alteración > 0 establece el número de sostenidos; alteración < 0 establece el número de bemoles. Se indica una tonalidad menor mediante `:1`.

`-o, --output=archivo`

  Escribir la salida en archivo.

`-s, --start-quant=DURACIÓN`

  Cuantizar el inicio de las notas a DURACIÓN.

`-t, --allow-tuplet=DURACIÓN*NUMERADOR/DENOMINADOR`

  Permitir duraciones de grupos especiales DURACIÓN*NUMERADOR/DENOMINADOR.

`-v, --verbose`

  Ser prolijo en comentarios.

`-V, --version`

  Imprimir el número de la versión.

`-w, --warranty`

  Presentar la garantía y el copyright.

`-x, --text-lyrics`

  Tratar todos los textos como letra de la canción.

#### Advertencias y problemas conocidos

Las notas superpuestas en un arpegio no se procesarán correctamente. La primera nota se lee y el resto se ignoran. Aplique la misma duración a todas las notas y añada marcas de fraseo o indicaciones de pedal.

### 4.3.2 Invocar `musicxml2ly`

MusicXML es un dialecto del XML para representar notación musical.

`musicxml2ly` extrae las notas, articulaciones, estructura de la partitura, letra, etc., de archivos de MusicXML parte a parte, y los escribe en un archivo ‘`.ly`’. Se invoca a través de la línea de órdenes.

La invocación desde la línea de órdenes se hace como sigue:

>     musicxml2ly [opción]… archivo_xml

Observe que por ‘línea de órdenes’, nos referimos a la línea de órdenes del sistema operativo. Consulte Conversión desde otros formatos, para obtener más información acerca de esto.

Si el nombre de archivo proporcionado es ‘`-`’, `musicxml2ly` lee la entrada desde la entrada estándar.

`musicxml2ly` contempla las siguientes opciones:

`-a, --absolute`

  convertir las alturas en modo absoluto.

`-h,--help`

  mostrar un resumen de la utilización y las opciones.

`-l, --language=IDIOMA`

  utilizar IDIOMA para los nombres de las notas, p.ej. ’espanol’ para los nombres de las notas en español.

`--lxml`

  usar el paquete de Python lxml.etree para el análisis de XML; usa menos memoria y tiempo de CPU.

`--nd --no-articulation-directions`

  no convertir las direcciones (`^`, `_` o `-`) para las articulaciones, dinámica, etc.

`--no-beaming`

  no convertir la información de las barras, en vez de ello usar el barrado automático de LilyPond.

`-o,--output=archivo`

  fijar el nombre del archivo de salida como archivo. Si archivo es ‘`-`’, la salida se imprime sobre stdout, la salida estándar. Si no se da, se usa archivo_xml‘`.ly`’.

`-r,--relative`

  convertir las alturas en modo relativo (predeterminado).

`-v,--verbose`

  ser prolijo.

`-v,--version`

  imprimir la información de la versión.

`-z,--compressed`

  el archivo de entrada es un archivo MusicXML comprimido en zip.

### 4.3.3 Invocar `abc2ly`

Nota: Este programa ya no está soportado, y podría desaparecer de versiones posteriores de LilyPond.

ABC es un formato bastante simple basado en ASCII. Se encuentra descrito en el sitio web de ABC:

> http://www.walshaw.plus.com/abc/learn.html.

`abc2ly` convierte ABC en LilyPond. Se invoca de la siguiente manera:

>     abc2ly [opción]… archivo_abc

`abc2ly` contempla las siguientes opciones:

`-b,--beams=None`

  preservar la noción de ABC de las barras

`-h,--help`

  esta ayuda

`-o,--output=archivo`

  fijar el nombre del archivo de salida como archivo.

`-s,--strict`

  ser estricto respecto al éxito

`--version`

  imprimir la información de la versión.

Existe una posibilidad rudimentaria para añadir código de LilyPond el archivo fuente de ABC. Si decimos:

>     %%LY voices \set autoBeaming = ##f

Producirá que el texto que sigue a la palabra clave ‘voices’ se inserte en la voz en curso del archivo de salida de LilyPond.

De forma similar,

>     %%LY slyrics más palabras

producirá que el texto que sigue a la palabra clave ‘slyrics’ se inserte en la línea de letra en curso.

#### Advertencias y problemas conocidos

El estándar ABC no es muy ‘estándar’. Existen diferentes convenciones para las posibilidades avanzadas (por ejemplo, polifonía).

No se pueden convertir varias melodías de un solo archivo.

ABC sincroniza las letras y las notas al principio de una línea; `abc2ly` no lo hace.

`abc2ly` ignora el barrado de ABC.

### 4.3.4 Invocar `etf2ly`

ETF (Enigma Transport Format) es un formato utilizado por Finale, un producto de Coda Music Technology. `etf2ly` convierte parte de un archivo ETF en un archivo de LilyPond listo para usar.

Se invoca a través de la línea de órdenes como sigue:

>     etf2ly [opción]… archivo_etf

Observe que por ‘línea de órdenes’, nos referimos a la línea de órdenes del sistema operativo. Consulte Conversión desde otros formatos, para obtener más información acerca de esto.

`etf2ly` contempla las siguientes opciones:

`-h,--help`

  esta ayuda

`-o,--output=ARCHIVO`

  fijar el nombre del archivo de salida como ARCHIVO

`--version`

  información de la versión

#### Advertencias y problemas conocidos

La lista de inscripciones de articulación posibles es incompleta. Los compases vacíos confunden a `etf2ly`. Las secuencias de notas de adorno no se dan por finalizadas satisfactoriamente.

### 4.3.5 Otros formatos

El propio LilyPond no contempla la utilización de ningún otro formato, pero existen algunas herramientas externas que también generan archivos de LilyPond.

Se encuentran relacionados en la sección Entornos mejorados.

## 4.4 Salida de LilyPond dentro de otros programas

Esta sección presenta métodos para integrar texto y música distintos del método automatizado con `lilypond-book`.

### Muchas citas de una partitura extensa

Si tiene que citar muchos fragmentos extraídos de una partitura grade, puede también usar la capacidad de recorte de sistemas, véase Extracción de fragmentos de música.

### Insertar la salida de LilyPond dentro de OpenOffice.org

Se puede añadir notación de LilyPond a los documentos de OpenOffice.org con OOoLilyPond.

### Insertar la salida de LilyPond dentro de otros programas

Para insertar la salida de LilyPond dentro de otros programas, use `lilypond` en vez de `lilypond-book`. Cada ejemplo debe crearse individualmente y añadirse al documento; consulte la documentación del programa correspondiente. La mayoría de los programas podrán insertar la salida de LilyPond en los formatos ‘`PNG`’, ‘`EPS`’ o ‘`PDF`’.

Para reducir el espacio vacío alrededor de la partitura de LilyPond, utilice las siguientes opciones:

>     \paper{
>       indent=0\mm
>       line-width=120\mm
>       oddFooterMarkup=##f
>       oddHeaderMarkup=##f
>       bookTitleMarkup = ##f
>       scoreTitleMarkup = ##f
>     }

>     { c1 }

Para obtener un archivo ‘`EPS`’ que sea útil, utilice

>     lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts miarchivo.ly

>     ‘PNG’:
>     lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png miarchivo.ly

## 4.5 Archivos `include` independientes

Hay personas que han escrito extensas (¡y útiles!) piezas de código que se pueden compartir entre distintos proyectos. Este código podría, llegado el caso, incorporarse al propio LilyPond, pero hasta que esto ocurra, tendrá que descargarlos e incluirlos mediante `\include`, manualmente.

### 4.5.1 Articulación MIDI

LilyPond se puede usar para producir una salida MIDI, para efectuar una revisión “de oído” de lo que se ha escrito. Sin embargo, sólo los matices dinámicos, las marcas de tempo explícitas y las propias notas y duraciones se producen en la salida.

El proyecto articulate es un intento de llevar más información de la partitura al MIDI. Funciona acortando las notas que no están ligadas, para ‘articularlas’. El grado de acortamiento depende de las marcas de articulación que se han puesto en las notas: los picados dan la mitad de duración, el tenuto da la duración completa, y así sucesivamente. El script también realiza los trinos y los grupetos, y se puede extender para que desarrolle otros ornamentos como los mordentes.

>     http://www.nicta.com.au/people/chubbp/articulate

#### Advertencias y problemas conocidos

Su principal limitación es que sólo afecta a las cosas de las que tiene algún conocimiento: todo aquello que son meramente marcas textuales (y no una propiedad de una nota) se ignora, por el momento.

# 5. Sugerencias para escribir archivos de entrada

En este momento está preparado para comenzar a escribir archivos de LilyPond más grandes – no sólo los pequeños ejemplos que aparecen en el tutorial, sino piezas completas –. Pero ¿cómo debe proceder para hacerlo?

En la medida en que LilyPond entienda sus archivos y produzca la salida que usted pretendía, realmente no importa mucho qué aspecto tengan sus archivos. Sin embargo existen algunas otras cosas a tener en cuenta cuando se escriben archivos de LilyPond.

- ¿Qué ocurre si comete un fallo? La estructura de un archivo de LilyPond puede hacer que ciertos errores se hagan más fáciles (o más difíciles) de encontrar.
- ¿Qué ocurre si quiere compartir sus archivos con otras personas? De hecho, ¿y si quiere alterar sus propios archivos después de algunos años? Algunos archivos de LilyPond se comprenden a primera vista; otros pueden tenerle rascándose la cabeza durante una hora.
- ¿Qué ocurre si quiere actualizar su archivo de LilyPond para poderlo usar con una versión más reciente del programa?

  La sintaxis de la entrada se modifica de forma ocasional según LilyPond se va perfeccionando. Casi todos los cambios se pueden hacer de forma automática con `convert-ly`, pero algunos podrían necesitar de una ayuda manual. Los archivos de LilyPond se pueden estructurar para que sean más fáciles (o más difíciles) de actualizar.

## 5.1 Sugerencias de tipo general

Presentamos algunas sugerencias que le pueden servir de ayuda para evitar o corregir problemas:

- Incluya los números de `\version` en todos los archivos. Dése cuenta de que todas las plantillas contienen información sobre la `\version`. Le recomendamos mucho que siempre incluya la `\version`, sin importar cuán pequeño pueda ser su archivo. Desde la experiencia personal podemos decirle que es bastante frustrante intentar recordar el número de versión de LilyPond que estaba usando hace unos años. `convert-ly` requiere que declare qué versión de LilyPond utilizó.
- Incluya comprobaciones: Comprobación de compás y de número de compás, Comprobación de octava. Si incluye comprobaciones de vez en cuando, en caso de que cometa un error podrá localizarlo mucho más rápidamente. ¿Con qué frecuencia es ‘de vez en cuando’? Depende de la complejidad de la música. Para una música muy sencilla, quizá tan sólo una o dos veces. Para una música muy compleja, quizá a cada compás.
- Un compás por cada línea de texto. Si hay algo muy complicado, ya sea en la propia música o en la salida que desea producir, a menudo conviene escribir un solo compás por cada línea. El ahorro en espacio de pantalla que se obtiene al amontonar ocho compases por línea no merece la pena si luego tiene que ‘depurar’ los archivos.
- Comente los archivos. Utilice o números de compás (de vez en cuando) o referencias a temas musicales (‘segundo tema de los violines,’ ‘cuarta variación,’ etc.). Puede que no necesite comentarios cuando introduce una pieza por vez primera, pero si quiere volver a ella o modificar algo al cabo de dos o tres años, y también si le pasa la fuente a un amigo, será todo un desafío determinar sus intenciones o de qué manera estaba estructurado el archivo si no le añadió los comentarios.
- Aplique márgenes a las llaves. Muchos problemas están causados por una falta de equilibrio en el número de `{` y `}`.
- Escriba las duraciones explícitamente al comienzo de las secciones e identificadores. Si especifica `c4 d e` al principio de una frase (en lugar de sólo `c d e`) se puede ahorrar problemas si reelabora la música más tarde.
- Separe los trucos de las definiciones musicales. Consulte Ahorrar tecleo mediante variables y funciones y Hojas de estilo.

## 5.2 Tipografiar música existente

Si está introduciendo música a partir de una partitura existente (es decir, tipografiando una hoja de música ya impresa),

- Introduzca en LilyPond un sistema del manuscrito, o copia física, de cada vez (pero mantenga la práctica de escribir un compás por línea de texto), y compruebe cada sistema cuando lo haya terminado. Puede usar las propiedades `showLastLength` o `showFirstLength` para acelerar el proceso (véase Saltar la música corregida).
- Defina `mBreak = { \break }` e inserte `\mBreak` dentro del archivo de entrada donde el manuscrito tenga un saldo de línea. De esta forma le resultará mucho más fácil comparar la música de LilyPond con la original. Cuando haya terminado de revisar su partitura podrá definir `mBreak = { }` para quitar todos esos saltos de línea. Así permitirá a LilyPond colocar los saltos donde éste lo estime más oportuno.
- Al escribir una parte para un instrumento transpositor dentro de una variable, se recomienda que las notas estén envueltas dentro de

  >     \transpose c altura-natural {...}

  (donde `altura-natural` es la afinación natural del instrumento) de forma que la música dentro de la variable esté realmente en Do mayor. Después podemos volver a transportarlas en sentido inverso cuando se utiliza la variable, si es necesario, pero quizá no queramos hacerlo (p.ej., al imprimir una partitura en afinación de concierto, al convertir una parte de trombón de clave de Sol a clave de Fa, etc.). Es menos probable cometer errores en los transportes si toda la música que está dentro de las variables se encuentra en un tono coherente.

  Asimismo, haga los transportes exclusivamente hacia o desde Do mayor. Esto significa que aparte de ésta, las únicas tonalidades que usaremos serán los tonos de afinación de los instrumentos transpositores: bes para una trompeta en Si bemol, aes para un clarinete en La bemol, etc.

## 5.3 Proyectos grandes

Al trabajar en proyectos grandes se hace esencial tener una estructura clara en los archivos de LilyPond:

- Utilice un identificador para cada voz, con un mínimo de estructura dentro de la definición. La estructura de la sección `\score` es la que cambiará con mayor probabilidad; por contra, es extremadamente improbable que cambie la definición de `violin` en versiones nuevas de LilyPond.

  >     violin = \relative c'' {
  >     g4 c'8. e16
  >     }
  >     ...
  >     \score {
  >       \new GrandStaff {
  >         \new Staff {
  >           \violin
  >         }
  >       }
  >     }

- Separe los trucos de las definiciones musicales. Ya se mencionó con anterioridad, pero para proyectos grandes es vital. Quizá tengamos que cambiar la definición de `fluegop`, pero en ese caso sólo lo tendremos que hacer una vez, y aún podremos evitar tocar nada dentro de `violin`.

  >     fluegop = _\markup{
  >       \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
  >     violin = \relative c'' {
  >     g4\fluegop c'8. e16
  >     }

## 5.4 Solución de problemas

Antes o después escribirá un archivo que LilyPond no podrá compilar. Los mensajes que LilyPond proporciona pueden ayudarle a encontrar el error, pero en muchos casos tendrá que llevar a cabo algún tipo de investigación para determinar el origen del problema.

Las herramientas más poderosas para este cometido son el comentario de una sola línea (indicado por `%`) y el comentario de bloque (indicado por `%{ ... %}`). Si no sabe dónde está el problema, comience convirtiendo grandes secciones del archivo de entrada en un comentario. Después de eliminar una sección convirtiéndola en un comentario, pruebe a compilar el archivo otra vez. Si funciona, entonces el problema debía estar en la porción que había eliminado. Si no funciona, continúe eliminando material (transformándolo en comentarios) hasta que tenga algo que funcione.

En un caso extremo podría terminar con sólo

>     \score {
>       <<
>         % \melodia
>         % \armonia
>         % \bajo
>       >>
>       \layout{}
>     }

(en otras palabras: un archivo sin música)

Si ocurre esto, no abandone. Descomente un trozo pequeño – digamos la parte del bajo – y observe si funciona. Si no es así, transforme en comentarios toda la música del bajo (pero deje el `\bajo` de la sección `\score` no comentado.

>     bajo = \relative c' {
>     %{
>       c4 c c c
>       d d d d
>     %}
>     }

Ahora empiece poco a poco descomentando cada vez más fracciones de la parte del `bajo` hasta que encuentre la línea del problema.

Otra técnica de depuración muy útil es la construcción de Ejemplos mínimos.

## 5.5 Make y los Makefiles

Posiblemente todas las plataformas en que puede correr LilyPond, contemplan una posibilidad de software llamada `make`. Este programa lee un archivo especial llamado `Makefile` que define las relaciones de dependencia entre los archivos y qué instrucciones necesitamos dar al sistema operativo para producir un archivo a partir de otro. Por ejemplo, el archivo de make detallaría cómo obtener ‘`balada.pdf`’ y ‘`balada.midi`’ a partir de ‘`balada.ly`’ mediante la ejecución de Lilypond.

Existen ocasiones en las que es buena idea crear un `Makefile` para nuestro proyecto, bien sea por nuestra propia comodidad o como cortesía para otros que posiblemente tengan acceso a nuestros archivos fuente. Esto es cierto para proyectos muy grandes con muchos archivos de inclusión y distintas opciones de salida (p.ej. partitura completa, particellas, partitura del director, reducción para piano, etc.), o para proyectos que requieren instrucciones difíciles para montarlas (como los proyectos de `lilypond-book`). La complejidad y flexibilidad de los Makefiles varía enormemente según las necesidades y la habilidad de los autores. El programa GNU Make viene instalado en las distribuciones de GNU/Linux y en MacOS X, y también existe para Windows.

Consulte el Manual de GNU Make para ver todos los detalles sobre el uso de `make`, pues lo que sigue a continuación ofrece solamente una pincelada de todo lo que es capaz de hacer.

Las instrucciones que definen las reglas en un archivo de make difieren en función de la plataforma; por ejemplo, las distintas formas de Linux y MacOS usan `bash`, mientras que Windows usa `cmd`. Observeque en MacOS X, tenemos que configurar el sistema para que utilice el intérprete de órdenes. A continuación presentamos algunos makefiles de ejemplo, con versiones tanto para Linux/MacOS como para Windows.

El primer ejemplo es para una obra orquestal en cuatro movimientos con la estructura de directorios siguiente:

>     Sinfonia/
>     |-- MIDI/
>     |-- Makefile
>     |-- Notas/
>     |   |-- cello.ily
>     |   |-- cifras.ily
>     |   |-- trompa.ily
>     |   |-- oboe.ily
>     |   |-- trioCuerdas.ily
>     |   |-- viola.ily
>     |   |-- violinUno.ily
>     |   `-- violinDos.ily
>     |-- PDF/
>     |-- Particellas/
>     |   |-- sinfonia-cello.ly
>     |   |-- sinfonia-trompa.ly
>     |   |-- sinfonia-oboes.ly
>     |   |-- sinfonia-viola.ly
>     |   |-- sinfonia-violinUno.ly
>     |   `-- sinfonia-violinDos.ly
>     |-- Partituras/
>     |   |-- sinfonia.ly
>     |   |-- sinfoniaI.ly
>     |   |-- sinfoniaII.ly
>     |   |-- sinfoniaIII.ly
>     |   `-- sinfoniaIV.ly
>     `-- sinfoniaDefs.ily

Los archivos ‘`.ly`’ de los directorios `Partituras` y `Particellas` obtienen las notas de archivos ‘`.ily`’ que están en el directorio `Notas`:

>     %%% principio del archivo "sinfonia-cello.ly"
>     \include ../definiciones.ily
>     \include ../Notas/cello.ily

El makefile tendrá los objetivos de `partitura` (la pieza completa en todo su esplendor), `movimientos` (partitura completa de los movimientos individuales) y `particellas` (partes individuales para los atriles). También existe un objetivo `archivo` que produce un tarball de los archivos fuente, adecuado para compartirlo a través de la web o por correo electrónico. A continuación presentamos el makefile para GNU/Linux o MacOS X. Se debe guardar con el nombre exacto `Makefile` el el directorio superior del proyecto:

Nota: Cuando se define un objetivo o una regla de patrón, las líneas siguientes deben comenzar con tabuladores, no con espacios.

>     # nombre principal de los archivos de salida
>     nombre = sinfonia
>     # determinar cuántos procesadores existen
>     CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
>     # La instrucción para ejecutar lilypond
>     LILY_CMD = lilypond -ddelete-intermediate-files \
>                         -dno-point-and-click -djob-count=$(CPU_CORES)

>     # Los sufijos utilizados en este Makefile.
>     .SUFFIXES: .ly .ily .pdf .midi

>     # Los archivos de entrada y salida se buscan dentro de los directorios relacionados en
>     # la variable VPATH.  Todos esllos son subdirectorios del directorio
>     # en curso (dado por la variable de GNU make `CURDIR').
>     VPATH = \
>       $(CURDIR)/Partituras \
>       $(CURDIR)/PDF \
>       $(CURDIR)/Particellas \
>       $(CURDIR)/Notas

>     # La regla de patrón para crear archivos PDF y MIDI a partir de un archivo de entrada LY.
>     # Los archivos de salida .pdf se colocan en el subdirectorio `PDF', y los archivos
>     # .midi van al subdirectorio `MIDI'.
>     %.pdf %.midi: %.ly
>             $(LILY_CMD) $<; \           # esta línea comienza con un salto de tabulación
>             if test -f "$*.pdf"; then \
>                 mv "$*.pdf" PDF/; \
>             fi; \
>             if test -f "$*.midi"; then \
>                 mv "$*.midi" MIDI/; \
>             fi

>     notas = \
>       cello.ily \
>       trompa.ily \
>       oboe.ily \
>       viola.ily \
>       violinUno.ily \
>       violinDos.ily

>     # Dependencias de los movimientos.
>     $(nombre)I.pdf: $(nombre)I.ly $(notas)
>     $(nombre)II.pdf: $(nombre)II.ly $(notas)
>     $(nombre)III.pdf: $(nombre)III.ly $(notas)
>     $(nombre)IV.pdf: $(nombre)IV.ly $(notas)

>     # Dependencias de la partitura completa.
>     $(nombre).pdf: $(nombre).ly $(notas)

>     # Dependencias de las particellas.
>     $(nombre)-cello.pdf: $(nombre)-cello.ly cello.ily
>     $(nombre)-trompa.pdf: $(nombre)-trompa.ly trompa.ily
>     $(nombre)-oboes.pdf: $(nombre)-oboes.ly oboe.ily
>     $(nombre)-viola.pdf: $(nombre)-viola.ly viola.ily
>     $(nombre)-violinUno.pdf: $(nombre)-violinUno.ly violinUno.ily
>     $(nombre)-violinDos.pdf: $(nombre)-violinDos.ly violinDos.ily

>     # Teclee `make partitura' para generer la partitura completa de los cuatro
>     # movimientos como un archivo único.
>     .PHONY: partitura
>     partitura: $(nombre).pdf

>     # Teclee `make particellas' para generar todas las particellas.
>     # Teclee `make fulanito.pdf' para generar la particella del instrumento `fulanito'.
>     # Ejemplo: `make sinfonia-cello.pdf'.
>     .PHONY: particellas
>     particellas: $(nombre)-cello.pdf \
>            $(nombre)-violinUno.pdf \
>            $(nombre)-violinDos.pdf \
>            $(nombre)-viola.pdf \
>            $(nombre)-oboes.pdf \
>            $(nombre)-trompa.pdf

>     # Teclee `make movimientos' para generar los archivos de los
>     # cuatro movimientos de forma separada.
>     .PHONY: movimientos
>     movimientos: $(nombre)I.pdf \
>                $(nombre)II.pdf \
>                $(nombre)III.pdf \
>                $(nombre)IV.pdf

>     all: partitura particellas movimientos

>     archivo:
>             tar -cvvf stamitz.tar \       # esta línea comienza con un salto de tabulación
>             --exclude=*pdf --exclude=*~ \
>             --exclude=*midi --exclude=*.tar \
>             ../Stamitz/*

Existen ciertas complicaciones en la plataforma Windows. Después de descargar e instalar el programa GNU Make para Windows, debemos configurar la ruta adecuada en las variables de entorno del sistema de forma que el shell del DOS pueda encontrar el programa Make. Para hacerlo, pulse con el botón derecho sobre "Mi PC", elija `Propiedades` y `Avanzadas`. Pulse sobre `Variables de entorno`, y luego en la pestaña `Variables del sistema`, seleccione `Ruta`, pulse sobre `editar` y añada la ruta al archivo ejecutable de GNU Make, con lo que quedará algo parecido a lo siguiente:

>     C:\Archivos de programa\GnuWin32\bin

El makefile en sí debe modificarse para que maneje distintas instrucciones del shell y para que pueda tratar con los espacios que aparecen en el nombre de algunos directorios del sistema predeterminados. El objetivo `archivo` se elimina porque Windows no tiene la instrucción `tar`, y Windows tiene también una extensión predeterminada distinta para los archivos MIDI.

>     ## VERSIÓN PARA WINDOWS
>     ##
>     nombre = sinfonia
>     LILY_CMD = lilypond -ddelete-intermediate-files \
>                         -dno-point-and-click \
>                         -djob-count=$(NUMBER_OF_PROCESSORS)

>     #obtener el nombre 8.3 de CURDIR (rodeo para los espacios en PATH)
>     workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
>               do @echo %%~sb)

>     .SUFFIXES: .ly .ily .pdf .mid

>     VPATH = \
>       $(workdir)/Partituras \
>       $(workdir)/PDF \
>       $(workdir)/Particellas \
>       $(workdir)/Notas

>     %.pdf %.mid: %.ly
>             $(LILY_CMD) $<      # esta línea comienza con un salto de tabulación
>             if exist "$*.pdf"  move /Y "$*.pdf"  PDF/ # comienzo con tab
>             if exist "$*.mid" move /Y "$*.mid" MIDI/  # comienzo con tab

>     notas = \
>       cello.ily \
>       cifras.ily \
>       trompa.ily \
>       oboe.ily \
>       trioCuerdas.ily \
>       viola.ily \
>       violinUno.ily \
>       violinDos.ily

>     $(nombre)I.pdf: $(nombre)I.ly $(notas)
>     $(nombre)II.pdf: $(nombre)II.ly $(notas)
>     $(nombre)III.pdf: $(nombre)III.ly $(notas)
>     $(nombre)IV.pdf: $(nombre)IV.ly $(notas)

>     $(nombre).pdf: $(nombre).ly $(notas)

>     $(nombre)-cello.pdf: $(nombre)-cello.ly cello.ily
>     $(nombre)-trompa.pdf: $(nombre)-trompa.ly trompa.ily
>     $(nombre)-oboes.pdf: $(nombre)-oboes.ly oboe.ily
>     $(nombre)-viola.pdf: $(nombre)-viola.ly viola.ily
>     $(nombre)-violinUno.pdf: $(nombre)-violinUno.ly violinUno.ily
>     $(nombre)-violinDos.pdf: $(nombre)-violinDos.ly violinDos.ily

>     .PHONY: partitura
>     partitura: $(nombre).pdf

>     .PHONY: particellas
>     particellas: $(nombre)-cello.pdf \
>            $(nombre)-violinUno.pdf \
>            $(nombre)-violinDos.pdf \
>            $(nombre)-viola.pdf \
>            $(nombre)-oboes.pdf \
>            $(nombre)-trompa.pdf

>     .PHONY: movimientos
>     movimientos: $(nombre)I.pdf \
>                $(nombre)II.pdf \
>                $(nombre)III.pdf \
>                $(nombre)IV.pdf

>     all: partitura particellas movimientos

El Makefile siguiente es para un documento de `lilypond-book` hecho en LaTeX. Este proyecto tiene un índice, que requiere ejecutar la instrucción `latex` dos veces para actualizar los enlaces. Todos los archivos de salida se almacenan en el directorio `salida` para los documentos .pdf y en el directorio `salidahtml` para la salida en formato html.

>     SHELL=/bin/sh
>     NOMBRE=miproyecto
>     DIR_SALIDA=salida
>     DIR_WEB=salidahtml
>     VISOR=acroread
>     NAVEGADOR=firefox
>     LILYBOOK_PDF=lilypond-book --output=$(DIR_SALIDA) --pdf $(NOMBRE).lytex
>     LILYBOOK_HTML=lilypond-book --output=$(DIR_WEB) $(NOMBRE).lytex
>     PDF=cd $(DIR_SALIDA) && pdflatex $(NOMBRE)
>     HTML=cd $(DIR_WEB) && latex2html $(NOMBRE)
>     INDICE=cd $(DIR_SALIDA) && makeindex $(NOMBRE)
>     VISTA_PREVIA=$(VISOR) $(DIR_SALIDA)/$(NOMBRE).pdf &

>     all: pdf web guardar

>     pdf:
>             $(LILYBOOK_PDF)  # comienza con un tab
>             $(PDF)           # comienza con un tab
>             $(INDICE)        # comienza con un tab
>             $(PDF)           # comienza con un tab
>             $(VISTA_PREVIA)  # comienza con un tab

>     web:
>             $(LILYBOOK_HTML) # comienza con un tab
>             $(HTML)          # comienza con un tab
>             cp -R $(DIR_WEB)/$(NOMBRE)/ ./  # comienza con un tab
>             $(NAVEGADOR) $(NOMBRE)/$(NOMBRE).html &  # comienza con un tab

>     guardar: pdf
>             cp $(DIR_SALIDA)/$(NOMBRE).pdf $(NOMBRE).pdf  # comienza con un tab

>     clean:
>             rm -rf $(DIR_SALIDA) # comienza con un tab

>     web-clean:
>             rm -rf $(DIR_WEB) # comienza con un tab

>     archivo:
>             tar -cvvf miproyecto.tar \ # comienza con un tab
>             --exclude=salida/* \
>             --exclude=salidahtml/* \
>             --exclude=miproyecto/* \
>             --exclude=*midi \
>             --exclude=*pdf \
>             --exclude=*~ \
>             ../MiProyecto/*

HACER: conseguir que funcione en Windows

El makefile anterior no funciona en Windows. Una alternativa para los usuarios de Windows sería crear un archivo de lotes sencillo que contenga las instrucciones de montaje. Esto no rastrea las dependencias en la manera en que lo hace un makefile, pero al menos reduce el proceso de construcción a una sola instrucción. Guarde el código siguiente como `montaje.bat` o `montaje.cmd`. El archivo de lotes se puede ejecutar en la línea de comandos del DOS o simplemente haciendo doble click sobre su icono.

>     lilypond-book --output=salida --pdf miproyecto.lytex
>     cd salida
>     pdflatex miproyecto
>     makeindex miproyecto
>     pdflatex miproyecto
>     cd ..
>     copy salida\miproyecto.pdf MiProyecto.pdf

#### Véase también

Manual de utilización del programa: Configuración para MacOS X, Utilización desde la línea de órdenes, LilyPond-book

# A. GNU Free Documentation License

Version 1.3, 3 November 2008

    Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
    http://fsf.org/

    Everyone is permitted to copy and distribute verbatim copies
    of this license document, but changing it is not allowed.

1. PREAMBLE

   The purpose of this License is to make a manual, textbook, or other functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

   This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

   We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

2. APPLICABILITY AND DEFINITIONS

   This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

   A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

   A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

   The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

   The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

   A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not “Transparent” is called “Opaque”.

   Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

   The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text.

   The “publisher” means any person or entity that distributes copies of the Document to the public.

   A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according to this definition.

   The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

3. VERBATIM COPYING

   You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

   You may also lend copies, under the same conditions stated above, and you may publicly display copies.

4. COPYING IN QUANTITY

   If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

   If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

   If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

   It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

5. MODIFICATIONS

   You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

   1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
   2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
   3. State on the Title page the name of the publisher of the Modified Version, as the publisher.
   4. Preserve all the copyright notices of the Document.
   5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
   6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
   7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice.
   8. Include an unaltered copy of this License.
   9. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
   10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
   11. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
   12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
   13. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version.
   14. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section.
   15. Preserve any Warranty Disclaimers.

   If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles.

   You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

   You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

   The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

6. COMBINING DOCUMENTS

   You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

   The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

   In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements.”

7. COLLECTIONS OF DOCUMENTS

   You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

   You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

8. AGGREGATION WITH INDEPENDENT WORKS

   A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

   If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

9. TRANSLATION

   Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

   If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

10. TERMINATION

    You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.

    However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

    Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

    Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.

11. FUTURE REVISIONS OF THIS LICENSE

    The Free Software Foundation may publish new, revised versions of the GNU Free Documentation 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. See http://www.gnu.org/copyleft/.

    Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Document.

12. RELICENSING

    “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A “Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of copyrightable works thus published on the MMC site.

    “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.

    “Incorporate” means to publish or republish a Document, in whole or in part, as part of another Document.

    An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.

    The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.

## ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

      Copyright (C)  year  your name.
      Permission is granted to copy, distribute and/or modify this document
      under the terms of the GNU Free Documentation License, Version 1.3
      or any later version published by the Free Software Foundation;
      with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
      Texts.  A copy of the license is included in the section entitled ``GNU
      Free Documentation License''.

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with…Texts.” line with this:

        with the Invariant Sections being list their titles, with
        the Front-Cover Texts being list, and with the Back-Cover Texts
        being list.

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.

# B. Índice de LilyPond

Saltar a: | \ A B C D E F H I L M O P S T U V

| Entrada de índice | Sección
\ |  |
| \header dentro de documentos LaTeX | 3.2.1 LaTeX
A |  |
| ABC | 4.3.3 Invocar `abc2ly`
| actualización de un archivo de LilyPond | 2. Actualizar ficheros con `convert-ly`
| actualizar archivos de entrada antiguos | 2.1 ¿Por qué cambia la sintaxis?
| advertencia | 1.3 Mensajes de error
| `Ahorrar tecleo mediante variables y funciones` | 5.1 Sugerencias de tipo general
| apuntar y pulsar | 4.1 Apuntar y pulsar
| apuntar y pulsar, línea de órdenes | Opciones de la línea de órdenes para `lilypond`
| archivo de salida, tamaño del | 4.1 Apuntar y pulsar
| archivos, búsqueda de | Opciones de la línea de órdenes para `lilypond`
B |  |
| `Barras de compás` | La música se sale de la página
| búsqueda, ruta de | Opciones de la línea de órdenes para `lilypond`
C |  |
| carpeta, dirigir la salida hacia | Opciones de la línea de órdenes para `lilypond`
| Coda Technology | 4.3.4 Invocar `etf2ly`
| `Codificación del` | Mensaje de error FT_Get_Glyph_Name
| colores, sintaxis | 4.2 Apoyo respecto de los editores de texto
| `Comprobación de compás y de` | La música se sale de la página
| `Comprobación de compás y de número de compás` | 5.1 Sugerencias de tipo general
| `Comprobación de octava` | 5.1 Sugerencias de tipo general
| `Configuración para MacOS X` | Véase también
| convert-ly | 2. Actualizar ficheros con `convert-ly`
| convert-ly | 2.1 ¿Por qué cambia la sintaxis?
| `Cómo` | Error aparente en `../ly/init.ly`
D |  |
| docbook | 3. Ejecución de `lilypond-book`
| DocBook, música dentro de | 3. Ejecución de `lilypond-book`
| documentos, insertar música en | 3. Ejecución de `lilypond-book`
| dvips | LaTeX
E |  |
| editores | 4.2 Apoyo respecto de los editores de texto
| `Ejemplos mínimos` | 5.4 Solución de problemas
| emacs | 4.2 Apoyo respecto de los editores de texto
| enigma | 4.3.4 Invocar `etf2ly`
| `Entornos mejorados` | Otros editores
| `Entornos mejorados` | 4.3.5 Otros formatos
| error | 1.3 Mensajes de error
| error de programación | 1.3 Mensajes de error
| error de Scheme | 1.3 Mensajes de error
| error fatal | 1.3 Mensajes de error
| error, formato de los mensajes de | 1.3 Mensajes de error
| error, mensajes de | 1.3 Mensajes de error
| `Espaciado vertical flexible dentro` | Advertencia sobre que las afinidades del pentagrama sólo deben decrecer
| ETF | 4.3.4 Invocar `etf2ly`
| `Extracción de fragmentos de música` | Muchas citas de una partitura extensa
F |  |
| fatal, error | 1.3 Mensajes de error
| Finale | 4.3.4 Invocar `etf2ly`
H |  |
| help (ayuda), línea de órdenes | Opciones de la línea de órdenes para `lilypond`
| `Hojas de estilo` | 5.1 Sugerencias de tipo general
| html | 3. Ejecución de `lilypond-book`
| HTML, música dentro de | 3. Ejecución de `lilypond-book`
I |  |
| `Introducir la letra` | Error aparente en `../ly/init.ly`
| invocación de dvips | LaTeX
| invocación de `lilypond` | Opciones de la línea de órdenes para `lilypond`
L |  |
| LANG | Variables de entorno
| latex | 3. Ejecución de `lilypond-book`
| LaTeX, música dentro de | 3. Ejecución de `lilypond-book`
| `LilyPond-book` | 3.6 Plantillas de lilypond-book
| `LilyPond-book` | Véase también
| LILYPOND_DATADIR | Variables de entorno
| llamadas, traza de | 1.3 Mensajes de error
| línea de órdenes, opciones de | Opciones de la línea de órdenes para `lilypond`
M |  |
| `MacOS X` | 1.2 Utilización desde la línea de órdenes
| `MacOS X` | 3. Ejecución de `lilypond-book`
| `MacOS X` | 4.3 Conversión desde otros formatos
| make | 5.5 Make y los Makefiles
| make, archivos de | 5.5 Make y los Makefiles
| `Manuales` | LilyPond — Utilización
| `Manuales` | LilyPond — Utilización
| mensajes de error | 1.3 Mensajes de error
| MIDI | 4.3.1 Invocar `midi2ly`
| miniatura | 3.2.3 HTML
| modificadores | Opciones de la línea de órdenes para `lilypond`
| modos del editor | 4.2 Apoyo respecto de los editores de texto
| musicología | 3.1 Un ejemplo de documento musicológico
| MusicXML | 4.3.2 Invocar `musicxml2ly`
O |  |
| opciones de la línea de órdenes para `lilypond` | Opciones de la línea de órdenes para `lilypond`
| OpenOffice.org | Insertar la salida de LilyPond dentro de OpenOffice.org
| `Otras fuentes de información` | Modo de Vim
P |  |
| paper-size, línea de órdenes | Opciones de la línea de órdenes para `lilypond`
| PDF (formato de documento portátil), salida de | Opciones de la línea de órdenes para `lilypond`
| PostScript, salida | Opciones de la línea de órdenes para `lilypond`
| `Primeros pasos` | 1.1 Utilización normal
| programación, error de | 1.3 Mensajes de error
| programas externos, generación de archivos de LilyPond | 4.3.5 Otros formatos
S |  |
| safe, línea de órdenes | Opciones de la línea de órdenes para `lilypond`
| salida, establecer el formato de | Opciones de la línea de órdenes para `lilypond`
| salida, establecer el nombre del archivo de | Opciones de la línea de órdenes para `lilypond`
| `Saltar la música corregida` | 5.2 Tipografiar música existente
| Scheme, error de | 1.3 Mensajes de error
| Scheme, volcado de | Opciones de la línea de órdenes para `lilypond`
| sintaxis, resaltado de | 4.2 Apoyo respecto de los editores de texto
| `Staff` | 4.3.1 Invocar `midi2ly`
| SVG (Gráficos vectoriales escalables) | Opciones de la línea de órdenes para `lilypond`
T |  |
| texi | 3. Ejecución de `lilypond-book`
| texinfo | 3. Ejecución de `lilypond-book`
| texinfo | 3. Ejecución de `lilypond-book`
| Texinfo, música dentro de | 3. Ejecución de `lilypond-book`
| tipografías de outline | LaTeX
| traza de Scheme | 1.3 Mensajes de error
| type1, tipografías | LaTeX
| títulos en HTML | 3.2.3 HTML
| títulos y lilypond-book | 3.2.1 LaTeX
U |  |
| `Utilización desde la línea de órdenes` | Véase también
V |  |
| vim | 4.2 Apoyo respecto de los editores de texto
| vista previa, imagen | 3.2.3 HTML
| vista previa, línea de órdenes | Opciones de la línea de órdenes para `lilypond`
| `Voice` | 4.3.1 Invocar `midi2ly`

Saltar a: | \ A B C D E F H I L M O P S T U V

# Notas el pie

[1] El estado de GUILE no se restablece después de procesar un archivo `.ly`, por lo que debe tener cuidado de no modificar ningún valor predeterminado desde dentro de Scheme.

[2] Al menos, esto es posible en cualquier archivo de LilyPond que no contenga Scheme. Si hay Scheme dentro del archivo, contiene un lenguaje Turing-completo, y nos encontramos con el famoso “Problema de la parada” en informática.

[3] Este tutorial se procesa con Texinfo, por lo que el ejemplo presenta un resultado en la disposición ligeramente distinto.

[4] Observe que PDFLaTeX y LaTeX podrían no ser utilizables para compilar cualquier documento LaTeX, y es por lo que explicamos las dos formas.

[5] En Unix, este archivo se encuentra o bien en ‘`/etc/xpdfrc`’ o como ‘`.xpdfrc`’ en su directorio personal.

# Índice General

# Acerca de este documento

Este documento ha sido generado por Graham Percival el el 12 junio 2011 utilizando texi2html 1.82.

Los botones de los paneles de navegación tienen el significado siguiente:

Botón | Nombre | Ir a | Desde 1.2.3 ir a
--- | --- | --- | ---
[] |  |  |
[ << ] | Retroceso rápido | Inicio de este capítulo o capítulo anterior | 1
[] |  |  |
[Arriba] | Arriba | Portada del documento |
[Índice general] | Índice general | Índice general |
[Índice] | Índice | Índice |
[ ? ] | Acerca de | Acerca de (página de ayuda) |
[] |  |  |
[ >> ] | Avance rápido | Capítulo siguiente | 2
[] |  |  |
[] |  |  |
[ < ] | Atrás | Sección anterior en orden de lectura | 1.2.2
[] |  |  |
[ Subir ] | Subir | Subir sección | 1.2
[] |  |  |
[ > ] | Adelante | Sección siguiente en orden de lectura | 1.2.4

donde el Ejemplo supone que la posiciÃ³n actual estÃ¡ en la Sub-subsección uno-dos-tres de un documento de la estructura siguiente:

- 1. Sección Uno
  - 1.1 Subsección uno-uno
    - ...
  - 1.2 Subsección uno-dos
    - 1.2.1 Sub-subsección uno-dos-uno
    - 1.2.2 Sub-subsección uno-dos-dos
    - 1.2.3 Sub-subsección uno-dos-tres <== Posición actual
    - 1.2.4 Sub-subsección uno-dos-cuatro
  - 1.3 Subsección uno-tres
    - ...
  - 1.4 Subsección uno-cuatro

Otros idiomas: English, deutsch, français, magyar, italiano, 日本語.

#### LilyPond — Utilización