Tabeldirektiver

Der er seks direktiver til tabelbehandling. Alle skal være i starten af en linje for at have nogen virkning.

(:table [attr...]:)

Genererer et nyt HTML <table>-mærke med attributterne angivet i attr.... Lukker den foregående tabel, hvis der var nogen. Gyldige attributværdier er:

  • border (et positivt heltal)
  • bordercolor (et farvenavn eller et hexadecimalt tal; vises ikke i alle browsere)
  • cellspacing (et positivt heltal, der angiver afstanden mellem celler)
  • cellpadding (et positivt heltal, der angiver en celles interne ramme)
  • width (et positivt heltal, eller en procent)
  • bgcolor (et farvenavn eller et hexadecimalt tal)
  • align (left, center eller right)
  • summary (vises ikke; primært brugt til at hjælpe synshandicappede til at navigere)

(:cellnr [attr...]:), (:cell [attr...]:), (:headnr [attr...]:), (:head [attr...]:)

  • Direktivet (:head:) åbner en ny "overskriftcelle" i tabellen (laver et <th>-mærke i HTML).
  • Direktivet (:cell:) åbner en ny "almindelig celle" i tabellen (laver et <td>-mærke i HTML).
  • Direktiverne (:headnr:) og (:cellnr:) åbner en ny celle på en ny række i tabellen.

Disse direktiver lukker en foregående celle og/eller række. Bemærk at direktiverne (:head:) og (:headnr:) findes i PmWiki version 2.2.11 eller nyere.

Gyldige attributter og værdier er:

  • align (left, center eller right)
  • valign (top, midten eller bund) * standard er "top", se note herunder
  • colspan (et positivt heltal)
  • rowspan (et positivt heltal)
  • bgcolor (et farvenavn eller et hexadecimalt tal)
  • width (et positivt heltal, eller en procent)
  • class (en CSS-klasse for cellen)
  • style (brugerdefineret CSS-typografi for cellen)

(:tableend:)

Lukker den foregående tabelcelle og lukker en evt. tabel. Genererer nødvendige </th>, </td>, </tr>, og </table>-mærker.

* attibutten valign

Hvis ikke den allerede er indstillet, vil PmWiki inkludere attributten valign='top' sammen med alle (:cell[nr]:) og (:head[nr]:). Pm sagde "Tabeldirektiver blev lavet med det formål at kunne lave layout, og i det tilfælde giver det mest mening at hver celle (kolonne) har sit eget indhold i toppen af rækken. Attributten sættes i hver celle, og ikke i hver række, fordi nogle browsere ikke genkendte valign='top' i række-mærket."

Se $EnableTableAutoValignTop for hvordan man deaktiverer den automatiske inkludering af attributten.

Noter

Til table-, cell- og cellnr-mærkerne kan forfatteren angive alle attributer som ville være gyldige i HTML-mærkerne <table> eller <td>. Du kan derfor angive argumenter for rowspan, colspan, osv, for at opbygge vilkårlige tabeller. Det er dog ikke muligt at have et (:table:) inden i et (:cell:) eller (:cellnr:) -- det næste afsnit forklarer hvorfor.

