기초 스타일링

set 규칙

#set page(width: 15cm, margin: (left: 4cm, right: 4cm))

멋진 결과물이 나왔네요! 하지만 문서의 모든 곳에서 매번 복잡한 인수를 
사용하며 함수를 호출하는 것은 매우 번거로운 일입니다.

그래서 Typst에는 **규칙(rules)**이라는 개념이 있습니다. 
정확히는 문서를 구성하는 요소들이 따라야 할 규칙이죠.

#set par(justify: true)

가장 먼저 살펴볼 것은 `set` 규칙입니다.
위 예제에서 `par`(단락, paragraph의 약자)에 규칙을 적용하자 
이후의 모든 단락이 **양쪽 맞춤(justified)**으로 정렬되었습니다.

이 규칙은 설정된 지점 이후의 모든 요소에 적용되지만, 
특정 **범위(scope)** 내에서만 유효합니다(범위에 대해서는 나중에 자세히 다룹니다).

#par(justify: false)[
  물론 필요할 때는 `set` 규칙을 개별적으로 덮어쓸 수도 있습니다. 
  `set` 규칙은 단순히 해당 요소의 인수에 대한 **기본값** 을 
  지정하는 것이기 때문입니다.
]

참고: 위 예제의 첫 번째 줄에서는 양쪽 맞춤 효과를 잘 보여주기 위해 
페이지 크기를 줄이고 좌우 여백을 넓게 설정했습니다.
Rendered image

길이 단위

다른 규칙으로 넘어가기 전에, Typst에서 사용하는 길이에 대해 알아봅시다. 
Typst는 다음과 같은 다양한 절대 길이 단위를 지원합니다.

#set rect(height: 1em)

#table(
  columns: 2,
  [포인트(Points)], rect(width: 72pt),
  [밀리미터(Millimeters)], rect(width: 25.4mm),
  [센티미터(Centimeters)], rect(width: 2.54cm),
  [인치(Inches)], rect(width: 1in),
  [글꼴 크기 기준(Relative to font size)], rect(width: 6.5em)
)

여기서 `1em`은 **현재 글꼴의 크기**와 같습니다. 
문맥에 맞춰 유연하게 크기를 조절할 때 매우 유용한 단위이므로 
앞으로 자주 사용하게 될 것입니다.
Rendered image

다양한 요소 설정하기

모든 내장 함수와 해당 함수의 이름 있는 인자(named arguments)에 set 규칙을 적용할 수 있습니다. 즉, 원하는 인자를 기본값으로 고정할 수 있다는 뜻입니다.

예를 들어, 문서의 모든 인용구에 출처를 자동으로 표시하고 싶다면 다음과 같이 설정할 수 있습니다.

#set quote(block: true, attribution: [Typst 예시 북])

#quote[
  Typst는 정말 훌륭한 도구입니다!
]

#quote[
  인터넷에 떠도는 명언의 가장 큰 문제는 
  그 진위 여부를 확인하기가 매우 어렵다는 점입니다.
]
Rendered image

나만의 기본값 만들기

set 규칙을 활용하면 문서 전체의 스타일을 취향에 맞게 한 번에 정의할 수 있습니다.

#set par(justify: true)
#set list(indent: 1em)
#set enum(indent: 1em)
#set page(numbering: "1")

- 목록 첫 번째 항목
- 목록 두 번째 항목

+ 순서가 있는 항목 1
+ 순서가 있는 항목 2
Rendered image

Typst의 기본 스타일이 마음에 들지 않는다면, 주저하지 말고 여러분만의 set 규칙을 정의해 보세요!

번호 매기기

= 번호 매기기

제목(heading)과 같은 일부 요소에는 `numbering`이라는 속성이 있습니다. 
여기에 특정 "번호 매기기 패턴"을 지정하고 `set` 규칙과 결합하면 
복잡한 계층 구조도 자동으로 관리할 수 있습니다.

#set heading(numbering: "I.1:")

= 1단계 제목
= 또 다른 1단계 제목
== 2단계 소제목
== 또 다른 2단계 소제목
=== 3단계 상세 제목
== 다시 2단계로
= 다시 1단계로
Rendered image

이외에도 설정할 수 있는 유용한 속성들이 무수히 많습니다. 더 자세한 내용은 공식 레퍼런스를 참고해 보세요.

이제 더 강력하고 흥미로운 기능인 show 규칙에 대해 알아보겠습니다.