Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


A statically-typed, functional typesetting system

Subscribe to updates I use Macrodown

Statistics on Macrodown

Number of watchers on Github 332
Number of open issues 24
Average time to close an issue 3 days
Main language OCaml
Average time to merge a PR 1 day
Open pull requests 15+
Closed pull requests 2+
Last commit about 2 years ago
Repo Created about 5 years ago
Repo Last Updated about 2 years ago
Size 2.52 MB
Organization / Authorgfngfn
Page Updated
Do you use Macrodown? Leave a review!
View open issues (24)
View Macrodown activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating Macrodown for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


Build Status

Summary of SATySFi

SATySFi (pronounced in the same way as the verb satisfy in English) is a new typesetting system with a static type system. It consists mainly of two layers the text layer and the program layer. The former is for writing documents in LaTeX-like syntax. The latter, which has ML-like syntax, is for defining functions and commands. SATySFi enables you to write documents markuped with flexible commands of your own making. In addition, its informative type error reporting will be a good help to your writing.

This software is supported by IPA Mitou Project 2017 (see the abstract here).

Install using Homebrew (for OSX users)

There is a homebrew formula for SATySFi.

$ brew install --HEAD nyuichi/satysfi/satysfi

Install using OPAM


Here is a list of minimally required softwares.

  • bzip2
  • cc
  • git
  • m4
  • make
  • unzip
  • wget
  • opam 1.2 (Installation instructions are here.)
  • ocaml 4.06.0 (installed by OPAM)

Example (Ubuntu)

sudo apt-get update
sudo apt-get install build-essential git m4 unzip wget

# The following command will ask if you allow OPAM to modify some files (e.g. ~/.bash_profile).
# Be sure to read its instructions. Otherwise, some environment variables won't be set.
wget https://raw.github.com/ocaml/opam/master/shell/opam_installer.sh -O - | sh -s /usr/local/bin

opam switch 4.06.0
eval `opam config env`
opam update

Example (OS X Mavericks or later)

# Before running this scripts, install essential softwares such as GCC and Make. They can be installed from Xcode Command Line Tools.
# Also, install Homebrew.

brew update
brew install wget opam

# The following command will ask if OPAM modifies some files.
# Be sure to read their instructions. Otherwise, some environment variables won't be set.
opam init

opam switch 4.06.0
eval `opam config env`
opam update


First, clone this repository and submodules. Then build SATySFi using OPAM.

# clone
git clone https://github.com/gfngfn/SATySFi.git
cd SATySFi
git submodule update --init --recursive

# Issue #46: avoid 1.0+beta18 to build core_kernel correctly.
opam pin add -y jbuilder 1.0+beta17
# build
opam pin add satysfi .
opam install satysfi
  • To reinstall, run opam reinstall satysfi.
  • To uninstall, run opam uninstall satysfi.

Usage of SATySFi


satysfi <input files> -o <output file>

in order to convert <input files> (file names separated with spaces) into <output file>. For example, when you want to convert doc.saty into output.pdf, the following command will work:

satysfi doc.saty -o output.pdf

Command-line options

  • -v, --version: Prints the version.
  • -o, --output: Specify the name of the output PDF file. if this option is not given explicitly, the name of the output file is the concatenation of the base name of the input file and the extension .pdf.
  • --full-path: Displays file names with their absolute path when outputting them to stdout.
Macrodown open issues Ask a question     (View All Issues)
  • over 4 years 0-ary parallel definition is not accepted
  • over 4 years Cannot infer types defined in modules
Macrodown open pull requests (View All Pulls)
  • Use Ocamlbuild, menhir, and opam
  • bump camel version to >= 4.06.0
  • update core to v0.10.0
  • Remove redundant dependencies for macOS
  • Remove unit token.
  • Add autoconf in README.md to be required on macOS
  • Faster Travis CI
  • add some math commands to math.satyh
  • Add a command line option --type-check-only
  • Implements `string-compare`
  • Implements `string_scan`
  • Unicode-aware string primitives
  • Parser error reform
  • reduce prerequisite (use curl if possible)
  • Add .editorconfig.
Macrodown list of languages used
Other projects in OCaml