Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ tbl(1M) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

nroff(1M)

troff(1M)

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

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026