aus "Homepage der UniBigBand Kaiserslautern"

PmWikiDe: Tabellendirektiven

Es gibt vier Direktiven für erweiterte Tabellen. Alle davon müssen am Anfang der Zeile stehen um wirksam zu sein.

(:table (attr...):)

Erzeugt eine neue HTML <table> mit den in attr... angegebenen Attributen. Beendet vorherige Tabellen, falls vorhanden. Gültige Attribute und Werte sind:

(:cell (attr...):)

Erzeugt eine neue Zelle mit den in attr... angegebenen Attributen. Beendet eine eventuell vorher vorhandene Zelle. Im HTML-Quelltext wird eine neue "<td attr>"-Anweisung erzeugt (und vielleicht auch <table>, <tr> und </td> Anweisungen, falls notwendig, um eine gültige HTML Tabelle zu erzeugen).

''Hinweis: Das Einfügen eines Leerzeichens direkt hinter die (:cell:)-Anweisung (also "(:cell:) ") führt dazu, dass dieser Zeile folgende Text als vorformatierter Text behandelt wird.

Gültige Attribute und Werte sind:

(:cellnr (attr..):)

Erzeugt eine Neue Zelle am Anfang der nächsten Zeile. Beendet eine vorherige Tabellenzelle, falls vorhanden. Im HTML-Quelltext wird eine "<tr><td attr>" Anweisung erzeugt. Zusätzlich auch <table>, </td> und </tr> falls notwendig um gültiges HTML zu erzeugen. Gültige Attribute und Werte sind:

(:tableend:)

Schließt die letzte Tabellenzelle und schließt auch jegliche Tabelle. Erzeugt </td>, </tr> und </table> wie benötigt.

* Info zu valign-Attributen

Wenn nicht anders angegeben, fügt PmWiki zu allen (:cell:)- und (:cellnr:)-Anweisungen automatisch das Attribut valign='top' hinzu. Pm erklärte hierzu: "Tabellen-Direktiven wurden eingeführt, um Tabellen besser gestalten zu können. Insofern ist es am sinnvollsten, dass der Inhalt einer Zelle im oberen Bereich angezeigt wird. Das Attribut wird in jede Zelle einzeln eingefügt, weil manche Browser ein Attribut valign='top' für ganze Tabellenzeilen nicht erkennen."

Anmerkungen

Für die Formatierungsanweisungen 'table', 'cell' und 'cellnr' lassen sich alle Attribute spezifizieren, die in korrekten HTML-<table> und <td>-Anweisungen nutzbar sind. So kann man rowspan, colspan, usw. als Argumente angeben, um beliebig formatierte Tabellen zu erzeugen. Allerdings ist es nicht möglich, eine Tabelle (:table:) innerhalb einer Zelle (:cell:) oder (:cellnr:) zu erzeugen. Der nächste Absatz erläutert die Gründe für diese Einschränkung.

