tbl(1M) tbl(1M)
NAME
tbl - Tabellen für nroff oder troff vorbereiten
SYNTAX
tbl [-TX] [--] [file ...] [-]
BESCHREIBUNG
tbl ist ein Präprozessor, der Tabellen für nroff(1M) oder troff(1M)
vorbereitet. tbl geht davon aus, daß die Zeilen zwischen den Aufruf-
zeilen .TS und .TE Tabellen beschreiben. Diese werden neu formatiert.
Die Eingabedateien werden mit Ausnahme der Zeilen zwischen den Aufruf-
zeilen .TS und .TE in die Standardausgabe kopiert. (Die Aufrufzeilen
.TS und .TE werden von tbl nicht verändert.)
Die Option -TX bewirkt, daß tbl nur volle Zeilenvorschübe ausführt.
Die Ausgabe ist dadurch besser geeignet für Geräte, die keine teilwei-
sen Zeilenvorschübe ausführen können (z. B. Zeilendrucker).
Wird files nicht angegeben oder bezeichnet - eine der Eingabedateien
(files), liest tbl die Standardeingabe und kann daher als Filter ver-
wendet werden. Wird tbl zusammen mit eqn(1M) oder neqn(1M) verwendet,
so sollte tbl an erster Stelle stehen, um das durch Pipen geleitete
Datenvolumen so gering wie möglich zu halten.
Makros
.TS Tabellenanfang.
.TS H Tabellenanfang mit Definition eines Headers, der auf jeder
Folgeseite der Tabelle erscheint.
.TH Definiert das Ende des Tabellen-Headers.
.TE Tabellenende.
.T& Eine neue Formatbeschreibung innerhalb einer Tabelle wird mit
.T& eingeleitet (siehe Beispiele).
Optionen
An .TS schließen sich globale Optionen an. Sie gelten für die gesamte
Tabelle und werden durch ein Semikolon (;) abgeschlossen. Folgende
globale Optionen stehen zur Verfügung (Groß- oder Kleinbuchstaben):
center Tabelle zentrieren (Standardwert ist linksbündig).
Achtung: Die Britische Schreibweise "centre" ist nicht
erlaubt.
expand Tabelle auf Zeilenlänge auseinanderziehen.
box Einen Kasten um die Tabelle zeichnen.
doublebox Einen Kasten mit Doppellinie um die Tabelle zeichnen.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
tbl(1M) tbl(1M)
allbox Einen Kasten um jedes Element der Tabelle zeichnen.
tab(x) Die Elemente in den Eingabezeilen durch das Zeichen x
statt durch Tabulatorzeichen voneinander trennen.
linesize(n) Linien oder Trennlinien, z. B. für box, in der Schrift-
größe n setzen.
Formatbeschreibungen
Nach den globalen Optionen folgen Zeilen, in denen das Format der ein-
zelnen Tabellenzeilen beschrieben wird. Jede Formatzeile beschreibt
eine Zeile der Tabelle; die letzte Formatzeile jedoch (die mit einem
Punkt enden muß) beschreibt alle restlichen Zeilen der Tabelle. Jede
Spalte in jeder Zeile der Tabelle wird durch einen Formatbuchstaben
beschrieben. Nach diesem Buchstaben können Sie optional Angaben
machen, die die Schriftart und die Schriftgröße des betreffenden Ele-
ments, die Spaltenbreite, den Abstand zwischen den Spalten usw. fest-
legen und bestimmen, wo senkrechte Striche zwischen den Spalten
erscheinen sollen. Folgende Angaben stehen zur Verfügung (Groß- oder
Kleinbuchstaben):
c Element in der Spalte zentrieren.
r Element in der Spalte rechtsbündig anordnen.
l Element in der Spalte linksbündig anordnen.
n Einträge in der Spalte numerisch stellengerecht anordnen. Numeri-
sche Einträge werden wie folgt ausgerichtet (siehe Beispiele):
- nach dem am weitesten rechts neben einer Ziffer stehenden
Dezimalpunkt;
- nach der am weitesten rechts stehenden Ziffer;
- nach dem beliebig einfügbaren Steuerzeichen \&
s Waagerecht verbundene Spalte(n): Eintrag der vorherigen Spalte
wird fortgesetzt ("span") (siehe Beispiele).
a Alphabetische Unterspalte. Längste Zeile in dieser Spalte zen-
trieren und dann alle Zeilen in dieser Spalte in bezug auf die
zentrierte Zeile linksbündig anordnen (siehe Beispiel 2).
^ Senkrecht verbundene Zeile(n): Eintrag der darüberliegenden Zeile
wird fortgesetzt und vertikal zentriert (siehe Beispiele).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
tbl(1M) tbl(1M)
^t Senkrecht verbundene Zeile(n): Eintrag der darüberliegenden Zeile
wird fortgesetzt und in der obersten Zeile begonnen ("top")
(siehe Beispiel 4).
Diesen Eintrag durch eine waagerechte Linie ersetzen.
= Diesen Eintrag durch eine doppelte waagerechte Linie ersetzen.
Mögliche zusätzliche Angaben:
B, I Schriftart für die Spalte setzen (B = fett, I = kursiv).
fn, fc, fcc
Schriftart für die Spalte setzen. Werte für n (Zahl) bzw. c
oder cc (1 oder 2 Zeichen) entsprechen den mit .fp n vorgenom-
menen Einstellungen (siehe Beispiele).
e Alle hiermit definierten Spalten werden auf die gleiche Breite
gebracht (siehe Beispiel 2).
u Einträge werden 1/2 Zeile hochgesetzt (siehe Beispiel 2).
z Länge des Eintrags wird bei der Berechnung der Spaltenbreite
ignoriert, gleichwohl wird der Eintrag in ganzer Länge wieder-
gegeben (siehe Beispiel 7).
w(n) Mindestbreite einer Spalte (siehe Beispiele).
pn Bestimmung der Schriftgröße (analog zu .ps) (siehe Beispiel 2
und 6).
vn Bestimmung des Zeilenabstands (analog zu .vs). Wirkt nur in
mit T{ ... T} gekennzeichneten Textblöcken (siehe Beispiel 2).
n Eine Zahl n als zusätzliche Angabe legt den Abstand zwischen
den Spalten in n-Breiten fest (Standardwert 3n) (siehe Bei-
spiel 3 und 5).
|, || Vertikale Einfach- bzw. Doppellinie zwischen den Spalten.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
tbl(1M) tbl(1M)
Tabelleneinträge
An die Formatzeilen schließen sich die Zeilen mit den eigentlichen
Tabellendaten (Tabelleneinträgen) an. Diese werden durch .TE abge-
schlossen. Innerhalb solcher Datenzeilen werden die Daten normaler-
weise durch Tabulatorzeichen voneinander getrennt.
Tabelleneinträge bestehen aus Angaben für die in der Formatbeschrei-
bung definierten Spalten. Mögliche Angaben sind (vgl. Beispiel 2):
text Textangabe, die auch leer sein kann.
T{ Textblock, der über mehrere Zeilen gehen kann
text (siehe Beispiele).
T}
, = Einfach- bzw. Doppellinie über die gesamte Spaltenbreite
(angrenzend an Nachbarspalten).
Als alleinstehender Eintrag: Einfach- bzw. Doppellinie über
die gesamte Tabellenbreite (siehe Beispiel 2).
\ Einfache Linie über die Breite des Eintrags (nicht angrenzend
an Nachbarspalten) (siehe Beispiel 2).
\Rc Wiederholt ("repeat") ein Zeichen c über die Breite des Ein-
trags (nicht angrenzend an Nachbarspalten) (siehe Beispiel 2).
\^ Führt erst in dieser Zeile die Formatbeschreibung des darüber-
liegenden Eintrags der vorherigen Zeile aus; äquivalent zu der
Formatbeschreibung ^.
\a Zieht eine Punktelinie bis zum Ende einer Spalte (immer zusam-
men mit der Breitenangabe w(n) einer Spalte zu verwenden)
(siehe Beispiel 2 und 6).
Hinweis:
Alle Tabelleneinträge dürfen - bis auf einfache Textangaben - vor und
nach dem Spaltentrennzeichen keine Blanks enthalten.
Es sollten nicht mehr als maximal 30 Textblöcke verwendet werden.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
tbl(1M) tbl(1M)
BEISPIELE
Beispiel 1:
Wenn das Zeichen -> ein Tabulatorzeichen darstellt (dieses sollte über
die Tabulatortaste eingegeben werden), erzeugt die Eingabe
.TS
center box ;
cB s s
cI | cI s
^ | c c
l | n n.
Statistik der Haushalte
Stadt->Haushalte
->Anzahl->Größe
=
Bedminster->789->3.26
Bernards Twp.->3087->3.74
Bernardsville->2018->3.30
Bound Brook->3425->3.04
Bridgewater->7897->3.81
.TE
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
tbl(1M) tbl(1M)
ergibt folgendes (die Ausgaben differieren je nach nroff- oder troff-
Formatierung):
________________________________
| Statistik der Haushalte |
|______________|________________|
| | Haushalte |
| Stadt | Anzahl Größe|
|||
| Bedminster | 789 3.26 |
| Bernards Twp.| 3087 3.74 |
| Bernardsville| 2018 3.30 |
| Bound Brook | 3425 3.04 |
| Bridgewater | 7897 3.81 |
|______________|________________|
Beispiel 2:
Die Eingabe
.TS
tab(#), center, box;
cf3p+2 s s s.
Überspannender Gesamt-Header mittig
.T&
l | cfI s s
^ | l || r || c.
"vertikal mittig" # Italic Header mittig
###
.sp
# linkssss # rechts # mittig
# links # rechtssss # mi
# links # rechtss # mittig
=
.T&
lw(30n) | ne | lue | rw(1c)e
aw(30n) | ne | le | rw(1c)ev+5.
.sp
linksbündige Hauptspalte# 0.05 # linksss-up # rechts
alphab. Unterspalte# 26.04.87 # links # rechtssss
kurz# 43\&57.2 ## rechts
# 0.675#\#\Rx
langtext# 874 ##\R.
kurz#00.56
---- # ---- #=#T{
umbrochener langer Textblock;
Text
T}
.TE
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
tbl(1M) tbl(1M)
ergibt folgendes:
_____________________________________________________________________________
| Überspannender Gesamt-Header mittig |
|_______________________________|____________________________________________|
| | Italic Header mittig |
| | _____________|______________|______________|
| | | | |
| "vertikal mittig" | linkssss | rechts | mittig |
| | links | rechtssss | mi |
| | links | rechtss | mittig |
|||||
| | | | |
| linksbündige Hauptspalte | 0.05 | linksss-up | rechts|
| alphab. Unterspalte | 26.04.87 | links | rechtssss|
| kurz | 4357.2 | | rechts|
| | 0.675 | ____________| xxxxxxxxxxxx|
| langtext | 874 | _____________| ............|
| kurz | 00.56 | | |
| ---- | ---- | | umbroche- |
| | | | ner langer|
| | | | Textblock;|
| | | | Text |
|_______________________________|______________|______________|______________|
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98
tbl(1M) tbl(1M)
Beispiel 3: Tabelle mit s ("span")
Die Eingabe
.TS
tab(!), box, center;
cf2 s |cf2 s
l2 l |l2 l.
UNIX ! MS-DOS
ASCII ! ASCII ! Pixel ! Pixel
Mouse ! ! ! Scanner
! ! Farbe
.TE
ergibt:
_____________________________________
| UNIX | MS-DOS |
|________________|___________________|
| ASCII ASCII | Pixel Pixel |
| Mouse | Scanner|
| | Farbe |
|________________|___________________|
Seite 8 Reliant UNIX 5.44 Gedruckt 11/98
tbl(1M) tbl(1M)
Beispiel 4: Tabelle mit senkrecht verbundenen Zeilen "at top" (^t)
Die Eingabe
.TS
tab(#), center;
lf3| l| lf3.
eßbar ## giftig
.T&
l| l| l
l| ^t| l.
.sp .5
Steinpilz #T{
\f2mitteleuropäische
.br
Pilzarten\f1
T}# Knollenblätterpilz
Pfifferling ## Pantherpilz
Marone ## Satanspilz
Birkenpilz ## Bovist
Grünling ## Stinkmorchel
Champignon ## Fliegenpilz
.TE
ergibt:
eßbar | | giftig
____________|___________________|_____________________
Steinpilz | mitteleuropäische| Knollenblätterpilz
Pfifferling | Pilzarten | Pantherpilz
Marone | | Satanspilz
Birkenpilz | | Bovist
Grünling | | Stinkmorchel
Champignon | | Fliegenpilz
Seite 9 Reliant UNIX 5.44 Gedruckt 11/98
tbl(1M) tbl(1M)
Beispiel 5: Tabelle mit automatischer Zählung der Einträge
Die Eingabe
.TS
tab(#), center;
l1 l n1 l.
.nr X 0 1
\n+X) # Kronleuchter, Kristall, 12 Kerzen # 5500 # Kcs
\n+X) # Leuchter, Lichtkugel mit Ketten # 1800 # Kcs
\n+X) # Tischuhr, Holz # 700 # Kcs
.nr Y 0 1
.af Y a
\n+Y) # Suppenschüssel
\n+Y) # Ovale Schüssel
\n+Y) # Ovale Schüssel mit Henkel
\n+Y) # Schüssel in Dreilappenform
\n+X) # Detto Amphore # 300 # Kcs
\n+X) # Trinkservice Detto # 1000 # Kcs
.nr YY 0 1
.af YY a
\n+(YY) # 1 Kanne
\n+(YY) # Tasse mit hohem Henkel
\n+X) # Vase, handgeschliffen # 400 # Kcs
\n+X) # Trinkbecher, 6 Stück, Metallrand # 240 # Kcs
\n+X) # Trinkgläser, 4 Stück, mit Golfspielern # 120 # Kcs
.TE
Seite 10 Reliant UNIX 5.44 Gedruckt 11/98
tbl(1M) tbl(1M)
ergibt:
1) Kronleuchter, Kristall, 12 Kerzen 5500 Kcs
2) Leuchter, Lichtkugel mit Ketten 1800 Kcs
3) Tischuhr, Holz 700 Kcs
a) Suppenschüssel
b) Ovale Schüssel
c) Ovale Schüssel mit Henkel
d) Schüssel in Dreilappenform
4) Detto Amphore 300 Kcs
5) Trinkservice Detto 1000 Kcs
a) 1 Kanne
b) Tasse mit hohem Henkel
6) Vase, handgeschliffen 400 Kcs
7) Trinkbecher, 6 Stück, Metallrand 240 Kcs
8) Trinkgläser, 4 Stück, mit Golfspielern 120 Kcs
Eine Tabelle mit "automatischer" Zählung der Tabelleneinträge erhält
man durch Verwendung der nroff/troff-Requests .nr und .af. Mit dem
Request .nr wird ein numerisches Register gesetzt. Die genaue Syntax
eines numerischen Registers lautet: .nr Name N M, wobei N den Start-
wert und M den Inkrement-/Dekrementwert angibt. In unserem Beispiel
hat das Register den Namen "X", den Startwert 0 und den Inkrement-Wert
1. Anschließend wird dieses Register "X" bei jeder Interpolation (Ein-
kopieren des Register-Werts) gemäß der Syntax: \n+Name um den Wert 1
erhöht.
Mit dem Request .af Name Format wird einem Register Name ein Format
zugeordnet. Bezogen auf unser Beispiel heißt dies: Zuerst wird das
Register "Y" wie gerade beschrieben gesetzt. Danach wird diesem Regi-
ster "Y" das Format "a" zugeordnet (= alphabetische Zählung mit latei-
nischen Kleinbuchstaben). Anschließend wird dieses Register "Y" wieder
bei jeder Interpolation erhöht.
Achtung: Die Register müssen innerhalb der Tabelle gesetzt werden.
Seite 11 Reliant UNIX 5.44 Gedruckt 11/98
tbl(1M) tbl(1M)
Beispiel 6: Tabelle mit gepunkteten Linien (\a)
Die Eingabe
.TS
tab(#), center;
lw(30n) cBp10 s s
lw(30n) c s s
lw(30n) cBp10 cBp10 cBp10
lw(30n) cBp10 s s
lw(30n) n n n.
#Jahresabschluß 31. Dezember
#
#1988#1987#1986
#(Dollars in Millionen)
.sp
Prämien\a#$\010,922.7#$\010,330.7#$\0\09,252.4
Investment\a#3,671.7#3,146.0#2,749.7
Einkommenssteuern\a#24.4#91.6#71.9
Netto-Einkommen\a#375.2#373.1#312.4
Aktiva\a#41,645.8#34,434.7#32,876.6
.TE
ergibt:
Jahresabschluß 31. Dezember
_____________________________________
1988 1987 1986
(Dollars in Millionen)
Prämien....................... $ 10,922.7 $ 10,330.7 $ 9,252.4
Investment.................... 3,671.7 3,146.0 2,749.7
Einkommenssteuern............. 24.4 91.6 71.9
Netto-Einkommen............... 375.2 373.1 312.4
Aktiva........................ 41,645.8 34,434.7 32,876.6
Eine gepunktete Linie nach einem Tabelleneintrag erreicht man durch
\a. Wichtig ist, daß gleichzeitig mit dem Eintrag \a die Länge der
Spalte mit w(n) angegeben ist, weil sonst der Spalten-Aufbau zerstört
wird (in unserem Beispiel 30n in den Formatbeschreibungen).
Achtung: Die Angaben \0 sind keine tbl-Syntax, vielmehr normale
nroff/troff-Sonderfunktionen, um ein Leerzeichen von der Breite der
Ziffer Null zu bewirken. Sie sind aus ästhetischen Gründen eingesetzt,
damit das Dollar-Zeichen in den Spalten in einem sauberen Abstand
erscheint.
Seite 12 Reliant UNIX 5.44 Gedruckt 11/98
tbl(1M) tbl(1M)
Beispiel 7: Tabelle mit überlappenden Spalten (z)
Die Formatbeschreibung z bewirkt, daß die Länge eines Eintrags bei der
Berechnung der Spaltenbreite ignoriert wird. Diese Funktion kann man
sich zunutze machen und statt, wie normalerweise, parallele Spalten
sozusagen überlappende Spalten erzeugen. Wenn man die Einträge auf
verschiedene Spalten verteilt, bekommt man untereinander versetzte
Einträge, wie am Beispiel 7 zu sehen ist. Die Eingabe
.TS
tab(!);
lw(5n)z lw(5n)z lw(10n)z l l1 lw(2n)z1 lw(5n)z.
!!!!Räumlichkeit
.sp
!!Dimensionalität!!!!Undimensionalität
.sp
!Horizontalität!!Vertikalität!!Oberfläche
.sp
Prospektivität!!Lateralität!!!Volumen
.TE
ergibt:
Räumlichkeit
Dimensionalität Undimensionalität
Horizontalität Vertikalität Oberfläche
Prospektivität Lateralität Volumen
HINWEISE
Es gibt immer noch einige Probleme, wenn tbl zur Erstellung mehrseiti-
ger Tabellen verwendet wird, die eingerahmt sind und deren Überschrif-
ten fortgeführt werden (.TS H, .TH). In einigen Fällen werden die
Kästen nicht korrekt erstellt (verstümmelte Seiten, Endlosschleifen),
wenn die Seitengrenze überschritten wird und die Tabelle in den
Vorschub-Trap fällt. In diesem Fall ist es meist nötig, ungefähr an
der Stelle, wo in der Ausgabe der Seitenvorschub erfolgt, das Makro
.ch #f einzufügen (schaltet den Trap-Mechnismus aus).
Ferner sollte man bei mehrseitigen Tabellen mit Kästen oder vertikalen
Linien an der Stelle, wo ein Seitenvorschub erfolgen soll, das Makro
.T# einsetzen.
Seite 13 Reliant UNIX 5.44 Gedruckt 11/98
tbl(1M) tbl(1M)
SIEHE AUCH
nroff(1M), troff(1M).
LITERATUR
M. E. Lesk, TBL - A Program To Format Tables
Claus Schirmer: "Dokumentations-Tools unter Unix. Troff, nroff,
Documenter's Workbench", R. Oldenbourg Verlag,
München/Wien 1990
Seite 14 Reliant UNIX 5.44 Gedruckt 11/98