쿼리 (Query)
이 섹션은 완전하지 않을 수 있으며 최신 Typst 버전에 맞춰 충분히 업데이트되지 않았을 수 있습니다. 모든 기여를 환영합니다!
공식 참조 링크
쿼리(Query)는 선택자(selector) (show 규칙에서 사용한 것과 동일)를 통해 위치(location) (문서 내의 실제 위치를 나타내는 객체, 문서 참조)를 가져올 수 있게 해줍니다.
이를 통해 문서의 일부에서 문서 전체에 대한 정보를 얻는 등 "시간 여행"이 가능해집니다. 이는 Typst의 순수성(purity)을 우회하는 방법입니다.
이것은 현재 Typst에 존재하는 가장 강력한 어둠의 마법 중 하나입니다. 큰 힘에는 큰 책임이 따릅니다.
시간 여행 (Time travel)
#let s = state("x", 0)
#let compute(expr) = [
#s.update(x =>
eval(expr.replace("x", str(x)))
)
새로운 값은 #context s.get() 입니다.
]
`<here>` 지점에서의 값은 다음과 같습니다:
#context s.at(
query(<here>)
.first()
.location()
)
#compute("10") \
#compute("x + 3") \
*여기.* <here> \
#compute("x * 2") \
#compute("x - 5")
가장 가까운 장(Chapter) 가져오기
#set page(header: context {
let elems = query(
selector(heading).before(here())
)
let academy = smallcaps[
Typst Academy
]
if elems == () {
align(right, academy)
} else {
let body = elems.last().body
academy + h(1fr) + emph(body)
}
})
= 서론
#lorem(23)
= 배경
#lorem(30)
= 분석
#lorem(15)