greekbook
Write in Markdown. Get a properly typeset Greek book or thesis.
PDF, PDF/A and EPUB, without LaTeX and without fighting Word.
▶ Try it in your browser · Documentation (Greek) · Ελληνικά
Quick start · Writing · Templates · Greek typography
Greek text has rules that general-purpose tools get wrong. Word justifies Greek
with rivers of white space because it does not hyphenate it. LaTeX does it right,
but polyglossia, fontspec and biblatex are a steep climb for a student
with a deadline. greekbook sits in between: you write plain Markdown, and it
produces a book or thesis set with a modern typesetting engine
(Typst) and with the Greek-specific rules built in.
$ pip install greekbook
$ greekbook new my-thesis --template thesis
$ greekbook build my-thesis --pdfa
✓ PDF: my-thesis/thesis.pdf (0.4s)
Not a programmer?
Download the app, double-click it, and write. No Python, no terminal, no installation: Windows · macOS · step-by-step guide (Greek)
What you get
- Theses that pass the checklist. University cover page, declaration of originality, Greek and English abstracts, table of contents, lists of figures and tables, Roman-numbered front matter, per-chapter numbering (Σχήμα 2.1, Πίνακας 3.1, (2.4)), appendices lettered Α, Β, Γ, and PDF/A-2b output for institutional repositories.
- Citations from a
.bibfile in APA, IEEE, Harvard, Chicago, MLA, Vancouver or any CSL style:[@knuth1984, σ. 12]. - Math in LaTeX syntax (
$\frac{a}{b}$), the notation students already know, rendered natively by Typst through a bundled mitex. - Books and e-books. Literary templates with running heads, scene breaks, chapter numbers in Greek numerals (ΚΕΦΑΛΑΙΟ Α΄), title, copyright and dedication pages, plus EPUB 3 with soft hyphens for e-readers that cannot hyphenate Greek.
- A linter for invisible mistakes: Latin letters hiding inside Greek words, a medial ς, unpaired quotes, citations missing from the bibliography, references to labels that don't exist, missing images.
- A live editor and Word import.
greekbook serveopens an editor with the pages rendering next to your text;greekbook importturns a.docxinto a project. - Fast and self-contained: one
pip install, no TeX distribution, fonts bundled, rebuilds in under a second, works offline. The browser demo runs the very same Python code in Pyodide, with Typst compiled to WebAssembly.
Quick start
$ greekbook new my-novel --template novel # or: thesis
$ cd my-novel
$ greekbook watch # rebuilds the PDF on every save
A project is a folder:
my-thesis/
├── book.yaml # title, author, template, university details
├── front/abstract.md # front matter (unnumbered, Roman page numbers)
├── chapters/
│ ├── 01-eisagogi.md # chapters, in filename order
│ └── 02-methodologia.md
├── appendix.md
├── figures/
└── references.bib
Or just type greekbook: a numbered menu asks what you want to write and opens the app.
| Command | What it does |
|---|---|
greekbook |
Menu: new thesis / book / notes, import from Word, open the app |
greekbook app [DIR] |
The app in the browser: home screen, editor, settings form |
greekbook new DIR -t thesis|novel |
Start a project from a working example |
greekbook build [DIR] [--epub] [--pdfa] [--open] |
Build the PDF (and EPUB) |
greekbook serve [DIR] |
Local editor with live page preview |
greekbook watch [DIR] |
Rebuild on every change |
greekbook import FILE.docx [DIR] |
Turn a Word document into a project |
greekbook validate [DIR] [--strict] |
Check text, citations, references and images |
greekbook doctor |
Check the installation |
greekbook templates |
List the templates |
Writing
Standard Markdown, plus the Pandoc conventions people already use for papers:
| You write | You get |
|---|---|
"text" |
«text», nested quotes become «… “…” …» |
--- / -- / ... |
em dash —, en dash –, ellipsis … |
# Εισαγωγή {#sec:intro} |
a chapter you can reference with @sec:intro |
# Παράρτημα {-} |
an unnumbered heading |
# Μέρος πρώτο {.part} |
a part divider page (ΜΕΡΟΣ ΠΡΩΤΟ) |
{#fig:map width=70%} |
numbered figure, @fig:map → «Σχήμα 2.1» |
a table followed by Table: Λεζάντα {#tbl:res} |
numbered table with caption |
$$ E = mc^2 $$ (eq:e) |
numbered equation, @eq:e → «Εξίσωση (2.1)» |
[@knuth1984, σ. 12], [@a; @b], @knuth1984 |
citations: parenthetical, grouped, in prose |
στον Πίνακα [-@tbl:res] |
the number only, so you can decline the noun yourself |
Κείμενο[^1] / ^[inline note] |
footnotes |
--- between paragraphs |
a scene break ⁂ |
\newpage |
a page break |
book.yaml reference
title: Βελτιστοποίηση διαδρομών οχημάτων
subtitle: Μεθευρετικές μέθοδοι
author: Όνομα Επώνυμο
template: thesis # novel | classic | sepia | clean | academic | thesis
language: el # el | en
page_size: A4 # A4, A5, B5, 6x9in, 148x210mm, …
front_matter: [front/abstract.md, front/abstract-en.md]
chapters: [chapters/01.md] # optional; default: every chapters/*.md
appendices: [appendix.md]
bibliography: references.bib
citation_style: apa # apa | ieee | harvard | chicago | chicago-notes | mla | vancouver | file.csl
toc: true
list_of_figures: true
list_of_tables: true
chapter_numbering: auto # auto | greek (Α΄) | arabic | roman | words (Πρώτο) | none
math: latex # latex | typst
pdf_standard: a-2b # 1.7 | a-2b | a-3b | ua-1
font: Libertinus Serif # any installed or bundled font
font_size: 11pt
thesis:
type: Διπλωματική Εργασία
institution: …
school: …
department: …
program: …
student_id: "…"
supervisor: …
committee: [ … ]
place: Αθήνα
date: Ιούνιος 2026
logo: figures/logo.png
declaration: true
# books
publisher: …
year: "2026"
copyright: © 2026 …
dedication: …
epigraph: …
Unknown keys are rejected with a message that lists the valid ones, so typos never fail silently.
Templates
| Template | For | Look |
|---|---|---|
thesis |
Bachelor/master theses | Liberation Serif (Times-compatible) 12 pt, 1.5 spacing, binding margin, cover page |
academic |
Papers, lecture notes | Computer Modern, numbered sections |
novel |
Fiction | Libertinus Serif, Greek-numeral chapters, centred running heads |
classic |
Fiction | Computer Modern, «Κεφάλαιο Πρώτο», chapters open on a right-hand page |
sepia |
Fiction on screen | warm paper colour and ink |
clean |
Guides, manuals | sans-serif, large chapter numbers |
Greek typography
What greekbook does that generic tools don't:
- Hyphenation and justification. The PDF uses Typst's TeX-quality line breaking with Greek hyphenation patterns. Titles and headings are never hyphenated.
- Quotes by nesting level. «…» outside, “…” inside, as Greek typesetting requires. Quotes you typed yourself count towards the nesting.
- Capitals without accents. Running heads, chapter labels and covers are
set in capitals the Greek way: accents are dropped, and an accent that kept
two vowels apart becomes a diaeresis (τσάι → ΤΣΑΪ, ρολόι → ΡΟΛΟΪ, άυλος → ΑΫΛΟΣ).
Typst's own
upper()and CSStext-transformkeep the accents. - Greek numerals for chapters and parts (Α΄, Β΄, … ΙΑ΄, ΙΣΤ΄).
- No-break spaces after reference abbreviations (σ. 12, σσ. 4–7, κεφ. 3).
- Grammatical case in cross-references. Greek declines nouns, so the generic
«στον Πίνακας 3.1» is wrong. Write
στον Πίνακα [-@tbl:x]to get only the number. - Syllabification for EPUB. E-readers often have no Greek hyphenation, so
greekbook inserts soft hyphens with its own syllabifier. It follows the school
grammar's rules and gets 100 % of an 85-word gold list right
(see
tests/test_hyphenation.py).
How it works
Markdown + book.yaml + .bib
│ markdown-it-py (CommonMark + footnotes, tables, math, attributes)
▼
syntax tree ──► Greek typography (quotes, dashes, spacing) ──► escaping
│
├──► Typst markup + greekbook Typst templates ──► Typst ──► PDF / PDF/A
└──► XHTML + soft hyphens ──► EPUB 3
The Typst templates live in a regular Typst package
(src/greekbook/typst/packages/local/greekbook), so you can also use them by hand
or keep the generated source (greekbook build --keep-typst) and keep editing in Typst.
Development
$ git clone https://github.com/SpiliosDimakopoulos/greekbook && cd greekbook
$ pip install -e ".[dev]"
$ pytest # 150+ tests: unit, end-to-end PDF checks, hypothesis properties
$ ruff check src tests && mypy
CI runs the suite on Linux, macOS and Windows with Python 3.10–3.13, builds both sample projects, validates the EPUB with epubcheck and publishes the PDFs as artifacts. Contributions, especially university cover pages and typographic rules, are welcome: see CONTRIBUTING.md.
License
Code: MIT. Bundled fonts: SIL Open Font License / Bitstream Vera
(see src/greekbook/fonts). Bundled mitex: Apache-2.0.
Metadata
Release files for greekbook 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| greekbook-0.3.0.tar.gz | 2.9 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| greekbook-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 5.7 MB
Release files / greekbook-0.3.0.tar.gz
| Download URL | greekbook-0.3.0.tar.gz |
|---|---|
| Size | 2.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
96277d3b3cafda902fd2487101e2159c977655612bd81300b8c115f5b07f9969
|
|
BLAKE2b-256 checksum How to use checksums |
40bf14844dd1fbbd391b61c76a33641facb59d94fddc9bb8dbb5f8035af27c71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / greekbook-0.3.0-py3-none-any.whl
| Download URL | greekbook-0.3.0-py3-none-any.whl |
|---|---|
| Size | 2.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b4572f2c2cf14602bcc68b6c810a17f847dc750fa46bd652b560842da9b5c832
|
|
BLAKE2b-256 checksum How to use checksums |
5a61ff8e4eab4375c056da18b6c650f081fa2ef044e0b751df057a2b6d4e966b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logSecurity for greekbook 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for greekbook-0.3.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.