Projekt

Allgemein

Profil

Tabellen » Historie » Revision 19

Revision 18 (Martin Kraetke, 22.12.2021 17:21) → Revision 19/29 (Martin Kraetke, 22.12.2021 17:23)

h1. Tabellen 

 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). 

 h2. Paket einbinden 

 In der preamble angeben: 

 <pre> 
 \usepackage{htmltabs} 
 </pre> 

 h2. Auszeichnung von Tabellen mit htmltabs-Renderer 

 h3. Mapping xhtml -> LaTeX 

 Das TeX-Markup von htmltabs entspricht der HTML-Tabellenstruktur: 

 |_. XML |_. LaTeX |_. Anmerkungen | 
 |<table>…</table>|\begin{htmltab}[…] … \end{htmltab}| | 
 |<col />|\HTcol[…]| vor thead | 
 |<colgroup>…</colgroup>|\HTcolgroup[…]{…}| vor thead | 
 |<thead>…</thead>|\begin{thead}[…] … \end{thead}| vor tbody | 
 |<tfoot>…</tfoot>|\begin{tfoot}[…] … \end{tfoot}| vor tbody, nach thead | 
 |<tbody>…</tbody>|\begin{tbody}[…] … \end{tbody}| | 
 |<tr>…</tr>|\HTtr[…]{…}| | 
 |<td>…</td>|\HTtd[…]{…}| | 
 |<th>…</th>|\HTth[…]{…}| | 

 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. 

 

 h3. Verfügbare Attribute und CSS-Eigenschaften 

 Im optionalen Argument (wenn leer, weglassen) aller "Elemente" können folgende "Attribute" stehen: 
 * @style={}@ beinhaltet CSS-Eigenschafts-Werte-Paare, Syntax innerhalb der geschweiften Klammer ist wie in XML, z.B.  

 <pre><code class="text">\HTtd[style={<CSS-Eigenschaft-1>:<CSS-Wert-1>; <CSS-Eigenschaft-2>: <CSS-Wert-2>; … }]{<Inhalt>}</code></pre> 

 Die im HTML vorhandenen CSS-Eigenschaften können direkt nach TeX übertragen werden. Gleiches gilt für die Umgebungen: 

 <pre><code class="text">\begin{htmltab}[style={<CSS-Eigenschaft-1>:<CSS-Wert-1>; <CSS-Eigenschaft-2>: <CSS-Wert-2>; … }] 
   …</code></pre> 

 Bisher implementierte CSS-Eigenschaften: 
 ** @margin@, jeweils mit und ohne @-top@, @-left@, @-right@, @-bottom@: Längenangabe 
 ** @padding@, jeweils mit und ohne @-top@, @-left@, @-right@, @-bottom@: Längenangabe 
 ** @border@, jeweils mit und ohne @-top@, @-left@, @-right@, @-bottom@; jeweils mit oder ohne @-width@, @-style@, @-color@ 
 *** Wenn @-width/-style/-color@ *und* Seitenangabe weggelassen werden: 
 **** ein Wert: @style@ 
 **** zwei Werte: @width style@ 
 **** drei Werte: @width style color@. Für alle Seiten des Elements. 
 ** @border-style@: @solid@, @dashed@, @dotted@, @none@, @double@ (ab v0.1.26) 
 ** @border-color@: TeX-Farbname (mit @\definecolor{<name>}{<farbraum>}{<deklaration>}@ definieren) oder Hexadezimal-Angabe @\#rrggbb@ 
 ** @border-width@: Längenangabe 
 Bei Angaben ohne Richtung sind mehrere Werte möglich: 
 *** ein Wert: alle Richtungen 
 *** zwei Werte: @oben/unten@ und @links/rechts@; 
 *** drei Werte: @oben@ und @links/rechts@ und @unten@ 
 *** vier Werte: @oben@ und @rechts@ und @unten@ und @links@ 
 ** @border-collapse@: @none@, @collapse@ 
 ** @vertical-align@: @top@, @middle@, @bottom@ 
 ** @background-color@: Hintergrundfarbe. Farbname oder @\#rrggbb@ 
 ** @color@: Schriftfarbe. Farbname oder @\#rrggbb@ 
 ** @font-size@: Schriftgröße. @xx-small@, @x-small@, @small@, @normal@, @large@, @x-large@, @xx-large@ 
 ** @font-weight@: Schriftgewicht. @bold@, @normal@ 
 ** @font-family@: Angabe einer generischen Schriftfamilie (CSS). @sans-serif@, @serif@, @monospace@ 
 ** @font-style@: Schriftstil. @normal@, @italic@ 
 ** @font-variant@: Schriftstil II. @normal@, @small-caps@ 
 ** @text-align@: @right@, @center@, @left@, @justified@ 
 ** @hyphen@: @none@ (keine Silbentrennung), @auto@ (TeX-Silbentrennung) 
 * @class=<name>@ entspricht dem @class@-Attribut bei HTML. 
 * das @\HTcol@-Element kann ein @width@-Attribut mit der vorgegebenen Spaltenbreite erhalten, z.B.  
   <pre><code class="text">\col[width=20mm,style={text-align: center}] 
 \col[width=0.2,style={text-align:justified,hyphen=auto}]</code></pre> 
   Die erste Spalte würde demnach eine fixe Breite von 20mm bekommen, die zweite eine relative Breite von 20% der Breite der gesamten Tabelle. 
   Die erste Spalte ist zentriert, die zweite erhält Blocksatz mit aktivierter Silbentrennung. 
  Zulässige Werte für Spaltenbreiten sind:  
 ** Längen (also Zahl+Einheit) für Spalten fixer Breite,  
 ** Zahlen <= 1    für Breiten relativ zur Gesamtbreite der Tabelle (0.5 entspräche halbe Gesamtbreite; 0.2 ein Fünftel der Gesamtbreite, etc.) 
 ** Zahlen > 1     Anteile Teil auf Gesamtsumme hundert 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) 
 * 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@). 
 * @\HTtd@ und @\HTth@ können überdies @rowspan@ und @colspan@-Attribute enthalten, die eine ganze Zahl als Wert bekommen, z.B. 
 <pre><code class="text">\HTtd[rowspan=2,colspan=2,style={vertical-align: middle; text-align: center}]{<content>}</code></pre> 
   Diese Zelle würde über zwei Spalten *und* zwei Zeilen gestreckt, ihr Inhalt wird vertikal und horizontal zentriert. 

 

 h3. Beispiel: 

 <pre><code class="text"> 
 \begin{htmltab}[class=box] 
   \begin{thead} 
     \HTtr[style={text-align: center}]{% 
        \HTtd[style={text-align: center; vertical-align: bottom}]{<Inhalt Kopf Spalte 1>} 
        \HTtd{<Inhalt Kopf Spalte 2>} 
        \HTtd{<Inhalt Kopf Spalte 3>} 
     } 
   \end{thead} 
   \begin{tfoot} 
     \HTtr[colspan=3]{% 
        \HTtd{<Inhalt Fuss Spalten 1–3>} 
     } 
   \end{tfoot} 
   \begin{tbody} 
     \HTtr{% 
        \HTtd[rowspan=2]{<Inhalt Zeile 1-2 Spalte 1>} 
        \HTtd{<Inhalt Zeile 1 Spalte 2>} 
        \HTtd{<Inhalt Zeile 1 Spalte 3>} 
     } 
     \HTtr{% 
        \HTtd{<Inhalt Zeile 2 Spalte 2>} 
        \HTtd{<Inhalt Zeile 2 Spalte 3>} 
     } 
     \HTtr{% 
        \HTtd{<Inhalt Zeile 3 Spalte 1>} 
        \HTtd{<Inhalt Zeile 3 Spalte 2>} 
        \HTtd{<Inhalt Zeile 3 Spalte 3>} 
     } 
   \end{tbody} 
 \end{htmltab} 
 </code></pre> 

 h3. Überschreibbare Eigenschaften und @baretabular@-Klasse 

 * Bestimmte CSS-Eigenschaften werden standardmäßig nicht ins tex übernommen, da diese u.U. Verlagsvorgaben für Tabellenlayouts überschreiben könnten: 
 ** @width@ an allen Elementen, die nicht @<col>@, @<colgroup>@, oder @<table>@ sind 
 ** Weitere, je nach Absprache mit den Verlagen (z.B. @background-color@ in @<thead>@, @padding-*@ an @td@, etc.) 
 * Die @baretabular@-Klasse ist ein globaler Spezialfall: Hat    @<table>@ diese Klasse, werden *alle* CSS-Eigenschaften 1:1 an TeX durchgereicht. 

 h2. Caption, Source, Legende und Gleit-Fähigkeit 

 htmltabs alleine entspricht den @tabular@-Umgebungen in Standard-LaTeX. 

 Die Auszeichnung von Caption, Zähler, Quelle und Legende entspricht [[Bilder#Einspaltiger-Satz|tpFigure]]: 
 <pre><code class="text"> 
 \begin{tpTable}[<Floatpos>] 
   \tpCaption{<Caption>} 
   \tpSource{<Quelle>} 
   \tpLegend{<Legende>} 
   \tpNumber{<Zähler>} 
   \begin{htmltab} 
     … 
   \end{htmltab} 
 \end{tpTable} 
 </code></pre> 

 * @<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. 
 * %{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.% 

 h2. Gedrehte Tabellen 

 h3. Auszeichnung in Word 

 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. 

 h3. Auszeichnung in LaTeX 

 Im TeX wird das ganze mit dem Attribut @orientation="landscape"@ im optionalen Argument der Gleitungebung gekennzeichnet, z.B. 
 <pre><code class="text"> 
 \begin{tpTable*}[orientation="landscape"] 
 … 
 \end{tpTable*} 
 </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. 

 h2. Tabellen auf mehrere Seiten umbrechen 

 Um Tabellen auf mehrere Seiten (mit sich wiederholendem Tabellenkopf zu umbrechen, muss der Tabelle ein leerer Absatz mit dem Absatzformat @table_pagewrap@ vorangestellt werden.