Tabellen » Historie » Revision 28
      « Zurück |
    Revision 28/29
      (Vergleich)
      | Weiter »
    
    Marcus Hottenroth, 03.01.2024 10:45 
    
    
Tabellen¶
- Inhaltsverzeichnis
- Tabellen
Für Tabellen wird nicht tabularx oder ein anderes von TeX bekanntes Tabellenpaket verwendet, sondern das von Patrick Schulz entwickelte htmltabs.
Paket einbinden¶
Die Einbindung kann über die Angabe
\usepackage{htmltabs}
im Dokument, das das Tabellenpaket verwenden soll, erfolgen. Aus Gründen der Übersicht und Sauberkeit des Codes ist es jedoch besser, diese Integration über ein projektspezifisches Stylefile zu realiseren.
Auszeichnung von Tabellen für den htmltabs-Renderer¶
	
XHTML-zu-LaTeX-Mapping¶
Das TeX-Markup von htmltabs entspricht der HTML-Tabellenstruktur:
| XML | LaTeX | Anmerkungen | 
|---|---|---|
| <table>…</table> | \begin{htmltab}[…] … \end{htmltab} | |
| <col /> | \HTcol[…] | vor thead | 
| <colgroup> … </colgroup> | \HTcolgroup[…]{…} | vor thead | 
| <thead> … </thead> | \begin{thead}[…] … \end{thead} | vor tbody | 
| <tfoot> … </tfoot> | \begin{tfoot}[…] … \end{tfoot} | vor tbody, nachthead | 
| <tbody> … </tbody> | \begin{tbody}[…] … \end{tbody} | |
| <tr> … </tr> | \HTtr[…]{…} | |
| <td> … </td> | \HTtd[…]{…} | |
| <th> … </th> | \HTth[…]{…} | 
Wichtig ist, dass das Raster eingehalten wird: Bei x Spalten und y Zeilen müssen  (unter Berücksichtigung von colspan und rowspan) x × y Zellen existieren.
Verfügbare Attribute und CSS-Eigenschaften¶
Im optionalen Argument (wenn keine vorhanden, dann weglassen) aller Elemente können folgende Attribute stehen:- style={}beinhaltet CSS-Eigenschaft-Wert-Paare>; die Syntax innerhalb der geschweiften Klammer entspricht der im XML, z. B.
\HTtd[style={<CSS-Eigenschaft-1>:<CSS-Wert-1>; <CSS-Eigenschaft-2>: <CSS-Wert-2>; … }]{<Inhalt>}Die im HTML vorhandenen CSS-Eigenschaften können direkt nach TeX übertragen werden. Gleiches gilt für die Umgebungen:
\begin{htmltab}[style={<CSS-Eigenschaft-1>:<CSS-Wert-1>; <CSS-Eigenschaft-2>: <CSS-Wert-2>; … }]
  …Bisher implementierte CSS-Eigenschaften¶
- margin,- padding,- border: jeweils mit und ohne- -top,- -left,- -right,- -bottom; Längenangabe; ohne Verwendung eines Suffixes gelten die Werte für alle Seiten des Elements; Wertsyntax:- (margin|padding|border): style
- (margin|padding|border): width style
- (margin|padding|border): width style color.
 
- border-style:- solid,- dashed,- dotted,- none,- double(ab v0.1.26)
- border-color: TeX-Farbname (ist zuvor mittels- \definecolor{<name>}{<farbraum>}{<deklaration>}zu definieren) oder Hexadezimalangabe- \#rrggbb
- border-width: Längenangabe; ohne Richtungssuffix gilt folgende Syntax:- border-width: <length>: Randliniendicke gilt für alle Seiten des Elements
- border-width: <length-1> <length-2>: Randliniendicke- <length-1>gilt für oben und unten, Dicke- <length-2>für links und rechts
- border-width: <length-1> <length-2> <length-3>: Randliniendicke- <length-1>gilt für oben, Dicke- <length-2>für links und rechts sowie- <length-3>für unten
- border-width: <length-1> <length-2> <length-3> <length-4>: Randliniendicken 1–4 gelten je für oben, rechts, unten und links
 
