世界を動かす技術を、日本語で。

Typstで博士論文を書きました

概要

  • Typst で博士論文を執筆した体験談
  • Typst の利点と欠点を詳細に比較
  • LaTeX との違いや変換時の問題点
  • テンプレート作成・エコシステム の現状
  • 今後の推奨・使い分け についての所感

Typstで博士論文を書いた話

  • 博士論文を Typst で執筆、物理的な印刷待ちの間に体験をまとめた内容
  • TypstLaTeX の代替を目指す現代的な組版言語
  • 言語仕様は Markdown動的型付きRust のハイブリッド
  • 日常的な執筆はMarkdownライクで快適、スクリプト機能も強力
  • コードと文章の往復が容易、データ処理も一貫して行える

Typstの良かった点

  • コンパイル速度

    • LaTeXのような 90秒 待ちがなく、 Typst は小中規模なら即時プレビュー
    • 150ページ超でも クリーンビルド15秒程度、インクリメンタル時はほぼ瞬時
    • 大幅なレイアウト変更でも 10秒以内 で完了、作業効率向上
  • 言語仕様

    • 一貫性のある 動的型付き言語、Rust経験者には特に馴染みやすい
    • LaTeXのようなパッケージごとの文法差異がない
    • TOMLファイルの データ自動読み込み・図生成 も容易
    • 依存管理やLSP対応など 現代的開発ツール も充実
  • レイアウト調整

    • テンプレート編集が直感的、LaTeXのテンプレート改変よりも圧倒的に容易
    • 自由度が高く、思い通りのデザインを実現可能
  • シンタックスハイライト

    • コード掲載時の ハイライト精度 が高い
    • TextMateグラマー対応だが、独自のshowルール+正規表現で柔軟に対応
    • 特定言語の構文解析もTypst内で実装可能
  • エラーメッセージ

    • LaTeX特有の「Missing $ inserted!」のような意味不明エラーがない
    • 問題箇所を正確に指摘し、デバッグが容易

Typstの不満点・課題

  • 文献管理

    • 1ドキュメント1文献ファイル 制限、章ごとの複数文献リスト不可
    • Bibtexの変数利用や分割管理ができず、Makefileで結合する必要
    • パッケージ「alexandria」で複数文献対応は可能だが自動化は不十分
    • 書誌スタイル変換(例:タイトルのsentence case化)が不完全
    • BibtexフィールドのCSL変換が不透明、@TechReport等で情報欠落も発生
    • 細かな不具合が積み重なる「千の紙切れによる死」状態
  • エラーメッセージの限界

    • 複雑なパッケージやshowルール利用時にはエラー箇所が特定しづらい
    • 長いトレースバックが欲しい場面が多い
    • 「Layout did not converge in 5 attempts」等の警告はデバッグ困難
  • LaTeXとの互換性・変換

    • 学術界では依然として LaTeX標準
    • 既存論文のTypst変換はPandocでほぼ自動化可能
    • 新規論文はTypstで執筆→PDF提出→最終稿は独自ツールでLaTeX変換
    • 変換時に\includepdfを多用するため、出版社対応が懸念点
    • コラボ時は周囲にTypst習得を強いる必要あり
  • エコシステムの未成熟

    • Typst用テンプレートは自作が必要な場合が多い
    • 学会・ジャーナル用テンプレートも未完成や不備が散見
    • IEEEテンプレートは会議用のみ、LLNCSテンプレートもマージン誤り

Typstを博士論文に使うべきか

  • プログラミングやカスタマイズが好きな人 には強く推奨
  • 細部まで調整でき、作業効率も高い
  • 問題解決やテンプレート作成も楽しめる人向け
  • すぐに使える完成度 を求める場合は現時点ではLaTeXが無難
  • Typstは小規模文書や実験用途で導入し、大規模論文は今後に期待

まとめ

  • Typstは 柔軟性と現代的な開発体験 を提供
  • ただし 文献管理・エコシステム には未熟な部分が残る
  • LaTeXとの互換性・普及度 も課題
  • 将来的には大規模論文でも主流になり得る可能性
  • 現状は 用途や好みに応じて使い分け が最適

Hackerたちの意見

Typstはすごく期待できるね。特にIEEEのような共通テンプレートがあって、LaTeXと同じ内容が作れるのがいいよね。LaTeXで一番イライラするのはツールだな。前回の論文では、普通は動くmakefileを使ったんだけど、うまくいかないときは2回実行すれば解決したりしてた。たまにgit clean -xdfを実行しないといけなくて、その後はうまくいったり。何が起こってたのか全然わからないし、世の中のmakefileは異常に複雑で、特定のエラーが出たら出力を解析して同じコマンドを再実行するだけみたい。