Mange spørger sikkert hvorfor vi ikke blot brugte den almindelige HTML tabelopmærkning (<table>, <tr>, <td>, <th>) i stedet for at lave ny opmærkning, og tillade tabeller inden i tabeller, som et resultat deraf. Der er to svar: først, HTML tabelopmærkningen er meget grim for naive forfattere (se PmWiki.Audiences og PmWikiPhilosophy #2), og for det andet ville det være meget nemt for forfattere at lave tabeller der er forkert HTML, og som vises forkert (eller slet ikke) i nogle browsere. Selv øvede web-professionelle laver nogle gange forkert tabelopmærkning, så det er en smule urealistisk at forvente at den gennemsnitlige forfatter altid gør det rigtigt, eller være i stand til at læse vilkårlig HTML-opmærkning som en anden har lavet.

Almindelige kommentarer: Den gennemsnitlige, eller naive, forfatter ville da ikke skrive HTML direkte, men ville bruge et værktøj, som FrontPage, eller måske endda MSWord, til at generere HTML. Det ville være meget enklere end at lære selv de mest enkle PmWiki-opmærkninger.
Pms svar: Og når HTML-koden er genereret og sendt ind, hvordan skal andre redigere eller ændre tabellen, hvis ikke de har den originale FrontPage eller MSWord-fil der blev brugt til at lave den? Husk at vi taler om samarbejdende forfatterskab. Den HTML som disse pakker genererer er blandt den sværeste af alle at læse og redigere!

Det er svært at skrive den kode der skal til for at få PmWiki til at forstå og fikse vilkårlig tabelopmærkning, så PmWiki bruger den forenklede version herover. Den version er dog i stand til at håndtere de fleste krav til tabeller (med den mulige undtagelse af tabeller i tabeller).

Det betyder ikke at HTML-'tabeller i tabeller' er umulige i PmWiki - de kan bare ikke laves særligt nemt af wikiforfattere ved brug af standard wikiopmærkning. En webstedsadministrator kan selvfølgelig lave hoved/fod-HTML-kode, og andre lokale tilpasninger, som gør brug af tabeller i tabeller.

Eksempel 1. En tabel med opmærkning med tabeldirektiver.

"&nbsp;" er et mellemrum der ikke ombryder linjen i HTML. Placer det i en celle hvis cellen skal være tom, ellers bliver cellens ramme ikke tegnet rigtigt.

(:table border=1 cellpadding=5 cellspacing=0:)
(:head:) a1
(:cell:) b1
(:cell:) c1
(:cell:) d1
(:headnr:) a2
(:cell:) b2
(:cell:) c2
(:cell:) &nbsp;
(:tableend:)
a1 b1 c1 d1
a2 b2 c2  

I HTML er det det samme som

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

Flydende tabel med navigationsliste af punktliste

Hvad hvis du ville lave en fin lille tabel, som en indholdsfortegnelse, i en side som denne? I dette eksempel, flyder tabellen til højre, og indeholder nogle links i en punkliste. Dette er en fin demonstration af hvordan det er muligt at opbygge en lille indholdsfortegnelse i siden, som måske kun navigerer til andre sider kun inden for den samme wikigruppe. Bemærk at det at have en punktliste ikke vil virke i en almindelig tabel - det virker kun i en tabel lavet med tabeldirektiver, som eksempelkoden her.

(:table border=1 width=30% align=right bgcolor=#cccc99 cellspacing=0 :)
(:cellnr:)
'''Navigationslinks'''
(:cellnr:)
*[[Tables|Tabeller]]
*[[TableDirectives|Tabeldirektiver]]
(:tableend:)

Navigationslinks

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

Navigationslinks

Tabeller

Tabeldirektiver

Bemærk at vi har brugt en #cccc99 hexadecimal farve til tabelbaggrunden. Bemærk også at opmærkningen (:cellnr:) laver en ny række, en ny celle, og lukker rækken i enden.

Du kan strække dette koncept videre: hvis du vil have hver side i gruppen til at indeholde den samme indholdsfortegnelse, kan du lave EN tabel som den ovenover og putte den på sin egen side. Brug derefter en include på enhver af dine sider, for at benytte tabellen. Den flydende (justerede) egenskab vil blive benyttet på hver side hvor den er inkluderet.

Kan jeg definere tabeloverskrifter ved at bruge tabeldirektivopmærkning?

Ja, brug (:head:) eller (:headnr:) med PmWiki version 2.2.11 eller nyere. Se også Cookbook:AdvancedTableDirectives.

Er det muligt at lave tabeller inden i tabeller?

Ja, hvis du putter enkle tabeller inden i avancerede tabeller. Se også Cookbook:AdvancedTableDirectives.

Er det muligt at tilføje baggrundsbilleder til tabeller og tabelceller?

Ja, se Cookbook:BackgroundImages.

Er det muligt at anvende typografier til elementerne i en tabel, som et ID til en tabelrække, eller en class/style til TD?

Ja, se $WikiStyleApply.

Er det muligt automatisk at generere kolonner eller rækker i tabeller, uden at skulle tælle en masse?

Ja, det er muligt med opskriften Cookbook:CreateColumns - den tillader dig at angive et bestemt antal kolonner, og/eller at angive et bestemt antal elementer per kolonne. Plus, nogen har bidraget noget lignende opmærkning på siden TableDirectives-Talk.


Oversættelse af PmWiki.TableDirectives - Original side på PmWikiDa.TableDirectives - Backlinks
Sidste ændringer:
PmWikiDa.TableDirectives: 2015-01-12 18:36
PmWiki.TableDirectives: 2019-09-02 12:51