HomeVerschiedenesVordefinierte MakrosSymbole
Handbuch UDO > Die UDO-Syntax > Verschiedenes Index

Definitionen

Definitionen sind (wie Makros) benutzerdefinierte Platzhalter. Sie können dazu dienen, im endgültigen Text spezielle Kommandos einzubauen.

Die Syntax für eine Definition lautet !define [<wort>] [<text>]. Im Gegensatz zu den Makros wird [<wort>] nicht speziell angepasst, d.h., es werden keine Umlaute und andere Sonderzeichen angepasst.

Im folgenden Beispiel benutzen wir eine Definition, um nur im HTML-Format ein Wort als Überschrift auszugeben:

!ifdest [html]
  !define H1 

!define h1

!else !define H1 !define h1 !endif [...] (!H1)Eine Überschrift(!h1)

Wie Sie sehen, können Sie mit diesen Definitionen spezielle Befehle des Ausgabeformates einbauen, die UDO standardmäßig nicht anbietet. In UDO 4 gab es mal einen Satz Spezialplatzhalter, die nur für LaTeX vorhanden waren. Da diese Platzhalter selten gebraucht wurden, die Umwandlung eines Quelltextes daher zumeist unnötig bremste, müssen Sie diese Platzhalter nun mit geeigneten Definitionen nachahmen:

!ifdest [tex]
  !define ff "ff
  !define lb2 \linebreak[2]
  !define nolb3 \nolinebreak[3]
!else
  !define ff ff
  !define lb2
  !define nolb3
!endif
[...]
Die Schi(!ff)ahrt
LaTeX einen Umbruchstelle (!lb2) vorschlagen.

Auch bei den Definitionen können Sie Parameter benutzen. Gerade wenn es darum geht, Befehle einiger Formate direkt einzubauen, kann diese Möglichkeit der hilfreich sein.

Benutzt werden Definitionen, die Parameter enthalten sollen, wie Makros mit Parametern. Text, der beim Aufruf einer Definition anstelle eines der durchnummerierten Parameter ausgegeben werden soll, ist in eckige Klammern einzufassen.

Im obigen Beispiel haben wir Ihnen gezeigt, wie Sie eine Überschrift für HTML erzeugen könnten. Benutzen Sie Parameter, könnten Sie Überschriften wesentlich eleganter erzeugen:

!ifdest [html]
  !define head 

(!1)

!else !define head (!1) !endif [...] (!head [Eine Überschrift])

Sie sehen, dass Sie mit diesem Befehl einige Möglichkeiten haben, spezielle Funktionen eines Formates nachzubilden, die UDO standardmäßig nicht zur Verfügung stellt.

Das obige Beispiel für LaTeX ließe sich mit einer parametrischen Definition übrigens viel eleganter lösen:

!ifdest [tex]
  !define lb \linebreak[(!1)]
!else
  !define lb (!2)
!endif
[...]
LaTeX einen Umbruchstelle (!lb [2]) vorschlagen.

In diesem Beispiel wird nur ein Parameter an die Definition übergeben. Trotzdem soll für Nicht-LaTeX-Formate der 2. Parameter ausgegeben werden. Sie werden sich vielleicht fragen, warum dies so ist. Nun, bei Nicht-LaTeX-Formaten soll nichts ausgegeben werden. Ein zweiter Parameter ist nicht vorhanden, demnach leer, und somit wird lb (!2) zu nichts expandiert. Dieser Umweg ist leider nötig.


Hinweise:

  1. Der Text, der zusammen mit !define angegeben wird, wird nicht an das Ausgabeformat angepasst.
  2. Text, der als Parameter an eine Definition übergeben wird, wird an das Ausgabeformat angepasst.
  3. UDO kann natürlich Überschriften mit !heading direkt erzeugen. Die obigen Beispiele eigneten sich halt gut zur Darstellung des Problems.
  4. Wie bei den Makros sollten Sie aufpassen, dass sie keine von UDO benutzten Platzhalter wie (!B), (!v), (!TeX) usw. verwenden. Auch gibt es hier eine maximale Anzahl von benutzbaren Definitionen. Sie liegt momentan bei maximal 1000 pro Quelltext.

Copyright © www.udo-open-source.org (Kontakt)
Letzte Aktualisierung am 19. Mai 2014

HomeVerschiedenesVordefinierte MakrosSymbole