狂気の定義は、同じことを二度やって違う結果を期待することだよね。偶然にも、これがLaTeXをコンパイルする基本的な方法なんだ。

完璧な解決策ではないけど、もしかしたらもうMakefileの中で使ってるかもしれないね。でも、まだ知らない人のために言うと、Latexmkっていうのがあって、これが面倒なことを自動化してくれるんだ。少なくともDebianではtexlive-fullに含まれてると思うよ。それに、-outdirみたいな便利なフラグもあって、LaTeXの中間ビルドファイルを別のディレクトリに送れるから、gitignoreしやすいんだ。 https://mgeier.github.io/latexmk.html#running-latexmk

以前は理解してたと思うけど、真剣なLaTeXを書くのが久しぶりだから、もうわからないな。10年以上前の自分の_quick-build-latex_スクリプトにこんなのがあったよ:if [ -z "$(find . -name "*.bib" -print0)" ]; then # TOCビルドなどのために2回実行 pdflatex -interaction=nonstopmode "$SOURCE_FILE" && \ pdflatex -interaction=nonstopmode "$SOURCE_FILE" else pdflatex -interaction=nonstopmode "$SOURCE_FILE" && \ bibtex "$SOURCE_FILE" && \ pdflatex -interaction=nonstopmode "$SOURCE_FILE" && \ pdflatex -interaction=nonstopmode "$SOURCE_FILE" fi だから、もしbibtexを使ってるなら3回実行する必要があるけど、そうじゃなければ2回だけでいいのかな?あの頃が終わってよかったな。

最近はTectonicを使ってLaTeXソースをコンパイルしてるよ。自動的に何回もコンパイルする必要があるケースを処理してくれるから便利。

徐々にTypstに移行してるけど、すごく新鮮な気分だよ。コンパイルもめちゃくちゃ早いし。多分、一番難しいのは数学記法の文法を再学習することかな。Typstにはこの分野で面白い意見があるね。

mitexも選択肢だね。今の時点で別の記法を学ぶなんて無理だわ。

Typstは見た目がいいけど、実はLaTeXに戻るつもり。VS CodeでClaude Codeと組み合わせて使うつもり。LaTeXからはしばらく離れてた(博士号を取得してから10年以上経ってる)。TikZのコマンドは暗記してたし、洗練された前文も書いてた(たくさんの\newcommandを使ってた)。LaTeXの数式表記はまだ覚えてるけど(筋肉記憶に入ってるし、Markdownでも使われてる)、他のことはすっかり忘れちゃった。Claude Codeは驚くことに、そういう他のことも全部知ってる。やりたいことを言えば、95%は1〜2回でできちゃう。しかも、エラーメッセージも理解してくれる。LaTeXで一番面倒なのは、何が間違ったのかを見つけることだけど、Claudeだとそれがそんなに大きな問題じゃなくなる。

なんでCSの博士課程の候補者は組版にそんなに魅了されるんだろう?好きなことに夢中になるのはいいけど、誰かがLaTeXの話を始めて、マクロに何ヶ月もかけたとか言い出すと、「またLaTeXの罠にハマった不運な犠牲者が出たな」と思っちゃう。まるで、先延ばしにする学生を餌にするアントライオンみたいだね。

オーストラリアの共同医学-CSの名誉論文(1年間の研究プロジェクト)をWordで書いたんだけど、医学の指導教官は満足してくれた。でも、CSの指導教官は、組版が気に入らないからLaTeXで再フォーマットするように言ってきた。正直、彼の言うことも分かる。'TeXで書いた方が見た目が全然良かったから。でも、それは多分、学習した好みなんだよね。要するに、文化の問題だね。

LaTeXは、私たちに正当性を感じさせてくれるからだと思う。(だからこそ、LaTeXの文書では、文章よりも数式表記が過剰になりがちなんだよね。)教授やその分野の著名人が作ったような文書ができるから、Wordの数式エディタで書いたら、あんまり真剣に見えないんだよね。初めてAldus PageMakerでデザインしたニュースレターをレーザープリンターで印刷したときの喜びと同じだ。まだティーンエイジャーだったけど、「プロ」になった気がした。

