Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@yasuo-ozu

SATySFi入門とリンク集

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 

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?