조건문 및 반복문 (Conditions & loops)
조건문 (Conditions)
공식 문서를 참조하세요.
Typst에서는 if-else문을 사용할 수 있습니다.
이는 특히 함수 본문 내부에서 인수 타입이나 다른 여러 상황에 따라 동작을 변경할 때 유용합니다.
#if 1 < 2 [
이 내용이 보입니다.
] else [
이 내용은 보이지 않습니다.
]
물론 else는 필수가 아닙니다:
#let a = 3
#if a < 4 {
a = 5
}
#a
else if문도 사용할 수 있습니다:
#let a = 5
#if a < 4 {
a = 5
} else if a < 6 {
a = -3
}
#a
불리언 (Booleans)
if, else if, else는 스위치 값으로 오직 불리언(boolean) 값만 받습니다.
타입 섹션에서 설명한 대로 불리언을 결합할 수 있습니다:
#let a = 5
#if (a > 1 and a <= 4) or a == 5 [
`a`가 조건에 부합합니다.
]
Set-if
Typst는 매우 유용한 명령인 set if를 지원합니다. 조건이 충족될 때만 set 규칙을 적용합니다. 이는 문서 전체나 함수 내부의 조건부 스타일링에 매우 유용할 수 있습니다:
#let draft = true
// 여기서 바로 조건 연산을 수행할 수 있습니다.
#set page(columns: 2, width: 20em, height: 10em) if not draft
// show 규칙 내부에서도 사용할 수 있습니다.
#show "TODO": set text(red, size: 2em) if draft
TODO: 실제 텍스트를 작성하세요.
#lorem(50)
반복문 (Loops)
공식 문서를 참조하세요.
반복문에는 while과 for 두 가지 종류가 있습니다. while은 조건이 충족되는 동안 본문을 반복합니다:
#let a = 3
#while a < 100 {
a *= 2
str(a)
" "
}
for는 시퀀스의 모든 요소를 순회합니다. 시퀀스는 array, string 또는 dictionary(for는 딕셔너리의 _키-값 쌍_을 순회함)가 될 수 있습니다.
#for c in "ABC" [
#c 는 글자입니다.
]
a부터 b까지의 모든 숫자를 순회하려면 range(a, b+1)을 사용하세요:
#let s = 0
#for i in range(3, 6) {
s += i
[숫자 #i 가 합계에 더해졌습니다. 현재 합계는 #s 입니다.]
}
range는 마지막 숫자를 제외하므로 위 코드는 다음과 동일합니다:
#let s = 0
#for i in (3, 4, 5) {
s += i
[숫자 #i 가 합계에 더해졌습니다. 현재 합계는 #s 입니다.]
}
#let people = (Alice: 3, Bob: 5)
#for (name, value) in people [
#name 은 #value 개의 사과를 가지고 있습니다.
]
Break 및 continue
반복문 내부에서 break와 continue 명령을 사용할 수 있습니다. break는 반복문을 중단하고 밖으로 나갑니다. continue는 다음 반복 회차로 건너뜁니다.
다음 예제에서 차이점을 확인해 보세요:
#for letter in "abc nope" {
if letter == " " {
// 공백이 있으면 중단
break
}
letter
}
#for letter in "abc nope" {
if letter == " " {
// 공백은 건너뜀
continue
}
letter
}