LaTeXの組版は解決済みの問題だよ。MemoirやClassic Thesisを使って、microtypeを組み合わせれば、素晴らしい結果が得られるし、調整に時間をかける必要もない。Typstは面白いけど、microtypeが提供するすべてのマイクロタイポグラフィ機能にはまだ対応してない。個人的には、それが大きな違いを生むと思う。

ここでは、論文が本として印刷されるのが一般的で、その本が評価されるんだ。博士号の場合は、委員会や仲間、他の関係者の前で博士論文の防衛があって、みんなにその本が配られる。通常、本の注文プロセスは、埋め込まれたフォント付きのPDFを送って、大学の印刷所で作ってもらう感じ。配布とかも大学がやってくれるから、初回でちゃんと見えるようにしたいよね。ここ数年で、本をある程度プレビューできるようになったけど、確実に正しくする方法はLaTeXみたいなものを使うことだね。昔はWYSIWYGソリューションの中でも数少なかったし、例えばWordで特定の必要なことをやるのが本当に難しかったんだ。ページ番号を飛ばしたり、ローマ数字でやったりするのとか。

みんながその罠にハマったわけじゃないよ!私の論文は、ほぼデフォルトのドキュメントクラスといくつかのパッケージだけで書いたし、最後の方で大学のドキュメントスタイルを適用して準拠しただけ。博士号のテーマについては十分すぎるくらい忙しかったから、組版やマクロいじりに時間をかける余裕なんてなかった。あれから数十年経って、私が一番生産的だった共著者は、組版を気にせず基本的なことだけを使う人たちだって分かった。TikZや派手なマクロにこだわる人たち:すぐにイライラするようになるよ。

大学では数学を専攻してたんだけど、タイプセッティングにはすごく気を使うんだよね。手書きで全部書くのは本当に大変だから、タイピングの方が早い方がいいんだけど、数式を何行も書くとなると、手書きより早く打つのは簡単じゃないんだ。実際、物理の方が数学よりもタイピングしながらついていくのがずっと難しかったし。授業や論文に追われてると、アイデアを紙やデジタル形式にどれだけ簡単に移せるかが、世界で一番大事なことになるんだよね。だから、みんな自分のタイプセッティングエンジンの質にこだわったり、マクロのコツを交換したりするのも納得できる。友達からたくさん助けてもらったし、私のデフォルトのLaTeXヘッダーは、自分のものが50%で、同じ専攻の友達からコピーしたものが50%だったよ。

なぜCSの博士課程の候補者はタイプセッティングにそんなに魅了されるのか?おそらく、ドナルド・クヌースがTeXを作り、レスリー・ランポートがLaTeXを作ったからだろうね。コンピュータサイエンスの偉大な頭脳が、美しい論文や記事を書くためのツールを作ったんだ。エレガントなアイデアが美しく提示されると、論文を書くのも読むのも楽しくなるよね。

タイプセッティングやWYSIWYMの小さな、でも重要な側面は、大きな文書(例えば論文)を個別のサブコンポーネントに分解できることなんだ。各セクションを個別の.texファイルで作業して、後でトップレベルの.texファイルに含めることができる。この設定はgitのようなVCSと相性がいいし、スクリプトを使うことでさらに便利になるんだ。例えば、図やプロットを生成するためのスクリプトを実行していると、LaTeXは新しいファイルを拾って(ファイル名が変更されていなければ)再コンパイル後にその図を更新してくれる。これはMS Wordで大きな文書をスクロールしながら、各図を個別に更新するのとは比べ物にならないよ。文書のサイズや図の数が増えると、MS Wordの使い勝手は悪くなるからね。LaTeXの初期設定の手間は、文書全体にわたって「償却」されるから、最小限で済むんだ。

今はどうか分からないけど、2000年代は数式関連のものをWord系で扱うのがマジで苦痛だった。修士論文では30ページくらいの数式があって、全部相互依存してたから、これを打ったり打ち直したりするのに永遠にかかってた。あと、章ごとのファイルを持ったり、使いやすいエディタで作業するのも助かるよね。

人がLaTeXとWordの両方で論文を書くのを見てきたけど、逆だと思うな。Word(または他のWYSIWYGエディタ)で論文を書く人は、LaTeXで書く人よりもレイアウトに時間をかけてる。しかも、書いてる間にその時間を使っちゃうから、LaTeXだとタスクを分けられるから流れに乗りやすいんだよね。理論的にはWordで書いてレイアウトを無視できるけど、実際にはかなりの規律が必要で、結局は図を動かしたり、スペースや改行を使って見出しを好きな場所に持っていったりすることになる。特に、実際の執筆から逃げるための手段としてね。

