Rust로 작성된 $\TeX$ 컴파일러, Tectonic

본 글의 내용은 Apple arm 환경에서 실행되었으며, 명령어 및 벤치마킹 결과는 운영체제나 아키텍쳐에 따라 차이가 있을 수 있습니다.

논문이나 아티클을 작성하기 위해 TeX Live나 Overleaf를 사용하다 보면 느린 컴파일 속도가 인내심을 테스트하는 일이 자주 있다. 도중에 에러가 발생하면 짜증은 제곱이 된다. 심지어 TeX Live는 프로그램이 무거워서 맥북 용량이 한계에 다다르면 삭제해야 하나 말아야하나 하는 딜레마에 빠진다.

그래서 더 빠르고 편한 컴파일러를 찾던 중, Rust로 작성된 Tectonic을 발견했다.

Tectonic의 주요 컨셉은 다음과 같다.

  • Rust를 이용해 더 빠른 컴파일을 제공한다.
  • TeX Live의 모든 패키지를 지원하되, 프로그램이 무거워지지 않도록 최초 빌드시에 필요한 패키지만 자동 다운로드 한다.
  • watch 모드로 내용이 바뀌면 자동으로 컴파일을 실행한다.

설치 및 실행

Tectonic은 Rust로 작성되어 있으므로 사용을 위해서는 먼저 rust 컴파일러와 rust의 패키지 매니저인 Cargo를 설치해야한다. 그러나 macOS와 linux에서는 각각 brew와 linuxbrew를 이용해 다음 명령어로 한 번에 설치가 가능하다. (windows에서는 WSL환경을 이용하는 것을 추천한다.)

brew install tectonic

이미 cargo가 설치되어 있다면 다음 명령어로도 설치할 수 있다.

cargo install tectonic

설치가 완료되면 프로젝트를 생성할 디렉토리로 이동 후 다음 명령어를 실행한다.

tectonic -X new [project name]

프로젝트가 생성되면 다음과 같은 구조로 파일들이 생성된다.

myproject
├── Tectonic.toml
└── src
    ├── _preamble.tex
    ├── _postamble.tex
    └── index.tex
  • _preamble.textex 문서의 제일 상단에 올 내용을 작성한다. 제목이나 사용할 패키지, 문서 설정들을 명시해주자.
  • _postamble.textex 문서의 제일 마지막에 올 내용을 작성한다. 참고문헌이나 문서 정보등을 적는다.
  • index.tex 문서의 주요 내용이 되는 파일이다. 여기에 원하는 내용을 작성하면 된다.
  • Tectonic.toml프로젝트 설정 파일이다. 문서의 이름이나 의존성 패키지, 컴파일 결과물 등을 설정할 수 있다.

프로젝트가 잘 생성되었으면 이제 컴파일을 해볼 차례다. 프로젝트의 루트 디렉토리(프로젝트 이름)에서 다음 명령어를 실행하자.

tectonic -X build

build 디렉토리가 생성되면서 Tectonic.toml에서 설정해둔 출력물 형식으로 tex 파일이 렌더링된다.

문서를 수정하면서 자동으로 빌드되도록 하고 싶으면 다음 명령어를 사용하면 된다.

tectonic -X watch

더 자세한 설명은 tectonic 공식문서 에서 확인할 수 있다.

벤치마크 결과

몇 가지 TeX 문서를 Overleaf와 Tectonic에서 각각 테스트 해 본 결과, 대략 200% 정도의 속도 향상이 있었다. 컴파일 속도는 CPU의 싱글스레드 성능에 영향을 받으므로 더 상위급의 CPU를 사용한다면 속도 차이는 더 날 수 있다.

Example: Butterfly Lemma

tectonic -X build  0.57s user 0.07s system 92% cpu 0.685 total

tectonic: 0.69초
overleaf: 1.54초

100개 출력

tectonic -X build  8.96s user 0.11s system 98% cpu 9.179 total

tectonic: 9.18초
overleaf: 22.41초

Example: Circumscribed Parallelepiped

tectonic -X build  0.55s user 0.10s system 88% cpu 0.738 total

tectonic: 0.738초
overleaf: 1.48초

100개 출력

tectonic -X build  9.41s user 0.14s system 98% cpu 9.736 total

tectonic: 9.736초
overleaf: 18.62초

Example: Plane Sections of the Cylinder - Dandelin Spheres

tectonic -X build  4.36s user 0.11s system 92% cpu 4.837 total

tectonic: 4.837초
overleaf: 10.22초

100개 출력

tectonic -X build  4.32s user 0.10s system 99% cpu 4.453 total

tectonic: 4.453초
overleaf: time out (출력안됨)

레퍼런스

  1. https://tectonic-typesetting.github.io
  2. https://texample.net
  3. https://www.overleaf.com

글을 쓰기 위한 원동력을 얻기 위해 자발적인 후원을 받고 있습니다.
구독 및 후원해 주신 분들께는 뉴스레터로 전용 컨텐츠가 추가 발송될 예정입니다.

Subscribe to jiwon.me

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe