## Tables (extension) GFM enables the `table` extension, where an additional leaf block type is available. A [table](@) is an arrangement of data with rows and columns, consisting of a single header row, a [delimiter row] separating the header from the data, and zero or more data rows. Each row consists of cells containing arbitrary text, in which [inlines] are parsed, separated by pipes (`|`). A leading and trailing pipe is also recommended for clarity of reading, and if there's otherwise parsing ambiguity. Spaces between pipes and cell content are trimmed. Block-level elements cannot be inserted in a table. The [delimiter row](@) consists of cells whose only content are hyphens (`-`), and optionally, a leading or trailing colon (`:`), or both, to indicate left, right, or center alignment respectively. ```````````````````````````````` example | foo | bar | | --- | --- | | baz | bim | .
foo | bar |
---|---|
baz | bim |
abc | defghi |
---|---|
bar | baz |
f|oo |
---|
b | az |
b | im |
abc | def |
---|---|
bar | baz |
```````````````````````````````` ```````````````````````````````` example | abc | def | | --- | --- | | bar | baz | bar .bar
abc | def |
---|---|
bar | baz |
bar
```````````````````````````````` ```````````````````````````````` example | abc | def | | --- | --- | | bar | baz | bar .abc | def |
---|---|
bar | baz |
bar
```````````````````````````````` The header row must match the [delimiter row] in the number of cells. If not, a table will not be recognized: ```````````````````````````````` example | abc | def | | --- | | bar | .| abc | def | | --- | | bar |
```````````````````````````````` The remainder of the table's rows may vary in the number of cells. If there are a number of cells fewer than the number of cells in the header row, empty cells are inserted. If there are greater, the excess is ignored: ```````````````````````````````` example | abc | def | | --- | --- | | bar | | bar | baz | boo | .abc | def |
---|---|
bar | |
bar | baz |
abc | def |
---|
| Not enough table | to be considered table |
| Not enough table | to be considered table | | Not enough table | to be considered table |
| ---- | --- |
```````````````````````````````` A table may be indented up to three spaces: ```````````````````````````````` example a | b | c - | - | - .a | b | c |
---|
a | b | c
- | - | -
````````````````````````````````
Pipe tables have exactly one header row, and do not interrupt paragraphs.
```````````````````````````````` example
| Too much table | to be considered table |
| Too much table | to be considered table |
|----------------|------------------------|
| Too much table | to be considered table |
.
| Too much table | to be considered table | | Too much table | to be considered table | |----------------|------------------------| | Too much table | to be considered table |
```````````````````````````````` Other block structures, like headers, have higher priority than tables. Tables can be nested in other elements, but don't benefit from laziness. ```````````````````````````````` example # abc | def ------|----- > abc | def > ----|----- > abc | def ----|----- .------|-----
abc def
````````````````````````````````abc | def ----|-----