File: define.ui

package info (click to toggle)
udo 6.4.1-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,680 kB
  • sloc: ansic: 42,702; makefile: 81; cpp: 19
file content (143 lines) | stat: -rw-r--r-- 3,979 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
############################################################
# @(#) Definitionen, Dirk Hagedorn, 31.12.1995
############################################################

!subsubnode Definitionen

Definitionen sind (wie Makros) benutzerdefinierte Platzhalter. Sie knnen
dazu dienen, im entgltigen Text spezielle Kommandos einzubauen.

!index !/define

Die Syntax fr eine Definition lautet (!T)!/define <wort> <text>(!t). Im
Gegensatz zu den Makros wird (!T)<text>(!t) nicht speziell angepat, d.h. es
werden keine Umlaute und andere Sonderzeichen angepat.

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

!begin_quote
!begin_verbatim
!ifdest [html]
  !define H1 <H1>
  !define h1 </H1>
!else
  !define H1
  !define h1
!endif
[...]
(!H1)Eine berschrift(!h1)
!end_verbatim
!end_quote

!smallskip

Wie Sie sehen, knnen Sie mit diesen Definitionen spezielle Befehle des
Ausgabeformates einbauen, die UDO standardmig nicht anbietet. In UDO4 gab
es mal einen Satz Spezialplatzhalter, die nur fr (!LaTeX) vorhanden
waren. Da diese Platzhalter selten gebraucht wurden, die Umwandlung
eines Quelltextes daher zumeist unntig bremste, mu man diese
Platzhalter nun mit geeigneten Definitionen nachahmen:

!index \linebreak
!index \nolinebreak

!begin_quote
!begin_verbatim
!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.
!end_verbatim
!end_quote


!smallskip

!index Parameter !! Definitionen
!index Definitionen !! Parameter

Auch bei den Definitionen knnen Sie Parameter benutzen. Gerade wenn
es darum geht, Befehle einiger Formate direkt einzubauen, kann diese
Mglichkeit der hifreich sein.

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

Im obigen Beispiel habe ich Ihnen gezeigt, wie man eine berschrift
fr HTML erzeugen knnte. Benutzt man Parameter, knnte man
berschriften wesentlich eleganter erzeugen:

!begin_quote
!begin_verbatim
!ifdest [html]
  !define head <H1>(!1)</H1>
!else
  !define head (!1)
!endif
[...]
(!head [Eine berschrift])
!end_verbatim
!end_quote

Sie sehen, da Sie mit diesem Befehl einige Mglichkeiten haben,
spezielle Funktionen eines Formates nachzubilden, die UDO
standardmig nicht zur Verfgung stellt.

Das obige Beispiel fr (!LaTeX) liee sich mit einer parametrischen
Definition brigens viel eleganter lsen:

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

In diesem Beispiel wird nur ein Parameter an die Definition bergeben.
Trotzdem soll fr 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
is nicht vorhanden, demnach leer, und somit wird ''(!T)lb (!/2)(!t)'' zu
nichts expandiert. Dieser Umweg ist leider ntig.

!smallskip

(!HINTS)

!begin_enumerate

!item	Der Text, der zusammen mit (!I)!/define(!i) angegeben wird,
wird nicht an das Ausgabeformat angepat.

!item	Text, der als Parameter an eine Definition bergeben wird,
wird an das Ausgabeformat angepat.

!index !/heading

!item	UDO kann natrlich berschriften mit (!I)!/heading(!i) direkt
erzeugen. Die obigen Beispiele eigneten sich halt gut zur Darstellung
des Problems.

!item Wie bei den Makros sollten Sie aufpassen, da sie keine von UDO benutzten
Platzhalter wie (!/B), (!/v), (!/TeX) etc. verwenden. Auch gibt es hier
eine maximale Anzahl von benutzbaren Definitionen. Sie liegt momenatan bei
maximal (!MAXMACRO) pro Quelltext.

!end_enumerate