Typst 是一種新的基於標記的排版系統,其設計與 LaTeX 一樣強大,同時更易於學習和使用。打字員有:
該儲存庫包含 Typst 編譯器及其 CLI,這是您在本機編譯 Typst 文件所需的一切。為了獲得最佳的寫作體驗,請考慮免費註冊我們的協作線上編輯器。
我們的文件中提供了對 Typst 的簡單介紹。但是,如果您想了解 Typst 封裝在一張圖片中的強大功能,這裡是:
讓我們來剖析一下發生了什麼事:
我們使用設定規則來配置元素屬性,例如頁面大小或標題編號。透過將頁面高度設為auto
,它會縮放以適應內容。設定規則適應最常見的配置。如果您需要完全控制,也可以使用顯示規則來完全重新定義元素的外觀。
我們使用= Heading
語法插入一個標題。一個等號創建頂級標題,兩個等號創建副標題,依此類推。 Typst 有類似這樣的更輕量標記,請參閱語法參考以取得完整清單。
數學方程式用美元符號括起來。透過在方程式內容周圍添加額外的空格,我們可以將其放入單獨的區塊中。多字母標識符被解釋為 Typst 定義和函數,除非放入引號中。這樣,我們不需要反斜線來表示諸如floor
和sqrt
之類的東西。 phi.alt
將alt
修飾因子應用於phi
以選擇特定的符號變體。
現在,我們開始編寫一些腳本。要將程式碼輸入到 Typst 文件中,我們可以寫一個雜湊值,後面跟著一個表達式。我們定義兩個變數和一個遞歸函數來計算第 n 個斐波那契數。然後,我們將結果顯示在居中對齊的表格中。表函數逐行取得單元格。因此,我們先將公式$F_1$
傳遞到$F_8$
,然後傳遞計算出的斐波那契數。我們對兩者應用擴展運算子 ( ..
),因為它們是數組,並且我們希望將數組的項作為單獨的參數傳遞。
#set page ( width : 10cm , height : auto )
#set heading ( numbering : " 1. " )
= Fibonacci sequence
The Fibonacci sequence is defined through the
recurrence relation $ F_n = F_(n-1) + F_(n-2) $ .
It can also be expressed in _closed form:_
$ F_n = round(1 / sqrt(5) phi.alt^n), quad
phi.alt = (1 + sqrt(5)) / 2 $
#let count = 8
#let nums = range ( 1 , count + 1 )
#let fib ( n ) = (
if n <= 2 { 1 }
else { fib ( n - 1 ) + fib ( n - 2 ) }
)
The first #count numbers of the sequence are:
#align (center, table(
columns: count,
..nums.map(n => $ F_#n $ ),
..nums.map(n => str(fib(n))),
))
Typst 的 CLI 可從不同的來源取得:
您可以從發布頁面取得最新版本的 Typst 的原始碼和預先建置的二進位檔案。下載適合您平台的存檔並將其放置在PATH
中的目錄中。要隨時了解未來版本,您只需執行typst update
即可。
您可以透過不同的套件管理器安裝 Typst。請注意,套件管理器中的版本可能落後於最新版本。
brew install typst
winget install --id Typst.Typst
如果您安裝了 Rust 工具鏈,則可以安裝
cargo install --locked typst-cli
cargo install --git https://github.com/typst/typst --locked typst-cli
開發版本Nix 用戶可以
typst
包與nix-shell -p typst
一起使用nix run github:typst/typst -- --version
建置並執行開發版本。 Docker 使用者可以使用docker run ghcr.io/typst/typst:latest --help
來執行預先建置的映像。
安裝 Typst 後,您可以像這樣使用它:
# Creates `file.pdf` in working directory.
typst compile file.typ
# Creates PDF file at the desired path.
typst compile path/to/source.typ path/to/output.pdf
您也可以查看原始檔案並根據變更自動重新編譯。這比每次從頭開始編譯要快,因為 Typst 具有增量編譯。
# Watches source files and recompiles on changes.
typst watch file.typ
Typst 還允許您為專案添加自訂字體路徑並列出它發現的所有字體:
# Adds additional directories to search for fonts.
typst compile --font-path path/to/fonts file.typ
# Lists all of the discovered fonts in the system and the given directory.
typst fonts --font-path path/to/fonts
# Or via environment variable (Linux syntax).
TYPST_FONT_PATHS=path/to/fonts typst fonts
其他 CLI 子命令和選項,請參閱下文:
# Prints available subcommands and options.
typst help
# Prints detailed usage of a subcommand.
typst help watch
如果您喜歡具有自動完成和即時預覽功能的整合 IDE 體驗,您還可以查看 Typst 的免費 Web 應用程式。
社群聚集的主要場所是我們的 Discord 伺服器。請隨意加入其中,提出問題、幫助他人、分享您使用 Typst 創建的精彩內容,或只是聊天。
除此之外,您還可以在幾個地方找到社區建構的東西:
如果您在我們的社區中遇到了不愉快的經歷,請與我們聯繫。
我們希望看到社區的貢獻。如果您遇到錯誤,請隨時提出問題。如果您想實現新功能或錯誤修復,請按照貢獻指南中概述的步驟操作。
要自行建立 Typst,首先確保您安裝了最新的穩定版 Rust。然後,克隆此存儲庫並使用以下命令構建 CLI:
git clone https://github.com/typst/typst
cd typst
cargo build --release
最佳化後的二進位檔案將儲存在target/release/
中。
另一個好的貢獻方式是與社群共享包。
國際音標:/taɪpst/。 “Ty”如Ty pesetting 中的“Ty”,“pst”如 Hi pst er 中的“pst”。當寫到 Typst 時,將它的名字大寫為專有名詞,大寫“T”。
Typst 的所有設計都考慮了三個關鍵目標:強大、簡單和效能。我們認為現在是時候建立一個與 LaTeX 的功能相匹配、易於學習和使用、同時足夠快以實現即時預覽的系統了。為了實現這些目標,我們遵循三個核心設計原則:
透過一致性實現簡單性:如果您知道如何在 Typst 中做一件事,您應該能夠將該知識轉移到其他事情上。如果有多種方法可以完成同一件事,那麼其中一種方法應該與另一種方法處於不同的抽象層級。例如, = Introduction
和#heading[Introduction]
做同樣的事情是可以的,因為前者只是後者的語法糖。
透過可組合性發揮力量:有兩種方法可以使某些東西變得靈活:用一個旋鈕來處理所有事情,或用幾個可以多種方式組合的旋鈕。 Typst 的設計考慮了第二種方式。我們提供的系統您可以用我們從未想過的方式來建造。 TeX 也屬於第二類,但它的等級有點低,因此人們使用 LaTeX 代替。但在那裡,我們確實沒有那麼多的可組合性。相反,所有東西都有一個套件( usepackage{knob}
)。
透過增量實現效能:所有 Typst 語言功能都必須適應增量編譯。幸運的是,我們有comemo
,一個增量編譯系統,它在後台完成大部分艱苦的工作。