# Tables
With the flag `MD_FLAG_TABLES`, MD4C enables extension for recognition of
tables.
Basic table example of a table with two columns and three lines (when not
counting the header) is as follows:
```````````````````````````````` example
| Column 1 | Column 2 |
|----------|----------|
| foo | bar |
| baz | qux |
| quux | quuz |
.
Column 1 | Column 2 |
foo | bar |
baz | qux |
quux | quuz |
````````````````````````````````
The leading and succeeding pipe characters (`|`) on each line are optional:
```````````````````````````````` example
Column 1 | Column 2 |
---------|--------- |
foo | bar |
baz | qux |
quux | quuz |
.
Column 1 | Column 2 |
foo | bar |
baz | qux |
quux | quuz |
````````````````````````````````
```````````````````````````````` example
| Column 1 | Column 2
|----------|---------
| foo | bar
| baz | qux
| quux | quuz
.
Column 1 | Column 2 |
foo | bar |
baz | qux |
quux | quuz |
````````````````````````````````
```````````````````````````````` example
Column 1 | Column 2
---------|---------
foo | bar
baz | qux
quux | quuz
.
Column 1 | Column 2 |
foo | bar |
baz | qux |
quux | quuz |
````````````````````````````````
However for one-column table, at least one pipe has to be used in the table
header underline, otherwise it would be parsed as a Setext title followed by
a paragraph.
```````````````````````````````` example
Column 1
--------
foo
baz
quux
.
Column 1
foo
baz
quux
````````````````````````````````
Leading and trailing whitespace in a table cell is ignored and the columns do
not need to be aligned.
```````````````````````````````` example
Column 1 |Column 2
---|---
foo | bar
baz| qux
quux|quuz
.
Column 1 | Column 2 |
foo | bar |
baz | qux |
quux | quuz |
````````````````````````````````
The table cannot interrupt a paragraph.
```````````````````````````````` example
Lorem ipsum dolor sit amet.
| Column 1 | Column 2
| ---------|---------
| foo | bar
| baz | qux
| quux | quuz
.
Lorem ipsum dolor sit amet.
| Column 1 | Column 2
| ---------|---------
| foo | bar
| baz | qux
| quux | quuz
````````````````````````````````
Similarly, paragraph cannot interrupt a table:
```````````````````````````````` example
Column 1 | Column 2
---------|---------
foo | bar
baz | qux
quux | quuz
Lorem ipsum dolor sit amet.
.
Column 1 | Column 2 |
foo | bar |
baz | qux |
quux | quuz |
Lorem ipsum dolor sit amet. | |
````````````````````````````````
The first, the last or both the first and the last dash in each column
underline can be replaced with a colon (`:`) to request left, right or middle
alignment of the respective column:
```````````````````````````````` example
| Column 1 | Column 2 | Column 3 | Column 4 |
|----------|:---------|:--------:|---------:|
| default | left | center | right |
.
Column 1 | Column 2 | Column 3 | Column 4 |
default | left | center | right |
````````````````````````````````
To include a literal pipe character in any cell, it has to be escaped.
```````````````````````````````` example
Column 1 | Column 2
---------|---------
foo | bar
baz | qux \| xyzzy
quux | quuz
.
Column 1 | Column 2 |
foo | bar |
baz | qux | xyzzy |
quux | quuz |
````````````````````````````````
Contents of each cell is parsed as an inline text which may contents any
inline Markdown spans like emphasis, strong emphasis, links etc.
```````````````````````````````` example
Column 1 | Column 2
---------|---------
*foo* | bar
**baz** | [qux]
quux | [quuz](/url2)
[qux]: /url
.
Column 1 | Column 2 |
foo | bar |
baz | qux |
quux | quuz |
````````````````````````````````
However pipes which are inside a code span are not recognized as cell
boundaries.
```````````````````````````````` example
Column 1 | Column 2
---------|---------
`foo | bar`
baz | qux
quux | quuz
.
Column 1 | Column 2 |
foo | bar | |
baz | qux |
quux | quuz |
````````````````````````````````
## GitHub Issues
### [Issue 41](https://github.com/mity/md4c/issues/41)
```````````````````````````````` example
* x|x
---|---
.
````````````````````````````````
(Not a table, because the underline has wrong indentation and is not part of the
list item.)
```````````````````````````````` example
* x|x
---|---
x|x
.
x|x
````````````````````````````````
(Here the underline has the right indentation so the table is detected.
But the last line is not part of it due its indentation.)
### [Issue 42](https://github.com/mity/md4c/issues/42)
```````````````````````````````` example
] http://x.x *x*
|x|x|
|---|---|
|x|
.
] http://x.x x
````````````````````````````````
### [Issue 104](https://github.com/mity/md4c/issues/104)
```````````````````````````````` example
A | B
--- | ---
[x](url)
.
````````````````````````````````
### [Issue 138](https://github.com/mity/md4c/issues/138)
```````````````````````````````` example
| abc | def |
| --- | --- |
.
````````````````````````````````