Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

reticule npm version

A new way to write and explore mathematical texts.


Getting Started

Table of Contents


Make sure you have Node.js and npm installed. To install reticule, run:

npm install -g reticule

Book Structure

To create a book, create a folder with the following text files:

├ book.json

Meta Information

book.json contains all meta-information regarding your book, such as the title and the author. contains the table of contents of your book. It defines all sections and links to the corresponding files.

book.json contains an JSON object with the following properties:

Property Description
title * The book title. No markdown allowed.
author * The book author(s). Markdown allowed.
accent Defines an accent color in hex. Default: #327CCB
lang Defines the book language. Affects CSS hyphenation. Default: en
github The link to a GitHub repository. If defined, every page has a 'GitHub' and an 'Edit page' link.
disqus The shortname of your Disqus website. Provides Disqus comment system integration if defined.
localization An object containing alternate strings. Translatable strings: ¶, $\square$, Proof, Table of Contents, Index, GitHub, Edit page, Generated by reticule

* Required properties


    "title": "Étale Kohomologie",
    "author": "Yichuan Shen",
    "lang": "de",
    "localization": {
        "Proof": "Beweis",
        "Table of Contents": "Inhaltsverzeichnis",
        "Edit page": "Seite bearbeiten",
        "Generated by reticule": "Erstellt mit reticule",
        "$\\square$": "Q.E.D."

Book Sections

For each section create a folder with a file:

├ section1/
│ └
├ section2/
│ └
├ subsection/
| └ section3/
│   └
├ book.json

Also, provide the book structure in as an unordered list:

* [Section 1](section1/)
* [Section 2](section2/)
* Subsection
    * [Section 3](subsection/section3/)

Don't use the folder name index as it's reserved for the automatically generated index.


Tags are the building blocks of a reticule. A tag consists of two parts: An assertion and an optional proof. To create a tag, choose a unique tag id, e.g. #0ABC or #1ABC, and write the content:


There are infinitely many primes.

#1ABC:Dirichlet's Theorem

Let `a, b` be coprime numbers. There are infinitely many primes
congruent `a` modulo `b`.

Tag ids start with a hash symbol # followed by alphanumeric characters or the hyphen -. You can name the tag by appending a colon and a name to the id. To provide a proof, add a horizontal line:


There are infinitely many primes.


Suppose there are only finite primes `p_1,\ldots,p_n`. Observe that
`p_1\cdot p_2\cdots p_n + 1` has a prime divisor `p`, distinct from

Markdown is used for formatting. Code spans and code blocks are converted into math environments and rendered by MathJax and XyJax.

To link to other tags, use a markdown link and and the tag id as the source:


There are infinitely many primes.


Putting `a = 1` and `b = 2` in [~](#1ABC) yields infinitely many
odd primes.

Creating Index

To add a keyword to the index, just append the keyword, wrapped in ~~, anywhere in the tag:

#1ABC:Dirichlet's Theorem

Let `a, b` be coprime numbers. There are infinitely many primes
congruent `a` modulo `b`. ~~Dirichlet's Theorem~~

You can add a context to a keyword by appending | and the context to the keyword:

#1ABC:Dirichlet's Theorem

Let `a, b` be coprime numbers. There are infinitely many primes
congruent `a` modulo `b`. ~~Dirichlet's Theorem|Number Theory~~

TeX Macros

You can define custom TeX macros that can be used throughout your book. Simply add a file named macros.tex with the user-defined macros to the root folder:

├ book.json
└ macros.tex


To compile a reticule book into a website, navigate to your book directory and simply run:



A new way to write and explore mathematical texts.





No packages published
You can’t perform that action at this time.