3P by neo 2달전 | favorite | 댓글 1개

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

Typst 소개

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

예제

  • Typst 문서에서 페이지 크기나 제목 번호 매기기와 같은 요소 속성을 설정하는 규칙 사용
  • = Heading 구문을 사용하여 제목 삽입
  • 수학 방정식은 달러 기호로 감싸서 표현
  • 해시와 표현식을 사용하여 스크립트 입력 가능
  • 피보나치 수열을 계산하고 결과를 중앙 정렬된 표에 표시
#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 설치 후 다음과 같이 사용 가능:
    typst compile file.typ
    typst compile path/to/source.typ path/to/output.pdf
    
  • 소스 파일을 감시하고 변경 시 자동으로 재컴파일 가능:
    typst watch file.typ
    
  • 프로젝트에 맞는 사용자 정의 폰트 경로 추가 가능:
    typst compile --font-path path/to/fonts file.typ
    typst fonts --font-path path/to/fonts
    

커뮤니티

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

기여

  • 버그를 경험하면 이슈를 열 수 있음
  • 새로운 기능이나 버그 수정을 구현하고 싶다면 기여 가이드를 따를 것
  • Typst를 직접 빌드하려면 최신 안정 버전의 Rust 설치 필요
    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를 대체할 수 있는 강력한 도구로, 조판 작업을 더 효율적으로 만들 수 있음
Hacker News 의견
  • Typst는 매우 놀라운 도구이며, 우리 조직에서는 매우 만족스러움

    • 매일 밤 150만 개 이상의 PDF를 생성해야 했고, 여러 솔루션을 실험했음
    • Puppeteer, pdflatex, lualatex 등을 사용해봤지만 Typst가 훨씬 빠르고 자원 소모가 적었음
    • LaTeX 템플릿은 개발자 경험이 좋지 않았지만, Typst 템플릿은 직관적이었음
    • 더 자세한 내용은 블로그에서 확인 가능: 블로그 링크
    • 과거 논의 및 관련 자료: 링크
  • Typst를 사용해 많은 과제를 작성했으며, 학술적 글쓰기를 더 간편하고 재미있게 만들어줌

    • Typst의 함수형 문법 덕분에 Microsoft Word나 Google Docs에서 발생하는 불규칙한 동작을 피할 수 있었음
    • VSCode 같은 로컬 IDE를 사용하면 모든 기능을 활용할 수 있음
    • LaTeX와 비교했을 때 문서 조판이 훨씬 간단함
    • 그러나 긴 수식 입력에서는 LaTeX가 더 편리함
  • HTML 출력이 진행 중이라는 사실에 놀랐음

    • LaTeX와 웹의 어색한 관계를 해결하려는 시도가 필요하다고 생각함
    • 관련 이슈: GitHub 이슈 링크
  • 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 문서 링크
    • 프로젝트 링크: Resgen 링크