Tabellen » Historie » Version 28
Marcus Hottenroth, 03.01.2024 10:45
| 1 | 1 | Patrick Schulz | h1. Tabellen |
|---|---|---|---|
| 2 | |||
| 3 | 22 | Martin Kraetke | {{toc}} |
| 4 | |||
| 5 | 25 | Marcus Hottenroth | 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. |
| 6 | 14 | Martin Kraetke | |
| 7 | h2. Paket einbinden |
||
| 8 | 2 | Maren Pufe | |
| 9 | 25 | Marcus Hottenroth | Die Einbindung kann über die Angabe |
| 10 | 1 | Patrick Schulz | <pre> |
| 11 | 14 | Martin Kraetke | \usepackage{htmltabs} |
| 12 | 1 | Patrick Schulz | </pre> |
| 13 | 25 | Marcus Hottenroth | 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. |
| 14 | 1 | Patrick Schulz | |
| 15 | 25 | Marcus Hottenroth | h2. Auszeichnung von Tabellen für den @htmltabs@-Renderer |
| 16 | 1 | Patrick Schulz | |
| 17 | 25 | Marcus Hottenroth | h3. XHTML-zu-LaTeX-Mapping |
| 18 | 1 | Patrick Schulz | |
| 19 | 25 | Marcus Hottenroth | Das TeX-Markup von @htmltabs@ entspricht der HTML-Tabellenstruktur: |
| 20 | 15 | Martin Kraetke | |
| 21 | 1 | Patrick Schulz | |_. XML |_. LaTeX |_. Anmerkungen | |
| 22 | 25 | Marcus Hottenroth | |@<table>…</table>@|@\begin{htmltab}[…] … \end{htmltab}@| | |
| 23 | |@<col />@|@\HTcol[…]@| vor @thead@ | |
||
| 24 | |@<colgroup> … </colgroup>@|@\HTcolgroup[…]{…}@| vor @thead@ | |
||
| 25 | |@<thead> … </thead>@|@\begin{thead}[…] … \end{thead}@| vor @tbody@ | |
||
| 26 | |@<tfoot> … </tfoot>@|@\begin{tfoot}[…] … \end{tfoot}@| vor @tbody@, nach @thead@ | |
||
| 27 | |@<tbody> … </tbody>@|@\begin{tbody}[…] … \end{tbody}@| | |
||
| 28 | |@<tr> … </tr>@|@\HTtr[…]{…}@| | |
||
| 29 | |@<td> … </td>@|@\HTtd[…]{…}@| | |
||
| 30 | |@<th> … </th>@|@\HTth[…]{…}@| | |
||
| 31 | 1 | Patrick Schulz | |
| 32 | 25 | Marcus Hottenroth | 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. |
| 33 | 1 | Patrick Schulz | |
| 34 | h3. Verfügbare Attribute und CSS-Eigenschaften |
||
| 35 | |||
| 36 | 25 | Marcus Hottenroth | Im optionalen Argument (wenn keine vorhanden, dann weglassen) aller Elemente können folgende Attribute stehen: |
| 37 | * @style={}@ beinhaltet CSS-Eigenschaft-Wert-Paare>; die Syntax innerhalb der geschweiften Klammer entspricht der im XML, z. B. |
||
| 38 | 17 | Martin Kraetke | |
| 39 | <pre><code class="text">\HTtd[style={<CSS-Eigenschaft-1>:<CSS-Wert-1>; <CSS-Eigenschaft-2>: <CSS-Wert-2>; … }]{<Inhalt>}</code></pre> |
||
| 40 | 24 | Patrick Schulz | |
| 41 | Die im HTML vorhandenen CSS-Eigenschaften können direkt nach TeX übertragen werden. Gleiches gilt für die Umgebungen: |
||
| 42 | 1 | Patrick Schulz | |
| 43 | <pre><code class="text">\begin{htmltab}[style={<CSS-Eigenschaft-1>:<CSS-Wert-1>; <CSS-Eigenschaft-2>: <CSS-Wert-2>; … }] |
||
| 44 | …</code></pre> |
||
| 45 | 17 | Martin Kraetke | |
| 46 | h4. Bisher implementierte CSS-Eigenschaften |
||
| 47 | |||
| 48 | 25 | Marcus Hottenroth | ** @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: |
| 49 | *** @(margin|padding|border): style@ |
||
| 50 | *** @(margin|padding|border): width style@ |
||
| 51 | *** @(margin|padding|border): width style color@. |
||
| 52 | 17 | Martin Kraetke | ** @border-style@: @solid@, @dashed@, @dotted@, @none@, @double@ (ab v0.1.26) |
| 53 | 25 | Marcus Hottenroth | ** @border-color@: TeX-Farbname (ist zuvor mittels @\definecolor{<name>}{<farbraum>}{<deklaration>}@ zu definieren) oder Hexadezimalangabe @\#rrggbb@ |
| 54 | ** @border-width@: Längenangabe; ohne Richtungssuffix gilt folgende Syntax: |
||
| 55 | *** @border-width: <length>@: Randliniendicke gilt für alle Seiten des Elements |
||
| 56 | *** @border-width: <length-1> <length-2>@: Randliniendicke @<length-1>@ gilt für oben und unten, Dicke @<length-2>@ für links und rechts |
||
| 57 | *** @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 |
||
| 58 | *** @border-width: <length-1> <length-2> <length-3> <length-4>@: Randliniendicken 1–4 gelten je für oben, rechts, unten und links |
||
| 59 | 4 | Patrick Schulz | ** @border-collapse@: @none@, @collapse@ |
| 60 | ** @vertical-align@: @top@, @middle@, @bottom@ |
||
| 61 | 25 | Marcus Hottenroth | ** @background-color@: Hintergrundfarbe; TeX-Farbname oder Hexadezimalangabe @\#rrggbb@ |
| 62 | ** @color@: Schriftfarbe; TeX-Farbname oder Hexadezimalangabe @\#rrggbb@ |
||
| 63 | ** @font-size@: Schriftgröße; @xx-small@, @x-small@, @small@, @normal@, @large@, @x-large@, @xx-large@ |
||
| 64 | ** @font-weight@: Schriftgewicht; @bold@, @normal@ |
||
| 65 | ** @font-family@: Angabe einer generischen Schriftfamilie (CSS); @sans-serif@, @serif@, @monospace@ |
||
| 66 | ** @font-style@: Schriftstil; @normal@, @italic@ |
||
| 67 | ** @font-variant@: Schriftstil II; @normal@, @small-caps@ |
||
| 68 | 24 | Patrick Schulz | ** @text-align@: @right@, @center@, @left@, @justified@ |
| 69 | 17 | Martin Kraetke | ** @hyphen@: @none@ (keine Silbentrennung), @auto@ (TeX-Silbentrennung) |
| 70 | 25 | Marcus Hottenroth | ** @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@) |
| 71 | 1 | Patrick Schulz | * @class=<name>@ entspricht dem @class@-Attribut bei HTML. |
| 72 | 25 | Marcus Hottenroth | * @\HTcol@ kann ein @width@-Attribut mit der vorgegebenen Spaltenbreite erhalten, z. B. |
| 73 | 1 | Patrick Schulz | <pre><code class="text">\col[width=20mm,style={text-align: center}] |
| 74 | \col[width=0.2,style={text-align:justified,hyphen=auto}]</code></pre> |
||
| 75 | 25 | Marcus Hottenroth | 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: |
| 76 | ** Längenangaben (bspw. @10mm@, @12pt@ etc.) für Spalten fixer Breite, |
||
| 77 | ** 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.) |
||
| 78 | ** 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) |
||
| 79 | ** Prozentangaben (bei TeX-Input müssen die Prozentzeichen escapet werden: @\%@) |
||
| 80 | * 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@). |
||
| 81 | * @\HTtd@ und @\HTth@ können überdies @rowspan@- und @colspan@-Attribute enthalten, die eine ganze Zahl als Wert bekommen, z. B. |
||
| 82 | 1 | Patrick Schulz | <pre><code class="text">\HTtd[rowspan=2,colspan=2,style={vertical-align: middle; text-align: center}]{<content>}</code></pre> |
| 83 | 25 | Marcus Hottenroth | Diese Zelle würde über zwei Spalten *und* zwei Zeilen gestreckt; ihr Inhalt wird vertikal und horizontal zentriert. |
| 84 | 1 | Patrick Schulz | |
| 85 | h3. Beispiel: |
||
| 86 | |||
| 87 | <pre><code class="text"> |
||
| 88 | \begin{htmltab}[class=box] |
||
| 89 | \begin{thead} |
||
| 90 | \HTtr[style={text-align: center}]{% |
||
| 91 | \HTtd[style={text-align: center; vertical-align: bottom}]{<Inhalt Kopf Spalte 1>} |
||
| 92 | \HTtd{<Inhalt Kopf Spalte 2>} |
||
| 93 | \HTtd{<Inhalt Kopf Spalte 3>} |
||
| 94 | } |
||
| 95 | \end{thead} |
||
| 96 | \begin{tfoot} |
||
| 97 | \HTtr[colspan=3]{% |
||
| 98 | \HTtd{<Inhalt Fuss Spalten 1–3>} |
||
| 99 | } |
||
| 100 | \end{tfoot} |
||
| 101 | \begin{tbody} |
||
| 102 | \HTtr{% |
||
| 103 | \HTtd[rowspan=2]{<Inhalt Zeile 1-2 Spalte 1>} |
||
| 104 | \HTtd{<Inhalt Zeile 1 Spalte 2>} |
||
| 105 | \HTtd{<Inhalt Zeile 1 Spalte 3>} |
||
| 106 | } |
||
| 107 | \HTtr{% |
||
| 108 | \HTtd{<Inhalt Zeile 2 Spalte 2>} |
||
| 109 | \HTtd{<Inhalt Zeile 2 Spalte 3>} |
||
| 110 | } |
||
| 111 | \HTtr{% |
||
| 112 | \HTtd{<Inhalt Zeile 3 Spalte 1>} |
||
| 113 | \HTtd{<Inhalt Zeile 3 Spalte 2>} |
||
| 114 | \HTtd{<Inhalt Zeile 3 Spalte 3>} |
||
| 115 | } |
||
| 116 | \end{tbody} |
||
| 117 | \end{htmltab} |
||
| 118 | 6 | Patrick Schulz | </code></pre> |
| 119 | |||
| 120 | h3. Überschreibbare Eigenschaften und @baretabular@-Klasse |
||
| 121 | |||
| 122 | 26 | Marcus Hottenroth | * bestimmte CSS-Eigenschaften werden standardmäßig nicht ins TeX-Dokument übernommen, da diese u. U. Verlagsvorgaben für Tabellenlayouts überschreiben könnten: |
| 123 | ** @width@ an allen Elementen, die nicht @<col>@, @<colgroup>@ oder @<table>@ sind, |
||
| 124 | ** je nach Absprache mit den Verlagen bspw. auch @background-color@ in @<thead>@, @padding-*@ an @td@ etc. |
||
| 125 | * besitzt @<table>@ die @baretabular@-Klasse, werden *alle* CSS-Eigenschaften eins zu eins ans TeX-Dokument durchgereicht |
||
| 126 | 7 | Patrick Schulz | |
| 127 | 27 | Marcus Hottenroth | h2. Tabellenunterschrift, -quelle und -legende sowie Gleiteigenschaft |
| 128 | 1 | Patrick Schulz | |
| 129 | 27 | Marcus Hottenroth | @htmltab@ alleine entspricht den @tabular@-Umgebungen in Standard-LaTeX und die Auszeichnung von Bildunterschrift (@\tpCaption@), Zähler (@\tpNumber@), Quelle (@\tpSource@) und Legende (@\tpLegend@) ist mit der von [[Bilder#Einspaltiger-Satz|tpFigure]] bekannten identisch: |
| 130 | 7 | Patrick Schulz | <pre><code class="text"> |
| 131 | \begin{tpTable}[<Floatpos>] |
||
| 132 | 27 | Marcus Hottenroth | \tpCaption{…} |
| 133 | \tpSource{…} |
||
| 134 | \tpLegend{…} |
||
| 135 | \tpNumber{…} |
||
| 136 | 7 | Patrick Schulz | \begin{htmltab} |
| 137 | … |
||
| 138 | \end{htmltab} |
||
| 139 | \end{tpTable} |
||
| 140 | </code></pre> |
||
| 141 | |||
| 142 | 27 | Marcus Hottenroth | * @<Floatpos>@ ist die Gleitposition (@t@, @p@, @h@, @b@; vgl. [[Bilder#Einspaltiger-Satz|tpFigure]]); fehlt dieses optionale Argument, wird die Tabelle nichtgleitend und dort platziert, wo sie im Quelltext steht |
| 143 | * %{color:#d20d20; font-weight:bold;} Bitte beachten%, dass die Tabelle nur umbrechen kann, wenn sie nicht gleitet., d. h. @tpTable@ kein optionales Argument besitzt oder diese Umgebung komplett fehlt! |
||
| 144 | 9 | Martin Kraetke | |
| 145 | h2. Gedrehte Tabellen |
||
| 146 | 10 | Patrick Schulz | |
| 147 | h3. Auszeichnung in Word |
||
| 148 | 9 | Martin Kraetke | |
| 149 | 28 | Marcus Hottenroth | Damit eine Tabelle um 90° gegen den Uhrzeigersinn gedreht wird, muss entweder in Word die Textrichtung der ersten Zelle entsprechend gedreht werden oder vor der Tabelle ein leerer Absatz mit dem Absatzformat @table_rotated@ stehen. |
| 150 | 10 | Patrick Schulz | |
| 151 | h3. Auszeichnung in LaTeX |
||
| 152 | |||
| 153 | 28 | Marcus Hottenroth | Im TeX wird diese Drehung mit dem Attribut @orientation="landscape"@ im optionalen Argument der Gleitumgebung gekennzeichnet: |
| 154 | 10 | Patrick Schulz | <pre><code class="text"> |
| 155 | 28 | Marcus Hottenroth | \begin{tpTable}[orientation="landscape"] |
| 156 | 10 | Patrick Schulz | … |
| 157 | 28 | Marcus Hottenroth | \end{tpTable} |
| 158 | </code></pre>Die Angabe von @float-pos@ wird dabei *immer* mit @p@ überschrieben. Demnach kann (und sollte) das Attribut bei gedrehten Tabellen entfallen. Dasselbe gilt für Bilder. |
||
| 159 | 9 | Martin Kraetke | |
| 160 | h2. Tabellen auf mehrere Seiten umbrechen |
||
| 161 | |||
| 162 | 21 | Martin Kraetke | Um Tabellen auf mehrere Seiten (mit sich wiederholendem Tabellenkopf) zu umbrechen, muss der Tabelle ein leerer Absatz mit dem Absatzformat @table_pagewrap@ vorangestellt werden. |