All Projects → gfngfn → Satysfi

gfngfn / Satysfi

Licence: lgpl-3.0
A statically-typed, functional typesetting system

Programming Languages

ocaml
1615 projects

Projects that are alternatives of or similar to Satysfi

Milewski Ctfp Pdf
Bartosz Milewski's 'Category Theory for Programmers' unofficial PDF and LaTeX source
Stars: ✭ 9,037 (+1008.83%)
Mutual labels:  latex, pdf, functional-programming
Resumake.io
📝 A website for automatically generating elegant LaTeX resumes.
Stars: ✭ 2,277 (+179.39%)
Mutual labels:  latex, pdf, pdf-generation
Pandoc Latex Template
A pandoc LaTeX template to convert markdown files to PDF or LaTeX.
Stars: ✭ 3,750 (+360.12%)
Mutual labels:  latex, pdf, pdf-generation
Printpdf
An easy-to-use library for writing PDF in Rust
Stars: ✭ 404 (-50.43%)
Mutual labels:  pdf, pdf-generation
Pdfjs
A Portable Document Format (PDF) generation library targeting both the server- and client-side.
Stars: ✭ 395 (-51.53%)
Mutual labels:  pdf, pdf-generation
Crowbook
Converts books written in Markdown to HTML, LaTeX/PDF and EPUB
Stars: ✭ 399 (-51.04%)
Mutual labels:  latex, pdf
Rinohtype
The Python document processor
Stars: ✭ 365 (-55.21%)
Mutual labels:  pdf, pdf-generation
Resume
👾 My resume / 我的简历
Stars: ✭ 482 (-40.86%)
Mutual labels:  latex, pdf
One File Pdf
A minimalist Go PDF writer in 1982 lines. Draws text, images and shapes. Helps understand the PDF format. Used in production for reports.
Stars: ✭ 429 (-47.36%)
Mutual labels:  pdf, pdf-generation
Dart pdf
Pdf creation module for dart/flutter
Stars: ✭ 500 (-38.65%)
Mutual labels:  pdf, pdf-generation
Clj Pdf
PDF generation library for Clojure
Stars: ✭ 571 (-29.94%)
Mutual labels:  pdf, pdf-generation
Latex Online
Online latex compiler. You give it a link, it gives you PDF
Stars: ✭ 381 (-53.25%)
Mutual labels:  latex, pdf
Md To Pdf
Hackable CLI tool for converting Markdown files to PDF using Node.js and headless Chrome.
Stars: ✭ 374 (-54.11%)
Mutual labels:  pdf, pdf-generation
Rst2pdf
Use a text editor. Make a PDF.
Stars: ✭ 404 (-50.43%)
Mutual labels:  pdf, pdf-generation
Letter Boilerplate
Finest letter typesetting from the command line
Stars: ✭ 374 (-54.11%)
Mutual labels:  latex, pdf
Printable Mockups
Create printable UI mockups & wireframes templates
Stars: ✭ 479 (-41.23%)
Mutual labels:  pdf, pdf-generation
Pikepdf
A Python library for reading and writing PDF, powered by qpdf
Stars: ✭ 566 (-30.55%)
Mutual labels:  pdf, pdf-generation
Invoice Boilerplate
Simple automated LaTeX invoicing system
Stars: ✭ 604 (-25.89%)
Mutual labels:  latex, pdf
Ultimate Beamer Theme List
A collection of custom Beamer themes
Stars: ✭ 652 (-20%)
Mutual labels:  latex, pdf
Latexdraw
A vector drawing editor for LaTeX (JavaFX).
Stars: ✭ 336 (-58.77%)
Mutual labels:  latex, pdf

logo1

Build Status

日本語版 README はこちら

Summary of SATySFi

SATySFi (pronounced in the same way as the verb “satisfy” in English) is a new typesetting system equipped with a statically-typed, functional programming language. 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 OCaml-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 was supported by:

  • IPA Mitou Project 2017 (June 2017 – February 2018; see the abstract here written in Japanese),
  • Dwango Co., Ltd. (October 2018 – March 2019; as a part-time job), and
  • many anonymous supporters who bought The SATySFi​book,

and its development continues to this day (February 2021).

Install using Homebrew (for OS X users)

A Homebrew formula is provided for SATySFi (v0.0.2).

$ brew install --HEAD nyuichi/satysfi/satysfi

Install using OPAM

Prerequisites

Here is a list of minimally required softwares.

  • bzip2
  • cc
  • git
  • m4
  • make
  • unzip
  • wget or curl
  • ruby
  • opam 2
  • ocaml 4.10.0 (installed by OPAM)

Also, we must add an external OPAM repo to build. This can be done by the following command.

opam repository add satysfi-external https://github.com/gfngfn/satysfi-external-repo.git
opam update

Example (Ubuntu)

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

sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh)

# 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.
opam init --comp 4.10.0

eval $(opam env)

opam repository add satysfi-external https://github.com/gfngfn/satysfi-external-repo.git
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 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 --comp 4.10.0

eval $(opam env)

opam repository add satysfi-external https://github.com/gfngfn/satysfi-external-repo.git
opam update

Build

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

# clone
git clone https://github.com/gfngfn/SATySFi.git
cd SATySFi

# build
opam pin add satysfi .
opam install satysfi
  • To reinstall, run opam reinstall satysfi.
  • To uninstall, run opam uninstall satysfi.

Setup for SATySFi

Before using SATySFi, one should put libraries and fonts onto the appropriate directory. This can be done by invoking the following commands in order:

./download-fonts.sh
./install-libs.sh

The former downloads the fonts required by the default settings into lib-satysfi/dist/fonts/, and the latter copies lib-satysfi/ to /usr/local/share/satysfi/.

During this setup, the following fonts are downloaded. Consult their license before using them.

Usage of SATySFi

Type

satysfi <input file> -o <output file>

in order to convert <input file> 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

Starting out

First of all, let’s try to compile the demo file. It is in demo folder. Because this demo file has MakeFile, All you should do is only type make.

cd demo
make

If demo.pdf is created, then the setup has been finished correctly.

Reference

In addition, a concice reference of SATySFi is written by SATySFi itself in doc folder. You need to compile it to read.

cd doc
make

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.
  • -b, --bytecomp: Use byte compiler and enhance performance of computation.
  • --full-path: Displays file names with their absolute path when outputting them to stdout.
  • --type-check-only: Stops after type checking.
  • --debug-show-bbox: Outputs bounding boxes for each glyph (for the purpose of debugging).
  • --debug-show-space: Outputs boxes for spaces (for the purpose of debugging).

Learning SATySFi

Wiki (currently written only in Japanese) has some information about learning SATySFi.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].