Tabellen » Historie » Revision 27
Revision 26 (Marcus Hottenroth, 03.01.2024 09:57) → Revision 27/29 (Marcus Hottenroth, 03.01.2024 10:40)
h1. Tabellen {{toc}} Für Tabellen wird nicht @tabularx@ oder ein anderes von TeX bekanntes Tabellenpaket verwendet, sondern das von Patrick Schulz entwickelte "@htmltabs@":https://gitlab.le-tex.de/htmltabs/htmltabs/-/tree/master/releases. h2. Paket einbinden Die Einbindung kann über die Angabe <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 h3. XHTML-zu-LaTeX-Mapping 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. h3. Verfügbare Attribute und CSS-Eigenschaften Im optionalen Argument (wenn keine vorhanden, dann weglassen) aller Elemente können folgende Attribute stehen: * @style={}@ beinhaltet CSS-Eigenschaft-Wert-Paare>; die Syntax innerhalb der geschweiften Klammer entspricht der im XML, 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@, @padding@, @border@: jeweils mit und ohne @-top@, @-left@, @-right@, @-bottom@; Längenangabe; ohne Verwendung eines Suffixes gelten die Werte für alle Seiten des Elements; Wertsyntax: *** @(margin|padding|border): style@ *** @(margin|padding|border): width style@ *** @(margin|padding|border): width style color@. ** @border-style@: @solid@, @dashed@, @dotted@, @none@, @double@ (ab v0.1.26) ** @border-color@: TeX-Farbname (ist zuvor mittels @\definecolor{<name>}{<farbraum>}{<deklaration>}@ zu definieren) oder Hexadezimalangabe @\#rrggbb@ ** @border-width@: Längenangabe; ohne Richtungssuffix gilt folgende Syntax: *** @border-width: <length>@: Randliniendicke gilt für alle Seiten des Elements *** @border-width: <length-1> <length-2>@: Randliniendicke @<length-1>@ gilt für oben und unten, Dicke @<length-2>@ für links und rechts *** @border-width: <length-1> <length-2> <length-3>@: Randliniendicke @<length-1>@ gilt für oben, Dicke @<length-2>@ für links und rechts sowie @<length-3>@ für unten *** @border-width: <length-1> <length-2> <length-3> <length-4>@: Randliniendicken 1–4 gelten je für oben, rechts, unten und links ** @border-collapse@: @none@, @collapse@ ** @vertical-align@: @top@, @middle@, @bottom@ ** @background-color@: Hintergrundfarbe; TeX-Farbname oder Hexadezimalangabe @\#rrggbb@ ** @color@: Schriftfarbe; TeX-Farbname oder Hexadezimalangabe @\#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) ** @transform: @rotate(Xdeg)@ wobei @X@ eine positive oder negative ganze Zahl im Gradmaß sein muss; für eine Vierteldrehung im Uhrzeigersinn: @transform: rotate(90deg)@, @-90deg@ erzeugt eine Vierteldrehung gegen den Uhrzeigersinn (äquivalent zu @270deg@) * @class=<name>@ entspricht dem @class@-Attribut bei HTML. * @\HTcol@ kann ein @width@-Attribut mit der vorgegebenen Spaltenbreite erhalten, 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 erste Spalte eine fixe Breite von 20 mm bekommen und der Inhalt zentriert ausgerichtet werden; die zweite Spalte bekäme eine relative Breite von 20 % der Gesamtbreite der Tabelle mit Inhalt im Blocksatz und automatischer Silbentrennung. Zulässige Werte für Spaltenbreiten sind: ** Längenangaben (bspw. @10mm@, @12pt@ etc.) für Spalten fixer Breite, ** Dezimalbrüche im Intervall (0, 1] für Breiten relativ zur Gesamtbreite der Tabelle (0.5 entspricht der halben Gesamtbreite, 0.2 einem Fünftel der Gesamtbreite etc.) ** Ganzzahlen größer als 1 für Anteil der Breite an der Gesamtsumme der Teile; bspw. bedeuten drei Spalten mit respektive @width=20@, @width=10@ und @width=30@, dass die erste ein Drittel der Gesamtbreite einnimmt (20/60), die zweite ein sechstel (10/60) und die dritte den verbleibenden Raum von 50 % (30/60) ** Prozentangaben (bei TeX-Input müssen die Prozentzeichen escapet werden: @\%@) * die Umgebung @htmltab@ kann das Attribut @width@ besitzen, was dann die Gesamtbreite der Tabelle festlegt; fehlt diese 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. <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; 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-Dokument übernommen, da diese u. U. Verlagsvorgaben für Tabellenlayouts überschreiben könnten: ** @width@ an allen Elementen, die nicht @<col>@, @<colgroup>@ oder @<table>@ sind, ** je nach Absprache mit den Verlagen bspw. auch @background-color@ in @<thead>@, @padding-*@ an @td@ etc. * besitzt @<table>@ die @baretabular@-Klasse, werden *alle* CSS-Eigenschaften eins zu eins ans TeX-Dokument durchgereicht h2. Tabellenunterschrift, -quelle Caption, Source, Legende und -legende sowie Gleiteigenschaft Gleit-Fähigkeit @htmltab@ htmltabs alleine entspricht den @tabular@-Umgebungen in Standard-LaTeX und die Standard-LaTeX. Die Auszeichnung von Bildunterschrift (@\tpCaption@), Zähler (@\tpNumber@), Caption, Zähler, Quelle (@\tpSource@) und Legende (@\tpLegend@) ist mit der von [[Bilder#Einspaltiger-Satz|tpFigure]] bekannten identisch: entspricht [[Bilder#Einspaltiger-Satz|tpFigure]]: <pre><code class="text"> \begin{tpTable}[<Floatpos>] \tpCaption{…} \tpCaption{<Caption>} \tpSource{…} \tpSource{<Quelle>} \tpLegend{…} \tpLegend{<Legende>} \tpNumber{…} \tpNumber{<Zähler>} \begin{htmltab} … \end{htmltab} \end{tpTable} </code></pre> * @<Floatpos>@ ist die Gleitposition (@t@, @p@, @h@, @b@; (t,p,h,b; vgl. [[Bilder#Einspaltiger-Satz|tpFigure]]); fehlt dieses das optionale Argument, wird die Tabelle nichtgleitend nicht-gleitend und dort platziert, wo sie im Quelltext steht steht. * %{color:#d20d20; font-weight:bold;} Bitte beachten%, dass die Tabelle nur umbrechen kann, wenn sie nicht gleitet., d. h. d.h. wenn die @tpTable@-Umgebung komplett fehlt; oder wenn @tpTable@ da ist, aber kein optionales Argument besitzt oder diese Umgebung komplett fehlt! 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.