- border-collapse:- none,- collapse
- vertical-align:- top,- middle,- bottom
- background-color: Hintergrundfarbe; TeX-Farbname oder Hexadezimalangabe- \#rrggbb
- color: Schriftfarbe; TeX-Farbname oder Hexadezimalangabe- \#rrggbb
- font-size: Schriftgröße;- xx-small,- x-small,- small,- normal,- large,- x-large,- xx-large
- font-weight: Schriftgewicht;- bold,- normal
- font-family: Angabe einer generischen Schriftfamilie (CSS);- sans-serif,- serif,- monospace
- font-style: Schriftstil;- normal,- italic
- font-variant: Schriftstil II;- normal,- small-caps
- text-align:- right,- center,- left,- justified
- hyphen:- none(keine Silbentrennung),- auto(TeX-Silbentrennung)
- transform: @rotate(Xdeg)wobei- Xeine positive oder negative ganze Zahl im Gradmaß sein muss; für eine Vierteldrehung im Uhrzeigersinn:- transform: rotate(90deg),- -90degerzeugt eine Vierteldrehung gegen den Uhrzeigersinn (äquivalent zu- 270deg)
- class=<name>entspricht dem- class-Attribut bei HTML.
- \HTcolkann ein- width-Attribut mit der vorgegebenen Spaltenbreite erhalten, z. B.
 - \col[width=20mm,style={text-align: center}] \col[width=0.2,style={text-align:justified,hyphen=auto}]
 Mit obigem Codebeispiel würde die erste Spalte eine fixe Breite von 20 mm bekommen und der Inhalt zentriert ausgerichtet werden; die zweite Spalte bekäme eine relative Breite von 20 % der Gesamtbreite der Tabelle mit Inhalt im Blocksatz und automatischer Silbentrennung. Zulässige Werte für Spaltenbreiten sind:- Längenangaben (bspw. 10mm,12ptetc.) für Spalten fixer Breite,
- Dezimalbrüche im Intervall (0, 1] für Breiten relativ zur Gesamtbreite der Tabelle (0.5 entspricht der halben Gesamtbreite, 0.2 einem Fünftel der Gesamtbreite etc.)
- Ganzzahlen größer als 1 für Anteil der Breite an der Gesamtsumme der Teile; bspw. bedeuten drei Spalten mit respektive width=20,width=10undwidth=30, dass die erste ein Drittel der Gesamtbreite einnimmt (20/60), die zweite ein sechstel (10/60) und die dritte den verbleibenden Raum von 50 % (30/60)
- Prozentangaben (bei TeX-Input müssen die Prozentzeichen escapet werden: \%)
 
