Tabellen » Historie » Revision 23
« Zurück |
Revision 23/29
(Vergleich)
| Weiter »
Patrick Schulz, 18.01.2022 10:12
Prozentangaben ergänzt
Tabellen¶
- Inhaltsverzeichnis
- Tabellen
Für Tabellen wird nicht tabularx oder ein anderes von TeX bekanntes Tabellenpaket verwendet, sondern dass von Patrick Schulz entwickelte htmltabs (Link zum Repository).
Paket einbinden¶
In der preamble angeben:
\usepackage{htmltabs}
Auszeichnung von Tabellen mit htmltabs-Renderer¶
Mapping xhtml -> LaTeX¶
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 leer, weglassen) aller "Elemente" können folgende "Attribute" stehen:style={}
beinhaltet CSS-Eigenschafts-Werte-Paare, Syntax innerhalb der geschweiften Klammer ist wie in 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
, jeweils mit und ohne-top
,-left
,-right
,-bottom
: Längenangabepadding
, jeweils mit und ohne-top
,-left
,-right
,-bottom
: Längenangabeborder
, jeweils mit und ohne-top
,-left
,-right
,-bottom
; jeweils mit oder ohne-width
,-style
,-color
- Wenn
-width/-style/-color
und Seitenangabe weggelassen werden:- ein Wert:
style
- zwei Werte:
width style
- drei Werte:
width style color
. Für alle Seiten des Elements.
- ein Wert:
- Wenn
border-style
:solid
,dashed
,dotted
,none
,double
(ab v0.1.26)border-color
: TeX-Farbname (mit\definecolor{<name>}{<farbraum>}{<deklaration>}
definieren) oder Hexadezimal-Angabe\#rrggbb
border-width
: Längenangabe
Bei Angaben ohne Richtung sind mehrere Werte möglich:- ein Wert: alle Richtungen
- zwei Werte:
oben/unten
undlinks/rechts
; - drei Werte:
oben
undlinks/rechts
undunten
- vier Werte:
oben
undrechts
undunten
undlinks
border-collapse
:none
,collapse
vertical-align
:top
,middle
,bottom
background-color
: Hintergrundfarbe. Farbname oder\#rrggbb
color
: Schriftfarbe. Farbname oder\#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)
class=<name>
entspricht demclass
-Attribut bei HTML.- das
\HTcol
-Element 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}]
Die erste Spalte würde demnach eine fixe Breite von 20mm bekommen, die zweite eine relative Breite von 20% der Breite der gesamten Tabelle.
Die erste Spalte ist zentriert, die zweite erhält Blocksatz mit aktivierter Silbentrennung.
Zulässige Werte für Spaltenbreiten sind:- Längen (also Zahl+Einheit) für Spalten fixer Breite,
- Zahlen <= 1 für Breiten relativ zur Gesamtbreite der Tabelle (0.5 entspräche halbe Gesamtbreite; 0.2 ein Fünftel der Gesamtbreite, etc.)
- Zahlen > 1 Anteile auf Gesamtsumme bezogen. Z.B. drei Spalten mit
width=20
,width=10
undwidth=30
bedeutet, dass die erste ein Drittel der Gesamtbreite einnimmt (20/60), die zweite ein sechstel (10/60) und die dritte die restliche hälfte (30/60) - Prozentangaben (bei tex-Input bitte die %-Zeichen escapen:
\%
)
- Auch
htmltab
kannwidth
haben, dies entspräche dann der Gesamtbreite der Tabelle. Fehlt die 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 Patrick Schulz vor fast 3 Jahren aktualisiert · 23 Revisionen