Tabellen » Historie » Revision 25
« Zurück |
Revision 25/29
(Vergleich)
| Weiter »
Marcus Hottenroth, 02.01.2024 12:41
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 , nach thead |
<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 Elementsborder-width: <length-1> <length-2>
: Randliniendicke<length-1>
gilt für oben und unten, Dicke<length-2>
für links und rechtsborder-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 untenborder-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)
wobeiX
eine positive oder negative ganze Zahl im Gradmaß sein muss; für eine Vierteldrehung im Uhrzeigersinn:transform: rotate(90deg)
,-90deg
erzeugt eine Vierteldrehung gegen den Uhrzeigersinn (äquivalent zu270deg
)
class=<name>
entspricht demclass
-Attribut bei HTML.\HTcol
kann einwidth
-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
,12pt
etc.) 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=10
undwidth=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
htmltab
kann das Attributwidth
besitzen, 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
). \HTtd
und\HTth
können überdiesrowspan
- undcolspan
-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 übernommen, da diese u.U. Verlagsvorgaben für Tabellenlayouts überschreiben könnten:
width
an allen Elementen, die nicht<col>
,<colgroup>
, oder<table>
sind- Weitere, je nach Absprache mit den Verlagen (z.B.
background-color
in<thead>
,padding-*
antd
, etc.)
- Die
baretabular
-Klasse ist ein globaler Spezialfall: Hat<table>
diese Klasse, werden alle CSS-Eigenschaften 1:1 an TeX durchgereicht.
Caption, Source, Legende und Gleit-Fähigkeit¶
htmltabs alleine entspricht den tabular
-Umgebungen in Standard-LaTeX.
Die Auszeichnung von Caption, Zähler, Quelle und Legende entspricht tpFigure:
\begin{tpTable}[<Floatpos>]
\tpCaption{<Caption>}
\tpSource{<Quelle>}
\tpLegend{<Legende>}
\tpNumber{<Zähler>}
\begin{htmltab}
…
\end{htmltab}
\end{tpTable}
<Floatpos>
ist die Gleitposition (t,p,h,b; vgl. tpFigure); fehlt das optionale Argument, wird die Tabelle nicht-gleitend und dort platziert, wo sie im Quelltext steht.- Bitte beachten, dass die Tabelle nur umbrechen kann, wenn sie nicht gleitet., d.h. wenn die
tpTable
-Umgebung komplett fehlt; oder wenntpTable
da ist, aber kein optionales Argument hat.
Gedrehte Tabellen¶
Auszeichnung in Word¶
Damit eine Tabelle um 90 Grad gedreht wird, muss entweder in Word die Textrichtung der ersten Zelle gedreht werden oder vor der Tabelle ein leerer Absatz mit dem Absatzformat table_rotated
stehen.
Auszeichnung in LaTeX¶
Im TeX wird das ganze mit dem Attribut orientation="landscape"
im optionalen Argument der Gleitungebung gekennzeichnet, z.B.
\begin{tpTable*}[orientation="landscape"]
…
\end{tpTable*}
Die Angabe von float-pos wird dabei immer mit "p" überschrieben, demnach kann (und sollte) das Attribut bei gedrehten Tabellen entfallen. Dasselbe funktioniert genau so auch mit Bildern.
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 11 Monaten aktualisiert · 25 Revisionen