Tabellen » Historie » Revision 25
Revision 24 (Patrick Schulz, 23.03.2022 10:22) → Revision 25/29 (Marcus Hottenroth, 02.01.2024 12:41)
h1. Tabellen {{toc}} Für Tabellen wird nicht @tabularx@ tabularx oder ein anderes von TeX bekanntes Tabellenpaket verwendet, sondern das dass von Patrick Schulz entwickelte "@htmltabs@":https://gitlab.le-tex.de/htmltabs/htmltabs/-/tree/master/releases. *htmltabs* ("Link zum Repository":https://gitlab.le-tex.de/htmltabs/htmltabs/-/tree/master/releases). h2. Paket einbinden Die Einbindung kann über die Angabe In der preamble angeben: <pre> \usepackage{htmltabs} </pre> 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. h2. Auszeichnung von Tabellen für den @htmltabs@-Renderer mit htmltabs-Renderer h3. XHTML-zu-LaTeX-Mapping Mapping xhtml -> LaTeX Das TeX-Markup von @htmltabs@ htmltabs entspricht der HTML-Tabellenstruktur: |_. XML |_. LaTeX |_. Anmerkungen | |@<table>…</table>@|@\begin{htmltab}[…] |<table>…</table>|\begin{htmltab}[…] … \end{htmltab}@| \end{htmltab}| | |@<col />@|@\HTcol[…]@| |<col />|\HTcol[…]| vor @thead@ thead | |@<colgroup> … </colgroup>@|@\HTcolgroup[…]{…}@| |<colgroup>…</colgroup>|\HTcolgroup[…]{…}| vor @thead@ thead | |@<thead> |<thead>…</thead>|\begin{thead}[…] … </thead>@|@\begin{thead}[…] … \end{thead}@| \end{thead}| vor @tbody@ tbody | |@<tfoot> |<tfoot>…</tfoot>|\begin{tfoot}[…] … </tfoot>@|@\begin{tfoot}[…] … \end{tfoot}@| \end{tfoot}| vor @tbody@, tbody, nach @thead@ thead | |@<tbody> |<tbody>…</tbody>|\begin{tbody}[…] … </tbody>@|@\begin{tbody}[…] … \end{tbody}@| \end{tbody}| | |@<tr> … </tr>@|@\HTtr[…]{…}@| |<tr>…</tr>|\HTtr[…]{…}| | |@<td> … </td>@|@\HTtd[…]{…}@| |<td>…</td>|\HTtd[…]{…}| | |@<th> … </th>@|@\HTth[…]{…}@| |<th>…</th>|\HTth[…]{…}| | Wichtig ist, dass das Raster eingehalten wird: Bei bei x Spalten und y Zeilen müssen (unter Berücksichtigung von @colspan@ colspan und @rowspan@) x × y rowspan) x×y Zellen existieren. h3. Verfügbare Attribute und CSS-Eigenschaften Im optionalen Argument (wenn keine vorhanden, dann leer, weglassen) aller Elemente "Elemente" können folgende Attribute "Attribute" stehen: * @style={}@ beinhaltet CSS-Eigenschaft-Wert-Paare>; die CSS-Eigenschafts-Werte-Paare, Syntax innerhalb der geschweiften Klammer entspricht der im ist wie in XML, z. B. z.B. <pre><code class="text">\HTtd[style={<CSS-Eigenschaft-1>:<CSS-Wert-1>; <CSS-Eigenschaft-2>: <CSS-Wert-2>; … }]{<Inhalt>}</code></pre> Die im HTML vorhandenen CSS-Eigenschaften können direkt nach TeX übertragen werden. Gleiches gilt für die Umgebungen: <pre><code class="text">\begin{htmltab}[style={<CSS-Eigenschaft-1>:<CSS-Wert-1>; <CSS-Eigenschaft-2>: <CSS-Wert-2>; … }] …</code></pre> h4. Bisher implementierte CSS-Eigenschaften ** @margin@, jeweils mit und ohne @-top@, @-left@, @-right@, @-bottom@: Längenangabe ** @padding@, @border@: jeweils mit und ohne @-top@, @-left@, @-right@, @-bottom@: Längenangabe ** @border@, jeweils mit und ohne @-top@, @-left@, @-right@, @-bottom@; Längenangabe; jeweils mit oder ohne Verwendung eines Suffixes gelten die Werte für alle Seiten des Elements; Wertsyntax: @-width@, @-style@, @-color@ *** @(margin|padding|border): style@ Wenn @-width/-style/-color@ *und* Seitenangabe weggelassen werden: *** @(margin|padding|border): width **** ein Wert: @style@ **** zwei Werte: @width style@ *** @(margin|padding|border): width **** drei Werte: @width style color@. Für alle Seiten des Elements. ** @border-style@: @solid@, @dashed@, @dotted@, @none@, @double@ (ab v0.1.26) ** @border-color@: TeX-Farbname (ist zuvor mittels (mit @\definecolor{<name>}{<farbraum>}{<deklaration>}@ zu definieren) oder Hexadezimalangabe Hexadezimal-Angabe @\#rrggbb@ ** @border-width@: Längenangabe; Längenangabe Bei Angaben ohne Richtungssuffix gilt folgende Syntax: Richtung sind mehrere Werte möglich: *** @border-width: <length>@: Randliniendicke gilt für ein Wert: alle Seiten des Elements Richtungen *** @border-width: <length-1> <length-2>@: Randliniendicke @<length-1>@ gilt für oben zwei Werte: @oben/unten@ und unten, Dicke @<length-2>@ für links und rechts @links/rechts@; *** @border-width: <length-1> <length-2> <length-3>@: Randliniendicke @<length-1>@ gilt für oben, Dicke @<length-2>@ für links drei Werte: @oben@ und rechts sowie @<length-3>@ für unten @links/rechts@ und @unten@ *** @border-width: <length-1> <length-2> <length-3> <length-4>@: Randliniendicken 1–4 gelten je für oben, rechts, unten vier Werte: @oben@ und links @rechts@ und @unten@ und @links@ ** @border-collapse@: @none@, @collapse@ ** @vertical-align@: @top@, @middle@, @bottom@ ** @background-color@: Hintergrundfarbe; TeX-Farbname Hintergrundfarbe. Farbname oder Hexadezimalangabe @\#rrggbb@ ** @color@: Schriftfarbe; TeX-Farbname Schriftfarbe. Farbname oder Hexadezimalangabe @\#rrggbb@ ** @font-size@: Schriftgröße; Schriftgröße. @xx-small@, @x-small@, @small@, @normal@, @large@, @x-large@, @xx-large@ ** @font-weight@: Schriftgewicht; Schriftgewicht. @bold@, @normal@ ** @font-family@: Angabe einer generischen Schriftfamilie (CSS); (CSS). @sans-serif@, @serif@, @monospace@ ** @font-style@: Schriftstil; Schriftstil. @normal@, @italic@ ** @font-variant@: Schriftstil II; II. @normal@, @small-caps@ ** @text-align@: @right@, @center@, @left@, @justified@ ** @hyphen@: @none@ (keine Silbentrennung), @auto@ (TeX-Silbentrennung) ** @transform: @transform@: @rotate(Xdeg)@ wobei @X@ eine positive oder negative ganze Zahl im Gradmaß sein muss; muss, z.B. @90deg@ für eine Vierteldrehung viertel Drehung gegen Uhrzeigersinn, @-90deg@ viertel Drehung im Uhrzeigersinn: @transform: rotate(90deg)@, @-90deg@ erzeugt eine Vierteldrehung gegen den Uhrzeigersinn (äquivalent zu @270deg@) * @class=<name>@ entspricht dem @class@-Attribut bei HTML. * @\HTcol@ das @\HTcol@-Element kann ein @width@-Attribut mit der vorgegebenen Spaltenbreite erhalten, z. B. z.B. <pre><code class="text">\col[width=20mm,style={text-align: center}] \col[width=0.2,style={text-align:justified,hyphen=auto}]</code></pre> Mit obigem Codebeispiel würde die Die erste Spalte würde demnach eine fixe Breite von 20 mm bekommen und der Inhalt zentriert ausgerichtet werden; 20mm bekommen, die zweite Spalte bekäme eine relative Breite von 20 % 20% der Gesamtbreite Breite der Tabelle gesamten Tabelle. Die erste Spalte ist zentriert, die zweite erhält Blocksatz mit Inhalt im Blocksatz und automatischer aktivierter Silbentrennung. Zulässige Werte für Spaltenbreiten sind: ** Längenangaben (bspw. @10mm@, @12pt@ etc.) Längen (also Zahl+Einheit) für Spalten fixer Breite, ** Dezimalbrüche im Intervall (0, 1] Zahlen <= 1 für Breiten relativ zur Gesamtbreite der Tabelle (0.5 entspricht der halben Gesamtbreite, entspräche halbe Gesamtbreite; 0.2 einem ein Fünftel der Gesamtbreite Gesamtbreite, etc.) ** Ganzzahlen größer als Zahlen > 1 für Anteil der Breite an der Anteile auf Gesamtsumme der Teile; bspw. bedeuten bezogen. Z.B. drei Spalten mit respektive @width=20@, @width=10@ und @width=30@, @width=30@ bedeutet, dass die erste ein Drittel der Gesamtbreite einnimmt (20/60), die zweite ein sechstel (10/60) und die dritte den verbleibenden Raum von 50 % die restliche hälfte (30/60) ** Prozentangaben (bei TeX-Input müssen tex-Input bitte die Prozentzeichen escapet werden: %-Zeichen escapen: @\%@) * die Umgebung Auch @htmltab@ kann das Attribut @width@ besitzen, was haben, dies entspräche dann die der Gesamtbreite der Tabelle festlegt; fehlt diese 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@- @rowspan@ und @colspan@-Attribute enthalten, die eine ganze Zahl als Wert bekommen, z. B. z.B. <pre><code class="text">\HTtd[rowspan=2,colspan=2,style={vertical-align: middle; text-align: center}]{<content>}</code></pre> Diese Zelle würde über zwei Spalten *und* zwei Zeilen gestreckt; gestreckt, ihr Inhalt wird vertikal und horizontal zentriert. h3. Beispiel: <pre><code class="text"> \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} </code></pre> h3. Ü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. h2. 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 [[Bilder#Einspaltiger-Satz|tpFigure]]: <pre><code class="text"> \begin{tpTable}[<Floatpos>] \tpCaption{<Caption>} \tpSource{<Quelle>} \tpLegend{<Legende>} \tpNumber{<Zähler>} \begin{htmltab} … \end{htmltab} \end{tpTable} </code></pre> * @<Floatpos>@ ist die Gleitposition (t,p,h,b; vgl. [[Bilder#Einspaltiger-Satz|tpFigure]]); fehlt das optionale Argument, wird die Tabelle nicht-gleitend und dort platziert, wo sie im Quelltext steht. * %{color:#d20d20; font-weight:bold;} Bitte beachten%, dass die Tabelle nur umbrechen kann, wenn sie nicht gleitet., d.h. wenn die @tpTable@-Umgebung komplett fehlt; oder wenn @tpTable@ da ist, aber kein optionales Argument hat. h2. Gedrehte Tabellen h3. 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. h3. Auszeichnung in LaTeX Im TeX wird das ganze mit dem Attribut @orientation="landscape"@ im optionalen Argument der Gleitungebung gekennzeichnet, z.B. <pre><code class="text"> \begin{tpTable*}[orientation="landscape"] … \end{tpTable*} </code></pre>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. h2. 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.