Aktionen
Tabellen » Historie » Revision 1
Revision 1/29
| Weiter »
Patrick Schulz, 29.01.2021 12:23
Tabellen¶
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.
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ä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 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 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 linksborder-collapse
:none
,collapse
vertical-align
:top
,middle
,bottom
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 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 werden zusammen addiert und die Spalten entsprechend ihrem Anteil an der Summe gestreckt. 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)
- 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}
Von Patrick Schulz vor fast 4 Jahren aktualisiert · 1 Revisionen