Typst 0.15.0 發佈說明

Typst 0.15.0 是一次重大的更新,擴展了該工具在字體處理、網頁匯出以及文件結構方面的能力。關鍵新增功能包括支援可變字體(variable fonts)、用於無障礙 HTML 方程式的 MathML 整合,以及一個實驗性的 bundle 匯出目標,允許單一專案生成多個輸出檔案。

核心功能增強

可變字體支援

Typst 現在支援可變字體,允許對文字樣式進行更流暢的控制。系統會自動將標準文字參數(例如 weightstretchstylesize)映射到常見的變體軸(variation axes)如 wghtwdthitalslntopsz

可以透過 text 函數中新增的 variations 參數來配置自定義變體。為了將靜態字體與可變字體統一為單一字體族,Typst 現在會自動修剪字體族名稱中的後綴,例如 "Variable"、"Var" 和 "VF"。對於先前在 font 設定中指定這些後綴的使用者來說,這是一個輕微的破壞性變更(breaking change)。

多檔案 Bundle 匯出

引入了一個實驗性的 bundle 匯出目標。此功能使單一 Typst 專案能夠同時發出多個輸出檔案。這些 bundle 可以由 PDF、HTML 頁面、PNG、SVG 和任意資產的任何組合組成,使得從單一來源生成多頁網站或複雜的文件集成為可能。

增強的書目管理

Typst 0.15.0 現在允許單一文件包含多個書目。這消除了先前的限制,並使更複雜的學術和專業文件結構成為可能。

網頁與 PDF 匯出改進

HTML 匯出與 MathML

HTML 匯出現在透過 MathML 原生支援方程式。這種轉換透過保留數學表達式的語義來提高文件的無障礙性,儘管在不同瀏覽器之間的渲染一致性可能會有所不同。這是對於先前使用 html.frame 將方程式渲染為 SVG 的 show rules 的建議替代方案。

HTML 段落分組

Typst 重新設計了 HTML 匯出中段落的分組方式,以防止出現非預期的 <p> 元素。系統現在將元素分類為行內層級(inline-level)、區塊層級(block-level)或「中立」(neutral)。

  • 行內層級:文字、box 元素以及 HTML phrasing content。
  • 中立:大多數其他 HTML 元素。
  • 區塊層級block 元素以及內建的區塊層級 Typst 元素(例如標題)。

中立元素不再強制將相鄰的行內內容放入段落中,確保了所編寫的 HTML API 產生的輸出更加乾淨、可預測。

PDF 與 SVG 增強

PDF 圖像處理已得到改進,支援了 JPEG2000 (JPXDecode) 和 JBIG2 (JBIG2Decode) 圖像,以及混合模式(blend modes)。SVG 匯出現在透過 font-variation-settings CSS 屬性支援可變字體,並處理缺乏頂層 xmlns 屬性的 SVG。

語言與佈局變更

基線對齊

作為一項破壞性變更,Typst 現在在佈局引擎中保留了更多的基線資訊。這特別影響了 boxblock and 列表項目。例如,在具有內邊距(inset)的 box 中的文字現在會與周圍文字的基線對齊,而列表標記(list markers)會與項目的第一行正確對齊,無論項目的垂直尺寸如何。

檔案路徑處理

引入了專用的 path 類型。這允許將專案相對路徑傳遞給套件(packages),並確保在一個檔案中構建的路徑是相對於其原始檔案解析的。此外,不再支援檔案路徑中的反斜線(Windows 常見),必須使用正斜線以確保跨平台相容性。

數學模式調整

對數學排版進行了幾項調整:

  • class 函數:現在僅應用於其直接主體而非遞迴地應用(輕微的破壞性變更)。

  • 分隔符:額外的符號(例如 chevron.l)現在可以作為函數調用以產生 lr 元素。

  • Glyph Stretching:傳遞給 lr.sizestretch.size 的比例現在是相對於基底 glyph 尺寸而非顯示尺寸解析的。

工具與移除

CLI 與診斷

typst eval CLI 子命令現在取代了 typst query。此外,佈局收斂問題現在會提供詳細的診斷資訊,以幫助開發者識別無限佈局迴圈的原因。

破壞性移除

幾個已棄用的功能已被移除:

  • path 元素被 curve 取代。
  • pattern 類型被 tiling 取代。
  • pdf.embed 元素被 pdf.attach 取代。
  • 作用域化的解碼函數(例如 json.decode)被直接將 bytes 傳遞給頂層函數取代。

社群洞察

使用者在 Hacker News 的討論中強調了 Typst 與 LaTeX 的效率,特別是在編譯速度和程式化生成方面的效率。一位使用者指出,Typst 有「我們用它程式化生成 PDF 文件,為我們節省了數千美元。」

然而,一些限制仍然存在。一位人文學科學生指出,包含書目參考文獻的敘述性腳註(discursive footnotes) 於目前運作效果不佳,並表示:

敘述性腳註在包含書目參考文獻時運作效果不佳... 對於任何從事人文學科 / 使用例如 Chicago-style 腳註的人來說,這是一個很大的限制。

其他使用者提到,雖然 LLM 能夠協助從 LaTeX 遷移到 Typst,

但是他們在處理特定設計選擇,例如行高和佈局美學方面,仍然感到吃力。

Sources