Projekt

Allgemein

Profil

Aktionen

Tabellen » Historie » Revision 6

« Zurück | Revision 6/29 (Vergleich) | Weiter »
Patrick Schulz, 10.03.2021 12:12


Tabellen

In der preample angeben:
\usepackage{htmltabs}

Auszeichnung von Tabellen mit Lupinos htmltabs-Renderer (Repo im firmeninternen GitLab)

Mapping xhtml -> LaTeX

html-Strukturen werden im Grunde 1:1 abgebildet:
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>}

    Hier kann das CSS aus dem XML eigentlich direkt durchgeschleift werden.
    Analog bei den 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ängenangabe
    • padding, jeweils mit und ohne -top, -left, -right, -bottom: Längenangabe
    • border, jeweils mit und ohne -top, -left, -right, -bottom; jeweils mit oder ohne -width, -style, -color
      • Wenn -width/-style/-color und Richtungsangabe weggelassen werden: 1 Wert: style; 2 Werte: width style; 3 Werte: width style color. Für alle Richtungen.
    • border-style: solid, dashed, dotted, none
    • border-color: Farbname (ggf. mittels \definecolor{<name>}{<farbraum>}{<deklaration>} definieren!) oder \#rrggbb
    • border-width: Längenangabe
      Bei Angaben ohne Richtung sind mehrere Werte möglich: bei 1 Wert: alle Richtungen; 2 Werte: top/bottom und links/rechts; 3 Werte: top links/rechts bottom; 4 Werte: top rechts bottom links
    • 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: Schriftfamilie. 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 dem class-Attribut bei XML/html.
  • das \HTcol-Element kann 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}]

    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 werden zusammen addiert und die Spalten entsprechend ihrem Anteil an der Summe gestreckt. Z.B. drei Spalten mit width=20, width=10 und width=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)
  • Auch htmltab kann width 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 ü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 ü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-* an td, etc.)
  • Die baretabular-Klasse ist ein globaler Spezialfall: Hat <table> diese Klasse, werden alle CSS-Eigenschaften 1:1 an TeX durchgereicht.

Von Patrick Schulz vor mehr als 3 Jahren aktualisiert · 6 Revisionen