anchor.diff:  Die Layout-Funktionen sind im Namensraum `urn:speedata:2009/publisher/functions/de` (im Folgenden mit `sd:` gekennzeichnet) definiert. Optionale Parameter werden durch eckige Klammern markiert.
   Beispiel: die Funktion `sd:current-row()`  kann auch mit Parameter `sd:current-row('name')` aufgerufen werden. Die Auslassungspunkte `...` bedeuten, dass der letzte Wert beliebig oft wiederholt werden kann.
   
  +// Todo: document:
  +// dimexpr
  +// first-free-row
  +
  +
  +`sd:allocated(x,y,<Bereichsname>,<Rahmennummer>)`::
  +   Gibt wahr zurück, wenn die Zelle belegt ist (seit 2.3.71).
  +
  +`sd:alternating(<typ>, <text>[,<text>,...])`::
  +   Bei jedem Aufruf wird das nächste Argument zurück gegeben. Wert des Typs ist beliebig, muss aber eindeutig sein. Beispiel: `sd:alternating("tbl", "Weiß","Grau")` könnte für die Hintergrundfarbe von Tabellen benutzt werden. Beispiel siehe <<ch-wechselnde-zeilenfarben>>.
  +
  +`sd:aspectratio(<Bildname>)`::
  +   Gibt das Ergebnis der Division Bildbreite / Bildhöhe zurück. (D. h. < 1 für Hochkantbilder, > 1 für Querformat.)
  +
  +`sd:attr(<Name>[, ...])`::
  +   ist dasselbe wie `@Name`, nur mit der Möglichkeit den Namen auch dynamisch (z. B. mit `concat()`) zu erzeugen. Siehe Beispiel bei `sd:variable()`.
  +
  +`sd:count-saved-pages(<Name>)`::
  +   Gibt die Anzahl der gespeicherten Seiten, die mit `<SavePages>` zwischengespeichert wurden.
  +
  +`sd:current-column([<area>])`::
  +   Gibt die aktuelle Spalte zurück. Wenn `area` angegeben, gibt die Spalte des gegebenen Platzierungsbereichs zurück.
  +
   `sd:current-framenumber(<area>)`::
      Gibt die Nummer des aktuellen Rahmens im Platzierungsbereich zurück.
   
  
positive.code: `min(<Zahl>[, <Zahl>, ...])`::
  	Liefert das Minimum der Werte zurück: `max(1.1,2.2,3.3,4.4)` ergibt `1.1`.
  
  `node()`::
  	Gibt alle Knoten zurück. (Ist nicht XPath-konform, daher sollte man diese Funktion noch nicht benutzen. Das Verhalten wird sich verändern.)
  
  `not()`::
     Negiert den Wahrheitswert des Arguments. Beispiel: `not(true())` ergibt `false()`.
  
  
negative.code: Bei leerem Trenner für Bereiche werden Zahlen
  nicht zusammengeführt, sondern einzeln mit dem Trenner für Leerraum verbunden.
  
  `sd:number-of-columns([<area>])`::
     Gibt die Anzahl der Spalten auf der Seite bzw. im angegebenen Bereich.
  
  `sd:number-of-pages(<Dateiname oder URI-Schema>)`::
     Ermittelt die Anzahl der Seiten der angegebenen (PDF-)Datei. Siehe das Beispiel in <<ch-mehrseitigepdf>>.
  
  `sd:number-of-rows([<area>])`::
     Gibt die Anzahl der Zeilen auf der Seite bzw. im angegebenen Bereich.
  
  `sd:odd(<zahl>)`::
     Die Rückgabe ist `true()`,, wenn die angegebene Zahl ungerade ist.
  
  `sd:pagenumber(<Marke>)`::
     Liefert die Seitenzahl der Seite auf der die angegebene Marke ausgegeben wurde. Siehe den Befehl <<cmd-mark,Mark>> und den Abschnitt über <<ch-verzeichnisseerstellen-marker>>.
  
  `sd:randomitem(<Wert>[,<Wert>,...])`::
     Gibt einen der Werte zurück.
  
  `sd:reset-alternating(<typ>)`::
     Setzt den Zustand für `sd:alternating()` für den angegebenen Typ zurück.
  
  `sd:sha1(<Wert>[,<Wert>, ...])`::
     Erzeugt die SHA-1 Summe der Hintereinanderkettung der Werte als Hex-Zeichenkette. Beispiel: `sd:sha1('Hallo ', 'Welt')` ergibt die Zeichenkette `28cbbc72d6a52617a7abbfff6756d04bbad0106a`.
  
  `sd:variable-exists(<Name>)`::
     Prüft, ob eine Variable definiert wurde.
  
  `sd:variable(<Name>[, ...])`::
     ist dasselbe wie `$Name`, nur mit der Möglichkeit den Namen auch dynamisch zu erzeugen. Falls `$i` den Wert 3 enthält, liest `sd:variable('foo',$i)` den Inhalt der Variablen `$foo3`. Damit lassen sich Arrays abbilden.
  
  
  == XPath-Funktionen
  
  