Skip to main content

md2textbook

Turn a Markdown file into a coursebook-style PDF: gradient cover, table of contents, chapter banners, colored boxes, publication-quality equations and syntax-highlighted code. It runs fully offline on Windows, macOS and Linux, with no network access and no AI.

Install

pipx install md2textbook      # recommended: isolated, global command
# or
pip install md2textbook

Requires Python 3.10 or newer. Poppins and Caladea fonts are bundled; nothing else to download.

On Linux the file chooser needs Tk (sudo apt install python3-tk on Debian/Ubuntu, sudo dnf install python3-tkinter on Fedora). Without it the tool falls back to zenity/kdialog, or to a prompt in the terminal. Passing the file on the command line never needs any of these.

Use

md2textbook                   # opens a file chooser
md2textbook notes.md          # writes notes.pdf next to the input and opens it
md2textbook notes.md -o out/book.pdf --no-open
md2textbook-gui               # same as no arguments, without a console window on Windows
python -m md2textbook notes.md

An example input is in examples/sample.md.

Markdown support

Markdown Result
Front matter title, subtitle, author, date Cover page
A single # Title, then ## / ### / #### Title on the cover; chapters, sections, subsections
Several # headings Each # is a chapter
$x^2$ and $$ ... $$ (or a math fence) Inline math and numbered display equations
Fenced code, ```python title="Loss" Highlighted listing with line numbers and wrapping
Pipe tables, optional Table: caption line Zebra tables with a repeating header
![caption](img.png) Numbered figure
> [!DEFINITION] Title Colored box
> **Example:** text Same, shorthand form
Plain > quote Quiet unlabeled note

Box kinds: DEFINITION, EXAMPLE, INSIGHT, WARNING, RECAP, OBJECTIVE, CODE, IDEA, REVIEW, BRIEF, MATH, NOTE, plus aliases such as TIP, CAUTION, THEOREM, PROOF, SUMMARY.

Code fence options: title="...", nonumbers, start=N.

Limitations

  • Equations use matplotlib's mathtext, so some LaTeX (matrices, \substack, custom macros) is unsupported and shown as source text.
  • Remote and SVG images are skipped.
  • No Mermaid diagrams or footnotes.

Development

git clone https://github.com/MikeDegany/md2textbook
cd md2textbook
pip install -e ".[dev]"
pytest
Module Role
cli.py Command line, file chooser, opening the result
parser.py Markdown parsing and mapping onto the book
builder.py ReportLab book builder (pages, boxes, code, tables)
theme.py Fonts, palette, paragraph styles, inline markup
mathkit.py LaTeX to PNG rendering with an on-disk cache

License

MIT, see LICENSE. The bundled Poppins and Caladea fonts are under the SIL Open Font License 1.1 (src/md2textbook/fonts/OFL-*.txt).

Metadata

Release files for md2textbook 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for md2textbook 0.1.1
File Size Uploaded
md2textbook-0.1.1.tar.gz 552.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for md2textbook 0.1.1
File Interpreter ABI Platform
md2textbook-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.1 MB

Release files / md2textbook-0.1.1.tar.gz

Download URL md2textbook-0.1.1.tar.gz
Size 552.1 kB
Tags Source
SHA-256 checksum
How to use checksums
3992c8adada182bd53417b03be902394e828c0bbdd4f221224403d61bf6936f7
BLAKE2b-256 checksum
How to use checksums
32ac9c6269f698e23e26a15219e31f40cd8f4a55d4bdf1e14b22c4911c49be7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / md2textbook-0.1.1-py3-none-any.whl

Download URL md2textbook-0.1.1-py3-none-any.whl
Size 557.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
11878bd6852d64509e6e91dce1b9947bc867262c3074d8b22c9d6e7e0a39800d
BLAKE2b-256 checksum
How to use checksums
98b4bfa6fa51f58ed4505d9b22b81432bdcfcd93e655db9d8d15b9bb86e59fa1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.1.3

2 release files

0.1.2

2 release files

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page