# LaTeX를 대체할 쉬운 학습 대안, Typst

> Clean Markdown view of GeekNews topic #15937. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15937](https://news.hada.io/topic?id=15937)
- GeekNews Markdown: [https://news.hada.io/topic/15937.md](https://news.hada.io/topic/15937.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-07-21T09:42:40+09:00
- Updated: 2024-07-21T09:42:40+09:00
- Original source: [github.com/typst](https://github.com/typst/typst)
- Points: 3
- Comments: 2

## Topic Body

### Typst: 새로운 마크업 기반 조판 시스템

#### Typst 소개
- Typst는 LaTeX만큼 강력하면서도 배우고 사용하기 쉬운 마크업 기반 조판 시스템임
- 주요 기능:
  - 일반적인 형식 작업을 위한 내장 마크업
  - 유연한 함수
  - 통합된 스크립팅 시스템
  - 수학 조판, 참고문헌 관리 등
  - 증분 컴파일 덕분에 빠른 컴파일 시간
  - 친절한 오류 메시지

#### 예제
- Typst 문서에서 페이지 크기나 제목 번호 매기기와 같은 요소 속성을 설정하는 규칙 사용
- `= Heading` 구문을 사용하여 제목 삽입
- 수학 방정식은 달러 기호로 감싸서 표현
- 해시와 표현식을 사용하여 스크립트 입력 가능
- 피보나치 수열을 계산하고 결과를 중앙 정렬된 표에 표시

```typst
#set page(width: 10cm, height: auto)
#set heading(numbering: "1.")
= Fibonacci sequence
The Fibonacci sequence is defined through the recurrence relation $F_n = F_(n-1) + F_(n-2)$.
It can also be expressed in _closed form:_
$ F_n = round(1 / sqrt(5) phi.alt^n), quad phi.alt = (1 + sqrt(5)) / 2 $
#let count = 8
#let nums = range(1, count + 1)
#let fib(n) = (if n <= 2 { 1 } else { fib(n - 1) + fib(n - 2) })
The first #count numbers of the sequence are:
#align(center, table(columns: count, ..nums.map(n => $F_#n$), ..nums.map(n => str(fib(n)))))
```

#### 설치
- Typst의 CLI는 다양한 소스에서 이용 가능
  - 최신 릴리스의 소스 및 사전 빌드된 바이너리는 릴리스 페이지에서 다운로드 가능
  - 패키지 관리자를 통해 설치 가능 (Linux, macOS, Windows)
  - Rust 도구 체인을 사용하여 설치 가능
  - Nix 및 Docker 사용 가능

#### 사용법
- Typst 설치 후 다음과 같이 사용 가능:
  ```sh
  typst compile file.typ
  typst compile path/to/source.typ path/to/output.pdf
  ```
- 소스 파일을 감시하고 변경 시 자동으로 재컴파일 가능:
  ```sh
  typst watch file.typ
  ```
- 프로젝트에 맞는 사용자 정의 폰트 경로 추가 가능:
  ```sh
  typst compile --font-path path/to/fonts file.typ
  typst fonts --font-path path/to/fonts
  ```

#### 커뮤니티
- 주요 커뮤니티 모임 장소는 Discord 서버
- 공식 패키지 목록 및 Awesome Typst 저장소에서 커뮤니티가 만든 것들을 찾을 수 있음
- 커뮤니티에서 나쁜 경험을 했다면 연락 가능

#### 기여
- 버그를 경험하면 이슈를 열 수 있음
- 새로운 기능이나 버그 수정을 구현하고 싶다면 기여 가이드를 따를 것
- Typst를 직접 빌드하려면 최신 안정 버전의 Rust 설치 필요
  ```sh
  git clone https://github.com/typst/typst
  cd typst
  cargo build --release
  ```

#### 발음 및 철자
- IPA: /taɪpst/
- "Ty"는 **Ty** pesetting의 "Ty"와 같고 "pst"는 Hi **pst** er의 "pst"와 같음
- Typst를 쓸 때는 대문자 "T"로 시작하는 고유 명사로 표기

#### 디자인 원칙
- Typst는 세 가지 주요 목표를 염두에 두고 설계됨: 강력함, 단순함, 성능
- 세 가지 핵심 디자인 원칙:
  - **일관성을 통한 단순함:** Typst에서 한 가지를 아는 경우, 다른 것에도 그 지식을 적용할 수 있어야 함
  - **조합성을 통한 강력함:** 몇 가지 조합 가능한 시스템을 제공하여 유연성을 높임
  - **증분성을 통한 성능:** 모든 Typst 언어 기능은 증분 컴파일을 지원해야 함

### GN⁺의 정리
- Typst는 LaTeX의 강력함을 유지하면서도 사용하기 쉽게 설계된 마크업 기반 조판 시스템임
- 수학 방정식, 참고문헌 관리 등 다양한 기능을 제공하며, 증분 컴파일 덕분에 빠른 컴파일 시간을 자랑함
- 커뮤니티와의 상호작용을 통해 지속적으로 발전하고 있으며, 기여를 환영함
- LaTeX를 대체할 수 있는 강력한 도구로, 조판 작업을 더 효율적으로 만들 수 있음

## Comments



### Comment 35217

- Author: sebul
- Created: 2025-02-28T07:47:17+09:00
- Points: 1

LeTeX 를 라텍스 라고 읽나요? 레이텍 이라고 할 텐데.

### Comment 27430

- Author: neo
- Created: 2024-07-21T09:42:40+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=41014941) 
- Typst는 매우 놀라운 도구이며, 우리 조직에서는 매우 만족스러움
  - 매일 밤 150만 개 이상의 PDF를 생성해야 했고, 여러 솔루션을 실험했음
  - Puppeteer, pdflatex, lualatex 등을 사용해봤지만 Typst가 훨씬 빠르고 자원 소모가 적었음
  - LaTeX 템플릿은 개발자 경험이 좋지 않았지만, Typst 템플릿은 직관적이었음
  - 더 자세한 내용은 블로그에서 확인 가능: [블로그 링크](https://zerodha.tech/blog/1-5-million-pdfs-in-25-minutes)
  - 과거 논의 및 관련 자료: [링크](https://hn.algolia.com/?q=typst)

- Typst를 사용해 많은 과제를 작성했으며, 학술적 글쓰기를 더 간편하고 재미있게 만들어줌
  - Typst의 함수형 문법 덕분에 Microsoft Word나 Google Docs에서 발생하는 불규칙한 동작을 피할 수 있었음
  - VSCode 같은 로컬 IDE를 사용하면 모든 기능을 활용할 수 있음
  - LaTeX와 비교했을 때 문서 조판이 훨씬 간단함
  - 그러나 긴 수식 입력에서는 LaTeX가 더 편리함

- HTML 출력이 진행 중이라는 사실에 놀랐음
  - LaTeX와 웹의 어색한 관계를 해결하려는 시도가 필요하다고 생각함
  - 관련 이슈: [GitHub 이슈 링크](https://github.com/typst/typst/issues/721)

- Typst가 LaTeX를 대체하기를 기대함
  - Jinja2 템플릿을 사용해 TeX 파일을 생성했지만, Typst는 JSON을 명령줄에서 받아 Python 단계를 제거할 수 있음
  - 컴파일 시간도 밀리초 단위로 매우 빠름

- Typst의 주요 문제는 LaTeX에 비해 기본적인 세밀한 타이포그래픽 기능을 처리하지 못함
  - 수학 모드에서의 다양한 간격이나 구분 기호 크기 조절이 어려움

- 다른 스레드에서 이 주제를 봤음
  - 성인 학부생으로 LaTeX를 사용해본 적 없고, Word 문서를 만들어야 했음
  - 현재 워크플로우는 pandoc 스타일의 markdown과 zotero를 사용함
  - 다른 대학으로 석사 과정을 옮길 예정이며, Typst로 전환할지 고민 중임

- Typst는 Overleaf와 codimd 같은 서비스의 경쟁자일 것 같음
  - 새로운 문법이지만 pandoc에서 지원됨
  - Quarto를 사용해 HTML 출력을 생성하지만, 학술적 사용 문제를 해결하지 못함
  - Word는 여전히 과학적 글쓰기에서 대체하기 어려울 것 같음

- Typst의 가장 좋은 점은 직관적이라는 것임

- Typst를 사랑함
  - 프로그램 입력을 처리하기에 좋음
  - JSON을 쉽게 처리할 수 있어 프로젝트에서 LaTeX를 Typst로 교체했음
  - 관련 문서: [Typst 문서 링크](https://typst.app/docs/reference/foundations/sys/)
  - 프로젝트 링크: [Resgen 링크](https://resgen.app)
