在 Typst 中,#let
?命令是用于定義變量和函數的核心指令,其用法非常靈活。以下是詳細的用法說明和示例。
目錄
1.基礎變量定義
2.函數定義
3.默認參數
4.內容塊參數(Content Blocks)
5.遞歸函數
1.基礎變量定義
// 定義簡單變量
#let name = "Typst"
#let version = 0.10
#let is_active = true// 使用變量
當前系統: #name\
版本號: #version\
激活狀態: #if is_active {"激活"} else {"未激活"}
注意:Typst 不支持中文作為變量或直接輸出的標識符,需要使用引號"中文字符"
2.函數定義
// 基本函數
#let greet(name) = "Hello, " + name + "!"
#greet("World") // 輸出:Hello, World!
多參數函數
#let add(a, b) = a + b
1 + 2 = #add(1, 2)
注意:調用函數和變量的時候都需要添加 #
3.默認參數
#let banner(text1, color: blue) = {set text(fill: color, weight: "bold")[ #text1 ]
}#banner("重要通知")\ // 藍色
#banner("緊急警告", color: red) // 紅色
注意:在 Typst 中,大括號
{}
是代碼塊,中括號[]
表示內容塊(文本段落)。如果你想讓一個函數“輸出”一段可見的文本內容,必須把它寫在[]
中。,文本前面需要添加‘#’也就是說:通過函數調用文本需要是一下格式:
? [ #text1 ]
注意:大括號用來定義函數體的內部約束,定義函數或組件,第二就是代碼塊
4.內容塊參數(Content Blocks)
#let framed(body) = {box(stroke: 1pt,inset: 8pt,body)
}#framed[這是一個帶邊框的內容區塊,可以包含 *任意* 內容。
]
box
創建一個矩形容器,可用于布局
5.遞歸函數
#let countdown(n) = {if n <= 0 {text("發射!")} else {str(n) + " " + countdown(n - 1)
}
}#countdown(5)