1.8.2 Formatear el texto

Esta sección presenta los formateados básico y avanzado de texto, usando la sintaxis específica del modo de \markup.


Introducción al marcado de texto

Se usa un bloque \markup para tipografiar texto con una sintaxis ampliable que se denomina “modo de marcado”. Tales bloques se pueden emplear en cualquier parte, como se explica en Panorámica de los objetos de texto.

La sintaxis del marcado es similar a la sintaxis usual de LilyPond: una expresión \markup se encierra entre llaves { … }. Una sola palabra se considera como una expresión mínima, y por tanto no necesita estar encerrada entre llaves.

A diferencia de las indicaciones de “texto entrecomillado” simples, los bloques \markup pueden contener expresiones anidadas o instrucciones de marcado, que se introducen utilizando el carácter de barra invertida \ . Estas instrucciones sólo afectan a la expresión que sigue inmediatamente.

\relative {
  a'1-\markup intenso
  a2^\markup { poco \italic più forte  }
  c e1
  d2_\markup { \italic "string. assai" }
  e
  b1^\markup { \bold { molto \italic  agitato } }
  c
}

[image of music]

Un bloque \markup puede contener también cadenas de texto entre comillas. Dichas cadenas se tratan como expresiones de texto mínimas, y por tanto cualquier instrucción de marcado o carácter especial (como \#) se imprimen literalmente sin afectar al formateo del texto. Se puede hacer que se impriman las propias comillas si se les antepone una barra invertida.

\relative {
  a'1^"\italic markup..."
  a_\markup { \italic "... prints \"italic\" letters!" }
  a a
}

[image of music]

Para que se traten como una expresión distinta, es necesario que las listas de palabras estén encerradas entre comillas o precedidas de una instrucción. La forma en que están definidas las expresiones de marcado afecta a cómo se apilan, se centran y se alinean estas expresiones; en el ejemplo siguiente, la segunda expresión \markup se trata igual que la primera:

\relative c'' {
  c1^\markup { \center-column { a bbb c } }
  c1^\markup { \center-column { a { bbb c } } }
  c1^\markup { \center-column { a \line { bbb c } } }
  c1^\markup { \center-column { a "bbb c" } }
}

[image of music]

Los marcados se pueden almacenar dentro de variables. Estas variables se pueden adjuntar directamente a las notas:

allegro = \markup { \bold \large Allegro }

{
  d''8.^\allegro
  d'16 d'4 r2
}

[image of music]

Se puede encontrar una lista exhaustiva de las instrucciones específicas de \markup en Instrucciones de marcado de texto. The inner workings of these commands, and how to implement new ones, is explained in Markup functions.

Véase también

Referencia de la notación: Panorámica de los objetos de texto, Instrucciones de marcado de texto.

Manual de extensión: Funciones de marcado.

Fragmentos de código: Text.

Archivos de inicio: ‘scm/markup.scm’.

Advertencias y problemas conocidos

Los mensajes de error de sintaxis para el modo de marcado a menudo producen confusión.


Seleccionar la tipografía y su tamaño

Está contemplado de forma básica el cambio de la fuente tipográfica en el modo de marcado:

\relative {
  d''1^\markup {
    \bold { Più mosso }
    \italic { non troppo \underline Vivo }
  }
  r2 r4 r8
  d,_\markup { \italic quasi \smallCaps Tromba }
  f1 d2 r
}

[image of music]

El tamaño de la fuente tipográfica se puede alterar en relación al tamaño global del pentagrama, de una serie de formas como se ve a continuación.

Se puede fijar a un tamaño predefinido:

\relative b' {
  b1_\markup { \huge Sinfonia }
  b1^\markup { \teeny da }
  b1-\markup { \normalsize camera }
}

[image of music]

Se puede establecer a un tamaño relativo al valor anterior:

\relative b' {
  b1_\markup { \larger Sinfonia }
  b1^\markup { \smaller da }
  b1-\markup { \magnify #0.6  camera }
}

[image of music]

Se puede aumentar o disminuir de forma relativa al valor fijado por el tamaño global del pentagrama:

