X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fes%2Fuser%2Fscheme-tutorial.itely;h=90f0fa4f53643b7492119f9931d660e973dd8e49;hb=8cab78caa0db1ba14f2e52e4c1ddbb541ea0e5cb;hp=273fc8e4c2c181ff2a6f1f51f712de491b80f564;hpb=2f996385b21b9d5006c7369c2c496ccbee001e97;p=lilypond.git diff --git a/Documentation/es/user/scheme-tutorial.itely b/Documentation/es/user/scheme-tutorial.itely index 273fc8e4c2..90f0fa4f53 100644 --- a/Documentation/es/user/scheme-tutorial.itely +++ b/Documentation/es/user/scheme-tutorial.itely @@ -1,19 +1,295 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @c This file is part of lilypond-learning.tely @ignore - Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d + Translation of GIT committish: 41ef91786a08102d9b9a839f6a2f40cec263d723 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.12.0" + @node Scheme tutorial @appendix Scheme tutorial -UNTRANSLATED NODE: IGNORE ME +@funindex # +@cindex Scheme +@cindex GUILE +@cindex Scheme, código en línea +@cindex acceder a Scheme +@cindex evaluar Scheme +@cindex LISP + +LilyPond utiliza el lenguaje de programación Scheme, tanto como parte +de la sintaxis del código de entrada, como para servir de mecanismo +interno que une los módulos del programa entre sí. Esta sección es +una panorámica muy breve sobre cómo introducir datos en Scheme. Si +quiere saber más sobre Scheme, consulte +@uref{http://@/www@/.schemers@/.org}. + +Lo más básico de un lenguaje son los datos: números, cadenas de +caracteres, listas, etc. He aquí una lista de los tipos de datos que +son de relevancia respecto de la entrada de LilyPond. + +@table @asis +@item Booleanos +Los valores Booleanos son Verdadero y Falso. Verdadero en Scheme es @code{#t} +y Falso es @code{#f}. +@funindex ##t +@funindex ##f + +@item Números +Los números se escriben de la forma normal, @code{1} es el número +(entero) uno, mientras que @code{-1.5} es un número en coma flotante +(un número no entero). + +@item Cadenas +Las cadenas se encierran entre comillas: + +@example +"esto es una cadena" +@end example + +Las cadenas pueden abarcar varias líneas: + +@example +"esto +es +una cadena" +@end example + +También se pueden añadir comillas y saltos de línea con las llamadas +secuencias de escape. La cadena @code{a dijo "b"} se escribe como + +@example +"a dijo \"b\"" +@end example + +Los saltos de línea t las barras invertidas se escapan mediante +@code{\n} y @code{\\} respectivamente. +@end table + + +En un archivo de música, los fragmentos de código de Scheme se +escriben con el signo de almohadilla @code{#}. Así, los ejemplos +anteriores traducidos a LilyPond son: + +@example +##t ##f +#1 #-1.5 +#"esto es una cadena" +#"esto +es +una cadena" +@end example + +Durante el resto de esta sección, supondremos que los datos se +introducen en un archivo de música, por lo que añadiremos almohadillas +@code{#} en todas partes. + +Scheme se puede usar para hacer cálculos. Utiliza sintaxis +@emph{prefija}. Sumar 1 y@tie{}2 se escribe como @code{(+ 1 2)} y no +como el tradicional @math{1+2}. + +@lisp +#(+ 1 2) + @result{} #3 +@end lisp + +La flecha @result{} muestra que el resultado de evaluar @code{(+ 1 2)} +es@tie{}@code{3}. Los cálculos se pueden anidar; el resultado de una +función se puede usar para otro cálculo. + +@lisp +#(+ 1 (* 3 4)) + @result{} #(+ 1 12) + @result{} #13 +@end lisp + +Estos cálculos son ejemplos de evaluaciones; una expresión como +@code{(* 3 4)} se sustituye por su valor @code{12}. Algo similar +ocurre con las variables. Después de haber definido una variable + +@example +doce = #12 +@end example + +@noindent +las variables se pueden usar también dentro de las expresiones, aquí + +@example +veintiCuatro = #(* 2 doce) +@end example + +@noindent +el número 24 se almacena dentro de la variable @code{veintiCuatro}. +La misma asignación se puede hacer también completamente en Scheme, + +@example +#(define veintiCuatro (* 2 doce)) +@end example + +El @emph{nombre} de una variable también es una expresión, similar a +un número o una cadena. Se introduce como + +@example +#'veintiCuatro +@end example + +@funindex #'symbol +@cindex comillas en Scheme + +El apóstrofo @code{'} evita que el intérprete de Scheme sustituya +@code{veintiCuatro} por @code{24}. En vez de esto, obtenemos el +nombre @code{veintiCuatro}. + +Esta sintaxis se usará con mucha frecuencia, pues muchos de los trucos +de presentación consisten en asignar valores (de Scheme) a variables +internas, por ejemplo + +@example +\override Stem #'thickness = #2.6 +@end example + +Esta instrucción ajusta el aspecto de las plicas. El valor @code{2.6} +se pone dentro de la variable @code{thickness} de un objeto +@code{Stem}. @code{thickness} se mide a partir del grosor de las +líneas del pentagrama, y así estas plicas serán @code{2.6} veces el +grosor de las líneas del pentagrama. Esto hace que las plicas sean +casi el doble de gruesas de lo normal. Para distinguir entre las +variables que se definen en los archivos de entrada (como +@code{veintiCuatro} en el ejemplo anterior) y las variables de los +objetos internos, llamaremos a las últimas @q{propiedades} y a las +primeras @q{variables.} Así, el objeto plica tiene una propiedad +@code{thickness} (grosor), mientras que @code{veintiCuatro} es una +variable. + +@cindex propiedades frente a variables +@cindex variables frente a propiedades + +Los desplazamientos bidimensionales (coordenadas X e Y) así como los +tamaños de los objetos (intervalos con un punto izquierdo y otro +derecho) se introducen como @code{parejas}. Una pareja@footnote{En la +terminología de Scheme, la pareja se llama @code{cons}, y sus dos +elementos se llaman @code{car} y @code{cdr} respectivamente.} se +introduce como @code{(primero . segundo)} y, como los símbolos, se deben +preceder de un apóstrofo: + +@example +\override TextScript #'extra-offset = #'(1 . 2) +@end example + +Esto asigna la pareja (1, 2) a la propiedad @code{extra-offset} del +objeto TextScript. Estos números se miden en espacios de pentagrama, +y así esta instrucción mueve el objeto un espacio de pentagrama a la +derecha, y dos espacios hacia arriba. + +Los dos elementos de una pareja pueden ser valores arbitrarios, por +ejemplo + +@example +#'(1 . 2) +#'(#t . #f) +#'("bla-bla" . 3.14159265) +@end example + +Una lista se escribe encerrando sus elementos entre paréntesis, y +añadiendo un apóstrofo. Por ejemplo, + +@example +#'(1 2 3) +#'(1 2 "cadena" #f) +@end example + +Todo el tiempo hemos estado usando listas. Un cálculo, como @code{(+ +1 2)} también es una lista (que contiene el símbolo @code{+} y los +números 1 y@tie{}2). Normalmente, las listas se interpretan como +cálculos, y el intérprete de Scheme sustituye el resultado del +cálculo. Para escribir una lista, detenemos la evaluación. Esto se +hace precediendo la lista por un apóstrofo @code{'}. Así, para los +cálculos no usamos ningún apóstrofo. + +Dentro de una lista o pareja precedida de apóstrofo, no hay necesidad +de escribir ningún apóstrofo más. Lo siguiente es una pareja de +símbolos, una lista de símbolos y una lista de listas respectivamente: + +@example +#'(stem . head) +#'(staff clef key-signature) +#'((1) (2)) +@end example + + +@menu +* Tweaking with Scheme:: +@end menu + +@node Tweaking with Scheme +@appendixsec Tweaking with Scheme + +Hemos visto cómo la salida de LilyPond se puede modificar +profundamente usando instrucciones como @code{\override TextScript +#'extra-offset = ( 1 . -1)}. Pero tenemos incluso mucho más poder si +utilizamos Scheme. Para ver una explicación completa de esto, +consulte el @ref{Scheme tutorial}, y @ruser{Interfaces for +programmers}. + +Podemos usar Scheme simplemente para sobreescribir instrucciones con +@code{\override}, + +@c This isn't a valid example with skylining +@c It works fine without padText -td + +@ignore +@lilypond[quote,verbatim,ragged-right] +padText = #(define-music-function (parser location padding) (number?) +#{ + \once \override TextScript #'padding = #$padding +#}) + +\relative c''' { + c4^"piu mosso" b a b + \padText #1.8 + c4^"piu mosso" d e f + \padText #2.6 + c4^"piu mosso" fis a g +} +@end lilypond +@end ignore + +Lo podemos usar para crear instrucciones nuevas: + +@c Check this is a valid example with skylining +@c It is - 'padding still works + +@lilypond[quote,verbatim,ragged-right] +tempoMark = #(define-music-function (parser location padding marktext) + (number? string?) +#{ + \once \override Score . RehearsalMark #'padding = $padding + \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0) + \mark \markup { \bold $marktext } +#}) + +\relative c'' { + c2 e + \tempoMark #3.0 #"Allegro" + g c +} +@end lilypond + +Incluso se le pueden pasar expresiones musicales: + +@lilypond[quote,verbatim,ragged-right] +pattern = #(define-music-function (parser location x y) (ly:music? ly:music?) +#{ + $x e8 a b $y b a e +#}) +\relative c''{ + \pattern c8 c8\f + \pattern {d16 dis} { ais16-> b\p } +} +@end lilypond --- SKELETON FILE -- -When you actually translate this file, please remove these lines as -well as all `UNTRANSLATED NODE: IGNORE ME' lines.