tpp 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/tpp +1764 -0
- data/examples/ac-am.tpp +406 -0
- data/examples/align-footer.tpp +15 -0
- data/examples/bold.tpp +40 -0
- data/examples/colors.tpp +19 -0
- data/examples/colors2.tpp +24 -0
- data/examples/debian-packaging.tpp +802 -0
- data/examples/exec.tpp +9 -0
- data/examples/horline.tpp +6 -0
- data/examples/huge.tpp +22 -0
- data/examples/list.tpp +26 -0
- data/examples/manyslides.tpp +204 -0
- data/examples/shell.tpp +40 -0
- data/examples/slidein.tpp +51 -0
- data/examples/source.tpp +49 -0
- data/examples/test.tpp +17 -0
- data/examples/tpp-features.tpp +161 -0
- data/examples/wrap.tpp +20 -0
- metadata +98 -0
data/examples/ac-am.tpp
ADDED
@@ -0,0 +1,406 @@
|
|
1
|
+
--title autoconf und automake
|
2
|
+
--author Andreas Krennmair
|
3
|
+
--date today
|
4
|
+
Praktisch jede Software unter Linux wird mit ./configure ; make ; make
|
5
|
+
install konfiguriert, compiliert und installiert. Ich m�chte heute
|
6
|
+
zeigen, wie man selbst mit Autoconf und Automake den Konfigurations- und
|
7
|
+
�bersetzungsprozess automatisieren kann, und was das f�r portable
|
8
|
+
Software bringen kann.
|
9
|
+
--newpage agenda
|
10
|
+
--heading Agenda
|
11
|
+
|
12
|
+
* Einf�hrung
|
13
|
+
|
14
|
+
* Makefiles
|
15
|
+
|
16
|
+
* Autoconf alleine
|
17
|
+
|
18
|
+
* Autoconf und Automake
|
19
|
+
--newpage intro
|
20
|
+
--heading Einf�hrung: Geschichte der automatisierten Compilierung unter Unix
|
21
|
+
|
22
|
+
* Anfangs: Shellskripte namens make im Sourceverzeichnis (bis Unix V6)
|
23
|
+
* Ab Unix V7: Programm make, Information aus Datei makefile
|
24
|
+
* makefile enth�lt Informationen, welchen Dateien (Targets) aus welchen
|
25
|
+
Dateien (Dependencies) erzeugt werden, und welche Kommandos dazu
|
26
|
+
aufgerufen werden m�ssen.
|
27
|
+
* Makefiles funktionierten anfangs ganz gut, bis die ersten Unix-
|
28
|
+
Varianten erschienen, die subtil anders als die bisherigen Unixe waren.
|
29
|
+
Software sollte aber portabel bleiben.
|
30
|
+
* Einfache L�sung: ein Target pro Zielplattform.
|
31
|
+
* Nachteil: bei mehr Plattformen ansteigender Wartungsaufwand
|
32
|
+
--newpage intro-conf
|
33
|
+
--heading Einf�hrung: erste automatisierte Konfiguration
|
34
|
+
|
35
|
+
* Makefile-L�sung h�rte auf zu skalieren, als immer mehr und immer
|
36
|
+
obskurere Unix-Varianten auftauchten, auf die die Entwickler von
|
37
|
+
Software noch dazu keinen Zugriff mehr hatten.
|
38
|
+
* Erste L�sung Mitte bis Ender der 80er Jahre: Configure
|
39
|
+
* Larry Wall wollte, dass seine Software (insbesondere Perl) portabel
|
40
|
+
auf m�glichst vielen Unix-Plattformen l�uft.
|
41
|
+
* Schreib Shellskript Configure, das Informationen �ber das System
|
42
|
+
sammelte, und aus *.SH-Dateien dementsprechende Dateien generierte
|
43
|
+
(Makefile.SH -> Makefile)
|
44
|
+
* Vorteil: Perl konnte ohne grossen Portierungsaufwand auf vielen,
|
45
|
+
tewilweise recht obskuren Unix-Systemen betrieben werden.
|
46
|
+
--newpage intro-gnu
|
47
|
+
--heading Einf�hrung: Konfiguration f�r GNU
|
48
|
+
|
49
|
+
* GNU-Software sollte m�glichst portabel sein
|
50
|
+
* GNU-Projekt griff Larry Wall's Idee auf, und realisierte im
|
51
|
+
wesentlichen zwei Frameworks, um das Konfigurieren und �bersetzen von
|
52
|
+
GNU-Software m�glichst portabel und einfach wartbar zu halten.
|
53
|
+
* Konfiguration: autoconf
|
54
|
+
* �bersetzung: automake
|
55
|
+
* Status heute: Autoconf und Automake sind ein Quasi-Standard bei Freier
|
56
|
+
Software/Open Source
|
57
|
+
--newpage makefiles
|
58
|
+
--heading Einfache Makefiles
|
59
|
+
|
60
|
+
Makefiles bestehen im wesentlichen aus zwei Bereichen:
|
61
|
+
|
62
|
+
* Variablendefinitionen
|
63
|
+
* Zieldefinitionen
|
64
|
+
|
65
|
+
Variablen werden verwendet, um gleiche "Textbausteine", die �fters im
|
66
|
+
Makefile vorkommen, zusammenzufassen und parametrisierbar zu machen, z.B.
|
67
|
+
Compilerkommandos, Compilerflags, Ausgabedatei, ...
|
68
|
+
|
69
|
+
Zieldefinitionen geben an, welche Datei erzeugt werden soll, von welchen
|
70
|
+
Dateien diese Datei abh�ngig ist, und mit welchem Kommando die Datei aus
|
71
|
+
diesen Abh�ngigkeiten erzeugt wird. Diese Zieldefinition definiert ein
|
72
|
+
sog. "Target". Wird ein Target aufgerufen, so wird das Kommando nur
|
73
|
+
ausgef�hrt, wenn die zu generierende Datei noch nicht existiert, oder wenn
|
74
|
+
eine der Abh�ngigkeiten erst generiert werden muss, oder wenn eine der
|
75
|
+
Abh�ngigkeiten neuer ist als die bestehende Datei So werden unn�tige
|
76
|
+
Compile-Vorg�nge vermieden.
|
77
|
+
--newpage example1
|
78
|
+
--heading Beispiel 1: einfaches Makefile
|
79
|
+
|
80
|
+
--beginoutput
|
81
|
+
# Kommentar
|
82
|
+
LATEX=pdflatex # Variablendefinition
|
83
|
+
|
84
|
+
ac-am.pdf: ac-am.tex # Zieldefinition
|
85
|
+
$(LATEX) ac-am.tex # <Tabulator>Kommando
|
86
|
+
--endoutput
|
87
|
+
--newpage example2
|
88
|
+
--heading Beispiel 2: gleichartige Targets zusammenfassen
|
89
|
+
|
90
|
+
--beginoutput
|
91
|
+
LATEX=pdflatex
|
92
|
+
RM=rm -f
|
93
|
+
PDFFILES=ac-am.pdf
|
94
|
+
|
95
|
+
all: $(PDFFILES)
|
96
|
+
|
97
|
+
%.pdf: %.tex
|
98
|
+
$(LATEX) $<
|
99
|
+
|
100
|
+
clean:
|
101
|
+
$(RM) $(PDFFILES) *.aux *.log
|
102
|
+
--endoutput
|
103
|
+
--newpage
|
104
|
+
--heading Beispiel 3: modulares C-Programm �bersetzen
|
105
|
+
|
106
|
+
--beginoutput
|
107
|
+
CC=gcc
|
108
|
+
CFLAGS=-Os -Wall
|
109
|
+
OBJS=foo.o bar.o baz.o quux.o
|
110
|
+
OUTPUT=xyzzy
|
111
|
+
|
112
|
+
all: $(OUTPUT)
|
113
|
+
$(OUTPUT): $(OBJS)
|
114
|
+
$(CC) $(CFLAGS) $(LDFLAGS) -o $(OUTPUT) $(OJBS) $(LIBS)
|
115
|
+
|
116
|
+
%.o: %.c
|
117
|
+
$(CC) $(CFLAGS) $(DEFINES) -c $<
|
118
|
+
|
119
|
+
clean:
|
120
|
+
$(RM) $(OBJS) $(OUTPUT) core *.core
|
121
|
+
.PHONY: all clean
|
122
|
+
--endoutput
|
123
|
+
--newpage limitations
|
124
|
+
--heading Limtationen von Makefiles
|
125
|
+
|
126
|
+
Makefiles funktionieren zwar bei kleineren, einfachen Programmen, wer
|
127
|
+
jedoch gr��ere, portable Software schreiben will, st��t mit make und
|
128
|
+
Makefiles schnell an Grenzen.
|
129
|
+
|
130
|
+
Die Unterschied zwischen den einzelnen Unix-Systemen sind z.B. folgende:
|
131
|
+
|
132
|
+
* Strukturen unterscheiden sich
|
133
|
+
* Funktionen sind unterschiedlich deklariert
|
134
|
+
* #defines sind anders benannt oder existieren nicht
|
135
|
+
* Manche Funktionen sind nicht mehr in der libc, sondern in externe
|
136
|
+
Libraries ausgelagert (z.B. Sockets nach libsocket).
|
137
|
+
|
138
|
+
Auf diese Unterschiede kann make nicht eingehen. Deswegen muss man einen
|
139
|
+
Konfigurationsmechanismus einf�hren, der dies kann.
|
140
|
+
--newpage autoconf1
|
141
|
+
--heading Autoconf, Schritt 1: configure-Skript erzeugen
|
142
|
+
|
143
|
+
Autoconf bietet die M�glichkeit, auf eine gro�e Anzahl von Kommandos und
|
144
|
+
Tests zur�ckzugreifen, um m�glichst alle relevanten Systemparameter
|
145
|
+
abzurufen. Diese Tests werden in einer Datei configure.in abgelegt, aus
|
146
|
+
dem dann mit dem Kommando autoconf die Datei configure erzeugt wird. Mit
|
147
|
+
dem Kommando autoheader wird die Datei config.h.in erzeugt.
|
148
|
+
|
149
|
+
Ruft man ./configure auf, so sammelt das configure-Skript die
|
150
|
+
Konfigurationsinformationen, und generiert aus config.h.in die Datei
|
151
|
+
config.h sowie alle in configure.in angegebenen zu konfigurierenden
|
152
|
+
Dateien, das ist meistens Makefile.in, aus der Makefile erzeugt wird.
|
153
|
+
|
154
|
+
Die configure.in-Datei l�sst sich �brigens erzeugen, indem man autoscan
|
155
|
+
aufruft, und die resultierende Datei configure.scan in configure.in
|
156
|
+
umbenennt.
|
157
|
+
--newpage autoconf2
|
158
|
+
--heading Autoconf, Schritt 2: Makefile.in erstellen
|
159
|
+
|
160
|
+
Die Datei Makefile.in wird wie ein normales Makefile geschrieben,
|
161
|
+
mit dem Unterschied, dass f�r bestimmte Variablen, deren Wert vom
|
162
|
+
configure-Skript bestimmt werden, spezielle Platzhalter eingef�gt
|
163
|
+
werden. Das sieht dann z.B. so aus:
|
164
|
+
--beginoutput
|
165
|
+
CC=@CC@
|
166
|
+
CFLAGS=@CFLAGS@ @DEFS@
|
167
|
+
LDFLAGS=@LDFLAGS@
|
168
|
+
LIBS=@LIBS@
|
169
|
+
--endoutput
|
170
|
+
|
171
|
+
Der Rest des Makefile sieht wie ein normales Makefile aus. Um auf
|
172
|
+
s�mtliche ermittelten Parameter zugreifen zu k�nnen, m�ssen die
|
173
|
+
einzelnen C-Sourcefiles nur noch die Datei config.h inkludieren.
|
174
|
+
Damit ist Autoconf vollst�ndig integriert und das Buildsystem darauf
|
175
|
+
angepasst.
|
176
|
+
--newpage autoconf3
|
177
|
+
--heading Autoconf, Zusammenfassung
|
178
|
+
|
179
|
+
In einer Minute zur Sourcekonfiguration mit Autoconf:
|
180
|
+
--beginshelloutput
|
181
|
+
$ autoscan && mv configure.scan configure.in
|
182
|
+
---
|
183
|
+
$ $EDITOR configure.in
|
184
|
+
---
|
185
|
+
$ autoconf
|
186
|
+
---
|
187
|
+
$ autoheader
|
188
|
+
---
|
189
|
+
$ $EDITOR Makefile.in
|
190
|
+
--endshelloutput
|
191
|
+
|
192
|
+
Fertig!
|
193
|
+
--newpage confex1
|
194
|
+
--heading Beispiel f�r configure.in (1)
|
195
|
+
|
196
|
+
--beginoutput
|
197
|
+
AC_PREREQ(2.57)
|
198
|
+
AC_INIT(akpop3d, 0.7.7, ak@synflood.at)
|
199
|
+
AC_CONFIG_SRCDIR([authenticate.c])
|
200
|
+
AC_CONFIG_HEADER([config.h])
|
201
|
+
|
202
|
+
# Checks for programs.
|
203
|
+
AC_PROG_CC
|
204
|
+
AC_PROG_INSTALL
|
205
|
+
--endoutput
|
206
|
+
--newpage confex2
|
207
|
+
--heading Beispiel f�r configure.in (2)
|
208
|
+
|
209
|
+
--beginoutput
|
210
|
+
# Checks for header files.
|
211
|
+
AC_HEADER_STDC
|
212
|
+
AC_HEADER_SYS_WAIT
|
213
|
+
AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netdb.h
|
214
|
+
netinet/in.h shadow.h stdlib.h string.h sys/file.h
|
215
|
+
sys/socket.h sys/time.h syslog.h unistd.h])
|
216
|
+
|
217
|
+
# Checks for typedefs, structures, and compiler
|
218
|
+
# characteristics.
|
219
|
+
AC_C_CONST
|
220
|
+
AC_TYPE_UID_T
|
221
|
+
AC_TYPE_OFF_T
|
222
|
+
AC_TYPE_PID_T
|
223
|
+
AC_TYPE_SIZE_T
|
224
|
+
AC_HEADER_TIME
|
225
|
+
--endoutput
|
226
|
+
--newpage confex3
|
227
|
+
--heading Beispiel f�r configure.in (3)
|
228
|
+
--beginoutput
|
229
|
+
# Checks for library functions.
|
230
|
+
AC_FUNC_ALLOCA
|
231
|
+
AC_FUNC_FORK
|
232
|
+
AC_FUNC_REALLOC
|
233
|
+
AC_FUNC_SELECT_ARGTYPES
|
234
|
+
AC_FUNC_STAT
|
235
|
+
AC_CHECK_FUNCS([atexit dup2 getspnam inet_ntoa
|
236
|
+
memchr memset select socket strchr strerror
|
237
|
+
strncasecmp strrchr])
|
238
|
+
|
239
|
+
AC_CONFIG_FILES([Makefile])
|
240
|
+
AC_OUTPUT
|
241
|
+
--endoutput
|
242
|
+
--newpage functions
|
243
|
+
--heading Weitere n�tzliche Autoconf-Funktionen
|
244
|
+
|
245
|
+
* AC_CHECK_LIB(library,symbol): wenn symbol in Library library
|
246
|
+
gefunden wird, wird -llibrary zu den LDFLAGS hinzugef�gt und
|
247
|
+
HAVE_LIBLIBRARY=1 in config.h definiert.
|
248
|
+
* AC_DEFINE([KEY],[VALUE]): in config.h wird #define KEY VALUE
|
249
|
+
eingetragen.
|
250
|
+
* AC_ARG_WITH(option,[beschreibung]): das configure-Skript um
|
251
|
+
eine --with-option Option erweitern.
|
252
|
+
* AC_ARG_ENABLE(option,[beschreibung]): das configure-Skript um
|
253
|
+
eine --enable-option Option erweitern.
|
254
|
+
--newpage funcex1
|
255
|
+
--heading Beispiele zu n�tzlichen Autoconf-Funktionen
|
256
|
+
|
257
|
+
--beginoutput
|
258
|
+
AC_ARG_WITH(openssl, [ --with-openssl use OpenSSL])
|
259
|
+
if test "$with_openssl" != "no" ; then
|
260
|
+
AC_CHECK_LIB(crypto,BIO_new)
|
261
|
+
AC_CHECK_LIB(ssl,SSL_new)
|
262
|
+
fi
|
263
|
+
AC_ARG_ENABLE(rfc2449, [ --enable-rfc2449 enable RFC 2449 support])
|
264
|
+
if test "$enable_rfc2449" != "no" ; then
|
265
|
+
AC_DEFINE([ENABLE_RFC2449],[1],[rfc2449])
|
266
|
+
fi
|
267
|
+
--endoutput
|
268
|
+
--newpage funcauto
|
269
|
+
--heading Funktionsweise von Autoconf
|
270
|
+
|
271
|
+
* Vorgefertige Tests in Form von m4-Makros verf�gbar
|
272
|
+
* Autoconf l�sst configure.in durch m4 laufen, daraus entsteht
|
273
|
+
configure-Skript, was nicht anders als ein Shellskript ist.
|
274
|
+
* -> man kann durch Einf�gen von eigenem Shellcode eigene Tests
|
275
|
+
durchf�hren.
|
276
|
+
* -> oder man greift auf http://ac-archive.sourceforge.net/ zur�ck,
|
277
|
+
einem umfangreichen Archiv von hunderten Autoconf-Macros.
|
278
|
+
|
279
|
+
--beginoutput
|
280
|
+
if test x`uname -s` = "xDarwin" ; then
|
281
|
+
AC_DEFINE([HAVE_DARWIN],[1],[define whether we have Darwin])
|
282
|
+
fi
|
283
|
+
--endoutput
|
284
|
+
--newpage macroself
|
285
|
+
--heading Autoconf-Makros selbst schreiben
|
286
|
+
|
287
|
+
Autoconf-Makros sind ein Mischmasch aus m4-Skript und Shellskript.
|
288
|
+
|
289
|
+
--beginoutput
|
290
|
+
AC_DEFUN([AC_C_LONG_LONG],
|
291
|
+
[AC_CACHE_CHECK(for long long int, ac_cv_c_long_long,
|
292
|
+
[if test "$GCC" = yes; then
|
293
|
+
ac_cv_c_long_long=yes
|
294
|
+
else
|
295
|
+
AC_TRY_COMPILE(,[long long int i;],
|
296
|
+
ac_cv_c_long_long=yes,
|
297
|
+
ac_cv_c_long_long=no)
|
298
|
+
fi])
|
299
|
+
if test $ac_cv_c_long_long = yes; then
|
300
|
+
AC_DEFINE(HAVE_LONG_LONG)
|
301
|
+
fi
|
302
|
+
])
|
303
|
+
--endoutput
|
304
|
+
--newpage automake1
|
305
|
+
--heading Automake: Einf�hrung
|
306
|
+
|
307
|
+
Automake ist daf�r gedacht, den eigentlichen �bersetzungsprozess so weit
|
308
|
+
wie m�glich zu vereinfachen, und dem User das Schreiben von eigenen
|
309
|
+
Makefile.in's abzunehmen. Automake setzt Autoconf voraus.
|
310
|
+
|
311
|
+
Die Makefile.am-Datei besteht wie ein Makefile aus Targets, die quasi
|
312
|
+
beliebig benannt werden k�nnen, und alle Kommandos enthalten wie auch
|
313
|
+
ein Target in einem Makefile oder Makefile.in.
|
314
|
+
|
315
|
+
Zus�tzlich existieren eine Reihe von speziellen Variablen, mit denen das
|
316
|
+
�bersetzen von Software einfacher wird.
|
317
|
+
|
318
|
+
--beginoutput
|
319
|
+
bin_PROGRAMS = hello
|
320
|
+
hello_SOURCES = hello.c main.c
|
321
|
+
EXTRA_DIST = hello.h
|
322
|
+
--endoutput
|
323
|
+
--newpage autocmd
|
324
|
+
--heading Automake: mehr Kommandos
|
325
|
+
|
326
|
+
--beginshelloutput
|
327
|
+
$ $EDITOR Makefile.am
|
328
|
+
---
|
329
|
+
$ autoscan && mv configure.scan configure.in
|
330
|
+
---
|
331
|
+
$ autoheader
|
332
|
+
---
|
333
|
+
$ aclocal
|
334
|
+
---
|
335
|
+
AM_INIT_AUTOMAKE(programname,version) in configure.in eintragen.
|
336
|
+
---
|
337
|
+
$ automake -a
|
338
|
+
---
|
339
|
+
$ autoconf
|
340
|
+
---
|
341
|
+
$ ls -l Makefile.in configure
|
342
|
+
-rw-r--r-- 1 ak staff 16048 16 Mar 20:03 Makefile.in
|
343
|
+
-rwxr-xr-x 1 ak staff 123354 16 Mar 20:03 configure
|
344
|
+
$
|
345
|
+
--endshelloutput
|
346
|
+
--newpage primaries
|
347
|
+
--heading Automake: Primaries
|
348
|
+
|
349
|
+
Die _PROGRAMS; _SOURCES, etc. Suffixe, die vorher gesehen haben, nennen
|
350
|
+
sich �brigen "Primaries". Weitere Primaries sind z.B.:
|
351
|
+
|
352
|
+
* DATA: gibt Datendateien an, die 1:1 mitinstalliert, ansonsten aber
|
353
|
+
ignoriert werden.
|
354
|
+
* HEADER: damit werden Headerfiles spezifiziert, die zusammen mit
|
355
|
+
Libraries installiert werden sollen.
|
356
|
+
* SCRIPTS: ausf�hrbare Skripte, die ebenfalls installiert werden,
|
357
|
+
jedoch nicht compiliert oder gestripped werden.
|
358
|
+
* MANS: gibt Manpages an, die ebenfalls mitinstalliert werden.
|
359
|
+
|
360
|
+
Die Grundbed�rfnisse f�r einfache und problemlose Konfigurations-,
|
361
|
+
�bersetzungs- und Installationsroutinen w�re damit gedeckt.
|
362
|
+
--newpage recam
|
363
|
+
--heading Rekursives Automake
|
364
|
+
|
365
|
+
Um den Inhalt von Unterverzeichnissen in den Automake-Vorgang
|
366
|
+
miteinzubeziehen, muss man lediglich alle relevanten Unterverzeichnisse
|
367
|
+
�ber die SUBDIRS-Variable angeben.
|
368
|
+
|
369
|
+
--beginoutput
|
370
|
+
SUBDIRS = m4 src doc
|
371
|
+
--endoutput
|
372
|
+
|
373
|
+
In jedem Unterverzeichnis muss nat�rlich wiederum eine Makefile.am
|
374
|
+
angelegt und daraus eine Makefile.in erzeugt werden. Ausserdem muss das
|
375
|
+
dann zu erzeugende Makefile in der configure.in angegeben werden, und
|
376
|
+
zwar via AC_CONFIG_FILES.
|
377
|
+
--newpage resumee
|
378
|
+
--heading Res�mee
|
379
|
+
|
380
|
+
* make mag veraltet und eingerostet wirken (wird seit Ende der
|
381
|
+
1970er eingesetzt), bietet aber ein m�chtiges System, um
|
382
|
+
Abh�ngigkeiten zu �berpr�fen, und unn�tige Compilevorg�nge zu
|
383
|
+
minimieren.
|
384
|
+
* Autoconf bietet ein m�chtiges System, um vielerlei systemabh�ngige
|
385
|
+
Konfigurationspunkte in Erfahrung zu bringen, was wiederum einen
|
386
|
+
Eckpfeiler f�r systemnahe und portable Programmierung bildet.
|
387
|
+
* Automake macht es f�r Entwickler besonders einfach, Softwarepakete
|
388
|
+
in eine Form zu bringen, dass sie �bersetzt und installiert werden
|
389
|
+
k�nnen.
|
390
|
+
* Autoconf und Automake m�gen suboptimale L�sungen sein
|
391
|
+
(./configure dauert lange, configure und Makefile.in sind
|
392
|
+
bei Automake extrem gross), stellen jedoch eine frei verf�gbare,
|
393
|
+
einfach anzuwendende und vor allem weit verbreitete L�sung dar.
|
394
|
+
--newpage literacy
|
395
|
+
--heading Literaturempfehlungen
|
396
|
+
|
397
|
+
* Das "Autobook": Autoconf, Automake and Libtool
|
398
|
+
http://sources.redhat.com/autobook/autobook/autobook_toc.html
|
399
|
+
* Autoconf Dokumentation:
|
400
|
+
http://www.delorie.com/gnu/docs/autoconf/autoconf_toc.html
|
401
|
+
* Automake Dokumentation:
|
402
|
+
http://www.delorie.com/gnu/docs/automake/automake_toc.html
|
403
|
+
--newpage end
|
404
|
+
--heading Und jetzt...
|
405
|
+
|
406
|
+
--huge Zum praktischen Teil!
|
@@ -0,0 +1,15 @@
|
|
1
|
+
--author Nico Golde
|
2
|
+
--title Testing Orientation
|
3
|
+
--footer and this is the footer line
|
4
|
+
--header and this is the header line
|
5
|
+
This is oriented left.
|
6
|
+
---
|
7
|
+
--center This is centered.
|
8
|
+
---
|
9
|
+
--right This is oriented right.
|
10
|
+
---
|
11
|
+
--beginoutput
|
12
|
+
It works even here
|
13
|
+
--center as you can see
|
14
|
+
--right in these three lines.
|
15
|
+
--endoutput
|
data/examples/bold.tpp
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
--author Andreas Krennmair
|
2
|
+
--title Boldtest
|
3
|
+
--newpage
|
4
|
+
This is normal text.
|
5
|
+
--boldon
|
6
|
+
This should be bold.
|
7
|
+
--boldoff
|
8
|
+
This should be normal again.
|
9
|
+
--revon
|
10
|
+
--center This should be reverse.
|
11
|
+
--revoff
|
12
|
+
This should be normal.
|
13
|
+
|
14
|
+
jjjjjjjjjjjjjjjjjjjjjjjjjjj
|
15
|
+
--revon
|
16
|
+
asdf jkl�
|
17
|
+
--boldon
|
18
|
+
asdf jkl�
|
19
|
+
--boldoff
|
20
|
+
asdf jkl�
|
21
|
+
--revoff
|
22
|
+
jjjjjjjjjjjjjjjjjjjjjjjjjjj
|
23
|
+
--newpage
|
24
|
+
--heading This is the heading
|
25
|
+
|
26
|
+
This should be normal
|
27
|
+
--ulon
|
28
|
+
This should be underlined
|
29
|
+
--revon
|
30
|
+
This should be underlined and reverse
|
31
|
+
--boldon
|
32
|
+
This should be underlined, reverse and bold
|
33
|
+
--center This should be underlined, reverse, bold and centered
|
34
|
+
--uloff
|
35
|
+
This should be reverse and bold
|
36
|
+
--revoff
|
37
|
+
This should be bold
|
38
|
+
--boldoff
|
39
|
+
This should be normal again
|
40
|
+
--huge This Is Huge!
|