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}
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
etabs-0.2.0.tar.gz
(10.2 kB
view details)
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
etabs-0.2.0-py3-none-any.whl
(9.1 kB
view details)
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
|