@c -*- coding: utf-8; mode: texinfo; -*- @ignore Translation of GIT committish: 2c2b739a8f4c1998ffb6423d1d73350426ec59be When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore @c \version "2.11.38" @node Text @section Text @lilypondfile[quote]{text-headword.ly} Esta sección explica cómo incluir texto (con diversos estilos de formateo) en las partituras. @cindex Texto, en otros idiomas Para escribir texto con caracteres acentuados y especiales (como los de idiomas distintos del inglés), sencillamente inserte los caracteres directamente en el archivo de lilypond. El archivo se debe guardar como UTF-8. Para ver más información, consulte @ref{Text encoding}. @menu * Writing text:: * Formatting text:: * Fonts:: @end menu @node Writing text @subsection Writing text @menu * Text scripts:: * Text and line spanners:: * Text spanners:: * Text marks:: * New dynamic marks:: @end menu @node Text scripts @subsubsection Text scripts @cindex Texto, inscripciones de @cindex texto, elementos no vacíos de @cindex no vacíos, textos Es posible colocar cadenas de texto arbitrarias o @ref{Formatting text}, encima o debajo de las notas utilizando una cadena @code{c^"texto"}. Por omisión, estas indicaciones no influyen sobre el espaciado de las notas, pero si se utiliza la instrucción @code{\textLengthOn}, las anchuras se tendrán en cuenta @lilypond[quote,fragment,ragged-right,verbatim,relative=1] c4^"longtext" \textLengthOn c4_"longlongtext" c4 @end lilypond @noindent Para evitar que el texto influya sobre el espaciado, utilice @code{\textLengthOff}. También se pueden añadir a una nota textos con un formato más complejo utilizando la orden markup (marcado), @lilypond[fragment,ragged-right,verbatim,quote] c'4^\markup { bla \bold bla } @end lilypond La instrucción @code{\markup} se describe con más detalle en @ref{Formatting text}. @predefined @funindex \textLengthOn @code{\textLengthOn}, @funindex \textLengthOff @code{\textLengthOff}. @commonprop La comprobación (por parte del programa) que asegura que las inscripciones de texto y la letra se encuentran dentro de los márgenes, es una tarea computacional relativamente grande. Para acelerar el procesado, lilypond de entrada no realiza dichos cálculos; para habilitarlo, utilice @example \override Score.PaperColumn #'keep-inside-line = ##t @end example @seealso En este manual: @ref{Formatting text}. Referencia del programa: @rinternals{TextScript}. @node Text and line spanners @subsubsection Text and line spanners Ciertas indicaciones de ejecución, p.ej., @i{rallentando}, @i{accelerando} y los @i{trinos} se escriben como texto y se extienden sobre muchos compases mediante líneas, a veces punteadas u onduladas. Todos ellos usan las mismas rutinas que el glissando para dibujar los textos y las líneas, y por ello el ajuste fino de su comportamiento se hace de la misma manera. Se hace con un spanner (un objeto de extensión), y la rutina responsable de dibujar los objetos de extensión es @code{ly:line-interface::print}. Esta rutina determina la colocación exacta de los dos @i{extremos del objeto de extensión} y dibuja una línea entre ellos, en el estilo solicitado. He aquí un ejemplo de los distintos estilos de línea disponibles, y cómo aplicarles ajustes finos. @lilypond[relative=2,ragged-right,verbatim,fragment] d2 \glissando d'2 \once \override Glissando #'style = #'dashed-line d,2 \glissando d'2 \override Glissando #'style = #'dotted-line d,2 \glissando d'2 \override Glissando #'style = #'zigzag d,2 \glissando d'2 \override Glissando #'style = #'trill d,2 \glissando d'2 @end lilypond La información que determina los puntos extremos se calcula al vuelo para cada objeto gráfico, pero es posible sobreescribirlos. @lilypond[relative=2,ragged-right,verbatim,fragment] e2 \glissando f \once \override Glissando #'bound-details #'right #'Y = #-2 e2 \glissando f @end lilypond El objeto @code{Glissando}, como cualquier otro que use la rutina @code{ly:line-interface::print}, conlleva una lista asociativa anidada. En la instrucción anterior, el valor de @code{Y} se establece a @code{-2} para la lista asociativa correspondiente al extremo final de la derecha. Por supuesto, también es posible ajustar el extremo de la izquierda con @code{left} en vez de @code{right}. Si no se establece el valor de @code{Y}, se calcula a partir de la posición vertical del punto de anclaje derecho del objeto de extensión. En el caso de un salto de línea, los valores de los puntos extremos se extienden con los contenidos de las sublistas @code{left-broken} y @code{right-broken}, por ejemplo @lilypond[relative=2,ragged-right,verbatim,fragment] \override Glissando #'breakable = ##T \override Glissando #'bound-details #'right-broken #'Y = #-3 c1 \glissando \break f1 @end lilypond Las siguientes propiedades se pueden usar para el ajuste fino de los objetos de extensión: @table @code @item Y Establece la coordenada Y del punto extremo, en espacios de pentagrama. Por omisión, es el centro del objeto con que enlaza. Así, para un glissando apuntaría al centro vertical de la cabeza de la nota. Para objetos de extensión horizontales, como el de texto y los trinos, tiene el valor fijo de cero. @item attach-dir Determina el lugar donde la línea comienza y acaba en la dirección X, relativo al objeto al que se enlaza. Así, un valor de @code{-1} (o @code{LEFT}) hace que la línea comience o acabe en el lado izquierdo de la cabeza de la nota a la que el objeto se encuentra adjuntado. @item X Es la coordenada absoluta del extremo final. Normalmente se calcula al vuelo y no tiene mucho sentido sobreescribirlo. @item stencil Los objetos extensores de línea pueden tener símbolos al principio o al final, que se encuentra contenido dentro de esta subpropiedad. Es para uso interno y se recomienda usar @code{text}. @item text Es un elemento de marcado que se evalúa para generar la propiedad stencil anterior. Se usa para poner @i{cresc.} y @i{tr} sobre los objetos de extensión horizontales. @lilypond[quote,ragged-right,fragment,relative=2,verbatim] \override TextSpanner #'bound-details #'left #'text = \markup { \small \bold Slower } c2\startTextSpan b c a\stopTextSpan @end lilypond @item stencil-align-dir-y @item stencil-offset Sin un valor establecido para esto, el stencil se coloca simplemente sobre el extremo del final, tal y como se encuentra definido por las subpropiedades @code{X} e @code{Y}. La asignación de un valor para @code{stencil-align-dir-y} o para @code{stencil-offset} desplaza el símbolo del extremo de forma relativa al extremo de la línea @lilypond[relative=1,fragment,verbatim] \override TextSpanner #'bound-details #'left #'stencil-align-dir-y = #DOWN \override TextSpanner #'bound-details #'right #'stencil-align-dir-y = #UP \override TextSpanner #'bound-details #'left #'text = #"gggg" \override TextSpanner #'bound-details #'right #'text = #"hhhh" c4^\startTextSpan c c c \stopTextSpan @end lilypond @item arrow (flecha) El establecimiento de esta subpropiedad al valor de @code{#t} produce una cabeza de flecha al final de la línea. @item padding (relleno) Esta subpropiedad controla el espacio entre el punto extremo de la línea especificado y el extremo real. Sin relleno, un glissando empezaría y acabaría en el centro de las cabezas de las notas. @end table @seealso Referencia del programa: @rinternals{TextSpanner}, @rinternals{Glissando}, @rinternals{VoiceFollower}, @rinternals{TrillSpanner}, @rinternals{line-spanner-interface}. Ejemplos: @lsr{expressive,line-styles.ly}, @lsr{expressive,line-arrows.ly} @node Text spanners @subsubsection Text spanners @cindex Texto, objetos de extensión de Algunas indicaciones de interpretación, p.ej., @i{rallentando} o @i{accelerando}, se escriben como texto y se extienden sobre varios compases con líneas de puntos. Estos textos se crean mediante objetos de extensión; añada @code{\startTextSpan} y @code{\stopTextSpan} a la primera y última notas del intervalo abarcado por el objeto de extensión. La cadena de caracteres que se imprime, así como el estilo, se establecen a través de las propiedades de objeto @lilypond[quote,ragged-right,fragment,relative=1,verbatim] c1 \textSpannerDown \override TextSpanner #'bound-details #'left #'text = \markup { \upright "rall" } c2\startTextSpan b c\stopTextSpan a \break \textSpannerUp \override TextSpanner #'bound-details #'left #'text = \markup { \italic "rit" } c2\startTextSpan b c\stopTextSpan a @end lilypond @predefined @funindex textSpannerUp @code{\textSpannerUp}, @funindex textSpannerDown @code{\textSpannerDown}, @funindex textSpannerNeutral @code{\textSpannerNeutral}. @commonprop Para imprimir una línea continua, use @example \override TextSpanner #'style = #'line @end example @seealso Referencia del programa: @rinternals{TextSpanner}. @node Text marks @subsubsection Text marks @cindex coda sobre la línea divisoria @cindex segno sobre la línea divisoria @cindex calderón sobre la línea divisoria @cindex líneas divisorias, símbolos sobre las @funindex \mark La instrucción @code{\mark} (llamada de ensayo) se usa principalmente para @ref{Rehearsal marks}, pero también se puede usar para poner símbolos como coda, segno y calderón encima de una línea divisoria. Utilice @code{\markup} para acceder al símbolo apropiado (los símbolos se encuentran relacionados en @ref{The Feta font}). @lilypond[fragment,quote,ragged-right,verbatim,relative=2] c1 \mark \markup { \musicglyph #"scripts.ufermata" } c1 @end lilypond @noindent @code{\mark} se tipografía solamente sobre el pentagrama superior de la partitura. Si especifica la instrucción @code{\mark} en una línea divisoria, la llamada resultante se coloca encima de la barra. Si lo especifica en medio de un compás la llamada resultante se coloca entre las notas. Si se especifica antes del comienzo de una línea de la partitura, se coloca antes de la primera nota de esta línea. Por último, si la marca se produce en un salto de línea, se imprimirá al principio de la línea siguiente. @c IMO this is a bug; hopefully it'll be fixed soon, so I can @c delete this sentence. -gp Si no hay ninguna línea después de la actual, la llamada no se imprimirá en absoluto. @commonprop Para imprimir la llamada al final de la línea actual, utilice @example \override Score.RehearsalMark #'break-visibility = #begin-of-line-invisible @end example Con frecuencia, @code{\mark} se utiliza para añadir texto al final de un compás. En tales casos es muy útil cambiar el @code{#'self-alignment} @lilypond[fragment,quote,ragged-right,verbatim,relative=2] \override Score.RehearsalMark #'break-visibility = #begin-of-line-invisible c1 c c c4 c c c \once \override Score.RehearsalMark #'self-alignment-X = #right \mark "D.S. al Fine " @end lilypond Las llamadas de texto se pueden alinear con otros objetos de notación además de las líneas divisorias, @lilypond[fragment,quote,ragged-right,verbatim,relative=2] \relative { c1 \key cis \major \clef alto \override Score.RehearsalMark #'break-align-symbols = #'(key-signature) \mark "on key" cis \key ces \major \override Score.RehearsalMark #'break-align-symbols = #'(clef) \clef treble \mark "on clef" ces \override Score.RehearsalMark #'break-align-symbols = #'(time-signature) \key d \minor \clef tenor \time 3/4 \mark "on time" c } @end lilypond Los símbolos posibles para la lista @code{break-align-symbols} son @code{ambitus}, @code{breathing-sign}, @code{clef}, @code{custos}, @code{staff-bar}, @code{left-edge}, @code{key-cancellation}, @code{key-signature} y @code{time-signature}. Las llamadas de texto, por omisión se alinearán con el punto medio del objeto de notación, pero esto se puede cambiar sobreescribiendo las propiedades @code{break-align-anchor-alignment} y @code{break-align-anchor} para el objeto gráfico apropiado. @c KEEP LY @lilypond[fragment,quote,ragged-right,verbatim] { \override Score.RehearsalMark #'break-align-symbols = #'(key-signature) c1 \key cis \major % La llamada se alinea con el límite izquierdo de la armadura \once \override Staff.KeySignature #'break-align-anchor-alignment = #LEFT \mark \default cis1 \key ces \major % La llamada se alinea con el límite derecho de la armadura \once \override Staff.KeySignature #'break-align-anchor-alignment = #RIGHT \mark \default ces1 \key cis \major % La llamada se alinea con el límite izquierdo de la armadura % y después se desplaza 2 unidades hacia la derecha. \once \override Staff.KeySignature #'break-align-anchor = #2 \mark \default ces1 } @end lilypond Aunque normalmente las llamadas textuales se imprimen sólo encima del pentagrama superior, podemos alterar este comportamiento para que se impriman sobre todos los pentagramas, @lilypond[quote,ragged-right,verbatim,relative=2] { \new Score \with { \remove "Mark_engraver" } << \new Staff \with { \consists "Mark_engraver" } { c''1 \mark "foo" c'' } \new Staff \with { \consists "Mark_engraver" } { c'1 \mark "foo" c' } >> } @end lilypond @seealso Referencia del programa: @rinternals{RehearsalMark}. @node New dynamic marks @subsubsection New dynamic marks Es posible imprimir nuevas indicaciones de dinámica o texto que debe ir alineado con ellas. Utilice @code{make-dynamic-script} para crear estas indicaciones. Tenga en cuenta que la tipografía de dinámica contiene solamente los caracteres @code{f,m,p,r,s} y @code{z}. Algunas situaciones (como las indicaciones de dinámica) tienen propiedades de tipografía establecidas como fijas. Si estamos creando texto en estas situaciones, se recomienda cancelar dichas propiedades con @code{normal-text}. Consulte @ref{Text markup commands} para ver más detalles. @cindex make-dynamic-script @lilypond[quote,verbatim,ragged-right] sfzp = #(make-dynamic-script "sfzp") \relative c' { c4 c c\sfzp c } @end lilypond @cindex dinámica, indicaciones, editoriales @cindex dinámica, indicaciones, paréntesis También es posible imprimir las indicaciones de dinámica entre paréntesis redondos o entre corchetes rectos. Éstos se usan con frecuencia para añadir indicaciones de dinámica editoriales. @lilypond[quote,verbatim,ragged-right] rndf = \markup{ \center-align {\line { \bold{\italic (} \dynamic f \bold{\italic )} }} } boxf = \markup{ \bracket { \dynamic f } } { c'1_\rndf c'1_\boxf } @end lilypond @node Formatting text @subsection Formatting text @menu * Text markup introduction:: * Nested scores:: * Page wrapping text:: @end menu @node Text markup introduction @subsubsection Text markup introduction @cindex marcado @cindex texto, marcado de @cindex marcado de texto @cindex tipografiar texto Utilice @code{\markup} para tipografiar texto. Las instrucciones se escriben con la barra invertida @code{\}. Para escribir @code{\} and @code{#}, utilice comillas dobles. @lilypond[quote,verbatim,fragment,relative=1] c1^\markup { hello } c1_\markup { hi there } c1^\markup { hi \bold there, is \italic {anyone home?} } c1_\markup { "\special {weird} #characters" } @end lilypond @noindent Consulte @ref{Text markup commands}, para ver una lista de todas las instrucciones. @code{\markup} se usa principalmente para indicaciones del tipo @rinternals{TextScript}, pero también se pueden usar en cualquier lugar donde se requiere texto en lilypond @lilypond[quote,verbatim] \header{ title = \markup{ \bold { foo \italic { bar! } } } } \score{ \relative c'' { \override Score.RehearsalMark #'break-visibility = #begin-of-line-invisible \override Score.RehearsalMark #'self-alignment-X = #right \set Staff.instrumentName = \markup{ \column{ Alto solo } } c2^\markup{ don't be \flat } \override TextSpanner #'bound-details #'left #'text = \markup{\italic rit } b2\startTextSpan a2\mark \markup{ \large \bold Fine } r2\stopTextSpan \bar "||" } \addlyrics { bar, foo \markup{ \italic bar! } } } @end lilypond Una orden @code{\markup} también se puede poner por sí misma, fuera de cualquier bloque @code{\score}, véase @ref{Multiple scores in a book}. @lilypond[quote,ragged-right,verbatim] \markup{ Here is some text. } @end lilypond @cindex cambio de tipografía El elemento de marcado en el ejemplo presenta un ejemplo de las instrucciones de cambio de tipografía. Las órdenes @code{\bold} e @code{\italic} se aplican sólo a la siguiente palabra; para aplicar una orden a más de una palabra, encierre las palabras entre llaves, @example \markup @{ \bold @{ buenos días @} @} @end example @noindent Para mayor claridad, también puede hacerlo para argumentos de una sola palabra, p.ej. @example \markup @{ ¿hay \italic @{ alguien @} ahí? @} @end example En el modo de marcado puede componer expresiones, similares a las expresiones matemáticas, documentos XML y expresiones musicales. Podemos apilar las expresiones en grupos verticales con la instrucción @code{\column}. De forma similar, @code{\center-align} alinea textos por sus líneas medias: @lilypond[quote,verbatim,fragment,relative=1] c1^\markup { \column { a bbbb \line { c d } } } c1^\markup { \center-align { a bbbb c } } c1^\markup { \line { a b c } } @end lilypond Las listas sin una instrucción previa no se mantienen separadas. La expresión @example \center-align @{ @{ a b @} @{ c d @} @} @end example @noindent equivale a @example \center-align @{ a b c d @} @end example @noindent Para dejar separadas las listas de palabras, podemos utilizar comillas @code{"} o la orden @code{\line} @lilypond[quote,verbatim,fragment,relative=1] \textLengthOn c4^\markup{ \center-align { on three lines } } c4^\markup{ \center-align { "all one line" } } c4^\markup{ \center-align { { on three lines } } } c4^\markup{ \center-align { \line { on one line } } } @end lilypond Los elementos de marcado se pueden almacenar dentro de variables, y estas variables se pueden adjuntar a notas, como en @example allegro = \markup @{ \bold \large @{ Allegro @} @} @{ a^\allegro b c d @} @end example Ciertos objetos tienen procedimientos de alineación propios, que cancelan cualquier efecto de las alineaciones aplicadas a sus argumentos de marcado en su conjunto. Por ejemplo la @rinternals{RehearsalMark} se centra horizontalmente, por lo que usar @code{\mark \markup @{ \left-align .. @}} no tiene ningún efecto. Además, la colocación vertical se realiza después de crear el objeto de marcado de texto. Si queremos mover un elemento de marcado completo, tenemos que usar la propiedad de relleno #'padding o crear un punto de @q{anclaje} dentro del elemento de marcado (generalmente con @code{\hspace #0}). @lilypond[quote,verbatim,fragment,relative=1] \textLengthOn c'4^\markup{ \raise #5 "not raised" } \once \override TextScript #'padding = #3 c'4^\markup{ raised } c'4^\markup{ \hspace #0 \raise #1.5 raised } @end lilypond Algunas situaciones (como las indicaciones de dinámica) tienen propiedades de tipografía preestablecidas. Si está creando texto en tales situaciones, recomendamos cancelar dichas propiedades con @code{normal-text}. Consulte @ref{Text markup commands} para ver más detalles. @seealso En el presente manual: @ref{Text markup commands}. Referencia del programa: @rinternals{TextScript}. Archivos de inicio: @file{scm/@/new@/-markup@/.scm}. @knownissues El «kerning» y la generación de ligaduras de texto se hacen sólo cuando se usa el «backend» o fundamento de @TeX{}. En este caso, LilyPond no se encarga de ellos y así los textos quedarán espaciados ligeramente más separados. Los errores de sintaxis para el modo de marcado son confusos. @node Nested scores @subsubsection Nested scores Es posible anidar música dentro de los elementos de marcado, añadiendo un bloque @code{\score} a una expresión de marcado. Dicha partitura debe contener un bloque @code{\layout}. @lilypond[quote,verbatim,ragged-right] \relative { c4 d^\markup { \score { \relative { c4 d e f } \layout { } } } e f } @end lilypond @node Page wrapping text @subsubsection Page wrapping text Dondequiera que se utilice @code{\markup} para escribir un bloque de texto que no se deba dividir, se puede usar @code{\markuplines} en el nivel superior del código para introducir líneas de texto que se pueden extender sobre varias páginas: @verbatim \markuplines { \justified-lines { Un texto muy largo de líneas justificadas. ... } \justified-lines { Otro párrafo muy largo. ... } ... } @end verbatim @code{\markuplines} admite una lista de elementos de marcado, ya sea el resultado de una instrucción de lista de marcado, o una lista de elementos o listas de elementos. Las instrucciones incorporadas de lista de elementos de marcado se describen en @ref{Text markup list commands}. @seealso En este manual: @ref{Text markup list commands}, @ref{New markup list command definition}. @predefined @funindex \markuplines @code{\markuplines} @node Fonts @subsection Fonts @cindex fuente tipográfica, selección de la @cindex fuente tipográfica, ampliación @funindex font-interface Estableciendo las propiedades de objetos que se describen más abajo, puede seleccionar una fuente tipográfica de entre las familias tipográficas preconfiguradas. LilyPond contempla por defecto la tipografía musical feta. Las tipografías del texto se seleccionan a través de Pango/FontConfig. La fuente tipográfica con serifa por defecto es New Century Schoolbook, las tipografías sans y tipo máquina de escribir son por defecto las que correspondan a la instalación de Pango. @itemize @bullet @item @code{font-encoding} es un símbolo que establece la disposición de los glifos. Se debe ajustar solamente para seleccionar distintos tipos de tipografías no textuales, p.ej.: @code{fetaBraces} para las llaves de sistemas de piano, @code{fetaMusic} la tipografía estándar de música, incluyendo los glifos de la música antigua, @code{fetaDynamic} para indicaciones dinámicas y @code{fetaNumber} para la tipografía de números. @item @code{font-family} es un símbolo que indica la clase general de la tipografía. Están contemplados @code{roman} (Computer Modern), @code{sans} y @code{typewriter} (monoespaciado). @item @code{font-shape} es un símbolo que indica la forma de la tipografía. Normalmente están disponibles varias formas de tipografía para cada familia. Se puede elegir entre @code{italic} (cursiva), @code{caps} (versalitas) y @code{upright} (recta). @item @code{font-series} es un símbolo que indica la serie de la tipografía. Normalmente cada familia y forma de tipografía tiene varias series. Se puede elegir entre @code{medium} (normal) y @code{bold} (negrita). @end itemize Las tipografías seleccionadas de la forma que se acaba de esquematizar, vienen con una hoja de estilos predefinida. Si quiere usar una tipografía desde fuera de la hoja de estilos, ajuste la propiedad @code{font-name}, @lilypond[fragment,verbatim] { \override Staff.TimeSignature #'font-name = #"Charter" \override Staff.TimeSignature #'font-size = #2 \time 3/4 c'1_\markup { \override #'(font-name . "Vera Bold") { This text is in Vera Bold } } } @end lilypond @noindent Se puede usar cualquier tipografía en la medida en que esté disponible por parte de Pango/FontConfig. Para conseguir una lista completa de todas las tipografías que están disponibles, ejecute la orden @example lilypond -dshow-available-fonts blabla @end example (el último argumento de la instrucción puede ser cualquier cosa, pero debe estar presente). El tamaño de la tipografía se puede establecer con la propiedad @code{font-size}. El tamaño resultante se toma como relativo al tamaño @code{text-font-size} tal y como está definido en el bloque @code{\paper}. @cindex fuente tipográfica, tamaño de la @cindex fuente tipográfica, aumento También es posible cambiar la familia por defecto de la tipografía para todo el documento. Esto se hace llamando al árbol @code{make-pango-font-tree} desde dentro del bloque @code{\paper}. La función toma los nombres de las familias tipográficas que se deseen utilizar para el texto en estilo roman, sans serif y monoespaciado. Por ejemplo, @cindex fuentes tipográficas, establecer la familia de las @cindex Pango @lilypond[verbatim] \paper { myStaffSize = #20 #(define fonts (make-pango-font-tree "Times New Roman" "Nimbus Sans" "Luxi Mono" (/ myStaffSize 20))) } { c'^\markup { roman: foo \sans bla \typewriter bar } } @end lilypond @c we don't do Helvetica / Courier, since GS incorrectly loads @c Apple TTF fonts @seealso Ejemplos: @lsr{text,font@/-family@/-override.ly}.