Viele werden vermutlich fragen, warum wir nicht einfach die normalen HTML-Tabellen-Formatierungsanweisungen (<table>, <tr>, <td>, <th>) nutzen und damit verschachtelte Tabellen ermöglichen, anstatt gänzlich neue Auszeichnungen zu erfinden, die diese Möglichkeit nicht bieten. Darauf gibt es zwei Antworten: Zum einen sind die HTML-Formatierungsanweisungen für Tabellen für unerfahrene Autoren (siehe Zielgruppen und PmWiki Philosophie #2) sehr hässlich. Zum anderen könnte es sehr schnell passieren, dass Autoren Tabellen mit fehlerhaftem HTML-Code erzeugen, die (zumindest in einigen Browsern) falsch oder überhaupt nicht mehr dargestellt werden. Sogar erfahrenen Netzseitenprogrammierern passieren ab und an Fehler bei der HTML-Kodierung von Tabellen. Es ist insofern unrealistisch zu erwarten, dass durchschnittliche Autoren dies immer richtig hinbekommen, oder dass sie in der Lage sind, komplizierten HTML-Code zu verstehen, den andere Wikibenutzer verwendet haben.

Typischer Einwand: Sicherlich würden unerfahrene oder durchschnittliche Autoren HTML-Code nicht direkt schreiben, sondern dazu ein Werkzeug wie FrontPage oder sogar MSWord benutzen. Dies wäre für die Autoren noch viel einfacher als selbst die einfachsten PmWiki-Formatierungsanweisungen neu zu lernen.
Pm's Antwort: Aber nachdem HTML mit externen Programmen erzeugt und ins Wiki eingespeist wurde: wie kann ein anderer Autor den Code bearbeiten und verändern, wenn er die ursprüngliche FrontPage or MSWord-Datei, aus der der Code erzeugt wurde, nicht zur Verfügung hat. Man muss daran denken, dass wir über gemeinschafliches Bearbeiten reden. Der HTML-Quelltext, den solche Programme erzeugen, gehört zu den am schwersten les- und bearbeitbaren HTML-Quelltexten!

Es ist schwierig, PmWiki so zu programmieren, dass es beliebige Tabellenformatierungen erkennt und notfalls reparieren kann. Deshalb benutzt PmWiki die oben erklärte einfachere Version. Diese Version ist dennoch in der Lage, den meisten Anforderungen an Tabellen zu genügen (mit der Ausnahme von verschachtelten Tabellen).

Dies bedeutet allerdings noch nicht, dass verschachtelte Tabellen mit PmWiki überhaupt nicht erzeugt werden können -- sie lassen sich nur nicht mit den Standard-Formatierungsanweisungen herstellen. Ein Administrator eines Wikis kann natürlich durch lokale Anpassungen oder die Verwendung von Header/Footer-HTML-Code die Verwendung von verschachtelten Tabellen ermöglichen.

Beispiel 1. Eine Tabelle mit erweiterten Formatierungsanweisungen.

"&nbsp;" ist ein festes Leerzeichen in HTML. Es kann in einer leeren Zelle eingefügt werden, falls es sonst Probleme mit der Darstellung der Zell-Umrandung kommt.
(:table border=1 cellpadding=5 cellspacing=0:)
(:cell:) a1
(:cell:) b1
(:cell:) c1
(:cell:) d1
(:cellnr:) a2
(:cell:) b2
(:cell:) c2
(:cell:) &nbsp;
(:tableend:)
a1 b1 c1 d1
a2 b2 c2  

In HTML ist dies das Gleiche wie

<table border='1' cellpadding='5' cellspacing='0'>
  <tr>
    <td>a1</td>
    <td>b1</td>
    <td>c1</td>
    <td>d1</td>
  </tr>
  <tr>
    <td>a2</td>
    <td>b2</td>
    <td>c2</td>
    <td>&nbsp;</td>
  </tr>
</table>

Fließende Tabelle mit Navigationsliste

Was, wenn man eine nette kleine Tabelle erzeugen wollte, die wie ein Inhaltsverzeichnis auf einer Seite wie dieser funktioniert? In diesem Beispiel fließt die Tabelle rechts (der Text fließt links herum) und enthält einige Verweise in einer Liste. Das ist eine nette Demonstration, wie es möglich, ist ein kleines Inhaltsverzeichnis zu erstellen, das vielleicht auch zu anderen Seiten der gleichen Gruppe verweist. Man beachte, dass eine Aufzählungsliste nicht in einer einfachen Tabelle funktionieren würde - Sie funktioniert nur innerhalb einer erweiterten Tabelle, wie im hier verwendeten Beispiel-Code.

(:table border=1 width=30% align=right bgcolor=#cccc99 cellspacing=0 :)
(:cellnr:)
'''Navigationsverweise'''
(:cellnr:)
*[[Tables|Einfache Tabellen]]
*[[TableDirectives|Tabellendirektiven]]
(:tableend:)

Navigationsverweise

(:table border=1 width=30% align=right bgcolor=#cccc99 cellspacing=0 :)
(:cellnr colspan=2 align=center:)
'''Navigationsverweise'''
(:cellnr align=center:)
[[Tables|Einfache Tabellen]]
(:cell align=center:)
[[TableDirectives|Tabellendirektiven]]
(:tableend:)

Navigationsverweise

Einfache Tabellen

Tabellendirektiven

Wenn man sich die hier verwendeten Auszeichnungen ansieht, erkennt man, dass die hexadezimale Farbe #cccc99 für den Tabellenhintergund verwendet wurde. Außerdem erzeugt die Auszeichnung (:cellnr:) eine neue Zeile, eine neue Zelle und schließt die vorherige Zeile am Ende ab.

Man kann dieses Konzept noch etwas weiter treiben: Wenn man vielleicht in jeder Seite der Gruppe das gleiche Inhaltverzeichnis sehen möchte, kann man nur EINE wie oben beschrieben Tabelle erzeugen und sie auf einer eigenen Seite ablegen. Dann kann man sie auf jeder der eigenen Seiten einbinden. Der Textfluß (Ausrichtung) wird dann auf jeder Seite in die das Inhaltsverzeichnis eingebunden wird gleich gelten. Nicht schlecht!

<< Einfache Tabellen | Dokumentationsindex | Wikistile >>

Can I define table headers using the table directive markup?

No, but you can with Cookbook:AdvancedTableDirectives. See Pm's reply to pending PITS:00535

Is it possible to do nested tables?

Yes, if you nest simple tables inside advanced tables. See also Cookbook:AdvancedTableDirectives.

Is it possible to add background images to tables and table cells?

Yes, see Cookbook:BackgroundImages.

Is it possible to have a collapsible table, that you can set by default to be deployed (as with the (:toc:) display) or retracted?

URL: http://www.uni-kl.de/bigband/pmwiki.php/PmWikiDe/TableDirectives
Zuletzt geändert am 17.03.2008 19:46 Uhr