MediaWiki User’s Guide: Using tables

MediaWiki supports different types of table syntax:

  1. XHTML
  2. HTML and wiki <td> syntax
  3. pipe-syntax

All three are supported by MediaWiki and create valid HTML output.

See also HTML element#Tables. Note however that the thead, tbody, tfoot, and colgroup elements are currently not supported in MediaWiki.

Contents

[hide]

  • 1 Overview
  • 2 Guide to the pipe syntax
    • 2.1 Tables
    • 2.2 Rows
    • 2.3 Cells
    • 2.4 Headers
    • 2.5 Captions
  • 3 Some examples
    • 3.1 Multiplication table
      • 3.1.1 Source code
      • 3.1.2 Appearance
      • 3.1.3 Notes
    • 3.2 Mélange
      • 3.2.1 Source code
      • 3.2.2 Appearance
    • 3.3 Simple example
    • 3.4 Advanced example
    • 3.5 Nested table
  • 4 Text next to a table
  • 5 Decimal point alignment
  • 6 See also
  • 7 External links

 

Overview

Comparison of table syntax
XHTML HTML & Wiki-td Wiki-pipe
Table <table></table> <table></table>
{| params 
|}
Caption <caption></caption> <caption></caption>
|+ caption
Row <tr></tr> <tr>
|- params
Data cell <td>cell1</td>
<td>cell2</td>
<td>cell1
<td>cell2
| cell1
| cell2
Data cell <td>cell1</td> <td>cell2</td> <td>cell3</td> <td>cell1 <td>cell2 <td>cell3
|cell1||cell2||cell3
Header cell <th></th> <th>
! heading
Sample table
1 2
3 4
<table>
   <tr>
      <td>1</td>
      <td>2</td>
   </tr> 
   <tr>
      <td>3</td> 
      <td>4</td> 
   </tr>
</table>
<table>
   <tr>
      <td> 1 <td> 2
   <tr>
      <td> 3 <td> 4
</table>
{| 
| 1 || 2
|- 
| 3 || 4
|}
Sample table
1 2
3 4
5 6
<table>
   <tr>
      <td>1</td>
      <td>2</td>
   </tr> 
   <tr>
      <td>3</td>
      <td>4</td>
   </tr>
   <tr>
      <td>5</td>
      <td>6</td>
   </tr>
</table>
<table>
   <tr>
      <td> 1 <td> 2
   <tr>
      <td> 3 <td> 4
   <tr>
      <td> 5 <td> 6
</table>
{| 
| 1 || 2 
|- 
| 3 || 4 
|- 
| 5 || 6 
|}
Pros Can be previewed/debugged with any XHTML editor

Can be formatted for easier reading


Well-known

Can be previewed/debugged with any HTML editor

Can be formatted for easier reading


Well-known


Takes less space than XHTML

Easy to write

Easy to read


Takes little space

Cons Tedious

Takes a lot of space


Difficult to read quickly

Confusing, especially for people with little HTML experience

Poorly formed


Poorly delimited


Generally odd looking

Unfamiliar syntax

Rigid structure


Cannot be indented

XHTML HTML & Wiki-td Wiki-pipe

 

Guide to the pipe syntax

The pipe syntax, developed by Magnus Manske, substitutes pipes (|) for HTML. There is an on-line script which converts html tables to pipe syntax tables.

The pipes must start at the beginning of a new line, except when separating parameters from content or when using || to separate cells on a single line. The parameters are optional.

 

Tables

A table is defined by {| ”params” |} which equals <table ”params”>Insert non-formatted text here </table>

