Projekt

Allgemein

Profil

Tabellen » Historie » Revision 8

Revision 7 (Patrick Schulz, 26.03.2021 09:32) → Revision 8/29 (Maren Pufe, 26.03.2021 11:10)

h1. Tabellen 

 In der preample angeben: 
 \usepackage{htmltabs} 

 h2. Auszeichnung von Tabellen mit Lupinos htmltabs-Renderer ("Repo im firmeninternen GitLab":https://gitlab.le-tex.de/htmltabs/htmltabs/-/tree/master/releases) 

 h3. Mapping xhtml -> LaTeX 

 html-Strukturen werden im Grunde 1:1 abgebildet:  
 |_. 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> 
  Hier kann das CSS aus dem XML eigentlich direkt durchgeschleift werden. 
  Analog bei den 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* Richtungsangabe weggelassen werden: 1 Wert: style; 2 Werte: width style; 3 Werte: width style color. Für alle Richtungen. 
 ** @border-style@: @solid@, @dashed@, @dotted@, @none@ 
 ** @border-color@: Farbname (ggf. mittels @\definecolor{<name>}{<farbraum>}{<deklaration>}@ definieren!) oder @\#rrggbb@ 
 ** @border-width@: Längenangabe 
 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  
 ** @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@: Schriftfamilie. 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 XML/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     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) 
 * 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.% hat.