X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fde%2Fuser%2Fscheme-tutorial.itely;h=c1a963433be7e97826054f5acf3bf39413ecf9e9;hb=1be11d36f4f7c5b0f4d455c098f3bad8eda499e4;hp=5942b79f0de7b65f2cec872ac731b278b83a87a8;hpb=b4c6eeb732dba1ff6f3d700e94f6e4d839600ff7;p=lilypond.git diff --git a/Documentation/de/user/scheme-tutorial.itely b/Documentation/de/user/scheme-tutorial.itely index 5942b79f0d..c1a963433b 100644 --- a/Documentation/de/user/scheme-tutorial.itely +++ b/Documentation/de/user/scheme-tutorial.itely @@ -1,20 +1,224 @@ -@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- +@c -*- coding: utf-8; mode: texinfo; -*- @c This file is part of lilypond.tely @ignore - Translation of GIT committish: 3237f4afc77b528ca92ca6d68664bd80e39d9e76 - + Translation of GIT committish: 79583ed701a443510826b8f22f20fd6e7d5eccbe 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.51" @node Scheme tutorial @appendix Scheme tutorial -UNTRANSLATED NODE: IGNORE ME +@funindex # +@cindex Scheme +@cindex GUILE +@cindex Scheme, in-line code +@c @cindex accessing Scheme +@c @cindex evaluating Scheme +@cindex LISP + +LilyPond verwendet die Scheme-Programmiersprache sowohl als Teil +der Eingabesyntax als auch als internen Mechanismus, um Programmmodule +zusammenzufügen. Dieser Abschnitt ist ein sehr kurzer Überblick über +die Dateneingabe mit Scheme. Wenn Sie mehr über Scheme wissen wollen, +gehen Sie zu @uref{http://@/www@/.schemers@/.org}. + +Das Grundlegendste an einer Sprache sind Daten: Zahlen, Zeichen, +Zeichenketten, Listen usw. Hier ist eine Liste der Datentypen, die für +LilyPond-Eingabedateien relevant sind. + +@table @asis +@item Boolesche Variablen +Werte einer Booleschen Variable sind Wahr oder Falsch. Die Scheme-Entsprechung +für Wahr ist @code{#t} und für Falsch @code{#f}. +@funindex ##t +@funindex ##f + +@item Zahlen +Zahlen werden wie üblich eingegeben, @code{1} ist die (ganze) +Zahl Eins, während @code{-1.5} ist eine Gleitkommazahl (also +eine nicht-ganze). + +@item Zeichenketten +Zeichenketten werden in doppelte Anführungszeichen gesetzt: + +@example +"Das ist eine Zeichenkette" +@end example + +Zeichenketten können über mehrere Zeilen reichen: + +@example +"Das +ist +eine Zeichenkette" +@end example + +Anführungszeichen und neue Zeilen können auch mit sogenannten +Fluchtsequenzen eingefügt werden. Die Zeichenkette +@code{a sagt "b"} wird wie folgt eingegeben: + +@example +"a sagt \"b\"" +@end example + +Neue Zeilen und Backslashe werden mit @code{\n} bzw. @code{\\} +eingegeben. +@end table + +In einer Notationsdatei werden kleine Scheme-Abschnitte mit der +Raute (@code{#}) eingeleitet. Die vorigen Beispiele heißen also in +LilyPond: + +@example +##t ##f +#1 #-1.5 +#"Das ist eine Zeichenkette" +#"Das +ist +eine Zeichenkette" +@end example + +Für den Rest dieses Abschnitts nehmen wir an, dass die Daten immer in +einer LilyPond-Datei stehen, darum wird immer die Raute verwendet. + +Scheme kann verwendet werden, um Berechnungen durchzuführen. Es +verwendet eine @emph{Präfix}-Syntax. Um 1 und@tie{}2 zu addieren, muss +man @code{(+ 1 2)} schreiben, und nicht @math{1+2}, wie in traditioneller +Mathematik. + +@lisp +#(+ 1 2) + @result{} #3 +@end lisp + +Der Pfeil @result{} zeigt an, dass das Ergebnis der Auswertung von +@code{(+ 1 2)} @code{3}@tie{}ist. Berechnungen können geschachtelt +werden und das Ergebnis einer Berechnung kann für eine neue +Berechnung eingesetzt werden. + +@lisp +#(+ 1 (* 3 4)) + @result{} #(+ 1 12) + @result{} #13 +@end lisp + +Diese Berechnungen sind Beispiele von Auswertungen. Ein Ausdruck +wie @code{(* 3 4)} wird durch seinen Wert @code{12} ersetzt. Ähnlich +verhält es sich mit Variablen. Nachdem eine Variable definiert ist: + +@example +twelve = #12 +@end example + +@noindent +kann man sie in Ausdrücken weiterverwenden: + +@example +twentyFour = #(* 2 twelve) +@end example + +@noindent +Die 24 wird in der Variablen @code{twentyFour} gespeichert. +Die gleiche Zuweisung kann auch vollständig in Scheme geschrieben +werden: + +@example +#(define twentyFour (* 2 twelve)) +@end example + +Der @emph{Name} einer Variable ist auch ein Ausdruck, genauso wie +eine Zahl oder eine Zeichenkette. Er wird wie folgt eingegeben: + +@example +#'twentyFour +@end example + +@funindex #'symbol +@cindex Zitieren in Scheme + +Das Apostroph @code{'} verhindert, dass bei der Scheme-Auswertung + @code{twentyFour} durch @code{24} ersetzt wird. Anstatt dessen erhalten + wir die Bezeichnung @code{twentyFour}. + +Diese Syntax wird sehr oft verwendet, weil es manche +Einstellungsveränderungen erfordern, dass Scheme-Werte einer +internen Variable zugewiesen werden, wie etwa + +@example +\override Stem #'thickness = #2.6 +@end example + +Diese Anweisung verändert die Erscheinung der Notenhälse. Der Wert +@code{2.6} wird der Variable @code{thickness} (Dicke) eines +@code{Stem}-(Hals)-Objektes gleichgesetzt. +@code{thickness} wird relativ zu den Notenlinien errechnet, in diesem +Fall sind die Hälse also 2,6 mal so dick wie die Notenlinien. Dadurch +werden Hälse fast zweimal so dick dargestellt, wie sie normalerweise sind. +Um zwischen Variablen zu unterscheiden, die in den Quelldateien direkt +definiert werden (wie @code{twentyFour} weiter oben), und zwischen denen, +die für interne Objekte zuständig sind, werden hier die ersteren +@qq{Bezeichner} genannt, die letzteren dagegen @qq{Eigenschaften}. +Das Hals-Objekt hat also eine @code{thickness}-Eigenschaft, während +@code{twentyFour} ein Bezeichner ist. + +@cindex Eigenschaften versus Bezeichner +@cindex Bezeichner versus Eigenschaften + +Sowohl zweidimensionale Abstände (X- und Y-Koordinaten) als auch +Größen von Objekten (Intervalle mit linker und rechter Begrenzung) werden +als @code{pairs} (Paare) eingegeben. Ein Paar@footnote{In der +Scheme-Terminologie wird ein Paar @code{cons} genannt und seine +zwei Elemente @code{car} und @code{cdr}.} wird als @code{(erster . zweiter)} +eingegeben und sie müssen mit dem Apostroph eingeleitet werden, genauso +wie Symbole: + +@example +\override TextScript #'extra-offset = #'(1 . 2) +@end example + +Hierdurch wird das Paar (1, 2) mit der Eigenschaft @code{extra-offset} +des TextScript-Objektes verknüpft. Diese Zahlen werden in +Systembreiten gemessen, so dass der Befehl das Objekt eine Systembreite +nach rechts verschiebt und zwei Breiten nach oben. + +Die zwei Elemente eines Paares können von beliebigem Inhalt sein, etwa + +@example +#'(1 . 2) +#'(#t . #f) +#'("blah-blah" . 3.14159265) +@end example + +Eine Liste wird eingegeben, indem die Elemente der Liste in Klammern +geschrieben werden, mit einem Apostroph davor. Beispielsweise: + +@example +#'(1 2 3) +#'(1 2 "string" #f) +@end example + +Die ganze Zeit wurde hier schon Listen benutzt. Eine Berechnung, +wie @code{(+ 1 2)}, ist auch eine Liste (welche das Symbol @code{+} +und die Nummern 1 und@tie{}2 enthält. Normalerweise werden Listen +als Berechnungen interpretiert und der Scheme-Interpreter ersetzt +die Liste mit dem Ergebnis der Berechnung. Um eine Liste an sich +einzugeben, muss die Auswertung angehalten werden. Das geschieht, +indem der Liste ein Apostroph vorangestellt wird. Für Berechnungen +kann man also den Apostroph nicht verwenden. + +Innerhalb einer zitierten Liste (also mit Apostroph) muss man keine +Anführungszeichen mehr setzen. Im Folgenden ein Symbolpaar, eine +Symbolliste und eine Liste von Listen: + +@example +#'(stem . head) +#'(staff clef key-signature) +#'((1) (2)) +@end example + --- SKELETON FILE -- -When you actually translate this file, please remove these lines as -well as all `UNTRANSLATED NODE: IGNORE ME' lines.