Projekt

Allgemein

Profil

Tabellen » Historie » Revision 26

Revision 25 (Marcus Hottenroth, 02.01.2024 12:41) → Revision 26/29 (Marcus Hottenroth, 03.01.2024 09:57)

h1. Tabellen 

 {{toc}} 

 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. 

 h2. Paket einbinden 

 Die Einbindung kann über die Angabe 
 <pre> 
 \usepackage{htmltabs} 
 </pre> 
 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. 

 h2. Auszeichnung von Tabellen für den @htmltabs@-Renderer 

 h3. XHTML-zu-LaTeX-Mapping 

 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 keine vorhanden, dann weglassen) aller Elemente können folgende Attribute stehen: 
 * @style={}@ beinhaltet CSS-Eigenschaft-Wert-Paare>; die Syntax innerhalb der geschweiften Klammer entspricht der im 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> 

 h4. Bisher implementierte CSS-Eigenschaften 

 ** @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: 
 *** @(margin|padding|border): style@ 
 *** @(margin|padding|border): width style@ 
 *** @(margin|padding|border): width style color@. 
 ** @border-style@: @solid@, @dashed@, @dotted@, @none@, @double@ (ab v0.1.26) 
 ** @border-color@: TeX-Farbname (ist zuvor mittels @\definecolor{<name>}{<farbraum>}{<deklaration>}@ zu definieren) oder Hexadezimalangabe @\#rrggbb@ 
 ** @border-width@: Längenangabe; ohne Richtungssuffix gilt folgende Syntax: 
 *** @border-width: <length>@: Randliniendicke gilt für alle Seiten des Elements 
 *** @border-width: <length-1> <length-2>@: Randliniendicke @<length-1>@ gilt für oben und unten, Dicke @<length-2>@ für links und rechts 
 *** @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 
 *** @border-width: <length-1> <length-2> <length-3> <length-4>@: Randliniendicken 1–4 gelten je für oben, rechts, unten und links 
 ** @border-collapse@: @none@, @collapse@ 
 ** @vertical-align@: @top@, @middle@, @bottom@ 
 ** @background-color@: Hintergrundfarbe; TeX-Farbname oder Hexadezimalangabe @\#rrggbb@ 
 ** @color@: Schriftfarbe; TeX-Farbname oder Hexadezimalangabe @\#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) 
 ** @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@) 
 * @class=<name>@ entspricht dem @class@-Attribut bei HTML. 
 * @\HTcol@ 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> 
   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:  
 ** Längenangaben (bspw. @10mm@, @12pt@ etc.) für Spalten fixer Breite,  
 ** 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.) 
 ** 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) 
 ** Prozentangaben (bei TeX-Input müssen die Prozentzeichen escapet werden: @\%@) 
 * 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@). 
 * @\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 Bestimmte CSS-Eigenschaften werden standardmäßig nicht ins TeX-Dokument tex übernommen, da diese u. U. u.U. Verlagsvorgaben für Tabellenlayouts überschreiben könnten: 
 ** @width@ an allen Elementen, die nicht @<col>@, @<colgroup>@ @<colgroup>@, oder @<table>@ sind, sind 
 ** Weitere, je nach Absprache mit den Verlagen bspw. auch (z.B. @background-color@ in @<thead>@, @padding-*@ an @td@ etc. @td@, etc.) 
 * besitzt Die @baretabular@-Klasse ist ein globaler Spezialfall: Hat    @<table>@ die @baretabular@-Klasse, diese Klasse, werden *alle* CSS-Eigenschaften eins zu eins ans TeX-Dokument durchgereicht 

 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:#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. 

 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.