Projekt

Allgemein

Profil

Aktionen

Tabellen » Historie » Revision 9

« Zurück | Revision 9/29 (Vergleich) | Weiter »
Martin Kraetke, 03.05.2021 19:45


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.

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.
  • Die Tabelle kann nur umbrechen, wenn sie nicht gleitet!, d.h. wenn die tpTable-Umgebung komplett fehlt; oder wenn tpTable da ist, aber kein optionales Argument hat.

Gedrehte Tabellen

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.

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 Martin Kraetke vor mehr als 3 Jahren aktualisiert · 9 Revisionen