Python library for rendering latex tables in an easy way
Project description
etabs
Python library for building and rendering latex tables in an easy way.
Instalation
pip install etabs
Simple example
Code:
from etabs import RuleType, TexTable
# Example values
values = [
[60, 20, 20],
[50, 40, 10],
[30, 10, 60],
[5, 90, 5],
]
row_labels = ["A", "B", "C", "D"]
col_labels = ["C1", "C2", "C3"]
# TexTabel is the main structure for creating tables
table = TexTable(centered=True, caption="Example table")
# Add rows
table.add_row(None, *col_labels) # First value empty, rest are column labels
for label, row in zip(row_labels, values):
table.add_row(label, *row)
# You can optionally add rules at specific rows
table.add_rule(0, RuleType.TOP)
table.add_rule(1) # By default, the rule is a midrule
# If no row is specified, it will be added at the end
table.add_rule(rule_type=RuleType.BOTTOM)
# Finally to get the latex code use the render method
print(table.render())
Output:
\begin{figure}[h!]
\centering
\caption{Example table}
\vspace{0.5em}
\begin{tabular}{cccc}
\toprule
& C1 & C2 & C3 \\
\midrule
A & 60 & 20 & 20 \\
B & 50 & 40 & 10 \\
C & 30 & 10 & 60 \\
D & 5 & 90 & 5 \\
\bottomrule
\end{tabular}
\end{figure}
Result:
A little more styled example
from etabs import RuleType, TexTable
# Example values
values = [
[60, 20, 20],
[50, 40, 10],
[30, 10, 60],
[5, 90, 5],
]
col_labels = ["C1", "C2", "C3"]
table = TexTable(centered=True, caption="Example table")
# Add values
table.add_row(*col_labels, start=2) # Colum 0 and 1 are empty
for row in values:
# Preprocess each value to show as percentage
table.add_row(*row, prep=lambda x: f"{x} \\%", start=2)
# Add a vertical separator before column 2
table.seps[2] = "|"
# Assign values directly
table[1, 1] = table[3, 1] = "A1"
table[2, 1] = table[4, 1] = "B2"
# Merge cells using slices
table[0, 0:2] = "Types"
table[1:3, 0] = "Typa A"
table[3:, 0] = "Typa B"
# Add some style using slices too
table[0, :].set_bold(True)
table[:, 0:2].set_bold(True)
table[1:, 0:2].set_italic(True)
# Add rules
table.add_rule(0, RuleType.TOP)
table.add_rule(1)
table.add_rule(rule_type=RuleType.BOTTOM)
print(table.render())
Output:
\begin{figure}[h!]
\centering
\caption{Example table}
\vspace{0.5em}
\begin{tabular}{cc|ccc}
\toprule
\multicolumn{2}{c|}{\textbf{Types}} & \textbf{C1} & \textbf{C2} & \textbf{C3} \\
\midrule
\multirow{2}{*}{\textit{\textbf{Typa A}}} & \textit{\textbf{A1}} & 60 \% & 20 \% & 20 \% \\
& \textit{\textbf{B2}} & 50 \% & 40 \% & 10 \% \\
\multirow{2}{*}{\textit{\textbf{Typa B}}} & \textit{\textbf{A1}} & 30 \% & 10 \% & 60 \% \\
& \textit{\textbf{B2}} & 5 \% & 90 \% & 5 \% \\
\bottomrule
\end{tabular}
\end{figure}
Result:
Latex packages
According the commands you use, some packages may need to be added to the document for the correct rendering of the table.
To see the dependencies for a given table you can use de render_deps method:
# following the example from the last section
print(table.render_deps())
Output:
\usepackage{multirow}
\usepackage{booktabs}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file etabs-0.2.0.tar.gz.
File metadata
- Download URL: etabs-0.2.0.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.8.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
259b9e6e63a788c36bcc7281f891ab8cfa4984da2f94fd6200b8664d620c4ca0
|
|
| MD5 |
e01627954709299512b2f2c16c6319d8
|
|
| BLAKE2b-256 |
05576d98f167d5cbe7f129047411a630f798998d01ea90624c3c31c4d898d9d0
|
File details
Details for the file etabs-0.2.0-py3-none-any.whl.
File metadata
- Download URL: etabs-0.2.0-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.8.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b829053922f1f5299b12e5eca096a2650b234720630bf044bc324ee11b571c49
|
|
| MD5 |
bf986f1b05b5e45bf210cfef8fc93b31
|
|
| BLAKE2b-256 |
78094c9c787dba235d998906868d36041d5667b918c102d04247849d1135c23f
|