Skip to main content

Pretty formatted tables that can be exported to LaTeX

Project description

The goal of this project is to allow an easy interface to create Tables that are not only printed nicely in the terminal, but can also be easily exported to LaTeX code.

How to Install

pip install tabletexifier

How to use


>>> from tabletexifier import Table
>>> x = Table(['Name', 'b','c','d','e'], table_style = 'A')  
>>> x.add_row(['first',1,4,6,7])
>>> x.add_row(['second',1,4,6,7])

By printing the table, we have

>>> print(x)

 --------------------------
 | Name   | b | c | d | e |
 +--------+---+---+---+---+
 | first  | 1 | 4 | 6 | 7 |
 +--------+---+---+---+---+
 | second | 1 | 4 | 6 | 7 |
 --------------------------

It can be converted to Latex by

>>> print(x.build_latex())

\begin{table}
\caption{\label{Tab:}}
\begin{tabular}{|l|l|l|l|l|}
\hline Name   & b & c & d & e \\ \hline
first  & 1 & 4 & 6 & 7 \\ \hline
second & 1 & 4 & 6 & 7 \\ \hline
\end{tabular}
\end{table}

It is also possible to set the number of decimal places in the numerical entries:

>>> x.set_decimal_places(4)
>>> print(x)

----------------------------------------------
| Name   | b      | c      | d      | e      |
+--------+--------+--------+--------+--------+
| first  | 1.0000 | 4.0000 | 6.0000 | 7.0000 |
+--------+--------+--------+--------+--------+
| second | 1.0000 | 4.0000 | 6.0000 | 7.0000 |
----------------------------------------------

The columns also allow the data to be tuples or lists. However, the decimal places do not apply to them:

>>> x.add_row(['third',[1,1,1], [], (1,1,1),()])
----------------------------------------------------
| Name   | b         | c      | d         | e      |
+--------+-----------+--------+-----------+--------+
| first  | 1.0000    | 4.0000 | 6.0000    | 7.0000 |
+--------+-----------+--------+-----------+--------+
| second | 1.0000    | 4.0000 | 6.0000    | 7.0000 |
+--------+-----------+--------+-----------+--------+
| third  | [1, 1, 1] | []     | (1, 1, 1) | ()     |
----------------------------------------------------

To only have a cross patern of lines:

>>> x.set_design_property("lines", 'T')

will update both the ASCII table and the Latex one:

>>> print(x)

  Name   | b c d e
 --------+--------
  first  | 1 4 6 7
  second | 1 4 6 7

>>> print(x.build_latex())
\begin{table}
\caption{\label{Tab:}}
\begin{tabular}{l|llll}
 Name   & b & c & d & e \\ \hline
 first  & 1 & 4 & 6 & 7 \\ 
 second & 1 & 4 & 6 & 7 \\ 
\end{tabular}
\end{table}

There is also the option to have all lines in the table (the default option):

>>> x.set_design_property("lines", 'A')
--------------------------
| Name   | b | c | d | e |
+--------+---+---+---+---+
| first  | 1 | 4 | 6 | 7 |
+--------+---+---+---+---+
| second | 1 | 4 | 6 | 7 |
--------------------------

Or to use the format from different scientific journals:

>>> x.set_design_property("lines", 'MNRAS') # monthly notices of the royal astronomical society
--------------
Name   b c d e
--------------
first  1 4 6 7
second 1 4 6 7

To store the data to file:

>>> x.write_to_file("<path>_<to>_<file>", mode='a', write_table = True, write_LaTeX=False)
    # mode is the normal file.write mode
    # write_table to write the ASCII table
    # write_LaTeX to write the latex code to build the table

ToDo list

  • Add proper docs for missing functionalities (e.g. change alignement of columns or the vertical lines)
  • Write tests for the functions

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

tabletexifier-0.1.5.tar.gz (5.8 kB view hashes)

Uploaded Source

Built Distribution

tabletexifier-0.1.5-py3-none-any.whl (18.3 kB view hashes)

Uploaded Python 3

Supported by

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