Skip to main content

LaTeX helpers — export to .tex, render preview images, vector formatting — standalone module from the SciTeX ecosystem

Project description

scitex-tex

SciTeX

LaTeX helpers — export to .tex, compile to PDF, preview images, vector formatting.

Full Documentation · uv pip install scitex-tex[all]

PyPI Python Tests Coverage Docs License: AGPL v3


Problem and Solution

# Problem Solution
1 Hand-authored .tex from Python is brittle — escaping _ / & / % and locating the right pdflatex invocation eats hours per paper export_tex + compile_tex — writer doc → .tex.pdf in two calls; CompileResult exposes the pdf path + log on failure
2 Previewing a math snippet means firing up a full LaTeX project preview(r"$\sum x_i$", "out.png") — single-call rendering via matplotlib; no system TeX install required
3 Sig-fig formatting for vectors / scalars is reinvented per script to_vec(value, sig_figs=N) — consistent scientific notation for tables and captions

Architecture

scitex_tex/
├── _export.py        # writer doc  → .tex string + file
├── _compile.py       # .tex        → .pdf via pdflatex/xelatex
├── _preview.py       # snippet     → .png (matplotlib, no system TeX needed)
└── _vec.py           # numeric     → sig-fig vector strings
flowchart LR
    Doc[Writer Doc<br/>Python dict/object] --> Exp[export_tex]
    Exp --> Tex[manuscript.tex]
    Tex --> Cmp[compile_tex]
    Cmp --> Pdf[manuscript.pdf]
    Snip[r'\$\\sum x_i\$'] --> Prv[preview]
    Prv --> Png[preview.png]
    Val[1.234e-3] --> Vec[to_vec]
    Vec --> Str[formatted string]

Figure 1. Module layout. Four small helpers — export, compile, preview, sig-fig formatting — each callable independently.

Installation

pip install scitex-tex

Quick Start

import scitex_tex as tx

# Convert a SciTeX-style writer doc → .tex
tx.export_tex(doc, "manuscript.tex")

# Compile .tex → .pdf (returns CompileResult)
result = tx.compile_tex("manuscript.tex")

# Render a snippet to a preview image
tx.preview(r"$\sum_{i=1}^N x_i$", "preview.png")

# Format a numeric value with sig-fig rules
tx.to_vec(1.234e-3, sig_figs=3)

1 Interfaces

Python API
import scitex_tex as tx

# Export — writer doc → .tex string + file
tx.export_tex(doc, "manuscript.tex")

# Compile — .tex → .pdf via pdflatex/xelatex; returns CompileResult
res = tx.compile_tex("manuscript.tex")
print(res.pdf_path, res.log)

# Preview — render a snippet to a PNG
tx.preview(r"$\frac{1}{2}\sum x_i$", "preview.png")

# Vector formatting helpers
tx.to_vec(1.234e-3, sig_figs=3)

Demo

import scitex_tex as tx

# 1) Render a math preview to PNG (no system TeX required)
tx.preview(r"$\hat{\beta} = (X^\top X)^{-1} X^\top y$", "preview.png")

# 2) Export + compile a manuscript end-to-end
tx.export_tex(doc, "manuscript.tex")
result = tx.compile_tex("manuscript.tex")
print(result.pdf_path)   # → manuscript.pdf
flowchart LR
    A[Python writer doc] -->|export_tex| B[manuscript.tex]
    B -->|compile_tex| C[manuscript.pdf]
    D["r'\$\\hat\\beta\$'"] -->|preview| E[preview.png]
    style C fill:#27ae60,stroke:#2c3e50,color:#fff
    style E fill:#27ae60,stroke:#2c3e50,color:#fff

Figure 2. Demo flow. preview is matplotlib-only; compile_tex shells out to pdflatex/xelatex.

Status

Standalone fork of scitex.tex. Only dep is matplotlib (for preview rendering). The umbrella package's scitex.tex import path is preserved via a sys.modules-alias bridge.

Part of SciTeX

scitex-tex is part of SciTeX. Install via the umbrella with pip install scitex[tex] to use as scitex.tex (Python) or scitex tex ... (CLI).

Four Freedoms for Research

  1. The freedom to run your research anywhere — your machine, your terms.
  2. The freedom to study how every step works — from raw data to final manuscript.
  3. The freedom to redistribute your workflows, not just your papers.
  4. The freedom to modify any module and share improvements with the community.

AGPL-3.0 — because we believe research infrastructure deserves the same freedoms as the software it runs on.

License

AGPL-3.0-only (see LICENSE).


SciTeX

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

scitex_tex-0.1.7.tar.gz (29.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scitex_tex-0.1.7-py3-none-any.whl (29.5 kB view details)

Uploaded Python 3

File details

Details for the file scitex_tex-0.1.7.tar.gz.

File metadata

  • Download URL: scitex_tex-0.1.7.tar.gz
  • Upload date:
  • Size: 29.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for scitex_tex-0.1.7.tar.gz
Algorithm Hash digest
SHA256 1fdb40251f834a577a9182a53afdf6100cf3cc3b646b064a1d21a073ed1cd9ab
MD5 a3bf0b8b98b0efd789dd70d5e99bfcb3
BLAKE2b-256 fe41654df0ed286fd0dba698dde0b568053c32f8f213a2ec36940e7b75e2eb1b

See more details on using hashes here.

Provenance

The following attestation bundles were made for scitex_tex-0.1.7.tar.gz:

Publisher: pypi-publish-and-github-release-on-tag.yml on ywatanabe1989/scitex-tex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file scitex_tex-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: scitex_tex-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 29.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for scitex_tex-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 981be1bfae687e48ec161c2ef56c53ce47051e5799394915f36f1a7ef0bb7c12
MD5 1523e9f93ffb4d94da05aa70c0e65b74
BLAKE2b-256 8062d23f796faef498d35f6e13960b4a9cc49ef59cc7b3d849da0dd0de6c8f88

See more details on using hashes here.

Provenance

The following attestation bundles were made for scitex_tex-0.1.7-py3-none-any.whl:

Publisher: pypi-publish-and-github-release-on-tag.yml on ywatanabe1989/scitex-tex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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