나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2025-11-24 12:04:27

Typst


1. 개요2. 특징3. 문법
3.1. 수식
3.1.1. 분음 기호3.1.2. 첨자3.1.3. 다항계수3.1.4. 분수3.1.5. 행렬3.1.6. 프라임3.1.7. 근호3.1.8. 폰트
4. 인용 정보

1. 개요

논문, 보고서 등의 작성에 사용될 수 있는 조판 소프트웨어 및 이에 사용되는 마크업 언어.

LaTeX 등을 대체하면서 보다 배우기 쉽고 활용하기 쉬운 기능을 구현하는 것이 목표다.

2. 특징

LaTeX 대비 패키지 관리 시스템이 강력하다. typst init으로 쉽게 남들이 개발하고 배포한 템플릿을 가져와 사용할 수 있다.

전반적으로 문서화가 잘 되어있는 편이다. LaTeX이야 워낙 사실상 표준이라 어딜 가나 사용법, 튜토리얼, 문서 등을 찾아볼 수 있으니 이와 비교 가능한 것은 아니지만, 전반적으로 새로 배우는 사용자 입장에선 reference를 찾아보기 쉬운 형태로 문서가 디자인되어 있다.

3. 문법

조판 언어가 아닌 마크업 언어인 만큼 대부분의 문법이 구조적으로 설계되어 있다. 다만 모드 개념을 이해하지 못하면 초반에 조금 헤맬 수 있다. 특히 LaTeX하고 다르게 스타일링이 더 선언적인 형태이기 때문에 #set의 동작이 다소 헷갈릴 수 있다.

함수 호출이 가장 기본적인 문법이며, 대부분의 자주 쓰이는 ad hoc 문법들은 빌트인 함수를 호출하는 syntactic sugar 형태로 구성되어 있다. 가령 ATX 헤딩에 대응하는 = 헤더 문법은 내부적으로 heading() 함수 호출로 이루어진다. 특히 함수 형태를 사용하면 상황에 따라 추가적인 인자를 전달할 수도 있어 더 정밀한 typesetting이 가능해지는 편.

3.1. 수식

TeX과 마찬가지로 수식 기술용 도메인 특화 언어를 내장하고 있다. 전반적인 기초 문법은 TeX과 상당히 흡사하며, 복잡한 문법으로 갈수록 함수 형태가 자주 쓰인다.

TeX과 비슷하게 $로 시작하는 경우 math mode에 진입한다. block의 경우 $$로 시작하는 TeX과 다르게 $ x^2 $ 처럼 $ 앞뒤로 한 칸 공백을 주면 블럭 수식으로 인식하고, $x^2$처럼 붙혀쓰는 경우 인라인으로 인식한다.

3.1.1. 분음 기호

<rowcolor=#fff,#fff> Typst TeX 대응 렌더 설명
grave(a) \grave a [math(\grave a)] 그라브
acute(a) \acute a [math(\acute a)] 어큐트
acute.double(a) \H a [math(\H a)] 더블 어큐트
hat(a) \hat a [math(\hat a)] 서컴플렉스
tilde(a) \tilde a [math(\tilde a)] 틸데
macron(a) \bar a [math(\bar a)] 매크론
breve(a) \breve a [math(\breve a)] 브리브
dot(a) \dot a [math(\dot a)] 도트
diaer(a)
dot.double(a)
\ddot a [math(\ddot a)] 다이에러시스
(움라우트)
dot.triple(a) \dddot a [math(\dddot a)] 삼중 도트
dot.quad(a) \ddddot a [math(\ddddot a)] 사중 도트
circle(a) \mathring a [math(\mathring a)] 오버 링
caron(a) \check a [math(\check a)] 캐런
arrow(a) \vec a [math(\vec a)] 오른쪽 화살표
arrow.l(a) \overset\larr a [math(\overset\larr a)] 왼쪽 화살표
arrow.l.r(a) \overset\harr a [math(\overset\harr a)] 양쪽 화살표
harpoon(a) \overset\rightharpoonup a [math(\overset\rightharpoonup a)] 오른쪽 작살표
harpoon.lt(a) \overset\leftharpoonup a [math(\overset\leftharpoonup a)] 왼쪽 작살표

3.1.2. 첨자

위(t), 아래(b), 좌측 위(tl), 좌측 아래(bl), 우측 위(tr), 우측 아래(br) 총 여섯 가지의 첨자 위치가 존재한다.

^, _ 문법은 내부적으로 attach() 함수의 syntactic sugar이며, 각각 t/b로 간주된다. t/b의 경우 smart positioning 알고리즘을 사용할 경우 위치가 겹치는 별도의 첨자가 없을 시 각각 tl/bl로 렌더되지만 limits, scripts 등으로 각각 극한 표기, 첨자 표기를 강제할 수 있다.
<rowcolor=#fff,#fff> Typst TeX 대응 렌더 설명
x^2 x^2 [math(x^2)] 윗첨자
x_i x_i [math(x_i)] 아래첨자
attach(a, tl: b) {}^ba [math({}^ba)] 좌첨자
(군론, 테트레이션 연산 표기, 화학식 표기 등)
attach(A, tl: 0, bl: 2) {}^0_2A [math({}^0_2A)]
attach(x, t: alpha, tr: beta) \overset\alpha{x^\beta}
(KaTeX상 대응 불가)
[math(\overset\alpha{x^\beta})] 윗첨자 위치가 겹칠 시 자동으로 위치 정렬
product^a_b {\displaystyle\prod}^a_b [math({\displaystyle\prod}^a_b)] 위, 아래첨자만 지정된 경우 (smart positioning 사용)
limits(product)^a_b \displaystyle\prod^a_b [math(\displaystyle\prod^a_b)] 극한 표기로 강제

