LoginSignup
14
11

More than 3 years have passed since last update.

SATySFi入門とリンク集

Last updated at Posted at 2020-12-12

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

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を作成します。

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の情報は以下のような文献にまとまっています。

まとまった文献

パッケージ情報

Advent Calendar

今後のSATySFiに関する技術情報

SATySFiは現在活発に開発が進められており、(gfngfnさんのツイート参照)今後も多くの機能の搭載が予定されています。今後のSATySFiを考える上で参考になる記事です。

多段階計算について


  1. Dockerイメージはあります: pandaman64/satysfi 

14
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11