템플릿
템플릿
스타일을 다른 파일에서도 재사용하고 싶다면 템플릿(template) 관용구를 사용할 수 있습니다.
set 및 show 규칙은 현재 범위(scope) 내에서만 활성화되므로,
파일을 가져온(import) 대상 파일의 콘텐츠에는 영향을 주지 않습니다.
하지만 함수를 사용하면 예측 가능한 방식으로 이를 해결할 수 있습니다:
// 다음과 같은 함수를 정의합니다:
// - 콘텐츠를 인수로 받음
// - 스타일을 적용함
// - 스타일이 적용된 콘텐츠를 반환함
#let apply-template(body) = [
#show heading.where(level: 1): emph
#set heading(numbering: "1.1")
// ...
#body
]
이것은 다음과 동일합니다:
// 스크립팅 모드를 사용하면 필요한 해시(#) 기호의 수를 줄일 수 있습니다.
// 위와 동일하지만, 마크업 모드에서 스크립팅 모드로 전환하기 위해
// `[...]`를 `{...}`로 바꿨습니다.
#let apply-template(body) = {
show heading.where(level: 1): emph
set heading(numbering: "1.1")
// ...
body
}
그런 다음 메인 파일에서:
#import "template.typ": apply-template
#show: apply-template
이렇게 하면 문서의 나머지 부분에 "템플릿" 함수가 적용됩니다!
인수 전달하기
// 선택적인 명명된 인수를 추가합니다.
#let apply-template(body, name: "나의 문서") = {
show heading.where(level: 1): emph
set heading(numbering: "1.1")
align(center, text(name, size: 2em))
body
}
그런 다음, 템플릿 파일에서:
#import "template.typ": apply-template
// `func.with(..)`는 함수에 인수를 적용하고,
// 해당 기본값이 적용된 새로운 함수를 반환합니다.
#show: apply-template.with(name: "보고서")
// 이것은 기능적으로 다음과 동일합니다.
#let new-template(..args) = apply-template(name: "보고서", ..args)
#show: new-template
스크립팅을 이해한다면 템플릿을 작성하는 것은 매우 쉽습니다.
템플릿 작성에 대한 더 자세한 정보는 공식 튜토리얼에서 확인할 수 있습니다.
아직 공식 템플릿 저장소는 없지만, awesome-typst에 수많은 커뮤니티 템플릿이 있습니다.