SATySFi Advent Calendar 2020 12日目の記事です。
11日目の記事は、@na4zagin3さんのSATySFi で「太字」にしたい(satysfi-fss の紹介)
13日目の記事は、amutakeさんの2020年の docker-satysfi 振り返りです。
今回の記事は@na4zagin3さんの*nix 向け SATySFi インストールバトル手引き 2020年10月版 を参考にさせていただきました。
SATySFiとは?
SATySFiは、古く問題点の多いLaTeXを置き換える存在として現在国際的に注目が集まりつつある組版システムであり、日本人の@bd_gfngfnさんにより開発されています。
詳しくは以下の記事を参照。
SATySFiに関すること
インストール
OCamlのインストール
SATySFiはバイナリ形式では配布されていない1ため、まず、OCamlの環境をインストールする必要があります。
$ pacman -S ocaml opam
OPAMの外部リポジトリの追加
$ opam repository add --all-switches satysfi-external https://github.com/gfngfn/satysfi-external-repo.git
$ opam repository add --all-switches satyrographos-repo https://github.com/na4zagin3/satyrographos-repo.git
SATySFiのインストール
パッケージマネージャヘルパのSAtyrographosもインストールします。
$ opam install satysfi satyrographos
パッケージのインストール
標準ライブラリ及びSatyrographosが提供するパッケージをインストールします。
$ opam install satysfi-dist satysfi-fss
$ satyrographos install
ドキュメントの作成
まずテンプレートからmydoc
という名前のドキュメントを作成します。
$ satyrographos new '[experimental]doc-make@ja' mydoc
こうすることで、mydoc
ディレクトリ内に以下のファイルが作成されます。
Satyristes
(lang "0.0.3")
(doc
(name "main")
(build ((make)))
(dependencies
(;; Standard library
dist
;; Third-party library
fss
)))
Makefile
.PHONY: all
all: doc
# SATySFi/Satyrographos rules
%.pdf: %.saty
satyrographos satysfi -- -o $@ $<
%.pdf.deps: %.saty
satyrographos util deps -r -p --depfile $@ --mode pdf -o "$(basename $@)" $<
# User rules
doc: main.pdf
-include main.pdf.deps
local.satyh
% プロジェクト用函数・コマンド定義用ファイル
@require: code
@require: math
let-block ctx +frame content =
let pads = (10pt, 10pt, 10pt, 10pt) in
let decoset = VDecoSet.simple-frame-stroke 1pt (Color.gray 0.75) in
block-frame-breakable ctx pads decoset (fun ctx -> read-block ctx content)
let-block ctx +display-boxes content code =
read-block (ctx |> set-paragraph-margin 12pt 0pt) '<+frame(content);>
+++ read-block (ctx |> set-paragraph-margin 0pt 12pt) '<+code(code);>
% 数式コマンドの定義
let-math \factorial x =
${#x \mathpunct{\mathrm-token!(`!`)}}
ビルド
以下のコマンドを実行することで、main.pdf
が出力されます。
$ SATYROGRAPHOS_EXPERIMENTAL=1 make
外部パッケージの利用
ここでは、texlogo
というパッケージを使ってみます。
パッケージの検索
$ opam search 'satysfi-*'
# Packages matching: match(*satysfi-**)
# Name # Installed # Synopsis
satysfi-arrows -- A SATySFi arrows library
satysfi-arrows-doc -- A SATySFi arrows library
satysfi-assert-eq -- Provides function as the Rust's assert_eq! macro
satysfi-azmath -- A SATySFi package containing A-to-Z mathematical commands
satysfi-azmath-doc -- A SATySFi package containing A-
...
インストール
$ opam install satysfi-texlogo
$ satyrographos install
main.saty
から利用
以下のようなmain.saty
を作成します。
@require: stdjabook
@require: texlogo/texlogo
@import: local
document (|
title = {texlogo};
author = {yasuo_ozu};
show-title = true;
show-toc = false;
|) '<
+p{
hello, \LaTeX;
}
>
参照すべきドキュメント
SATySFiの情報は以下のような文献にまとまっています。
まとまった文献
- 公式Wiki
- The SATySFi Book ※現在は無料でもダウンロードできます
- learn-satysfi by @puripuri2100さん
- SATySFi-API by @puripuri2100さん ※主にパッケージ開発者向け
- SATySFi My Soul by @nekketsuuuさん
パッケージ情報
- Satyrographos Package Index by @matsud224さん ※事実上の公式
- SATySFi's packages list by @puripuri2100さん
- Awesome SATySFi by @uechzさん
Advent Calendar
今後のSATySFiに関する技術情報
SATySFiは現在活発に開発が進められており、(gfngfnさんのツイート参照)今後も多くの機能の搭載が予定されています。今後のSATySFiを考える上で参考になる記事です。
多段階計算について
-
Dockerイメージはあります: pandaman64/satysfi ↩