Skip to main content

CSV Tables in Markdown: Pandoc Filter for CSV Tables

Project description

Date:
December 4, 2016

Build Status GitHub Releases PyPI version Development Status Python version License Coveralls

The pantable package comes with 2 pandoc filters, pantable.py and pantable2csv.py. pantable is the main filter, introducing a syntax to include CSV table in markdown source. pantable2csv complements pantable, is the inverse of pantable, which convert native pandoc tables into the CSV table format defined by pantable.

Some example uses are:

  1. You already have tables in CSV format.

  2. You feel that directly editing markdown table is troublesome. You want a spreadsheet interface to edit, but want to convert it to native pandoc table for higher readability. And this process might go back and forth.

  3. You want lower-level control on the table and column widths.

  4. You want to use all table features supported by the pandoc’s internal AST table format, which is not possible in markdown for pandoc <= 1.18. [1]

pantable

This allows CSV tables, optionally containing markdown syntax (disabled by default), to be put in markdown as a fenced code blocks.

Example

Also see the README in GitHub Pages. There’s a LaTeX output too.

```table
---
caption: '*Awesome* **Markdown** Table'
alignment: RC
table-width: 2/3
markdown: True
---
First row,defaulted to be header row,can be disabled
1,cell can contain **markdown**,"It can be aribrary block element:

- following standard markdown syntax
- like this"
2,"Any markdown syntax, e.g.",$$E = mc^2$$
```

becomes

First row

defaulted to be header row

can be disabled

1

cell can contain markdown

It can be aribrary block element:

  • following standard markdown syntax

  • like this

2

Any markdown syntax, e.g.

\begin{equation*} E = mc^2 \end{equation*}

Table: Awesome Markdown Table

(The equation might not work if you view this on PyPI.)

Install and Use

Install:

pip install -U pantable

Use:

pandoc -F pantable -o README.html README.md

Syntax

Fenced code blocks is used, with a class table. See [Example].

Optionally, YAML metadata block can be used within the fenced code block, following standard pandoc YAML metadata block syntax. 7 metadata keys are recognized:

  • caption: the caption of the table. If omitted, no caption will be inserted. Default: disabled.

  • alignment: a string of characters among L,R,C,D, case-insensitive, corresponds to Left-aligned, Right-aligned, Center-aligned, Default-aligned respectively. e.g. LCRD for a table with 4 columns. Default: DDD...

  • width: a list of relative width corresponding to the width of each columns. e.g.

    - width
        - 0.1
        - 0.2
        - 0.3
        - 0.4

    Default: auto calculated from the length of each line in table cells.

  • table-width: the relative width of the table (e.g. relative to \linewidth). default: 1.0

  • header: If it has a header row or not. True/False/yes/NO are accepted, case-insensitive. default: True

  • markdown: If CSV table cell contains markdown syntax or not. Same as above. Default: False

  • include: the path to an CSV file, can be relative/absolute. If non-empty, override the CSV in the CodeBlock. default: None

When the metadata keys is invalid, the default will be used instead. Note that width and table-width accept fractions as well.

pantable2csv

This one is the inverse of pantable, a panflute filter to convert any native pandoc tables into the CSV table format used by pantable.

Effectively, pantable forms a “CSV Reader”, and pantable2csv forms a “CSV Writer”. It allows you to convert back and forth between these 2 formats.

For example, in the markdown source:

+--------+---------------------+--------------------------+
| First  | defaulted to be     | can be disabled          |
| row    | header row          |                          |
+========+=====================+==========================+
| 1      | cell can contain    | It can be aribrary block |
|        | **markdown**        | element:                 |
|        |                     |                          |
|        |                     | -   following standard   |
|        |                     |     markdown syntax      |
|        |                     | -   like this            |
+--------+---------------------+--------------------------+
| 2      | Any markdown        | $$E = mc^2$$             |
|        | syntax, e.g.        |                          |
+--------+---------------------+--------------------------+

: *Awesome* **Markdown** Table

running pandoc -F pantable2csv -o output.md input.md, it becomes

``` {.table}
---
alignment: DDD
caption: '*Awesome* **Markdown** Table'
header: true
markdown: true
table-width: 0.8055555555555556
width: [0.125, 0.3055555555555556, 0.375]
---
First row,defaulted to be header row,can be disabled
1,cell can contain **markdown**,"It can be aribrary block element:

-   following standard markdown syntax
-   like this
"
2,"Any markdown syntax, e.g.",$$E = mc^2$$
```

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pantable-0.10.4.tar.gz (17.7 kB view details)

Uploaded Source

Built Distributions

pantable-0.10.4-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

pantable-0.10.4-py2-none-any.whl (21.3 kB view details)

Uploaded Python 2

File details

Details for the file pantable-0.10.4.tar.gz.

File metadata

  • Download URL: pantable-0.10.4.tar.gz
  • Upload date:
  • Size: 17.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pantable-0.10.4.tar.gz
Algorithm Hash digest
SHA256 63a4a4ca9eac400da99beba4d813a36bf3a4a0706508605dd1bc8facac474bf4
MD5 0d1031864bf3fe97c53b7b678dea3fda
BLAKE2b-256 82e8aef2b039906ecc48b486e1faf048da10fae8109a7a39f7ec5244cf978f4f

See more details on using hashes here.

File details

Details for the file pantable-0.10.4-py3-none-any.whl.

File metadata

File hashes

Hashes for pantable-0.10.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ebfa9f9a3e3492403bebde87a9e2cc5d012086fc6df7249ab2cf71dfa59611eb
MD5 271d78a9f9b8ef454d94d7d382b0afb2
BLAKE2b-256 0bbfaccc4342909a87247d49ea66c256d42e6ae06d8f85d85cbb108a2388ff23

See more details on using hashes here.

File details

Details for the file pantable-0.10.4-py2-none-any.whl.

File metadata

File hashes

Hashes for pantable-0.10.4-py2-none-any.whl
Algorithm Hash digest
SHA256 a4244b6d8f1a2d5bbc98cad70f73ed43ec5e82fccc6f60f6db2c72221849bc1a
MD5 1454c28b0d9712b7277566539ac27e8e
BLAKE2b-256 d85b33c45dc476e969f1e84fbcd6125005292c3537dc84b50b51a5b08066cc54

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page