iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
佛心分享-我的私藏工具箱

Typst 與 CeTZ:對演算法與程式設計超友好的排版製圖工具 系列

本系列教學文章是為參加 2025 iThome 鐵人賽所撰寫,目標是帶領大家從零開始認識並活用 Typst 排版系統中的繪圖套件——CeTZ。如果你是一位工程師、學生,或是對數理排版與演算法視覺化有興趣的開發者,這份指南將會介紹如何利用 CeTZ 將抽象的演算法與離散結構圖像化,並整合進你的技術文章、簡報或論文中。即使你從未接觸過 Typst,也不用擔心,我會從基礎語法一步一步帶你上手,一起用最簡潔的語言畫出最精緻的圖。

上面這段是請 ChatGPT 幫我潤飾的。我只是想要分享好玩的 Typst 和 CeTZ 推薦給大家。

參賽天數 18 天 | 共 18 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 1

Day 1: 數學式的排版

前言 Disclaimer:筆者使用 Typst 製作投影片、簡易製圖只有一年多的經驗,還請大家多包涵與指教。 個人覺得以簡易型文件、或是繪製演算法示意圖來說,...

2025-08-15 ‧ 由 卡卡恩 分享
DAY 2

Day 2: Typst 的表格排版

很多前端版面設計都已經採用了網格模式 (grid)。在 Typst 裡面的表格設計也是如此,table 其實只是包裝得比較好的 grid。 範例一:九九乘法表...

2025-08-16 ‧ 由 卡卡恩 分享
DAY 3

Day 3: 修改文字樣式

在 Typst 腳本撰寫方面,有一些好用的語法糖。其中最常見的語法莫屬 show 這個指令了。其中最簡單的形式,就是符合關鍵字出現時,可以自動地改成想要的格式。...

2025-08-17 ‧ 由 卡卡恩 分享
DAY 4

Day 4: 遞迴函式

如同基本的函數式程式設計一般,Typst 內的所有函數都必須以純函數 (pure function) 的方式實作。唯一的例外是一些原生型別的操作,例如陣列的 &...

2025-08-18 ‧ 由 卡卡恩 分享
DAY 5

Day 5: 簡易互動模式

利用 Typst 超快的 preview 功能,可以進行簡易互動。 範例:走迷宮 例如,我們可以將其中一段文字設計成迷宮: 11111111111111 100...

2025-08-19 ‧ 由 卡卡恩 分享
DAY 6

Day 6: Typst Context 存取排版當下的環境設定

如果你希望能夠在腳本中加入與當前排版位置相關的一些環境數值(例如文字樣式、頁面編號、章節編號)等資訊,那麼就可以使用 #context 進行存取。 範例一:文字...

2025-08-20 ‧ 由 卡卡恩 分享
DAY 7

Day 7: 使用 read 載入檔案

如果想要在你的文件中引入程式語言,但是又不想要讓大量的程式碼複製兩份放進想要排版的文件當中,那麼此時使用 #read 讀檔就再方便也不過了! 筆者覺得這個方法...

2025-08-21 ‧ 由 卡卡恩 分享
DAY 8

Day 8: 使用 state 修改外部的世界

前幾天有提到過,在沒有 #context 的情況下,Typst 定義的函數都需要是純函數。這是因為快取的效率考量,如果沒有任何的 side-effect,那麼傳...

2025-08-22 ‧ 由 卡卡恩 分享
DAY 9

Day 9: 使用 Stack 對齊文字區塊

Typst 對內容排版時,總是會把每一個內容區塊變成一個一個的方塊。若我們有許多方塊要使用「對齊功能」的時候,可以利用 #stack 輕鬆調整不同區塊之間的高度...

2025-08-23 ‧ 由 卡卡恩 分享
DAY 10

Day 10: 模擬 Clip 的功能

Typst 目前的版本不支援圖片遮罩的功能,但我們可以利用 #box 以及 #curve 的效果,繪製 SVG 圖案從而達到遮罩的效果。 範例一:圖片位移 原本...

2025-08-24 ‧ 由 卡卡恩 分享