本日は
の Series $N=3$ の記事です.
自作パッケージ DocstringAsImage.jl の紹介です.
何ができるの?
- iTerm2 のように Sixel Graphics に対応しているターミナルを用意します
- 次に Julia の REPL を開いて次のようにします
julia> using DocstringAsImage; @imgdoc exp
この手順を踏むことで次のような結果を得ます.
ででーん.ヘルプモードで見るような @doc exp
で呼び出した結果に比べて読みやすいものができました.@doc exp
の結果は下記のとおりです.
サンプルコードの部分は読みやすいかもしれませんが
Compute the matrix exponential of A, defined by
の直後にある数式は読みやすくなったと思います.理系の大学生,大学院生であれば TeX の記法は慣れているので直接ソースコードを読めるように目が訓練されていると思います.
内部で行っていること
大雑把にいえば下記のようなコマンドを実行しています.Julia の Docstring はマークダウンで書くことができます.それを適切に前処理をし sample.qmd
という形でファイルにダンプします.そのあとは Quarto を使って Typst ファイル sample.typ
に変換します.最後に sample.typ
をコンパイルして結果を png ファイルとして生成します.
# 擬似コードです
$ quarto render sample.qmd --to typst
$ ls
sample.typ sample.qmd ...
$ quarto typst compile sample.typ sample_{n}.png
生成された png ファイルを読み込んで Sixel.jl パッケージを使って画像を Sixel Graphics フォーマットとしてエンコードします.それを表示することで画像をターミナルに表示することができています.
本当はやりたかったこと
Typst のコンパイルで得られた PDF を作成しそれを読み込むアプローチを考えていました.PDF を画像として表示する,しかもページャー付きの便利な Rust ライブラリがあります.
最初はこれを使っていましたが,BinaryBuilder でビルドができなかったので諦めました.
DocstringAsImage.jl を公式パッケージにするにあたって tdf_jll を作らないと利便性が損なわれるからです.幸い,Quarto は quarto_jll
パッケージで利用できるようになっているので Quarto, Quarto と紐づいている Typst を使って色々することができるようになりました.
Sixel Graphics は Windows Terminal でも使えるようになるらしいので多くのプラットフォームで使えるようになるはずです.
使えるようになったらWindowsユーザもぜひ試してください.