Projekt

Allgemein

Profil

Tabellen » Historie » Version 29

Marcus Hottenroth, 03.01.2024 10:49

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 29 Marcus Hottenroth
       \HTtd{<Inhalt Fuß Spalten 1–3>}
99 1 Patrick Schulz
    }
100
  \end{tfoot}
101
  \begin{tbody}
102
    \HTtr{%
103 29 Marcus Hottenroth
       \HTtd[rowspan=2]{<Inhalt Zeile 1–2 Spalte 1>}
104 1 Patrick Schulz
       \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.