Markdown to TeX/PDF with TUI and Docker
Project description
Mark2TeX
A Dockerized pipeline with an interactive TUI for LaTeX-quality documents — no TeX installation required.
What is Mark2TeX?
Mark2TeX is a command-line tool that converts Markdown files into publication-ready PDFs using Pandoc, XeLaTeX, and pre-built LaTeX templates — all inside a Docker container. You write plain text; Mark2TeX handles the typography.
Why Mark2TeX instead of writing LaTeX directly?
| LaTeX | Mark2TeX | |
|---|---|---|
| Learning curve | Steep | Write plain Markdown |
| Environment setup | 4 GB+ TeX distribution | Only Docker |
| Error messages | Cryptic logs | Human-readable translations |
| Live feedback | Manual re-run | Watch mode auto-recompiles |
Quickstart
# 1 — install (requires Python 3.10+ and Docker)
pipx install mark2tex
# 2 — run (the Docker image is pulled automatically on first use)
mark2tex
Note: On the first run, Mark2TeX will automatically pull the
mark2teximage from Docker Hub. This requires an active internet connection and may take a few minutes depending on your connection speed. Subsequent runs reuse the cached image.No internet? If Docker Hub is unreachable, Mark2TeX will fall back to building the image locally from the bundled
Dockerfile. You can also runmake build-imagemanually at any time.
TUI at a Glance
- Select a
.mdfile from the left panel. - Choose a template (
tcc,artigo-ieee,doc-tecnica,projeto,apresentacao). - Optionally pick a font (
--font arial | helvetica | times | ubuntu). - Press
cto compile orwto toggle Watch Mode.
Keyboard shortcuts
| Key | Action |
|---|---|
c |
Compile |
w |
Toggle Watch Mode |
F1 / ? |
Help |
Esc / q |
Global menu |
Features
- Dockerized builds — zero local LaTeX installation; identical output on every machine.
- Interactive TUI — file browser, template selector, real-time log console, and progress bar built with Textual.
- Watch mode — automatic recompilation on every file save.
- Human-readable logs — raw XeLaTeX output is parsed and translated into plain-language messages.
- Font selection — choose between Liberation Sans (Arial-compatible), Nimbus Sans (Helvetica), Liberation Serif (Times-compatible), and Ubuntu per document.
- Bibliography support — BibTeX via Pandoc + XeLaTeX; just drop a
referencias.bibalongside your.md. - ABNT-oriented workflow — templates built around Brazilian academic standards.
Available Templates
| Template | Purpose |
|---|---|
tcc |
Undergraduate thesis (ABNT) |
artigo-ieee |
IEEE conference paper |
doc-tecnica |
Technical documentation |
projeto |
Project proposal |
apresentacao |
Beamer-based presentation |
Roadmap
- Additional ABNT templates (article, dissertation)
- GUI font and template preview
-
mark2tex new <template>scaffold command - Windows-native installer
- GitHub Actions integration for CI PDF generation
See open issues to follow along or suggest features.
Contributing
Mark2TeX grows with the help of the community. All skill levels are welcome — from fixing typos to designing new templates.
- Read the Contributing Guide.
- Read the Code of Conduct.
- Open an issue before large changes so we can discuss direction.
- Fork, branch, implement, and open a pull request.
We are grateful for every contribution. ✨
License
Mark2TeX is released under the MIT License.
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 mark2tex-0.2.1.tar.gz.
File metadata
- Download URL: mark2tex-0.2.1.tar.gz
- Upload date:
- Size: 35.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3ca4a2c888fd5fb9bd156a9ba134e3a7f2f3b44de8c94554120e7e935d70154
|
|
| MD5 |
6c107b0155b3db056e0868f91a7051d5
|
|
| BLAKE2b-256 |
7995e3254373efbb2702848459cd56ee3c3e50980c02a11ff56aec01b8eadfbe
|
Provenance
The following attestation bundles were made for mark2tex-0.2.1.tar.gz:
Publisher:
release.yml on Hylbert/Mark2TeX
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mark2tex-0.2.1.tar.gz -
Subject digest:
a3ca4a2c888fd5fb9bd156a9ba134e3a7f2f3b44de8c94554120e7e935d70154 - Sigstore transparency entry: 1440004348
- Sigstore integration time:
-
Permalink:
Hylbert/Mark2TeX@5ad8212b26f1c864b77d58021507729e084dd9c1 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/Hylbert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5ad8212b26f1c864b77d58021507729e084dd9c1 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mark2tex-0.2.1-py3-none-any.whl.
File metadata
- Download URL: mark2tex-0.2.1-py3-none-any.whl
- Upload date:
- Size: 36.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f24e064b74ce0f67dc0087d17882adb867b52a8a6f7a41344d984636317abb15
|
|
| MD5 |
5ae6b2f108d248c058e12a2dc9976e07
|
|
| BLAKE2b-256 |
0a5add5ac21e54c4048d6783dac9de6cdef0f367c2b945c51205b44bb02e403e
|
Provenance
The following attestation bundles were made for mark2tex-0.2.1-py3-none-any.whl:
Publisher:
release.yml on Hylbert/Mark2TeX
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mark2tex-0.2.1-py3-none-any.whl -
Subject digest:
f24e064b74ce0f67dc0087d17882adb867b52a8a6f7a41344d984636317abb15 - Sigstore transparency entry: 1440004352
- Sigstore integration time:
-
Permalink:
Hylbert/Mark2TeX@5ad8212b26f1c864b77d58021507729e084dd9c1 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/Hylbert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5ad8212b26f1c864b77d58021507729e084dd9c1 -
Trigger Event:
push
-
Statement type: