Projekt

Allgemein

Profil

Tabellen » Historie » Version 14

Martin Kraetke, 22.12.2021 16:40

1 1 Patrick Schulz
h1. Tabellen
2
3 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).
4
5
h2. Paket einbinden
6
7 2 Maren Pufe
In der preamble angeben:
8 14 Martin Kraetke
9
<pre>
10 1 Patrick Schulz
\usepackage{htmltabs}
11 14 Martin Kraetke
</pre>
12 1 Patrick Schulz
13 14 Martin Kraetke
h2. Auszeichnung von Tabellen mit htmltabs-Renderer
14 1 Patrick Schulz
15
h3. Mapping xhtml -> LaTeX
16
17
html-Strukturen werden im Grunde 1:1 abgebildet: 
18
|_. XML |_. LaTeX |_. Anmerkungen |
19
|<table>…</table>|\begin{htmltab}[…] … \end{htmltab}| |
20
|<col />|\HTcol[…]| vor thead |
21
|<colgroup>…</colgroup>|\HTcolgroup[…]{…}| vor thead |
22
|<thead>…</thead>|\begin{thead}[…] … \end{thead}| vor tbody!|
23
|<tfoot>…</tfoot>|\begin{tfoot}[…] … \end{tfoot}| vor tbody, nach thead! |
24
|<tbody>…</tbody>|\begin{tbody}[…] … \end{tbody}| |
25
|<tr>…</tr>|\HTtr[…]{…}| |
26
|<td>…</td>|\HTtd[…]{…}| |
27
|<th>…</th>|\HTth[…]{…}| |
28
29
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.
30
31 6 Patrick Schulz
h3. Verfügbare Attribute und CSS-Eigenschaften
32 1 Patrick Schulz
33
Im optionalen Argument (wenn leer, weglassen) aller "Elemente" können folgende "Attribute" stehen:
34
* @style={}@ beinhaltet CSS-Eigenschafts-Werte-Paare, Syntax innerhalb der geschweiften Klammer ist wie in XML, z.B. 
35
 <pre><code class="text">\HTtd[style={<CSS-Eigenschaft-1>:<CSS-Wert-1>; <CSS-Eigenschaft-2>: <CSS-Wert-2>; … }]{<Inhalt>}</code></pre>
36
 Hier kann das CSS aus dem XML eigentlich direkt durchgeschleift werden.
37
 Analog bei den Umgebungen: 
38
 <pre><code class="text">\begin{htmltab}[style={<CSS-Eigenschaft-1>:<CSS-Wert-1>; <CSS-Eigenschaft-2>: <CSS-Wert-2>; … }]
39
  …</code></pre>
40
Bisher implementierte CSS-Eigenschaften:
41
** @margin@, jeweils mit und ohne @-top@, @-left@, @-right@, @-bottom@: Längenangabe
42
** @padding@, jeweils mit und ohne @-top@, @-left@, @-right@, @-bottom@: Längenangabe
43
** @border@, jeweils mit und ohne @-top@, @-left@, @-right@, @-bottom@; jeweils mit oder ohne @-width@, @-style@, @-color@
44
*** Wenn -width/-style/-color *und* Richtungsangabe weggelassen werden: 1 Wert: style; 2 Werte: width style; 3 Werte: width style color. Für alle Richtungen.
45 12 Patrick Schulz
** @border-style@: @solid@, @dashed@, @dotted@, @none@, @double@ (ab v0.1.26)
46 3 Patrick Schulz
** @border-color@: Farbname (ggf. mittels @\definecolor{<name>}{<farbraum>}{<deklaration>}@ definieren!) oder @\#rrggbb@
47 1 Patrick Schulz
** @border-width@: Längenangabe
48
Bei Angaben ohne Richtung sind mehrere Werte möglich: bei 1 Wert: alle Richtungen; 2 Werte: top/bottom und links/rechts; 3 Werte: top links/rechts bottom; 4 Werte: top rechts bottom links 
49
** @border-collapse@: @none@, @collapse@
50
** @vertical-align@: @top@, @middle@, @bottom@
51 5 Patrick Schulz
** @background-color@: Hintergrundfarbe. Farbname oder @\#rrggbb@
52 4 Patrick Schulz
** @color@: Schriftfarbe. Farbname oder @\#rrggbb@
53
** @font-size@: Schriftgröße. xx-small, x-small, small, normal, large, x-large, xx-large
54
** @font-weight@: Schriftgewicht. bold, normal
55
** @font-family@: Schriftfamilie. sans-serif, serif, monospace
56 1 Patrick Schulz
** @font-style@: Schriftstil. normal, italic
57
** @font-variant@: Schriftstil II. normal, small-caps
58 5 Patrick Schulz
** @text-align@: @right@, @center@, @left@, @justified@
59
** @hyphen@: @none@ (keine Silbentrennung), @auto@ (TeX-Silbentrennung)
60 1 Patrick Schulz
* @class=<name>@ entspricht dem class-Attribut bei XML/html.
61
* das @\HTcol@-Element kann ein @width@-Attribut mit der vorgegebenen Spaltenbreite erhalten, z.B. 
62
  <pre><code class="text">\col[width=20mm,style={text-align: center}]
63
\col[width=0.2,style={text-align:justified,hyphen=auto}]</code></pre>
64
  Die erste Spalte würde demnach eine fixe Breite von 20mm bekommen, die zweite eine relative Breite von 20% der Breite der gesamten Tabelle.
