これは「SATySFi Advent Caleandar 2022」の6日目の記事です。
(5日目は yozu さん、7日目は bd_gfngfnさんです。)
Twitter上にはSATySFiに関する様々な提案や要望が見られますが、Twitterだと簡単に流れてしまうため後から見返すのが困難です。この記事では私の独断と偏見で、特におもしろそうだなと思ったツイートをピックアップしてみました。
注意
- 提案の中でも、サードパーティのSATySFiライブラリを整備すれば実現可能なものは除いています
- ツイート下のコメントは私の意見であり、ツイートされた皆様方のご意見とは異なる場合があります。
- 主に2020年後半以降のツイートを参照していますが、全てを網羅できているわけではありません。
レイアウト
SATySFi って文字の回り込みあったっけ
— スマートコン (@mr_konn) October 15, 2022
そういえば本文が1段組の本でも索引だけは2段組、みたいなことは珍しくないけど、今の SATySFi で途中から段組みを変更すること(LaTeX の multicol みたいな)ってできるんだったっけか
— monaqa (@mo_naqa) April 16, 2022
SATySFi、縦書き対応されたら本格的にLaTeXからの乗り換えを検討します…… https://t.co/YvcLtmsv0x
— 二日ゆに (@yuni_hutsuka) May 19, 2022
縦書き対応,SATySFiでも今後苦しまねばならん対象のひとつ
— 画力・博士号・油田 (@bd_gfngfn) July 1, 2022
他にも「ボックスの縦の長さを指定し、ボックスから溢れた文章を別のボックスに流す」等の需要はありそうです。
画像
satysfiでPDFの物理サイズ読めないのかな、読めなさそう
— まも (@MMARIMO0o) June 19, 2022
例えば画像の中に文字が含まれる場合(グラフなど)、文字のサイズを正しくするためにも画像を自然なサイズで表示したいので、このような機能があったほうが良いと思います。
satysfi、初めて使ってみたけど画像挿入するとその場じゃなくて、次ページの先頭に行くのは仕様?
— Tsu (@Tsuge48080649) December 22, 2021
これはLaTeXの挙動と異なるのでびっくりですよね...
SATySFiでパッケージ側から画像を読み込もうとしたらかなりハマってる
— ぷり (@puripuri2100) June 11, 2021
パッケージファイルに画像を含める場合、それをSATySFiコードから参照する方法がないんですよね...。例えば画像ファイルの探索パスにdistディレクトリを追加する等すれば便利になるかもしれません。
SVGをSATySFiコードに変換し、それを用いて画像を描画するという手もありますが...
SATySFiでグラデーションといえばこれで良いのか?https://t.co/d6XJLKf7De
— ぷり (@puripuri2100) March 23, 2019
PDFのグラデーションをSATySFiから出力する方法がないので何とかしたいですね。
otfed 0.0.1 を satysfi-external-repo に登録し,merge完了!(というわけでSATySFiのフォントフォーマットに関するバックエンドを切り替えられました)
— 画力・博士号・油田 (@bd_gfngfn) October 22, 2022
SATySFiのフォンtの周りはどんどん便利になりそうです。個人的にはアウトラインとか取れたらうれしいなと思ってます。
Text Mode に関して
satysfi の graphics, text mode で何かに出力できると嬉しい気がするけど,それ嬉しいのぼくだけでは,みたいな感じもある(QRコード出したい)
— estis (@estis_jc) November 3, 2022
現状だとText Modeからは画像を書き出したりすることができないので、これができれば、例えばHTMLやepub等を生成する等がやりやすくなる気がします。1
ようやくテキスト出力モードが数式をサポートしつつあります #SATySFi
— 画力・博士号・油田 (@bd_gfngfn) September 18, 2022
1枚目: ドキュメント test.saty
2枚目: ミニマルなクラスファイル head.satyh-latex
3枚目: コマンドと出力結果
4枚目: 3の出力結果をLaTeXで処理して生成されたPDF pic.twitter.com/l21GPoH08i
これは期待できそうです。
SATySFi は今後 HTML や MathML や LaTeX などのコードを生成する方向にも進化していくのだろうか
— monaqa (@mo_naqa) October 30, 2022
(CSS 組版なんていう方向もあり得る?)
これを実現するにはクラスファイル側で色々なフォーマットに対応しないといけないですが、できたらおもしろそうです。(特にLaTeX)
LaTeXからの移行
以前SATySFiのコード例をお見せしたときに「これ技術者じゃないユーザが書くのはかなり無理ある構文な気がしますねえ,技術者以外は
— 画力・博士号・油田 (@bd_gfngfn) September 5, 2022
+p{
…
}
の最後の行のようにコード上で閉じ括弧が行頭に来るのとかを何かの打ち間違いだと思ったりしがちなんですよ」という意見をもらって衝撃だったことはある
この発想はなかったです。もしかするとXHTMLの閉じタグ </document>
とかLaTexの \end{xxx}
の方がわかりやすいのかもしれませんね。
SATySFi の型エラー表示はもう少しわかりやすく出来たらいいなと思ってるんだけど、オラに力が無さすぎて改善できていない
— monaqa (@mo_naqa) June 26, 2021
SATySFi、良くも悪くも型システムなので万人にオススメできるかと言われるとはにゃ?というところがある
— Azumabashi (@azm_bashi) January 31, 2022
SATySFiに限らず型の強い言語のエラーは初心者にとって分かりにくいとは言われますよね。
HTMLのようにエラー表示を極力減らし、多少文法が変でも無理やりレンダリングできる言語のほうが直感的なのかも?
SATySFi美文書作成入門 https://t.co/WjWUMLY1gl
— κeen (@blackenedgold) March 13, 2021
SATySFiの利用者にとって使いやすい、言語やパッケージの使い方をまとめたレファレンス的なマニュアルがあったら便利かも知れません。
satysfiへ人口を移すために,現状のplatex,uplatexの使用感をそのままにできるようなstyleを作って配布したほうがいいのかな
— estis (@estis_jc) August 4, 2022
LaTeXとの互換性に関しては、LaTeXとSATySFiの仕組みが大きく異なる以上難しいのですが、例えばsatysfi-latexcmdsを使うと、LaTeX風のコマンドを使うことができます。
いつの間にか、SATySFiが
— 某ZR(ざんねん🙃) (@zr_tex8r) April 24, 2022
「普及を企図していく段階」
に達していたらしい😲#satysfi #TeX以外 https://t.co/ZWtCauG08R
0.1.0が出たら普及活動頑張りたいですね。
バグが取れてすっきりしたのでSATySFiインストールバトルをします
— uint256_t (@uint256_t) May 12, 2020
(LaTeXもですが)SATySFiもインストールが大変というイメージがあるのでなんとかしたいです。(SATySFi用Makefileも使ってみてください)
言語
#SATySFi で条件コンパイルをする方法ってあるんかな(解答・解説つきとなしのpdfを両方生成したい)
— hsjoihs (はすじょい) (@hsjoihs) February 25, 2019
黒魔術が欲しくなることもあります。
SATySFiでインラインコマンドやブロックコマンドの実行時、ctxから、コマンドが配置された場所に固有のID(例えば.satyファイルの先頭からのバイト数など)を得られるようにすれば、例えばblock-textを複数回評価した場合にfootnoteが増殖するみたいなことを防げるな。
— yasuo_ozu@量子コンピュータエンジニア (@yasuo_ozu) April 14, 2021
#SATySFi, 節の中に章を入れてしまうような自体を避けるため、 block-text 型に情報をもたせる ([Chap] block-text, [Sec] block-text) とか、ctxに任意の情報を持たせることができるようにするといい気もするし、そういう事をするとクラスファイルが大変なことになる気もする
— yasuo_ozu@量子コンピュータエンジニア (@yasuo_ozu) December 31, 2020
let ref
ではなく ctx
に情報をもたせられたら、ライブラリ作者にとっては便利だったり。
開発、ドキュメント
SATySFiは今度は英語文献がなさそうだけど,The SATySFibookは勝手に翻訳したらまずいんだろうなぁ.
— abenori (@abenori) February 5, 2021
英語のドキュメントあるかわからんけど、もしもSATySFi使い慣れるのであれば、翻訳ボランティアを普通にしたいな・・・
— 佐藤正尚 (Dion Masanao Sato) (@penguinmeditate) February 10, 2018
現状のSATySFi周りでは日本語のドキュメントが多いため、英語の情報充実が望まれます。
SATySFiのCIは今はパーサーまわりの簡単なテストと既存のドキュメントがエラーなくビルドできることくらいしか確認していないので、ビルド結果のPDFが意図せず変更されていないか確認できると多少は安心度が高まるのかしら
— でこれき (@dico_leque) August 14, 2022
どの程度のレイアウトずれをエラーとみなすかが難しそうですが、例えばsatysfi-xpathでは一部そのようなテストを導入しています。
#rustlang -rfc みたいな #SATySFi rfc がほしい
— yasuo_ozu@量子コンピュータエンジニア (@yasuo_ozu) September 8, 2020
RFCあったら楽しいですがコミュニティの維持コストは上がりそうです。
他ツールとの連携
「SATySFiで図を描くのではなく画像にすればよくない?」という議論について、研究でちょっとずつパラメータを変化させながら計算した大量のグラフを出力する場合、グラフを生成するためのプログラムをSATySFiで記述できれば楽なんですよね。パラメータが複雑な場合一度ファイル名を経由するのは面倒
— yasuo_ozu@量子コンピュータエンジニア (@yasuo_ozu) September 19, 2021
だからPython + Jupyter Notebookがはやってるんだと思います。
わかります。SATySFiとかLaTeXのREPLがjupyter notebookから叩けるようになっていて、\hogeと書いたら次のcellで計算結果がレンダリングされて、レンダリング結果をくっつけて行ったらdocumentになるみたいな形になったら嬉しいんですよね.......
— ふりふりモノトーン (@furifuri_mono) March 8, 2022
Jupyter Notebookと連携できたらユーザー増えそうです。数式処理や定理証明支援系も組合せたら...と考えると夢が広がります。
SATySFiのバイナリをRustから扱いたい
— yasuo_ozu@量子コンピュータエンジニア (@yasuo_ozu) October 15, 2022
→OCamlのffiを使って関数定義を一つづつ書いていく
→量が多すぎて話にならない。自動化したい
→ocaml-bindgenを作る
→まずはtree-sitterでOCamlのファイルを解析するやつ作ろう
となると、SATySFi本体をライブラリ的に扱う需要がありそう。
— yasuo_ozu@量子コンピュータエンジニア (@yasuo_ozu) July 13, 2022
避けていた「SATySFiをRustで再実装」説にまた一歩近づくかもしれない
SATySFi周辺のツールでRustで書かれているものもありますし、OCamlとRustを連携させる方法があればもっと便利になると思います。
パッケージマネージャ、ビルドツール
SATySFi向けパッケージマネージャーがどんなものだといいか、Nixとの統合はどうなされるべきか考えた。とにかく思いついたことを書きまくっているしいろいろエアプだけれどもhttps://t.co/mB6yTJrDJS
— お〜み〜 (@aumy_f) April 30, 2022
これがあるのでSATySFiの新しいパッケージマネージャ欲しい感ある https://t.co/yDAzfHtEki
— yasuo_ozu@量子コンピュータエンジニア (@yasuo_ozu) August 14, 2021
各方面からの指摘やv0.1.xでのパッケージシステムについての記事を受けて考えを整理した結果、色々と加筆修正を行いました #SATySFi
— ぷり (@puripuri2100) October 24, 2022
はてなブログに投稿しました #はてなブログ
SATySFiの最強のビルドツールを作りたい - puripuri2100が進捗の報告をするようですhttps://t.co/3Fgut9nltz
まとめ
他力本願記事で申し訳ありません...
-
出力先がインラインSVGであればそこまでハードル高くないかと思いつつも、SATySFiのGraphicsはPDF出力を前提に作られているためPDF -> SVG変換は必要になりそうです。 ↩