Typst について
そろそろ Typst の勉強を始めようか
Bluesky の TL を眺めてて気がついたのだが Typst の Bluesky アカウントがあるらしい。 Mastodon のアカウントもあるな。 ブログもある。
最新のブログ記事を見ると,バージョン 0.13 のハイライトとして
と書かれていた。 どうやらこのバージョンから HTML 形式へのエクスポート機能を搭載していくらしい(まだ完全ではないようだが)。 またフォント制御もよくなっているみたいで(たとえば日本語だと仮名・漢字と英数字では別のフォントを割り当てたくなったりするだろうし)ちょっと期待できる。
というわけで新たに typst セクションを設け,お勉強を通して Typst で出来ること出来ないことを探ってみることにする。
Typst とは
“Typst” は「タイプスト」と読むらしい。
IPA: /taɪpst/. “Ty” like in Typesetting and “pst” like in Hipster. When writing about Typst, capitalize its name as a proper noun, with a capital “T”.
イケてる組版ソフトってこと?
簡単に言うと Typst は独自のマークアップ言語とそれを解釈して組版を行うツールおよびサービスを指す。 組版ソフトとしては定番の $\mathrm{\LaTeX}$ や Markdown テキストと比較して以下のような特徴があるらしい。
- マークアップについては $\mathrm{\LaTeX}$ より簡易で Markdown より高度な表現が出来る
- マクロを使った制御が可能
- 組版結果を PDF形式のファイルに直接出力できる
- 組版結果を HTML 形式へエクスポートができる(0.13 より)
- コマンドライン・ツールは Rust 言語で組まれている
コマンドライン・ツールは GitHub リポジトリ でコードとバイナリが公開されている。 ライセンスは Apache-2。
しかし Typst ではドキュメント環境を Web サービスとして提供していて,どうやらこちらがメインっぽい。


とりあえず言語仕様や組版機能を確認するだけなら Free でも問題なさそうなので,しばらくはこれを使うことにする(Free 版を使うだけなら決済情報の入力は不要)。 まぁ $\mathrm{\LaTeX}$ にもクラウドサービスがあったりするし,こういうところで収益を確保するのはアリかもしれない(実際に収益があるかどうかは知らないが)。
なお,コマンドライン・ツールについては Windows 環境なら Winget または Scoop でインストールできる。
$ winget search typst
名前 ID バージョン 一致 ソース
-----------------------------------------------------------
Typst Typst.Typst 0.12.0 winget
typstyle Enter-tainer.typstyle 0.12.15 Tag: typst winget
$ scoop search typst
Results from local buckets...
Name Version Source Binaries
---- ------- ------ --------
typst 0.13.0 main
Winget のほうがタイムラグがあるのかな? 手元の Ubuntu 機では Snap でインストール可能だった。
$ snap search typst
Name Version Publisher Notes Summary
typst 0.13.0 reknih - A new markup-based typesetting system that is powerful and easy to learn.
macOS は Homebrew からインストール可能かな。 知らんけど。
VS Code 用の拡張機能や vim 用のプラグインもあるらしい。
ちょっと触ってみる
先程のダッシュボードを開いて Empty document
を押してみる。

適当に “sample
” とかで始めてみるか。
以下の文言を入力する。
= アルベルト・アインシュタインについて
アルベルト・アインシュタインは1879年3月14日,ドイツ生まれの理論物理学者です。
彼による革命的な3つの論文「光電効果の理論」「ブラウン運動の理論」「特殊相対性理論」が発表された1905年は「奇跡の年」と呼ばれています。
構文について今は後回しにして,組版結果はこんな感じ。

うわぁ。 これは酷い(笑)
まずエディタのフォントが "Cascadia Mono", monospace
になってるな。

画面左上に ↓ ボタンがあるので,これを押下して PDF ファイルをダウンロードし,プロパティを見てみる。

なんか中華フォントっぽい。 句読点も明らかにおかしいし。 やっぱ,まともに日本語のドキュメント環境が欲しいならローカルで作らないとダメかな。 ちょっと考えてみよう。
【追記 2025-02-21】
Mastodon で教えていただきました。
有難うございます 🙇
エディタ画面の左上に Ag
ボタンがあってフォントを選択できるのだが Noto Sans/Serif CJK JP フォントが見当たらなくて(リージョン未指定の Noto Sans/Serif はある)対応してないのかと思って諦めていた。
フォントのアップロードはしたくなかったし。
さっそくフォントを指定してみる。

生成した PDF をダウンロードしてプロパティを見てみると

おー。 ちゃんと Noto Sans/Serif CJK JP フォントが埋め込まれている。 フォントの指定の仕方については次回の記事を参照のこと。
ブックマーク
参考文献
- Typst完全入門: LaTeXより簡単、Markdownより強力、美しいドキュメント作成術
- doitsu (著)
- 2024-12-08 (Release 2024-12-08)
- Kindle版
- B0DPXBNTRS (ASIN)
- 評価
マークアップ言語および組版ツールである Typst についての解説。 Kindle 版のみの提供。固定レイアウトではないためレイアウトが崩れまくって読みにくい。この手の技術解説書は固定レイアウトの Kindle 版か,いっそ PDF で出してほしい。でも Typst についてまとまった解説のある日本語の本は他に見当たらなかったのでありがたい。
- [改訂第9版]LaTeX美文書作成入門
- 奥村 晴彦 (著), 黒木 裕介 (著)
- 技術評論社 2023-12-09 (Release 2023-12-09)
- 単行本(ソフトカバー)
- 4297138891 (ASIN), 9784297138899 (EAN), 4297138891 (ISBN)
- 評価
2023年末に出てるのに気が付かなかった orz
今回は版元で PDF 版を買った。