65
  Die erste Spalte ist zentriert, die zweite erhält Blocksatz mit aktivierter Silbentrennung.
66
 Zulässige Werte für Spaltenbreiten sind: 
67
** Längen (also Zahl+Einheit) für Spalten fixer Breite, 
68
** Zahlen <= 1  für Breiten relativ zur Gesamtbreite der Tabelle (0.5 entspräche halbe Gesamtbreite; 0.2 ein Fünftel der Gesamtbreite, etc.)
69
** Zahlen > 1   werden zusammen addiert und die Spalten entsprechend ihrem Anteil an der Summe gestreckt. 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)
70
* 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@).
71
* @\HTtd@ und @\HTth@ können überdies @rowspan@ und @colspan@-Attribute enthalten, die eine ganze Zahl als Wert bekommen, z.B.
72
<pre><code class="text">\HTtd[rowspan=2,colspan=2,style={vertical-align: middle; text-align: center}]{<content>}</code></pre>
73
  Diese Zelle würde über zwei Spalten *und* zwei Zeilen gestreckt, ihr Inhalt wird vertikal und horizontal zentriert.
74
75
h3. Beispiel:
76
77
<pre><code class="text">
78
\begin{htmltab}[class=box]
79
  \begin{thead}
80
    \HTtr[style={text-align: center}]{%
81
       \HTtd[style={text-align: center; vertical-align: bottom}]{<Inhalt Kopf Spalte 1>}
82
       \HTtd{<Inhalt Kopf Spalte 2>}
83
       \HTtd{<Inhalt Kopf Spalte 3>}
84
    }
85
  \end{thead}
86
  \begin{tfoot}
87
    \HTtr[colspan=3]{%
88
       \HTtd{<Inhalt Fuss Spalten 1–3>}
89
    }
90
  \end{tfoot}
91
  \begin{tbody}
92
    \HTtr{%
93
       \HTtd[rowspan=2]{<Inhalt Zeile 1-2 Spalte 1>}
94
       \HTtd{<Inhalt Zeile 1 Spalte 2>}
95
       \HTtd{<Inhalt Zeile 1 Spalte 3>}
96
    }
97
    \HTtr{%
98
       \HTtd{<Inhalt Zeile 2 Spalte 2>}
99
       \HTtd{<Inhalt Zeile 2 Spalte 3>}
100
    }
101
    \HTtr{%
102
       \HTtd{<Inhalt Zeile 3 Spalte 1>}
103
       \HTtd{<Inhalt Zeile 3 Spalte 2>}
104
       \HTtd{<Inhalt Zeile 3 Spalte 3>}
105
    }
106
  \end{tbody}
107
\end{htmltab}
108
</code></pre>
109 6 Patrick Schulz
110
h3. Überschreibbare Eigenschaften und @baretabular@-Klasse
111
112
* Bestimmte CSS-Eigenschaften werden standardmäßig nicht ins tex übernommen, da diese u.U. Verlagsvorgaben für Tabellenlayouts überschreiben könnten:
113
** @width@ an allen Elementen, die nicht @<col>@, @<colgroup>@, oder @<table>@ sind
114
** Weitere, je nach Absprache mit den Verlagen (z.B. @background-color@ in @<thead>@, @padding-*@ an @td@, etc.)
115
* Die @baretabular@-Klasse ist ein globaler Spezialfall: Hat  @<table>@ diese Klasse, werden *alle* CSS-Eigenschaften 1:1 an TeX durchgereicht.
116 7 Patrick Schulz
117
h2. Caption, Source, Legende und Gleit-Fähigkeit
118
119
htmltabs alleine entspricht den @tabular@-Umgebungen in Standard-LaTeX.
120
121
Die Auszeichnung von Caption, Zähler, Quelle und Legende entspricht [[Bilder#Einspaltiger-Satz|tpFigure]]:
122
<pre><code class="text">
123
\begin{tpTable}[<Floatpos>]
124
  \tpCaption{<Caption>}
125
  \tpSource{<Quelle>}
126
  \tpLegend{<Legende>}
127
  \tpNumber{<Zähler>}
128
  \begin{htmltab}
129
130
  \end{htmltab}
131
\end{tpTable}
132
</code></pre>
133
134
* @<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.
135 8 Maren Pufe
* %{color:#cc3c31; font-weight:bold;} _Die Tabelle kann nur umbrechen, wenn sie nicht gleitet!_, d.h. wenn die @tpTable@-Umgebung komplett fehlt; oder wenn @tpTable@ da ist, aber kein optionales Argument hat.%
136 9 Martin Kraetke
137
h2. Gedrehte Tabellen
138
139 10 Patrick Schulz
h3. Auszeichnung in Word
140
141 9 Martin Kraetke
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.
142 10 Patrick Schulz
143
h3. Auszeichnung in LaTeX
144
145
Im TeX wird das ganze mit dem Attribut @orientation="landscape"@ im optionalen Argument der Gleitungebung gekennzeichnet, z.B.
146
<pre><code class="text">
147
\begin{tpTable*}[orientation="landscape"]
148
149
\end{tpTable*}
150
</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.
151 9 Martin Kraetke
152
h2. Tabellen auf mehrere Seiten umbrechen
153
154
Um Tabellen auf mehrere Seiten (mit sich wiederholendem Tabellenkopf zu umbrechen, muss der Tabelle ein leerer Absatz mit dem Absatzformat @table_pagewrap@ vorangestellt werden.