+@funindex \paper
+@funindex \midi
+@funindex \layout
+@funindex \header
+@funindex \score
+@funindex \book
+@funindex \bookpart
+
+Un archivo @code{.ly} puede contener cualquier número de expresiones
+del nivel superior, donde una expresión del nivel superior es una de
+las siguientes posibilidades:
+
+@itemize @bullet
+@item
+Una definición de salida, como @code{\paper}, @code{\midi} y
+@code{\layout}. Tal definición en el nivel más alto cambia los
+ajustes predeterminados para todo el libro. Si se introduce más de
+una de estas definiciones del mismo tipo en el nivel más alto,
+cualquier definición en una expresión posterior tiene prioridad.
+
+@item
+Una expresión directa de Scheme, como
+@code{#(set-default-paper-size "a7" 'landscape)} o
+@code{#(ly:set-option 'point-and-click #f)}.
+
+@item
+Un bloque @code{\header}. Esto establece el bloque de encabezamiento
+global. Es el bloque que contiene las definiciones de los ajustes
+para todo el libro, como el compositor, título, etc.
+
+@item
+Un bloque @code{\score}. Esta partitura se reúne con otras partituras
+del nivel superior, y se combina con ellas formando un @code{\book}
+(libro) único. Este comportamiento se puede cambiar estableciendo el
+valor de la variable @code{toplevel-score-handler} en el nivel
+superior. El @emph{handler} predeterminado se define en el archivo de
+inicio @file{../scm/@/lily@/.scm}.
+
+@item
+Un bloque @code{\book} combina lógicamente varios movimientos (es
+decir, varios bloques @code{\score}) en un solo documento. Si hay
+varias partituras @code{\score}, se crea un solo archivo de salida
+para cada bloque @code{\book}, en el que se concatenan todos los
+movimientos correspondientes. La única razón para especificar
+explícitamente bloques @code{\book} en un archivo de entrada
+@code{.ly} es si queremos crear varios archivos de salida a partir de
+un único archivo de entrada. Una excepción se da dentro de los
+documentos de lilypond-book, en los que tenemos que escribir
+explícitamente un bloque @code{\book} si queremos tener más de una
+única partitura @code{\score} o marcado @code{\markup} en el mismo
+ejemplo. Se puede cambiar este comportamiento estableciendo el valor
+de la variable @code{toplevel-book-handler} en el nivel superior. El
+@emph{handler} predeterminado se define en el archivo de inicio
+@file{../scm/@/lily@/.scm}.
+
+@item
+Un bloque @code{\bookpart}. Un libro puede dividirse en varias
+partes, utilizando bloques @code{\bookpart}, con objeto de facilitar
+la inserción de saltos de página o usar distintos ajustes de
+@code{\paper} en las distintas partes.
+
+@item
+Una expresión musical compuesta, como
+@example
+@{ c'4 d' e'2 @}
+@end example
+
+Esto añade la pieza al @code{\score} y la conforma dentro de un libro
+único junto a todas las demás partituras @code{\score} y expresiones
+musicales del nivel superior. En otras palabras, un archivo que
+contiene sólo la expresión musical anterior se traduce a
+
+@example
+\book @{
+ \score @{
+ \new Staff @{
+ \new Voice @{
+ @{ c'4 d' e'2 @}
+ @}
+ @}
+ @}
+ \layout @{ @}
+ \header @{ @}
+@}
+@end example
+
+Se puede cambiar este comportamiento estableciendo el valor de la
+variable @code{toplevel-music-handler} en el nivel más alto. El
+@emph{handler} predeterminado se define en el archivo de inicio
+@file{../scm/@/lily@/.scm}.
+
+@item
+Un texto de marcado, por ejemplo una estrofa
+@example
+\markup @{
+ 2. Estrofa dos, línea uno
+@}
+@end example
+
+Los textos de marcado se colocan encima, en medio o debajo de las
+partituras o expresiones musicales, según donde aparezcan escritos.
+
+@cindex variables
+
+@item
+Una variable, como
+@example
+fulano = @{ c4 d e d @}
+@end example
+
+Esto se puede utilizar más tarde en el archivo escribiendo
+@code{\fulano}. El nombre de las variables ha de ser exclusivamente
+alfabético; sin números, guiones ni barras bajas.
+
+@end itemize
+
+El ejemplo siguiente muestra tres cosas que se pueden introducir en el
+nivel superior:
+
+@example
+\layout @{
+ % No justificar la salida
+ ragged-right = ##t
+@}
+
+\header @{
+ title = "Do-re-mi"
+@}
+
+@{ c'4 d' e2 @}
+@end example
+
+En cualquier punto del archivo se pueden introducir cualquiera de las
+instrucciones léxicas siguientes:
+
+@itemize
+@item @code{\version}
+@item @code{\include}
+@item @code{\sourcefilename}
+@item @code{\sourcefileline}
+@item
+Un comentario de una línea, determinado por un símbolo @code{%} al principio.
+
+@item
+Un comentario de varias líneas, delimitado por @code{%@{ .. %@}}.
+
+@end itemize
+
+@cindex espacios en blanco
+
+Por lo general se ignoran los espacios entre elementos del flujo de
+entrada, y se pueden omitir o aumentar tranquilamente para mejorar la
+legibilidad. Sin embargo, los espacios se deben utilizar siempre para
+evitar errores, en las siguientes situaciones:
+
+@itemize
+@item Alrededor de todas y cada una de las llaves curvas de apertura y cierre.
+@item A continuación de las instrucciones y variables, es decir, todos los elementos
+que comienzan con un signo @code{\} de barra invertida.
+@item A continuación de todo elemento que se deba interpretar como expresión
+de Scheme, es decir, todo elemento que comience por un signo @code{#}.
+@item Para separar los elementode de una expresión de Scheme.
+@item Dentro de @code{lyricmode} para separar todos los términos de las instrucciones
+@code{\override} y @code{\set}. Concretamente, hay que usar espacios
+alrededor del punto y el signo igual en instrucciones como
+@code{\override Score . LyricText #'font-size = #5} y antes y después
+de la instrucción completa.
+
+@end itemize
+
+@seealso
+Manual de aprendizaje:
+@rlearning{How LilyPond input files work}.