\relative b' {
  b1_\markup { \fontsize #-2 Sinfonia }
  b1^\markup { \fontsize #1 da }
  b1-\markup { \fontsize #3 camera }
}

[image of music]

También se puede establecer a un tamaño de puntos fijo, independientemente del tamaño global del pentagrama:

\relative b' {
  b1_\markup { \abs-fontsize #20 Sinfonia }
  b1^\markup { \abs-fontsize #8 da }
  b1-\markup { \abs-fontsize #14 camera }
}

[image of music]

Si el texto incluye espacios, es mejor escribir todo entre comillas, de forma que el tamaño de cada espacio sea correcto para el tamaño de los otros caracteres.

\markup \fontsize #6 \bold { Sinfonia da camera }
\markup \fontsize #6 \bold { "Sinfonia da camera" }

[image of music]

El texto se puede imprimir como subíndice o como superíndice. De forma predeterminada se imprimen en un tamaño menor, pero también se puede usar un tamaño normal:

\markup {
  \column {
    \line { 1 \super st movement }
    \line { 1 \normal-size-super st movement
      \sub { (part two) }  }
  }
}

[image of music]

El modo de marcado ofrece una manera fácil de elegir familias de tipografía alternativas. A no ser que se especifique de otro modo, se selecciona automáticamente la fuente predeterminada con serifa, de tipo romano: en la última línea del ejemplo siguiente, no hay diferencia entre la primera y la segunda palabra.

\markup {
  \column {
    \line { Act \number 1 }
    \line { \sans { Scene I. } }
    \line { \typewriter { Verona. An open place. } }
    \line { Enter \roman Valentine and Proteus. }
  }
}

[image of music]

Algunas de estas familias, usadas para elementos específicos como números o matices, no ofrecen todos los caracteres, como se explica en Indicaciones dinámicas nuevas y Marcas de repetición manual.

Si se usan dentro de una palabra, algunas instrucciones de cambio de tipografía o de formateo pueden producir un espacio vacío no deseado. Esto se puede solucionar concatenando en uno solo los distintos elementos de texto:

\markup {
  \column {
    \line {
      \concat { 1 \super st }
      movement
    }
    \line {
      \concat { \dynamic p , }
      \italic { con dolce espressione }
    }
  }
}

[image of music]

Se puede encontrar una lista exhaustiva de instrucciones de cambio y utilización personalizada de las fuentes tipográficas en Tipografías.

También es posible definir conjuntos personalizados de fuentes, tal y como se explica en Tipografías.

Instrucciones predefinidas

\teeny, \tiny, \small, \normalsize, \large, \huge, \smaller, \larger.

Véase también

Referencia de la notación: Tipografías, Indicaciones dinámicas nuevas, Marcas de repetición manual, Tipografías.

Archivos de inicio: ‘scm/define-markup-commands.scm’.

Fragmentos de código: Text.

Referencia de funcionamiento interno: TextScript.

Advertencias y problemas conocidos

La utilización de las instrucciones de tamaño de texto \teeny, \tiny, \small, \normalsize, \large y \huge conducen a un espaciado de las líneas inconsistente comparado con el uso de \fontsize.


Alineación de texto

Esta subsección trata sobre cómo colocar texto en el modo de marcado. Los objetos de marcado también se pueden mover como un todo, usando la sintaxis que se describe en Mover objetos.

Los objetos de marcado se pueden alinear de distintas maneras. De forma predeterminada, una indicación de texto se alinea sobre el borde izquierdo: en el ejemplo siguiente, no existe diferencia entre los marcados primero y segundo. El ejemplo muestra también varias formas sintácticamente correctas de ubicar las instrucciones de alineación:

\relative {
  d''1-\markup { poco }
  f
  d-\markup { \left-align poco }
  f
  d-\markup { \center-align { poco } }
  f
  d-\markup \right-align { poco }
}

[image of music]

Se puede realizar un ajuste fino de la alineación horizontal usando un valor numérico:

\relative {
  a'1-\markup { \halign #-1 poco }
  e'
  a,-\markup { \halign #0 poco }
  e'
  a,-\markup { \halign #0.5 poco }
  e'
  a,-\markup { \halign #2 poco }
}

[image of music]

Por último, las palabras y otros objetos se pueden desplazar si los hacemos preceder de un relleno. También es posible usar un relleno negativo que hará moverse a los objetos subsiguentes en la dirección opuesta. Aunqe normalmente el relleno es invisible, en el ejemplo siguiente se han añadido instrucciones para poder verlo con más claridad:

\relative {
  d''1-\markup { poco }
  f
  d-\markup { \with-color #darkred \box \hspace #4 poco }
  f
  d-\markup { \with-color #darkred \box \hspace #-4 poco }
  f
  d-\markup { \with-color #darkred \box \hspace #10 poco }
}

[image of music]

Ciertos objetos pueden poseer sus propios procedimientos de alineación, y por tanto no resultan afectados por estas instrucciones. Es posible mover estos objetos de marcado como un todo, como se muestra por ejemplo en Indicaciones de texto.

La alineación vertical se puede establecer de una forma similar. Como se ha dicho más arriba, los objetos de marcado se pueden mover como un todo; sin embargo, también es posible mover elementos específicos dentro de un bloque de marcado.

\relative {
  d'2^\markup {
    Acte I
    \raise #2 { Scène 1 }
  }
  a'
  g_\markup {
    \lower #4 \bold { Très modéré }
  }
  a
  d,^\markup \raise #4 \italic {
    Une forêt.
  }
  a'4 a g2 a
}

[image of music]

Algunas instrucciones pueden afectar tanto a la alineación horizontal como a la vertical de los objetos de texto en el modo de marcado:

\relative {
  d'2^\markup {
    Acte I
    \translate #'(-1 . 2) "Scène 1"
  }
  a'
  g_\markup {
    \general-align #Y #3.2 \bold "Très modéré"
  }
  a
  d,^\markup \translate-scaled #'(-1 . 2) \teeny {
   "Une forêt."
  }
  a'4 a g2 a
}

[image of music]

Una vez más resulta muy útil el relleno (ya sea positivo o negativo) para colocar los objetos verticalmente, cuando van dentro de columnas de elementos de marcado:

\relative {
  d'2^\markup {
    Acte I
    \column {
      \with-color #darkred \box \vspace #-1
      "Scène 1"
    }
  }
  a'
  g_\markup \column {
    \with-color #darkred \box \vspace #1
    "Très modéré"
  }
  a
  d,^\markup \column {
   "Une forêt."
    \with-color #darkred \box \vspace #2
  }
  a'4 a g2 a
}

[image of music]

Un objeto de marcado puede incluir varias líneas de texto. En el ejemplo siguiente, cada elemento o expresión se sitúa en su propia línea, ya sea alineada por la izquierda o centrada:

\markup {
  \column {
    a
    "b c"
    \line { d e f }
  }
  \hspace #10
  \center-column {
    a
    "b c"
    \line { d e f }
  }
}

[image of music]

De forma similar, una lista de elementos o expresiones se puede repartir de forma que rellene por completo el ancho de la línea horizontal (si hay un solo elemento, se centra en el papel). A su vez, estas expresiones pueden incluir texto de varias líneas o cualquier otra expresión de marcado:

\markup {
  \fill-line {
    \line { William S. Gilbert }
    \center-column {
      \huge \smallCaps "The Mikado"
      or
      \smallCaps "The Town of Titipu"
    }
    \line { Sir Arthur Sullivan }
  }
}
\markup {
  \fill-line { 1885 }
}

[image of music]

Los elementos se pueden extender para que cubran cualquier anchura especificada mediante la sobreescritura de la propiedad line-width. De forma predetermianda está establecida a #f lo que implica toda la línea:

\markup {
  \column {
    \fill-line { left center right }
    \null
    \override #'(line-width . 30)
    \fill-line { left center right }
  }
}

[image of music]

Las indicaciones de texto largas se pueden también ajustar automáticamente según un ancho de línea dado. Estarán alineados por la izquierda o justificados, como se muestra en el ejemplo siguiente.

\markup {
  \column {
    \line  \smallCaps { La vida breve }
    \line \bold { Acto I }
    \wordwrap \italic {
      (La escena representa el corral de una casa de
      gitanos en el Albaicín de Granada.  Al fondo una
      puerta por la que se ve el negro interior de
      una Fragua, iluminado por los rojos resplandores
      del fuego.)
    }
    \hspace #0

    \line \bold { Acto II }
    \override #'(line-width . 50)
    \justify \italic {
      (Calle de Granada.  Fachada de la casa de Carmela
      y su hermano Manuel con grandes ventanas abiertas
      a través de las que se ve el patio
      donde se celebra una alegre fiesta)
    }
  }
}

[image of music]

Hay una lista exhaustiva de instrucciones de alineación de texto en Align.

Véase también

Manual de aprendizaje: Mover objetos.

Referencia de la notación: Align, Indicaciones de texto.

Archivos de inicio: ‘scm/define-markup-commands.scm’.

Fragmentos de código: Text.

Referencia de funcionamiento interno: TextScript.


Notación gráfica dentro de elementos de marcado

Se puede añadir diversos objetos gráficos a una partitura, utilizando instrucciones de marcado.

Ciertas instrucciones de marcado permiten la decoración de elementos de texto con gráficos, como se muestra en el ejemplo siguiente.

\markup \fill-line {
  \center-column {
    \circle Jack
    \box "in the box"
    \null
    \line {
      Erik Satie
      \hspace #3
      \bracket "1866 - 1925"
    }
    \null
    \rounded-box \bold Prelude
  }
}

[image of music]

Algunas instrucciones pueden requerir un aumento del relleno alrededor del texto: esto se puede conseguir con algunas instrucciones de marcado descritas exhaustivamente en Align.

\markup \fill-line {
  \center-column {
    \box "Charles Ives (1874 - 1954)"
    \null
    \box \pad-markup #2 "THE UNANSWERED QUESTION"
    \box \pad-x #8 "A Cosmic Landscape"
    \null
  }
}
\markup \column {
  \line {
    \hspace #10
    \box \pad-to-box #'(-5 . 20) #'(0 . 5)
      \bold "Largo to Presto"
  }
  \pad-around #3
      "String quartet keeps very even time,
Flute quartet keeps very uneven time."
}

[image of music]

Se pueden imprimir otros símbolos o elementos gráficos sin que se requiera ningún otro texto. De igual manera que en el caso de las expresiones de marcado, dichos objetos se pueden combinar:

\markup {
  \combine
    \draw-circle #4 #0.4 ##f
    \filled-box #'(-4 . 4) #'(-0.5 . 0.5) #1
  \hspace #5

  \center-column {
    \triangle ##t
    \combine
      \draw-line #'(0 . 4)
      \arrow-head #Y #DOWN ##f
  }
}

[image of music]

Entre las funcionalidades gráficas avanzadas se encuentran la posibilidad de incluir archivos de imagen externos convertidos al formato de PostScript Encapsulado (eps), y la inclusión directa de gráficos dentro del archivo de entrada, usando código PostScript nativo. En tal caso puede ser de utilidad la especificación explícita del tamaño del dibujo, como se ejemplifica a continuación:

c'1^\markup {
  \combine
    \epsfile #X #10 "./context-example.eps"
    \with-dimensions #'(0 . 6) #'(0 . 10)
    \postscript "
      -2 3 translate
      2.7 2 scale
      newpath
      2 -1 moveto
      4 -2 4 1 1 arct
      4 2 3 3 1 arct
      0 4 0 3 1 arct
      0 0 1 -1 1 arct
      closepath
      stroke"
  }
c'

[image of music]

Hay una lista exhaustiva de instrucciones específicas de gráficos en Graphic.

Véase también

Referencia de la notación: Align, Dimensiones, Anotaciones editoriales, Graphic.

Archivos de inicio: ‘scm/define-markup-commands.scm’, ‘scm/stencil.scm’.

Fragmentos de código: Text.

Referencia de funcionamiento interno: TextScript.


Notación musical dentro de elementos de marcado

Se pueden añadir a la partitura diversos elementos de notación musical, dentro de un objeto de marcado.

Las notas y las alteraciones se pueden escribir utilizando instrucciones de marcado:

a'2 a'^\markup {
  \note {4} #1
  =
  \note-by-number #1 #1 #1.5
}
b'1_\markup {
  \natural \semiflat \flat
  \sesquiflat \doubleflat
}
\glissando
a'1_\markup {
  \natural \semisharp \sharp
  \sesquisharp \doublesharp
}
\glissando b'

[image of music]

Otros objetos de notación se pueden también imprimir en el modo de marcado:

\relative {
  g1 bes
  ees\finger \markup \tied-lyric "4~1"
  fis_\markup { \dynamic rf }
  bes^\markup {
    \beam #8 #0.1 #0.5
  }
  cis
  d-\markup {
    \markalphabet #8
    \markletter #8
  }
}

[image of music]

De forma más general, cualquier símbolo musical disponible se puede incluir por separado dentro de un objeto de marcado, como se ejemplifica a continuación; hay una lista exhaustiva de estos símbolos y sus nombres en La tipografía Emmentaler.

\relative {
  c''2
  c'^\markup { \musicglyph "eight" }
  c,4
  c,8._\markup { \musicglyph "clefs.G_change" }
  c16
  c2^\markup { \musicglyph "timesig.neomensural94" }
}

[image of music]

Otra forma de imprimir glifos que no son de texto se encuentra descrita en Explicación de las fuentes tipográficas. Tiene la utilidad de imprimir llaves de distintos tamaños.

El modo de marcado también contempla diagramas para instrumentos específicos:

\relative {
  c''1^\markup {
    \fret-diagram-terse "x;x;o;2;3;2;"
  }
  c^\markup {
    \harp-pedal "^-v|--ov^"
  }
  c
  c^\markup {
    \combine
      \musicglyph "accordion.discant"
      \combine
	\raise #0.5 \musicglyph "accordion.dot"
	\raise #1.5 \musicglyph "accordion.dot"
  }
}

[image of music]

Dichos diagramas se encuentran documentados en Instrument Specific Markup.

Incluso una partitura completa se puede incluir dentro de un objeto de marcado:

\relative {
  c'4 d^\markup {
    \score {
      \relative { c'4 d e f }
    }
  }
  e f |
  c d e f
}

[image of music]

Hay una lista exhaustiva de instrucciones relacionadas con la notación musical en Music.

Véase también

Referencia de la notación: Music, La tipografía Emmentaler, Explicación de las fuentes tipográficas.

Archivos de inicio: ‘scm/define-markup-commands.scm’, ‘scm/fret-diagrams.scm’, ‘scm/harp-pedals.scm’.

Fragmentos de código: Text.

Referencia de funcionamiento interno: TextScript.

Advertencias y problemas conocidos

El espaciado vertical de un \score dentro de un objeto de marcado está controlado por baseline-skip. Todo ajuste del bloque \paper se ignora.


Elementos de marcado de varias páginas

Aunque los objetos de marcado estándar no se pueden dividir, una sintaxis específica hace posible la introducción de líneas de texto que pueden abarcar varias páginas:

\markuplist {
  \justified-lines {
    Un texto muy largo de líneas justificadas.
    ...
  }
  \wordwrap-lines {
    Otro párrafo muy largo.
    ...
  }
  ...
}

[image of music]

Esta sintaxis acepta una lista de elementos de marcado, que pueden ser

Hay una lista exhaustiva de las instrucciones de lista de marcado en Instrucciones de listas de marcado de texto.

Véase también

Referencia de la notación: Instrucciones de listas de marcado de texto.

Archivos de inicio: ‘scm/define-markup-commands.scm’.

Manual de extensión: Definición de nuevas instrucciones de lista de marcado.

Fragmentos de código: Text.

Referencia de funcionamiento interno: TextScript.

Instrucciones predefinidas

\markuplist.


LilyPond — Referencia de la notación v2.23.82 (rama de desarrollo).