Careful: You must include the space between {| and params, or the first parameter gets ignored.

 

Rows

<tr> tags will be generated automatically for the first row. To start a new row, use

|-

which results in

<tr>

Parameters can be added like this:

|- params

which results in

<tr params>

Note:

  • <tr> tags will be automatically opened at the first <td> equivalent
  • <tr> tags will be automatically closed at <tr> and </table> equivalents

 

Cells

Cells are generated either like this:

|cell1
|cell2
|cell3

or like this:

|cell1||cell2||cell3

which both equal

<td>cell1</td><td>cell2</td><td>cell3</td>

so “||” equals “newline” + “|”

Parameters in cells can be used like this:

|params|cell1||params|cell2||params|cell3

which will result in

<td params>

 

Headers

Functions the same way as TD, except “!” is used instead of the opening “|”. “!!” can be used instead of “||”. Parameters still use “|”, though! Example:

!params|cell1

 

Captions

A <caption> tag is created by

|+ Caption

which generates

<caption>Caption</caption>

You can also use parameters:

|+ params|Caption

which will generate

<caption params>Caption

 

Some examples

 

Multiplication table

 

Source code

{| border="1" cellpadding="2"
|+Multiplication table
|-
! &times; !! 1 !! 2 !! 3
|-
! 1
| 1 || 2 || 3
|-
! 2
| 2 || 4 || 6
|-
! 3
| 3 || 6 || 9
|-
! 4
| 4 || 8 || 12
|-
! 5
| 5 || 10 || 15
|}

 

Appearance

Multiplication table
× 1 2 3
1 1 2 3
2 2 4 6
3 3 6 9
4 4 8 12
5 5 10 15

 

Notes

  • The entire table begins with {| and ends with the required |}.
  • A caption is a succinct way to describe your table, and can be included with |+ on the line after {|.
  • Table rows are horizontal groups of cells in the table. A row begins with |- and ends at the next row.
  • Table headings are cells with headings in them, and are often rendered in a bold font. They begin with !. Note that parameters are still separated from the actual content of the cell with |, however
  • Table data cells fill out the rest of the table. A cell begins with | or || and ends at the next cell.

Each row must have the same number of cells as the other rows, so that the number of columns in the table remains consistent (unless there are cells which span several columns or rows, but this is not discussed here). For empty cells, use the non-breaking space &nbsp; as content to ensure that the cells are displayed.

 

Mélange

Here’s a more advanced example, showing some more options available for making up tables. You can play with these settings in your own table to see what effect they have. Not all of these techniques may be appropriate in all cases; just because you can add colored backgrounds, for example, doesn’t mean it’s always a good idea. Try to keep the markup in your tables relatively simple — remember, other people are going to be editing the article too! This example should give you an idea of what is possible, though.

 

Source code

{| border="1" cellpadding="5" cellspacing="0" align="center"
|+'''An example table'''
|-
! style="background:#efefef;" | First header
! colspan="2" style="background:#ffdead;" | Second header
|-
| upper left
|  
| rowspan=2 style="border-bottom:3px solid grey;" valign="top" |
right side
|-
| style="border-bottom:3px solid grey;" | lower left
| style="border-bottom:3px solid grey;" | lower middle
|-
| colspan="3" align="center" |
{| border="0"
|+''A table in a table''
|-
| align="center" width="150px" | [[Image:wiki.png]]
| align="center" width="150px" | [[Image:wiki.png]]
|-
| align="center" colspan="2" style="border-top:1px solid red; border-right:1px solid red;
 border-bottom:2px solid red; border-left:1px solid red;" |
Two Wikipedia logos
|}
|}

 

Appearance

An example table
First header Second header
upper left right side
lower left lower middle
A table in a table
File:Wiki.png File:Wiki.png
Two Wikipedia logos

 

Simple example

 
{| 
| Cell 1, row 1 
| Cell 2, row 1 
|- 
| Cell 1, row 2 
| Cell 2, row 2 
|}

generates

Cell 1, row 1 Cell 2, row 1
Cell 1, row 2 Cell 2, row 2

 

Advanced example

{| align=right border=1
| Cell 1, row 1 
|rowspan=2| Cell 2, row 1 (and 2) 
| Cell 3, row 1 
|- 
| Cell 1, row 2 
| Cell 3, row 2 
|}
Cell 1, row 1 Cell 2, row 1 (and 2) Cell 3, row 1
Cell 1, row 2 Cell 3, row 2

Note the floating table to the right.

 

Nested table

{| border=1
| &alpha;
|
{| bgcolor=#ABCDEF border=2
|nested
|-
|table
|}
|the original table again
|}

gives a nested table

α
nested
table
the original table again

Nested tables have to start on a new line.

 

Text next to a table

You can use align=right, text after the table code appears to the left of the table. However, do not put preformatted text, it may overlap the table because it does not wrap.

Multiplication table
× 1 2 3
1 1 2 3
2 2 4 6
3 3 6 9
4 4 8 12
5 5 10 15

text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text

text text text text text text text text text text text text text text text text text text text text 

text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text

To prevent this, use <br style=”clear:both;”>:

Multiplication table
× 1 2 3
1 1 2 3
2 2 4 6
3 3 6 9
4 4 8 12
5 5 10 15

text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text

text text text text text text text text text text text text text text text text text text text text 

text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text

 

Decimal point alignment

A method to get columns of numbers aligned at the decimal point is as follows:

<blockquote>
{| cellpadding=0 cellspacing=0
|align=right| 432 || . || 1
|-
|align=right| 43 || . || 21
|-
|align=right| 4 || . || 321
|}
</blockquote>

gives

432 . 1
43 . 21
4 . 321

In simple cases one can dispense with the table feature and simply start the lines with a space, and put spaces to position the numbers:

432.1
 43.21
  4.321