Projekt

Allgemein

Profil

Tabellen » Historie » Version 25

Marcus Hottenroth, 02.01.2024 12:41

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
* Bestimmte CSS-Eigenschaften werden standardmäßig nicht ins tex ü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
** Weitere, je nach Absprache mit den Verlagen (z.B. @background-color@ in @<thead>@, @padding-*@ an @td@, etc.)
125 7 Patrick Schulz
* Die @baretabular@-Klasse ist ein globaler Spezialfall: Hat  @<table>@ diese Klasse, werden *alle* CSS-Eigenschaften 1:1 an TeX durchgereicht.
126
127
h2. Caption, Source, Legende und Gleit-Fähigkeit
128
129
htmltabs alleine entspricht den @tabular@-Umgebungen in Standard-LaTeX.
130
131
Die Auszeichnung von Caption, Zähler, Quelle und Legende entspricht [[Bilder#Einspaltiger-Satz|tpFigure]]:
132
<pre><code class="text">
133
\begin{tpTable}[<Floatpos>]
134
  \tpCaption{<Caption>}
135
  \tpSource{<Quelle>}
136
  \tpLegend{<Legende>}
137
  \tpNumber{<Zähler>}
138
  \begin{htmltab}
139
140
  \end{htmltab}
141
\end{tpTable}
142
</code></pre>
143
144 8 Maren Pufe
* @<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.
145 20 Martin Kraetke
* %{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.
146 9 Martin Kraetke
147
h2. Gedrehte Tabellen
148 10 Patrick Schulz
149
h3. Auszeichnung in Word
150 9 Martin Kraetke
151 10 Patrick Schulz
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.
152
153
h3. Auszeichnung in LaTeX
154
155
Im TeX wird das ganze mit dem Attribut @orientation="landscape"@ im optionalen Argument der Gleitungebung gekennzeichnet, z.B.
156
<pre><code class="text">
157
\begin{tpTable*}[orientation="landscape"]
158
159
\end{tpTable*}
160 9 Martin Kraetke
</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.
161
162
h2. Tabellen auf mehrere Seiten umbrechen
163
164 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.