3.1.3. 다항계수

<rowcolor=#fff,#fff> Typst TeX 대응 렌더 설명
binom(n, k) \binom nk [math(\dbinom nk)] 이항계수
binom(n, k_1, k_2, k_3, ..., k_m) n \choose k_1, k_2, \dots, k_m [math(\displaystyle{n \choose k_1, k_2, \dots, k_m})] 다항계수

3.1.4. 분수

/ 기호를 넣어 a/b와 같이 간단히 분수를 만들 수 있다. 분모 또는 분자에 긴 표현식이 들어 간다면 괄호로 감싸야 하며, 이 괄호는 분수 문법의 일부로 인식되어 렌더되지 않는다. 괄호를 표시해야 하는 경우, 괄호를 두 번 겹쳐 표시할 수 있다. / 기호 주변의 공백은 영향을 끼치지 않는다.
<rowcolor=#fff,#fff> Typst TeX 대응 렌더 설명
a/b \frac ab [math(\dfrac ab)] 분수
(n(n + 1)) / 2 \frac{n(n + 1)}2 [math(\dfrac{n(n + 1)}2)] 분자가 표현식인 분수
((n(n + 1))) / 2 \frac{(n(n + 1))}2 [math(\dfrac{(n(n + 1))}2)] 괄호 강제

3.1.5. 행렬

기본적으로 ,로 열을 나누고 ;으로 행을 나눈다. 괄호의 종류는 delim: 인자로 지정할 수 있다.

#!wiki
||<tablewidth=100%><tablebordercolor=#239dad><tablebgcolor=transparent><rowkeepall><rowbgcolor=#239dad><rowcolor=#fff,#fff> '''Typst''' || '''TeX 대응''' || '''렌더''' || '''설명''' ||
|| {{{mat(a, b; c, d)}}} || {{{\begin{pmatrix} a & b \\ c & d \end{pmatrix}}}} || [math(\begin{pmatrix} a & b \\ c & d \end{pmatrix})] || 행렬 ||
||{{{#!wiki style="margin: -20px -10px"
{{{mat(delim: "[",
  x_11, x_12, ..., x_(1n);
  x_21, x_22, ..., x_(2n);
  dots.v, dots.v, dots.down, dots.v;
  x_(m 1), x_(m 2), ..., x_(m n);
)}}}}}} ||{{{#!wiki style="margin: -20px -10px"
{{{\begin{bmatrix}
x_{11} & x_{12} & \cdots & x_{1n} \\
x_{21} & x_{22} & \cdots & x_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
x_{m1} & x_{m2} & \cdots & x_{mn}
\end{bmatrix} }}}}}} || [math(\begin{bmatrix}
x_{11} & x_{12} & \cdots & x_{1n} \\
x_{21} & x_{22} & \cdots & x_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
x_{m1} & x_{m2} & \cdots & x_{mn}
\end{bmatrix})] || 행렬 (대괄호) ||

3.1.6. 프라임

<rowcolor=#fff,#fff> Typst TeX 대응 렌더 설명
f' f' [math(f')] 프라임
f'' f'' [math(f'')] 고계도함수

3.1.7. 근호

<rowcolor=#fff,#fff> Typst TeX 대응 렌더 설명
sqrt(b^2 - 4 a c) \sqrt{b^2 - 4ac} [math(\sqrt{b^2 - 4ac})] 제곱근
root(3, a + b) \sqrt[3]{a + b} [math(\sqrt[3]{a + b})] 세제곱근
root(n, x) \sqrt[n]x [math(\sqrt[n]x)] n제곱근

3.1.8. 폰트

<rowcolor=#fff,#fff> Typst TeX 대응 렌더 설명
serif(A B C D E F) ABCDEF [math(ABCDEF)] 로만 이탤릭 세리프. 기본값이다.
sans(A B C D E F) \mathsfit{ABCDEF} [math(\mathsfit{ABCDEF})] 이탤릭 산세리프
frak(A B C D E F) \frak{ABCDEF} [math(\frak{ABCDEF})] 블랙레터(프락투어)
mono(A B C D E F) \tt ABCDEF [math(\tt ABCDEF)] 고정폭
bb(A B C D E F) \mathbb{ABCDEF} [math(\mathbb{ABCDEF})] 칠판체
cal(A B C D E F) \mathcal{ABCDEF} [math(\mathcal{ABCDEF})] 흘림체

Typst 파서상 AB와 같이 문자를 붙여 쓰면 하나의 심볼로 인식되므로 개개의 문자로 인식시키기 위해서는 A B와 같이 띄어 써야 한다.

4. 인용 정보

참고문헌(bibliography)을 작성하는 경우 #bibliography() 함수를 사용한다. 지원 포맷은 BibTeX과 자체 형식인 Hayagriva를 지원한다.

지원되는 인용/양식style 인자 표 참고. 대부분의 유명 양식은 alias가 지원된다. 예를 들어 "american-psychological-association"라고 쓰는 대신에 "apa"라고 쓰는 식. 필요한 경우 임의의 CSL 파일도 지원된다.