Projekt

Allgemein

Profil

Tabellen » Historie » Version 24

Patrick Schulz, 23.03.2022 10:22
transform ergänzt

1 1 Patrick Schulz
h1. Tabellen
2
3 22 Martin Kraetke
{{toc}}
4
5 14 Martin Kraetke
Für Tabellen wird nicht tabularx oder ein anderes von TeX bekanntes Tabellenpaket verwendet, sondern dass von Patrick Schulz entwickelte *htmltabs* ("Link zum Repository":https://gitlab.le-tex.de/htmltabs/htmltabs/-/tree/master/releases).
6
7
h2. Paket einbinden
8
9 2 Maren Pufe
In der preamble angeben:
10 14 Martin Kraetke
11
<pre>
12 1 Patrick Schulz
\usepackage{htmltabs}
13 14 Martin Kraetke
</pre>
14 1 Patrick Schulz
15 14 Martin Kraetke
h2. Auszeichnung von Tabellen mit htmltabs-Renderer
16 1 Patrick Schulz
17
h3. Mapping xhtml -> LaTeX
18
19 15 Martin Kraetke
Das TeX-Markup von htmltabs entspricht der HTML-Tabellenstruktur:
20
21 1 Patrick Schulz
|_. XML |_. LaTeX |_. Anmerkungen |
22
|<table>…</table>|\begin{htmltab}[…] … \end{htmltab}| |
23
|<col />|\HTcol[…]| vor thead |
24
|<colgroup>…</colgroup>|\HTcolgroup[…]{…}| vor thead |
25 15 Martin Kraetke
|<thead>…</thead>|\begin{thead}[…] … \end{thead}| vor tbody |
26
|<tfoot>…</tfoot>|\begin{tfoot}[…] … \end{tfoot}| vor tbody, nach thead |
27 1 Patrick Schulz
|<tbody>…</tbody>|\begin{tbody}[…] … \end{tbody}| |
28
|<tr>…</tr>|\HTtr[…]{…}| |
29
|<td>…</td>|\HTtd[…]{…}| |
30
|<th>…</th>|\HTth[…]{…}| |
31
32
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
34 6 Patrick Schulz
h3. Verfügbare Attribute und CSS-Eigenschaften
35 1 Patrick Schulz
36
Im optionalen Argument (wenn leer, weglassen) aller "Elemente" können folgende "Attribute" stehen:
37
* @style={}@ beinhaltet CSS-Eigenschafts-Werte-Paare, Syntax innerhalb der geschweiften Klammer ist wie in XML, z.B. 
38 16 Martin Kraetke
39 17 Martin Kraetke
<pre><code class="text">\HTtd[style={<CSS-Eigenschaft-1>:<CSS-Wert-1>; <CSS-Eigenschaft-2>: <CSS-Wert-2>; … }]{<Inhalt>}</code></pre>
40 16 Martin Kraetke
41
Die im HTML vorhandenen CSS-Eigenschaften können direkt nach TeX übertragen werden. Gleiches gilt für die Umgebungen:
42
43 17 Martin Kraetke
<pre><code class="text">\begin{htmltab}[style={<CSS-Eigenschaft-1>:<CSS-Wert-1>; <CSS-Eigenschaft-2>: <CSS-Wert-2>; … }]
44 1 Patrick Schulz
  …</code></pre>
45 17 Martin Kraetke
46 24 Patrick Schulz
h4. Bisher implementierte CSS-Eigenschaften
47
48 1 Patrick Schulz
** @margin@, jeweils mit und ohne @-top@, @-left@, @-right@, @-bottom@: Längenangabe
49
** @padding@, jeweils mit und ohne @-top@, @-left@, @-right@, @-bottom@: Längenangabe
50
** @border@, jeweils mit und ohne @-top@, @-left@, @-right@, @-bottom@; jeweils mit oder ohne @-width@, @-style@, @-color@
51 17 Martin Kraetke
*** Wenn @-width/-style/-color@ *und* Seitenangabe weggelassen werden:
52
**** ein Wert: @style@
53
**** zwei Werte: @width style@
54
**** drei Werte: @width style color@. Für alle Seiten des Elements.
55 1 Patrick Schulz
** @border-style@: @solid@, @dashed@, @dotted@, @none@, @double@ (ab v0.1.26)
56 17 Martin Kraetke
** @border-color@: TeX-Farbname (mit @\definecolor{<name>}{<farbraum>}{<deklaration>}@ definieren) oder Hexadezimal-Angabe @\#rrggbb@
57 1 Patrick Schulz
** @border-width@: Längenangabe
58 17 Martin Kraetke
Bei Angaben ohne Richtung sind mehrere Werte möglich:
59
*** ein Wert: alle Richtungen
60
*** zwei Werte: @oben/unten@ und @links/rechts@;
61
*** drei Werte: @oben@ und @links/rechts@ und @unten@
62
*** vier Werte: @oben@ und @rechts@ und @unten@ und @links@
63 1 Patrick Schulz
** @border-collapse@: @none@, @collapse@
64 5 Patrick Schulz
** @vertical-align@: @top@, @middle@, @bottom@
65 4 Patrick Schulz
** @background-color@: Hintergrundfarbe. Farbname oder @\#rrggbb@
66
** @color@: Schriftfarbe. Farbname oder @\#rrggbb@
67 17 Martin Kraetke
** @font-size@: Schriftgröße. @xx-small@, @x-small@, @small@, @normal@, @large@, @x-large@, @xx-large@
68
** @font-weight@: Schriftgewicht. @bold@, @normal@
69
** @font-family@: Angabe einer generischen Schriftfamilie (CSS). @sans-serif@, @serif@, @monospace@
70
** @font-style@: Schriftstil. @normal@, @italic@
71
** @font-variant@: Schriftstil II. @normal@, @small-caps@
72 5 Patrick Schulz
** @text-align@: @right@, @center@, @left@, @justified@
73 1 Patrick Schulz
** @hyphen@: @none@ (keine Silbentrennung), @auto@ (TeX-Silbentrennung)
74 24 Patrick Schulz
** @transform@: @rotate(Xdeg)@ wobei @X@ eine positive oder negative Zahl sein muss, z.B. @90deg@ für viertel Drehung gegen Uhrzeigersinn, @-90deg@ viertel Drehung im Uhrzeigersinn (äquivalent zu @270deg@)
75 17 Martin Kraetke
* @class=<name>@ entspricht dem @class@-Attribut bei HTML.
76 1 Patrick Schulz
* das @\HTcol@-Element kann ein @width@-Attribut mit der vorgegebenen Spaltenbreite erhalten, z.B. 
77
  <pre><code class="text">\col[width=20mm,style={text-align: center}]
78
\col[width=0.2,style={text-align:justified,hyphen=auto}]</code></pre>
79
  Die erste Spalte würde demnach eine fixe Breite von 20mm bekommen, die zweite eine relative Breite von 20% der Breite der gesamten Tabelle.
80
  Die erste Spalte ist zentriert, die zweite erhält Blocksatz mit aktivierter Silbentrennung.
81
 Zulässige Werte für Spaltenbreiten sind: 
82
** Längen (also Zahl+Einheit) für Spalten fixer Breite, 
83
** Zahlen <= 1  für Breiten relativ zur Gesamtbreite der Tabelle (0.5 entspräche halbe Gesamtbreite; 0.2 ein Fünftel der Gesamtbreite, etc.)
84 19 Martin Kraetke
** Zahlen > 1   Anteile auf Gesamtsumme bezogen. Z.B. drei Spalten mit @width=20@, @width=10@ und @width=30@ bedeutet, dass die erste ein Drittel der Gesamtbreite einnimmt (20/60), die zweite ein sechstel (10/60) und die dritte die restliche hälfte (30/60)
85 23 Patrick Schulz
** Prozentangaben (bei tex-Input bitte die %-Zeichen escapen: @\%@)
86 1 Patrick Schulz
* Auch @htmltab@ kann @width@ haben, dies entspräche dann der Gesamtbreite der Tabelle. Fehlt die Angabe, wird die Tabelle in ihrer _natürlichen Breite_ gesetzt, höchstens aber Satzspiegelbreite (genauer: @\linewidth@).
87
* @\HTtd@ und @\HTth@ können überdies @rowspan@ und @colspan@-Attribute enthalten, die eine ganze Zahl als Wert bekommen, z.B.
88
<pre><code class="text">\HTtd[rowspan=2,colspan=2,style={vertical-align: middle; text-align: center}]{<content>}</code></pre>
89
  Diese Zelle würde über zwei Spalten *und* zwei Zeilen gestreckt, ihr Inhalt wird vertikal und horizontal zentriert.
90
91
h3. Beispiel:
92
93
<pre><code class="text">
94
\begin{htmltab}[class=box]
95
  \begin{thead}
96
    \HTtr[style={text-align: center}]{%
97
       \HTtd[style={text-align: center; vertical-align: bottom}]{<Inhalt Kopf Spalte 1>}
98
       \HTtd{<Inhalt Kopf Spalte 2>}
99
       \HTtd{<Inhalt Kopf Spalte 3>}
100
    }
101
  \end{thead}
102
  \begin{tfoot}
103
    \HTtr[colspan=3]{%
104
       \HTtd{<Inhalt Fuss Spalten 1–3>}
105
    }
106
  \end{tfoot}
107
  \begin{tbody}
108
    \HTtr{%
109
       \HTtd[rowspan=2]{<Inhalt Zeile 1-2 Spalte 1>}
110
       \HTtd{<Inhalt Zeile 1 Spalte 2>}
111
       \HTtd{<Inhalt Zeile 1 Spalte 3>}
112
    }
113
    \HTtr{%
114
       \HTtd{<Inhalt Zeile 2 Spalte 2>}
115
       \HTtd{<Inhalt Zeile 2 Spalte 3>}
116
    }
117
    \HTtr{%
118
       \HTtd{<Inhalt Zeile 3 Spalte 1>}
119
       \HTtd{<Inhalt Zeile 3 Spalte 2>}
120
       \HTtd{<Inhalt Zeile 3 Spalte 3>}
121
    }
122
  \end{tbody}
123
\end{htmltab}
124 6 Patrick Schulz
</code></pre>
125
126
h3. Überschreibbare Eigenschaften und @baretabular@-Klasse
127
128
* Bestimmte CSS-Eigenschaften werden standardmäßig nicht ins tex übernommen, da diese u.U. Verlagsvorgaben für Tabellenlayouts überschreiben könnten:
129
** @width@ an allen Elementen, die nicht @<col>@, @<colgroup>@, oder @<table>@ sind
130
** Weitere, je nach Absprache mit den Verlagen (z.B. @background-color@ in @<thead>@, @padding-*@ an @td@, etc.)
131 7 Patrick Schulz
* Die @baretabular@-Klasse ist ein globaler Spezialfall: Hat  @<table>@ diese Klasse, werden *alle* CSS-Eigenschaften 1:1 an TeX durchgereicht.
132
133
h2. Caption, Source, Legende und Gleit-Fähigkeit
134
135
htmltabs alleine entspricht den @tabular@-Umgebungen in Standard-LaTeX.
136
137
Die Auszeichnung von Caption, Zähler, Quelle und Legende entspricht [[Bilder#Einspaltiger-Satz|tpFigure]]:
138
<pre><code class="text">
139
\begin{tpTable}[<Floatpos>]
140
  \tpCaption{<Caption>}
141
  \tpSource{<Quelle>}
142
  \tpLegend{<Legende>}
143
  \tpNumber{<Zähler>}
144
  \begin{htmltab}
145
146
  \end{htmltab}
147
\end{tpTable}
148
</code></pre>
149
150 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.
151 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.
152 9 Martin Kraetke
153
h2. Gedrehte Tabellen
154 10 Patrick Schulz
155
h3. Auszeichnung in Word
156 9 Martin Kraetke
157 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.
158
159
h3. Auszeichnung in LaTeX
160
161
Im TeX wird das ganze mit dem Attribut @orientation="landscape"@ im optionalen Argument der Gleitungebung gekennzeichnet, z.B.
162
<pre><code class="text">
163
\begin{tpTable*}[orientation="landscape"]
164
165
\end{tpTable*}
166 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.
167
168
h2. Tabellen auf mehrere Seiten umbrechen
169
170 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.