Typst 0.15.0 リリースノート

Typst 0.15.0 は、フォント処理、Web エクスポート、文書構造における機能を拡張した重要なアップデートです。主な追加点として、可変フォントのサポート、アクセシブルな HTML 数式のための MathML 統合、そして単一プロジェクトから複数の出力ファイルを生成できる実験的なバンドルエクスポートターゲットがあります。

コア機能の強化

可変フォントのサポート

Typst は現在、可変フォントをサポートし、テキストスタイリングをより流動的に制御できるようになりました。システムは weightstretchstylesize といった標準テキストパラメータを自動的に wghtwdthitalslntopsz などの一般的なバリエーション軸にマッピングします。

カスタムバリエーションは text 関数の新しい variations パラメータで設定できます。静的フォントと可変フォントを単一ファミリーに統合するため、Typst はフォントファミリー名から "Variable"、"Var"、"VF" といったサフィックスを自動的に除去します。これは、以前これらのサフィックスを font 設定で指定していたユーザーにとっては軽微な破壊的変更です。

マルチファイルバンドルエクスポート

実験的な bundle エクスポートターゲットが導入されました。この機能により、単一の Typst プロジェクトが同時に複数の出力ファイルを生成できます。バンドルは PDF、HTML ページ、PNG、SVG、任意のアセットの任意の組み合わせで構成でき、単一ソースからマルチページのウェブサイトや複雑な文書セットを生成することが可能になります。

書誌管理の強化

Typst 0.15.0 では、1 つの文書に複数の書誌リストを含めることができるようになりました。これにより、以前の制限が解除され、より複雑な学術・業務文書構造が実現します。

Web と PDF エクスポートの改善

HTML エクスポートと MathML

HTML エクスポートは、MathML を介して数式をデフォルトでサポートするようになりました。この移行により、数式の意味論が保持され、文書のアクセシビリティが向上しますが、ブラウザ間での描画一貫性は異なる場合があります。これは、従来 html.frame を使用して数式を SVG として描画していた show ルールの推奨代替手段です。

HTML 段落のグルーピング

Typst は HTML エクスポート時の段落のグルーピング方法を全面的に見直し、予期しない <p> 要素が出現しないようにしました。システムは要素をインラインレベル、ブロックレベル、または「中立」に分類します。

  • インラインレベル: テキスト、box 要素、HTML フレーズコンテンツ。
  • 中立: ほとんどのその他の HTML 要素。
  • ブロックレベル: block 要素と組み込みブロックレベル Typst 要素(見出しなど)。

中立要素は隣接するインラインコンテンツを段落に強制しなくなり、Typst の HTML API がよりクリーンで予測可能な出力を生成します。

PDF と SVG の強化

PDF 画像処理が改善され、JPEG2000(JPXDecode)および JBIG2(JBIG2Decode)画像、ブレンドモードがサポートされました。SVG エクスポートは font-variation-settings CSS プロパティを介した可変フォントをサポートし、トップレベルの xmlns 属性が欠如した SVG も正しく処理します。

言語とレイアウトの変更

ベースライン揃え

破壊的変更として、Typst はレイアウトエンジンのより多くの部分でベースライン情報を保持するようになりました。これは特に boxblock、リスト項目に影響します。例えば、インセットを持つ box 内のテキストは周囲のテキストのベースラインと揃えられ、リストマーカーは項目の垂直サイズに関係なく最初の行と正しく揃えられます。

ファイルパスの取り扱い

Typst は専用の path 型を導入しました。これにより、プロジェクト相対パスをパッケージに渡すことができ、あるファイルで構築されたパスが元のファイルを基準に解決されます。また、Windows で一般的なバックスラッシュはサポートされなくなり、クロスプラットフォーム互換性のためにスラッシュ(/)を使用する必要があります。

数式モードの調整

数式組版に関していくつかの調整が行われました:

  • class 関数: 直接のボディにのみ適用され、再帰的に適用されなくなりました(軽微な破壊的変更)。
  • デリミタ: chevron.l などの追加シンボルを関数として呼び出し、lr 要素を生成できるようになりました。
  • グリフ伸張: lr.sizestretch.size に渡す比率は、表示サイズではなく基底グリフサイズに対して解決されます。

ツールと削除項目

CLI と診断

typst eval CLI サブコマンドが typst query に取って代わりました。また、レイアウト収束問題に対して詳細な診断情報が提供され、無限レイアウトループの原因特定に役立ちます。

破壊的な削除

いくつかの非推奨機能が削除されました:

  • path 要素は curve に置き換えられました。
  • pattern 型は tiling に置き換えられました。
  • pdf.embed 要素は pdf.attach に置き換えられました。
  • スコープ付きデコード関数(例: json.decode)は、バイト列を直接トップレベル関数に渡す形に置き換えられました。

コミュニティの洞察

Hacker News の議論では、Typst が LaTeX と比べてコンパイル速度やプログラム的生成の効率性で優れている点が強調されました。あるユーザーは、Typst により「PDF 文書をプログラムで生成するコストが何千ドルも削減された」と述べています。

しかし、いくつかの制限は残っています。人文学部の学生は、書誌参照を含む議論的脚注が現在うまく機能しないと指摘し、次のように述べています:

議論的脚注は書誌参照を含める際に本当に機能しません… 人文学系やシカゴスタイルの脚注を使用する人にとっては大きな注意点です。

他のユーザーは、LLM が LaTeX からの移行に役立つものの、行間やレイアウト美学といった具体的なデザイン選択にはまだ苦労していると述べています。

Sources