- Längenangaben (bspw. 
- die Umgebung htmltabkann das Attributwidthbesitzen, was dann die Gesamtbreite der Tabelle festlegt; fehlt diese Angabe, wird die Tabelle in ihrer natürlichen Breite gesetzt, höchstens aber Satzspiegelbreite (genauer:\linewidth).
- \HTtdund- \HTthkönnen überdies- rowspan- und- colspan-Attribute enthalten, die eine ganze Zahl als Wert bekommen, z. B.- \HTtd[rowspan=2,colspan=2,style={vertical-align: middle; text-align: center}]{<content>}
 Diese Zelle würde über zwei Spalten und zwei Zeilen gestreckt; ihr Inhalt wird vertikal und horizontal zentriert.
Beispiel:¶
\begin{htmltab}[class=box]
  \begin{thead}
    \HTtr[style={text-align: center}]{%
       \HTtd[style={text-align: center; vertical-align: bottom}]{<Inhalt Kopf Spalte 1>}
       \HTtd{<Inhalt Kopf Spalte 2>}
       \HTtd{<Inhalt Kopf Spalte 3>}
    }
  \end{thead}
  \begin{tfoot}
    \HTtr[colspan=3]{%
       \HTtd{<Inhalt Fuss Spalten 1–3>}
    }
  \end{tfoot}
  \begin{tbody}
    \HTtr{%
       \HTtd[rowspan=2]{<Inhalt Zeile 1-2 Spalte 1>}
       \HTtd{<Inhalt Zeile 1 Spalte 2>}
       \HTtd{<Inhalt Zeile 1 Spalte 3>}
    }
    \HTtr{%
       \HTtd{<Inhalt Zeile 2 Spalte 2>}
       \HTtd{<Inhalt Zeile 2 Spalte 3>}
    }
    \HTtr{%
       \HTtd{<Inhalt Zeile 3 Spalte 1>}
       \HTtd{<Inhalt Zeile 3 Spalte 2>}
       \HTtd{<Inhalt Zeile 3 Spalte 3>}
    }
  \end{tbody}
\end{htmltab}
Überschreibbare Eigenschaften und baretabular-Klasse¶
	- bestimmte CSS-Eigenschaften werden standardmäßig nicht ins TeX-Dokument übernommen, da diese u. U. Verlagsvorgaben für Tabellenlayouts überschreiben könnten:
	- widthan allen Elementen, die nicht- <col>,- <colgroup>oder- <table>sind,
- je nach Absprache mit den Verlagen bspw. auch background-colorin<thead>,padding-*antdetc.
 
- besitzt <table>diebaretabular-Klasse, werden alle CSS-Eigenschaften eins zu eins ans TeX-Dokument durchgereicht
Tabellenunterschrift, -quelle und -legende sowie Gleiteigenschaft¶
htmltab alleine entspricht den tabular-Umgebungen in Standard-LaTeX und die Auszeichnung von Bildunterschrift (\tpCaption), Zähler (\tpNumber), Quelle (\tpSource) und Legende (\tpLegend) ist mit der von tpFigure bekannten identisch:
\begin{tpTable}[<Floatpos>]
  \tpCaption{…}
  \tpSource{…}
  \tpLegend{…}
  \tpNumber{…}
  \begin{htmltab}
    …
  \end{htmltab}
\end{tpTable}
- <Floatpos>ist die Gleitposition (- t,- p,- h,- b; vgl. tpFigure); fehlt dieses optionale Argument, wird die Tabelle nichtgleitend und dort platziert, wo sie im Quelltext steht
-  Bitte beachten, dass die Tabelle nur umbrechen kann, wenn sie nicht gleitet., d. h. tpTablekein optionales Argument besitzt oder diese Umgebung komplett fehlt!
Gedrehte Tabellen¶
Auszeichnung in Word¶
Damit eine Tabelle um 90° gegen den Uhrzeigersinn gedreht wird, muss entweder in Word die Textrichtung der ersten Zelle entsprechend gedreht werden oder vor der Tabelle ein leerer Absatz mit dem Absatzformat table_rotated stehen.
Auszeichnung in LaTeX¶
Im TeX wird diese Drehung mit dem Attribut orientation="landscape" im optionalen Argument der Gleitumgebung gekennzeichnet:
\begin{tpTable}[orientation="landscape"]
…
\end{tpTable}
float-pos wird dabei immer mit p überschrieben. Demnach kann (und sollte) das Attribut bei gedrehten Tabellen entfallen. Dasselbe gilt für Bilder.
	
Tabellen auf mehrere Seiten umbrechen¶
Um Tabellen auf mehrere Seiten (mit sich wiederholendem Tabellenkopf) zu umbrechen, muss der Tabelle ein leerer Absatz mit dem Absatzformat table_pagewrap vorangestellt werden.
Von Marcus Hottenroth vor fast 2 Jahren aktualisiert · 28 Revisionen