Skip to content
A from-the-ground-up rewrite of, using react, babel, webpack, and other modern things.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
components Merge branch 'master' of Mar 12, 2019
en-GB update to curvature function Mar 12, 2019
stylesheets patreon Dec 29, 2018
tools Add a curvature section (#159) Dec 10, 2018
zh-CN update to curvature function Mar 12, 2019
.nojekyll Create .nojekyll Mar 10, 2017
article.js update to curvature function Mar 12, 2019
index.html patreon Dec 29, 2018
index.template.html print css fix Dec 10, 2018
package.json Add a curvature section (#159) Dec 10, 2018
webpack.config.js webpack literally breaks paper.js when it minifies Jun 24, 2018


Dev repository for

Working on the code

  • To run this dev version: npm start, then view in the browser on http://localhost:8080
  • To compile for production: npm run build.

Both operations run continuous linting. Also note that there are specific requirements for development, see the section on dev requirements below.

Dev location

Dev requirements

Fonts required for proper LaTeX typesetting

  • en-GB LaTeX fonts: TeX Gyre Pagella and TeX Gyre Pagella Math fonts (installable through TeXLive and MiKTeX)
  • ja-JP LaTeX font: IPAex Mincho (installable through TeXLive and MiKTeX)
  • zh-CN LaTeX font: Arhpic gbsn (installable through TeXLive and MiKTeX)

All fonts come with TeXLive and MiKTeX, and should be easy to install. Note that you will need the modern OpenType (otf/ttf) fonts, not the obsolete type1 fonts.

Running a build

As mentioned up top, run a build using npm run build.

If you have all the prerequisites installed, this should "just work", although I can't make any guarantees on how long it will take: on my rather beefy workstation it takes around 85 seconds to run a build for all locales (en-GB, zh-CN, and ja-JP) when there are no new SVG images to generate.

Main site location


Interested in (helping with) localizing the Primer to your own language? That's awesome! Please read the instructions on how to start localizing and please file issues if anything is unclear.

Additional information

Interested in the actual architecture and tech stack? Read the blog post on how Webpack's sync processing and MathJAx's async processing were made to work together:

And read about the tech choices made to enable localization in:

You can’t perform that action at this time.