誰かがTypstのソースやレンダリングを見たことがないかもしれないから、いくつか作ったドキュメントを紹介するね。最初はTodd C. MillerのLaTeX履歴書テンプレートを基にしたもの:- https://typst.app/project/rDUHMUg5vxl4jQ5q2grGPY 次は耐久性のある委任状:- https://typst.app/project/rs9ZgGLhgM7iPvFs7PQv5O 三つ目は遺言書:- https://typst.app/project/r45dVk6MpLjsoXMvxkTxsE

Typstに乗ってたんだけど、特にレイアウトエンジンが長文用に追加の縦のコントロールを持ってるから、LaTeXにはないんだよね。でも、ちょうど移行しようとしてた時に、LLMコーディングが良くなったか、少なくとも十分良くなったんだ。今のところ、レイアウトをLaTeX以外でやるのが苦手なんだよね。LaTeX自体は得意じゃないけど、Typstには本当にひどい。マジで悪い。あと1年か6ヶ月くらい待てば良くなるかも!

まあ、MarkdownやRustではいい感じだよね。Typstのドキュメント概要をプロンプトに入れたら解決するかも?

コーディングにLLMを使うのが好きな理由はわかるよ。考えなくて済むからね。でも、LLMなしでは新しいツールを使えない人がいるのを見ると、すごくイライラする。これって新しい問題じゃないと思うけど、以前は新しい言語を使いたくない人が多かったのも、インターネットからスニペットをコピーできなかったからだし、それもまたイライラすることだったよね。

Typstを使うのをためらう理由は、今やLaTeXの数式構文がどこにでもあるからだね。$x^2=1$って書けば、いろんなところで表示されるし。新しい数式の構文を学ぶのは、正直興味がないんだよね。

まあ、$x^2=1$はTypstでも普通に使えるけどね。

30年後もLaTeXはオープンソースのままだろうし、たぶんメンテナンスもされてると思う。Typstはオープンソースとクローズドソースのミックスみたいだけど、一般的にはオープンソースの部分が無視されて、重要な機能がクローズドソースの部分に実装される傾向があるんだ。つまり、会社自体が存続しない限り、長生きする可能性は低いってことだね。

それには同意できないな。ウェブアプリのエディタはクローズドソースだけど、提供されている多くの部分はオープンソースだから、ローカルでの編集は似たような(むしろ自分的にはより良い)体験ができるよ。TypstのコンパイラやLSP、必要なものは全部オープンソースだし。個人的には、OverleafがもともとLaTeXプロジェクトを作った人たちと同じだったら、状況はもっと近いと思う。Typstの組織が消滅する可能性があるとすれば(1.0バージョンが出た後のメンテナンス中心だとして)、パッケージがTypstのサイトから自動的にダウンロードされることだけど、オープンなリポジトリは簡単に作れると思う。使われるパッケージはオープンソースのgitリポジトリからのものだから、クローズドソースのサイトはそのフォルダのtar.gzファイルをホストしてるだけだし。大したことじゃないと思うよ。

クローズドソース部分での重要な機能の実装 具体的にはどんな重要な機能?

LaTeXを使い続けるよ。フェティッシュじゃなくて、ジャーナルやカンファレンスがまだtypstを受け入れないからね。いつか受け入れるようになるのかな?それは彼らがツールチェーンに統合する意欲次第だと思う。

Typistは多分数年後には消えるか、買収されるだろうね。LaTeXは数十年は残ると思う。

AIが私たちの文章の主な対象で、マークアップ形式を再考する主な理由なんだ。セマンティック圧縮が全てで、TypstのソースやMarkdown、AsciidocはLaTeXのソースよりもずっと簡潔なんだ。私は観察してるだけで、誰かを説得しようとは思ってない。ここ6ヶ月の私の人生はひっくり返って、AIとトポロジー研究やコードでうまく作業するための正しいタッチを見つけようと奮闘してる。AIは実際、SVGの数式図をほとんどの人よりも上手に読めるし、LaTeXのソースを読むのが好きじゃないのも分かる。ジャーナルの議論は理解できるけど、本当に?まだ紙に印刷するかのように二段組フォーマットにこだわるジャーナル編集者もいるし、もう気にしない年齢になったよ。自分の作品をサイレントアニメーションとして発表して、後で渋々AIのプロンプトをTypstのドキュメントとして公開しようかなって考えてる。