]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/es/usage/running.itely
Merge branch 'release/unstable'
[lilypond.git] / Documentation / es / usage / running.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
2
3 @ignore
4     Translation of GIT committish: e776d5bb2a48191d2c7ccd60b160211462701b2e
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  For details, see the Contributors'
8     Guide, node Updating translation committishes..
9 @end ignore
10
11 @c \version "2.12.0"
12
13
14 @node Ejecutar LilyPond
15 @chapter Ejecutar LilyPond
16 @translationof Running LilyPond
17
18 Este capítulo detalla los aspectos técnicos de la ejecución de
19 LilyPond.
20
21 @menu
22 * Utilización normal::
23 * Utilización desde la línea de órdenes::
24 * Mensajes de error::
25 * Errores comunes::
26 @end menu
27
28
29 @node Utilización normal
30 @section Utilización normal
31 @translationof Normal usage
32
33 Casi todos los usuarios ejecutan LilyPond por medio de un interfaz
34 gráfico; consulte @rlearning{Primeros pasos} si no lo ha leído aún.
35
36
37 @node Utilización desde la línea de órdenes
38 @section Utilización desde la línea de órdenes
39 @translationof Command-line usage
40
41 Esta sección contiene información adicional sobre el uso de LilyPond
42 en la línea de órdenes.  Esta forma puede ser preferible para pasarle
43 al programa algunas opciones adicionales.  Además, existen algunos
44 programas complementarios @q{de apoyo} (como @code{midi2ly}) que sólo
45 están disponibles en la línea de órdenes.
46
47 Al hablar de la @q{línea de órdenes}, nos referimos a la consola del
48 sistema operativo.  Los usuarios de Windows posiblemente estén más
49 familiarizados con los términos @q{ventana de MS-DOS} o @q{línea de
50 comandos}; Los usuarios de MacOS@tie{}X puede que estén más
51 familiarizados con los términos @q{terminal} o @q{consola}.  Éstos
52 podrían requerir algunas configuraciones adicionales y deberían
53 consultar también el apartado @rweb{MacOS X}.
54
55 La descripción del uso de esta parte de los sistemas operativos se
56 sale del ámbito de este manual; le rogamos que consulte otros
57 documentos sobre este tema si no le resulta familiar la línea de
58 órdenes.
59
60 @menu
61 * Invocar a LilyPond::
62 * Opciones de la línea de órdenes para lilypond::
63 * Variables de entorno::
64 * LilyPond en una jaula de chroot::
65 @end menu
66
67 @node Invocar a LilyPond
68 @unnumberedsubsec Invocar @command{lilypond}
69 @translationof Invoking lilypond
70
71 El ejecutable @command{lilypond} se puede llamar desde la línea de
72 órdenes de la siguiente manera:
73
74 @example
75 lilypond [@var{opción}]@dots{} @var{archivo}@dots{}
76 @end example
77
78 Cuando se invoca con un nombre de archivo sin extensión, se prueba en
79 primer lugar con la extensión @file{.ly}.  Para leer la entrada desde
80 stdin, utilice un guión (@code{-}) en sustitución de @var{archivo}.
81
82 Cuando se procesa @file{archivo.ly}, la salida resultante son los
83 archivos @file{archivo.ps} y @file{archivo.pdf}.  Se pueden
84 especificar varios archivos; cada uno de ellos se procesará de forma
85 independiente@footnote{El estado de GUILE no se restablece después de
86 procesar un archivo @code{.ly}, por lo que debe tener cuidado de no
87 modificar ningún valor predeterminado desde dentro de Scheme.}.
88
89 Si @file{archivo.ly} contiene más de un bloque @code{\score}, el resto
90 de las partituras se obtendrán como salida en archivos numerados,
91 empezando por @file{archivo-1.pdf}.  además, el valor de
92 @code{output-suffix} (sufijo de salida) se insertará entre el nombre
93 base y el número.  Un archivo de entrada que contenga
94
95 @example
96 #(define output-suffix "violin")
97 \score @{ @dots{} @}
98 #(define output-suffix "cello")
99 \score @{ @dots{} @}
100 @end example
101
102 @noindent
103 producirá como salida @var{base}@file{-violin.pdf} y
104 @var{base}@file{-cello-1.pdf}.
105
106
107 @node Opciones de la línea de órdenes para lilypond
108 @unnumberedsubsec Opciones de la línea de órdenes para @command{lilypond}
109 @translationof Command line options for lilypond
110
111 @cindex invocación de @command{lilypond}
112 @cindex opciones de la línea de órdenes para @command{lilypond}
113 @cindex línea de órdenes, opciones de
114 @cindex modificadores
115
116 Están contempladas las siguientes opciones:
117
118 @table @code
119
120 @item -e,--evaluate=@var{expresión}
121 Evaluar la @var{expresión} de Scheme antes de analizar los archivos
122 @file{.ly}.  Se pueden pasar varias opciones @code{-e}, que se
123 evaluarán en secuencia.
124
125 La expresión se evaluará en el módulo @code{guile-user}, de manera que
126 si quiere usar definiciones dentro de @var{expresión}, debe utilizar
127
128 @example
129 lilypond -e '(define-public a 42)'
130 @end example
131
132 @noindent
133 en la línea de órdenes, e incluir
134
135 @example
136 #(use-modules (guile-user))
137 @end example
138
139 @noindent
140 al principio del archivo @code{.ly}.
141
142 @item -f,--format=@var{formato}
143 Formato de la salida.  Como @code{formato} se puede elegir entre
144 @code{ps}, @code{pdf} y @code{png}.
145
146 Ejemplo: @code{lilypond -fpng @var{archivo}.ly}
147
148 @item -d,--define-default=@var{variable}=@var{valor}
149 Establece la opción interna del programa @var{variable} al valor de
150 Scheme @var{valor}.  Si no se proporciona ningún @var{valor}, se usa
151 @var{#t}.  Para desactivar una opción se puede anteponer @code{no-} a
152 la @var{variable}, p.ej.:
153
154 @cindex apuntar y pulsar, línea de órdenes
155
156 @example
157 -dno-point-and-click
158 @end example
159
160 @noindent
161 es lo mismo que
162 @example
163 -dpoint-and-click='#f'
164 @end example
165
166 A continuación veremos algunas opciones interesantes.
167
168 @cindex help (ayuda), línea de órdenes
169
170 @table @samp
171 @item help
172 La ejecución de @code{lilypond -dhelp} imprimirá todas las opciones
173 @code{-d} que están disponibles.
174
175 @cindex paper-size, línea de órdenes
176
177 @item paper-size
178 Esta opción establece el tamaño predeterminado del papel,
179 @example
180 -dpaper-size=\"letter\"
181 @end example
182
183 @noindent
184 Observe que la cadena se debe incluir dentro de comillas escapadas
185 ( @code{\"} ).
186
187 @c Match " in previous line to help context-sensitive editors
188
189 @cindex safe, línea de órdenes
190
191 @item safe
192 No confiar en la entrada @code{.ly}.
193
194 Cuando el proceso de tipografía de LilyPond se encuentra disponible a
195 través de un servidor web, @b{SE DEBEN} pasar las opciones
196 @code{--safe} (seguro) o @code{--jail} (jaula).  La opción
197 @code{--safe} evita que el código de Scheme en línea arme un desastre,
198 por ejemplo
199
200 @quotation
201 @verbatim
202 #(system "rm -rf /")
203 {
204   c4^#(ly:export (ly:gulp-file "/etc/passwd"))
205 }
206 @end verbatim
207 @end quotation
208
209 La opción @code{-dsafe} funciona evaluando las expresiones en línea de
210 Scheme dentro de un módulo especial seguro.  Este módulo seguro deriva
211 del módulo GUILE @file{safe-r5rs}, pero añade ciertas funciones del
212 API de LilyPond.  Estas funciones se relacionan en
213 @file{scm/@/safe@/-lily@/.scm}.
214
215 Además, el modo seguro prohíbe las directivas @code{\include} e
216 inhabilita el uso de barras invertidas en las cadenas de @TeX{}.
217
218 En el modo seguro, no es posible la importación de variables de
219 LilyPond dentro de Scheme.
220
221 @code{-dsafe} @emph{no} detecta la sobreutilización de recursos.  Aún
222 es posible hacer que el programa se cuelgue indefinidamente, por
223 ejemplo alimentando el backend con estructuras de datos cíclicas.  Por
224 tanto, si se está utilizando LilyPond sobre un servidor web accesible
225 públicamente, el proceso debe limitarse tanto en el uso de CPU como de
226 memoria.
227
228 El modo seguro impide que muchos fragmentos útiles de código de
229 LilyPond se puedan compilar.  La opción @code{--jail} es una
230 alternativa más segura, pero su preparación requiere más trabajo.
231
232 @cindex salida, establecer el formato de
233 @item backend
234 el formato de salida que usar para el back-end o extremo final.
235 Para el @code{formato} se puede elegir entre
236 @table @code
237 @item ps
238 @cindex PostScript, salida
239 para PostScript.
240
241 Los archivos PostScript incluyen las tipografías TTF, Type1 y OTF.  No
242 se seleccionan subconjuntos de estas tipografías.  Cuando se usan
243 conjuntos de caracteres orientales, esto puede dar lugar a archivos
244 enormes.
245
246 @item eps
247  para obtener PostScript encapsulado.  Esto vuelca cada una de las
248 páginas/sistemas como un archivo @file{EPS} distinto, sin tipografías,
249 y como un solo archivo @file{EPS} encuadernado con todas las
250 páginas/sistemas con las tipografías incluidas.
251
252 Este modo se usa de forma predeterminada por parte de
253 @command{lilypond-book}.
254
255 @item svg
256
257 @cindex SVG (Gráficos vectoriales escalables)
258
259  para obtener SVG (gráficos vectoriales escalables).
260
261 Crea un único archivo SVG que contiene toda la salida de música, con
262 las tipografías incrustadas.  Se necesita un visor de SVG que
263 contemple las tipografías incrustadas, o un visor de SVG que pueda
264 sustituir las tipografías incrustadas por tipografías OTF.  Bajo UNIX,
265 puede usar @uref{http://www.inkscape.org,Inkscape} (versión 0.42 o
266 posterior), después de copiar las tipografías OTF del directorio de
267 LilyPond (que normalmente es
268 @file{/usr/share/lilypond/VERSIÓN/fonts/otf/}) al directorio
269 @file{~/.fonts/}.
270
271 @item scm
272
273 @cindex Scheme, volcado de
274
275  para obtener un volcado de las instrucciones internas de dibujo
276 basadas en Scheme, en bruto.
277
278 @item null
279  no producir una salida impresa; tiene el mismo efecto que @code{-dno-print-pages}.
280 @end table
281
282 Ejemplo: @code{lilypond -dbackend=svg @var{archivo}.ly}
283
284 @item preview
285 @cindex vista previa, línea de órdenes
286 Generar un archivo de salida que contenga solamente los títulos de
287 cabecera y el primer sistema de música.  Si se usan bloques
288 @code{\bookpart}, los títulos y el primer sistema de todos los bloques
289 @code{\bookpart} aparecerán en la salida.  Los motores @code{ps},
290 @code{eps} y @code{svg} contemplan esta opción.
291
292 @item print-pages
293 Generar las páginas completas, el ajuste predeterminado.
294 @code{-dno-print-pages} es útil en combinación con @code{-dpreview}.
295
296 @end table
297
298
299
300 @item -h,--help
301 Mostrar un resumen de las formas de utilización.
302
303 @item -H,--header=@var{CAMPO}
304 Volcar un campo de cabecera al archivo @file{NOMBREBASE.@var{CAMPO}}
305
306 @item --include, -I=@var{directorio}
307 Añadir el @var{directorio} a la ruta de búsqueda de archivos de
308 entrada.
309 @cindex archivos, búsqueda de
310 @cindex búsqueda, ruta de
311
312 @item -i,--init=@var{archivo}
313 Establecer el archivo de inicio a @var{archivo} (predeterminado:
314 @file{init.ly}).
315
316 @item -o,--output=@var{ARCHIVO}
317 Establecer el nombre del archivo de salida predeterminado a
318 @var{ARCHIVO}.  Se añade el sufijo correspondiente (por ejemplo,
319 @code{.pdf} para PDF).
320
321 @item --ps
322 Generar PostScript.
323
324 @item --png
325 Generar imágenes de las páginas en formato PNG.  Esto implica
326 @code{--ps}.  La resolución en PPP de la imagen se puede establecer
327 con
328 @example
329 -dresolution=110
330 @end example
331
332 @cindex PDF (formato de documento portátil), salida de
333
334 @item --pdf
335 Generar PDF.  Implica @code{--ps}.
336
337
338
339 @item -j,--jail=@var{usuario},@var{grupo},@var{jaula},@var{directorio}
340 Ejecutar @command{lilypond} en una jaula de chroot.
341
342 La opción @code{--jail} (jaula) proporciona una alternativa más
343 flexible a la opción @code{--safe} cuando el proceso de tipografía de
344 LilyPond está disponible a través de un servidor web o cuando LilyPond
345 ejecuta archivos fuente procedentes del exterior.
346
347 La opción @code{--jail} funciona cambiando la raíz de
348 @command{lilypond} a @var{jaula} justo antes de comenzar el proceso de
349 compilación en sí.  Entonces se cambian el usuario y el grupo a los
350 que se han dado en la opción, y el directorio actual se cambia a
351 @var{directorio}.  Esta instalación garantiza que no es posible, al
352 menos en teoría, escapar de la jaula.  Observe que para que funcione
353 @code{--jail} se debe ejecutar @command{lilypond} como root, lo que
354 normalmente se puede hacer de una forma segura utilizando
355 @command{sudo}.
356
357 La instalación de una jaula es un asunto algo delicado, pues debemos
358 asegurarnos de que LilyPond puede encontrar @emph{dentro de la jaula}
359 todo lo que necesita para poder compilar la fuente.  Una configuración
360 típica consta de los siguientes elementos:
361
362 @table @asis
363 @item Preparar un sistema de archivos separado
364 Se debe crear un sistema de archivos separado para LilyPond, de forma
365 que se pueda montar con opciones seguras como @code{noexec},
366 @code{nodev} y @code{nosuid}.  De esta forma, es imposible ejecutar
367 programas o escribir directamente a un dispositivo desde LilyPond.  Si
368 no quiere crear una partición separada, tan sólo tiene que crear un
369 archivo de un tamaño razonable y usarlo para montar un dispositivo
370 loop.  El sistema de archivos separado garantiza también que LilyPond
371 nunca pueda escribir en un espacio mayor del que se le permita.
372
373 @item Preparar un usuario separado
374 Se debe usar un usuario y grupo separados (digamos
375 @code{lily}/@code{lily}) con bajos privilegios para ejecutar LilyPond
376 dentro de la jaula.  Debería existir un solo directorio con permisos
377 de escritura para este usuario, y debe pasarse en el valor
378 @var{directorio}.
379
380 @item Preparar la jaula
381 LilyPond necesita leer algunos archivos mientras se ejecuta.  Todos
382 estos archivos se deben copiar dentro de la jaula, bajo la misma ruta
383 en que aparecen en el sistema de archivos real de root.  Todo el
384 contenido de la instalación de LilyPond (por ejemplo
385 @file{/usr/share/lilypond}) se debe copiar.
386
387 Si surgen problemas, la forma más sencilla de rastrearlos es ejecutar
388 LilyPond usando @command{strace}, lo que le permitirá determinar qué
389 archivos faltan.
390
391 @item Ejecutar LilyPond
392 Dentro de una jaula montada con @code{noexec} es imposible ejecutar
393 ningún programa externo.  Por tanto, LilyPond se debe ejecutar con un
394 backend que no necesite tal programa.  Como ya mencionamos, también se
395 debe ejecutar con privilegios del superusuario (que por supuesto
396 perderá inmediatamente), posiblemente usando @command{sudo}.  Es buena
397 idea limitar el número de segundos de tiempo de CPU que LilyPond puede
398 usar (p.ej., usando @command{ulimit -t}), y, si su sistema operativo
399 lo contempla, el tamaño de la memoria que se puede reservar.
400 @end table
401
402
403 @item -v,--version
404 Mostrar la información de la versión.
405
406 @item -V,--verbose
407 Ser prolijo: mostrar las rutas completas de todos los archivos que se
408 leen, y dar información cronométrica.
409
410 @item -w,--warranty
411 Mostrar la garantía con que viene GNU LilyPond (¡no viene con
412 @strong{NINGUNA GARANTÍA}!).
413 @end table
414
415 @node Variables de entorno
416 @unnumberedsubsec Variables de entorno
417 @translationof Environment variables
418
419
420 @cindex LANG
421 @cindex LILYPOND_DATADIR
422
423 @command{lilypond} reconoce las siguientes variables de entorno:
424 @table @code
425 @item LILYPOND_DATADIR
426 Especifica un directorio en el que los mensajes de localización y de
427 datos se buscarán de forma predeterminada.  El directorio debe
428 contener subdirectorios llamados @file{ly/}, @file{ps/}, @file{tex/},
429 etc.
430
431 @item LANG
432 Selecciona el idioma de los mensajes de advertencia.
433
434 @item LILYPOND_GC_YIELD
435 Con esta variable se puede ajustar la huella y el desempeño de
436 memoria.  Es un porcentaje que ajusta el comportamiento de la
437 administración de memoria.  Con valores más altos, el programa usa más
438 memoria; con valores más bajos, usa más tiempo de CPU.  El valor
439 predeterminado es @code{70}.
440
441 @end table
442
443
444 @node LilyPond en una jaula de chroot
445 @unnumberedsubsec LilyPond en una jaula de chroot
446 @translationof LilyPond in chroot jail
447
448 La preparación del servidor para que ejecute LilyPond en una jaula de
449 chroot es una tarea muy complicada.  Los pasos están relacionados más
450 abajo.  Los ejemplos que aparecen en cada uno de los pasos son válidos
451 para Ubuntu Linux, y pueden requerir el uso de @code{sudo} según
452 corresponda.
453
454 @itemize
455
456 @item Instale los paquetes necesarios: LilyPond, GhostScript e ImageMagick.
457
458 @item Cree un usuario nuevo con el nombre de @code{lily}:
459
460 @example
461 adduser lily
462 @end example
463
464 @noindent
465 Esto también creará un nuevo grupo para el usuario @code{lily}, y una
466 carpeta personal, @code{/home/lily}
467
468 @item En la carpeta personal del usuario @code{lily}, cree un archivo para usarlo como un sistema de archivos separado:
469
470 @example
471 dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
472 @end example
473
474 @noindent
475 Este ejemplo crea un archivo de 200MB para su uso como el sistema de
476 archivos de la jaula.
477
478 @item Cree un dispositivo loop, haga un sistema de archivos y móntelo,
479 después cree una carpeta que sea escribible por el usuario
480 @code{lily}:
481
482 @example
483 mkdir /mnt/lilyloop
484 losetup /dev/loop0 /home/lily/loopfile
485 mkfs -t ext3 /dev/loop0 200000
486 mount -t ext3 /dev/loop0 /mnt/lilyloop
487 mkdir /mnt/lilyloop/lilyhome
488 chown lily /mnt/lilyloop/lilyhome
489 @end example
490
491 @item En la configuración de los servidores, JAIL será @code{/mnt/lilyloop}
492 y DIR será @code{/lilyhome}.
493
494 @item Cree un gran árbol de directorios dentro de la jaula copiando los
495 archivos necesarios, como se muestra en el guión de ejemplo que aparece
496 más abajo.
497
498 Puede usar @code{sed} para crear los archivos de copia necesarios para
499 un ejecutable dado:
500
501 @example
502 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
503 @end example
504
505 @end itemize
506
507 @subheading Guión de ejemplo para Ubuntu 8.04 de 32 bits
508
509 @example
510 #!/bin/sh
511 ## aquí se fijan los valores predeterminados
512
513 username=lily
514 home=/home
515 loopdevice=/dev/loop0
516 jaildir=/mnt/lilyloop
517 # prefijo (¡sin la barra inicial!)
518 lilyprefix=usr/local
519 # el directorio en que lilypond se encuentra instalado en el sistema
520 lilydir=/$lilyprefix/lilypond/
521
522 userhome=$home/$username
523 loopfile=$userhome/loopfile
524 adduser $username
525 dd if=/dev/zero of=$loopfile bs=1k count=200000
526 mkdir $jaildir
527 losetup $loopdevice $loopfile
528 mkfs -t ext3 $loopdevice 200000
529 mount -t ext3 $loopdevice $jaildir
530 mkdir $jaildir/lilyhome
531 chown $username $jaildir/lilyhome
532 cd $jaildir
533
534 mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
535 chmod a+w tmp
536
537 cp -r -L $lilydir $lilyprefix
538 cp -L /bin/sh /bin/rm bin
539 cp -L /usr/bin/convert /usr/bin/gs usr/bin
540 cp -L /usr/share/fonts/truetype usr/share/fonts
541
542 # Ahora la magia de copiar las bibliotecas
543 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
544
545 # Los archivos compartidos para ghostscript...
546       cp -L -r /usr/share/ghostscript usr/share
547 # Los archivos compartidos para ImageMagick
548       cp -L -r /usr/lib/ImageMagick* usr/lib
549
550 ### Ahora, suponiendo que tenemos test.ly en /mnt/lilyloop/lilyhome, deberíamos poder ejecutar:
551 ### Observe que /$lilyprefix/bin/lilypond es un guión, que establece un valor para LD_LIBRARY_PATH : esto es crucial
552       /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
553 @end example
554
555
556 @node Mensajes de error
557 @section Mensajes de error
558 @translationof Error messages
559
560 @cindex error, mensajes de
561 @cindex mensajes de error
562
563 Pueden aparecer distintos mensajes de error al compilar un archivo:
564
565 @table @emph
566
567 @item Advertencia
568 @cindex advertencia
569 Algo tiene un aspecto sospechoso.  Si estamos pidiendo algo fuera de
570 lo común, entenderemos el mensaje y podremos ignorarlo.  Sin embargo,
571 las advertencias suelen indicar que algo va mal con el archivo de
572 entrada.
573
574 @item Error
575 @cindex error
576 Algo va claramente mal.  El paso actual de procesamiento (análisis,
577 interpretación o formateo visual) se dará por terminado, pero el
578 siguiente paso se saltará.
579
580 @item Error fatal
581 @cindex error fatal
582 @cindex fatal, error
583 Algo va claramente mal, y LilyPond no puede seguir.  Rara vez sucede
584 esto.  La causa más frecuente son las tipografías mal instaladas.
585
586 @item Error de Scheme
587 @cindex traza de Scheme
588 @cindex llamadas, traza de
589 @cindex Scheme, error de
590 @cindex error de Scheme
591 Los errores que ocurren al ejecutar código de Scheme se interceptan
592 por parte del intérprete de Scheme.  Si se está ejecutando con las
593 opciones @code{-V} o @code{--verbose} (prolijo) entonces se imprime
594 una traza de llamadas de la función ofensiva.
595
596 @item Error de programación
597 @cindex error de programación
598 @cindex programación, error de
599 Ha habido algún tipo de inconsistencia interna.  Estos mensajes de
600 error están orientados a ayudar a los programadores y a los
601 depuradores.  Normalmente se pueden ignorar.  En ocasiones aparecen en
602 cantidades tan grandes que pueden entorpecer la visión de otros
603 mensajes de salida.
604
605 @item Abortado (volcado de core)
606 Esto señala un error de programación serio que ha causado la
607 interrupción abrupta del programa.  Estos errores se consideran
608 críticos.  Si se topa con uno, envíe un informe de fallo.
609 @end table
610
611 @cindex error, formato de los mensajes de
612
613 Se los errores y advertencias se pueden ligar a un punto del archivo
614 de entrada, los mensajes tienen la forma siguiente:
615
616 @example
617 @var{archivo}:@var{línea}:@var{columna}: @var{mensaje}
618 @var{línea de entrada problemática}
619 @end example
620
621 Se inserta un salto de línea en la línea problemática para indicar la
622 columna en que se encontró el error. Por ejemplo,
623
624 @example
625 prueba.ly:2:19: error: no es una duración: 5
626   @{ c'4 e'
627            5 g' @}
628 @end example
629
630 Estas posiciones son la mejor suposición de LilyPond sobre dónde se ha
631 producido el mensaje de error, pero (por su propia naturaleza) las
632 advertencias y errores se producen cuando ocurre algo inesperado.  Si
633 no ve un error en la línea que se indica del archivo de entrada, trate
634 de comprobar una o dos líneas por encima de la posición indicada.
635
636 Se ofrece más información sobre los errores en la sección @ref{Errores
637 comunes}.
638
639 @node Errores comunes
640 @section Errores comunes
641 @translationof Common errors
642
643 Las condiciones de error que se describen más abajo se producen con
644 frecuencia, aunque su causa no es obvia o fácil de encontrar.  Una vez
645 se han visto y comprendido, se manejan sin problema.
646
647
648 @menu
649 * La música se sale de la página::
650 * Aparece un pentagrama de más::
651 * Error aparente en ../ly/init.ly::
652 * Mensaje de error Unbound variable %::
653 * Mensaje de error FT_Get_Glyph_Name::
654 @end menu
655
656 @node La música se sale de la página
657 @unnumberedsubsec La música se sale de la página
658 @translationof Music runs off the page
659
660 La música que se sale de la página por el margen derecho o que aparece
661 exageradamente comprimida está causada casi siempre por haber
662 introducido una duración incorrecta para una nota, produciendo que la
663 nota final de un compás se extienda más allá de la línea divisoria.
664 Esto no es inválido si la nota final de un compás no termina sobre la
665 línea divisoria introducida automáticamente, pues simplemente se
666 supone que la nota se solapa encima del siguiente compás.  Pero si se
667 produce una larga secuencia tales notas solapadas, la música puede
668 aparecer comprimida o salirse de la página porque los saltos de línea
669 automáticos solamente se pueden insertar al final de compases
670 completos, es decir, aquellos en que todas las notas terminan antes de
671 o justo al final del compás.
672
673 @warning{Una duración incorrecta puede hacer que se inhiban los saltos
674 de línea, lo que llevaría a una sola línea de música muy comprimida o
675 que se salga de la página.}
676
677 La duración incorrecta se puede encontrar fácilmente si se utilizan
678 comprobaciones de compás, véase @ruser{Comprobación de compás y de
679 número de compás}.
680
681 Si realmente queremos tener una serie de estos compases con notas
682 solapadas, debemos insertar una línea divisoria invisible donde
683 queramos el salto de línea.  Para ver más detalles, consulte
684 @ruser{Barras de compás}.
685
686
687 @node Aparece un pentagrama de más
688 @unnumberedsubsec Aparece un pentagrama de más
689 @translationof An extra staff appears
690
691 Si no se crean los contextos explícitamente con @code{\new} o con
692 @code{\context}, se crearán discretamente tan pronto como se encuentra
693 una instrucción que no se puede aplicar a un contexto existente.  En
694 partituras sencillas, la creación automática de los contextos es útil,
695 y casi todos los ejemplos de los manuales de LilyPond se aprovechan de
696 esta simplificación.  Pero ocasionalmente la creación discreta de
697 contextos puede hacer aflorar pentagramas o partituras nuevos e
698 inesperados.  Por ejemplo, podría esperarse que el código siguiente
699 hiciera que todas las notas dentro del pentagrama siguiente estuvieran
700 coloreadas de rojo, pero de hecho el resultado son dos pentagramas,
701 permaneciendo el de abajo con las notas en el color negro
702 predeterminado.
703
704 @lilypond[quote,verbatim,relative=2]
705 \override Staff.NoteHead #'color = #red
706 \new Staff { a }
707 @end lilypond
708
709 Esto es así porque no existe ningún contexto @code{Staff} cuando se
710 procesa la instrucción override de sobreescritura, se crea uno
711 implícitamente y la sobreescritura se aplica a éste, pero entonces la
712 instrucción @code{\new Staff} crea un pentagrama nuevo y distinto, en
713 el que se colocan las notas.  El código correcto para colorear todas
714 las notas de rojo es
715
716 @lilypond[quote,verbatim,relative=2]
717 \new Staff {
718   \override Staff.NoteHead #'color = #red
719   a
720 }
721 @end lilypond
722
723 Como segundo ejemplo, si una instrucción @code{\relative} se escribe
724 dentro de una instrucción @code{\repeat}, el resultado son dos
725 pentagramas, el segundo desplazado respecto al primero, porque la
726 instrucción @code{\repeat} genera dos bloques @code{\relative},
727 cada uno de los cuales crea implícitamente bloques @code{Staff} y
728 @code{Voice}.
729
730 @lilypond[quote,verbatim]
731 \repeat unfold 2 {
732   \relative c' { c4 d e f }
733 }
734 @end lilypond
735
736 El problema se resuelve instanciando el contexto @code{Voice}
737 explícitamente:
738
739 @lilypond[quote,verbatim]
740 \new Voice {
741   \repeat unfold 2 {
742     \relative c' { c4 d e f }
743   }
744 }
745 @end lilypond
746
747
748 @node Error aparente en ../ly/init.ly
749 @unnumberedsubsec Error aparente en @code{../ly/init.ly}
750 @translationof Apparent error in ../ly/init.ly
751
752 Pueden aparecer varios mensajes de error extraños acerca de errores de
753 sintaxis en @code{../ly/init.ly} si el archivo de entrada no está
754 correctamente formado, por ejemplo si no contiene llaves o comillas
755 correctamente emparejados.
756
757 El error más común es la falta de una llave de cierre, (@code{@}}), al
758 final de un bloque @code{score}.  Aquí la solución es obvia: compruebe
759 que el bloque @code{score} está correctamente cerrado.  La estructura
760 correcta de un archivo de entrada está descrita en @rlearning{Cómo
761 funcionan los archivos de entrada de LilyPond}.  Usando un editor que
762 resalte automáticamente las llaves correspondientes es de mucha ayuda
763 para evitar estos errores.
764
765 Una segunda causa frecuente es la falta de un espacio entre la última
766 sílaba de un bloque lyrics (de letra) y la llave de cierre,
767 (@code{@}}).  Sin esta separación, se considera que la llave forma
768 parte de la sílaba.  Siempre se aconseja asegurarse de que hay
769 espacios antes y después de @emph{todas} las llaves.  Para conocer la
770 importancia de este asunto al utilizar letras de canciones, consulte
771 @ruser{Explicación de la letra}.
772
773 Este mensaje de error también puede aparecer si se omiten las comillas
774 de terminación (@code{"}).  En este caso, un mensaje de error
775 adicional debería indicar un número de línea cercano al de aquella
776 donde está el error.  Las comillas desbalanceadas estarán por lo
777 general una o dos líneas por encima.
778
779
780 @node Mensaje de error Unbound variable %
781 @unnumberedsubsec Mensaje de error Unbound variable %
782 @translationof Error message Unbound variable %
783
784 Este mensaje de error aparece al final de los mensajes de la consola o
785 del archivo de registro junto a un mensaje @qq{GUILE señaló un error
786 ...} cada vez que se llame a una rutina de Scheme que
787 (incorrectamente) contenga un comentario @emph{de LilyPond} en lugar
788 de un comentario @emph{de Scheme}.
789
790 Los comentarios de LilyPond comienzan con un símbolo de porcentaje,
791 (@code{%}), y no se deben utilizar dentro de las rutinas de Scheme.
792 Los comentarios de Scheme comienzan con punto y coma, (@code{;}).
793
794
795 @node Mensaje de error FT_Get_Glyph_Name
796 @unnumberedsubsec Mensaje de error FT_Get_Glyph_Name
797 @translationof Error message FT_Get_Glyph_Name
798
799 Este mensaje de error aparece en la salida de la consola o en el
800 archivo log de registro si un archivo de entrada contiene un carácter
801 que no es ASCII y no se ha guardado en la codificación de caracteres
802 UTF-8.  Para ver más detalles, consulte @ruser{Codificación del
803 texto}.
804
805
806