CorTeX의 LaTeX 컴파일이 빠르게 느껴지는 이유
로컬 컴파일, 패키지 미리 가져오기, 체크포인트, 그림 재사용이 편집 후 새 PDF를 보기까지의 시간을 줄이는 방식을 알아봅니다.
이 문서의 내용
LaTeX를 컴파일하려면 엔진, 문서 클래스, 패키지, 글꼴, PDF 뷰어가 필요합니다. CorTeX는 이미 끝난 작업을 되풀이하지 않아 편집 후 새 PDF를 보기까지의 시간을 줄입니다.
핵심은 콜드 컴파일과 웜 컴파일의 차이입니다. 콜드 컴파일에서는 도구와 파일을 새로 가져와야 할 수 있습니다. 웜 컴파일에서는 이미 끝난 준비 작업의 상당 부분을 재사용할 수 있습니다.
| 마지막 컴파일 뒤 바뀐 내용 | 예상되는 경로 |
|---|---|
| 새 브라우저 또는 캐시되지 않은 TeX 환경 | 엔진을 불러오고 필요한 TeX 파일 가져오기 |
| 같은 프로젝트의 일반 편집 | 준비된 엔진과 다운로드한 파일 재사용 |
| 준비된 체크포인트 뒤의 호환되는 편집 | 편집 근처에서 다시 시작해 완전한 PDF 생성 |
| 외부화된 그림은 그대로인 텍스트 편집 | 적격 TikZ 또는 pgfplots 결과 재사용 |
| 프리앰블, 레이블, 인용, 의존성, 프로필 변경 | 전체 컴파일로 전환 |
이 경로는 자동으로 선택됩니다. 속도를 위해 정확성을 포기하거나 논문의 두 번째 초안 버전을 유지할 필요가 없습니다.
임시 LaTeX 논문을 열고 첫 PDF를 기다린 뒤 문서 뒤쪽의 문장을 바꿔 보세요. 첫 컴파일과 그다음 갱신을 비교하면 차이를 볼 수 있습니다. 결과는 프로젝트, 브라우저, 기기, 캐시된 파일에 따라 달라집니다. 아래에서는 그 이유를 설명합니다.
짧은 용어 설명#
- 엔진: 소스를 읽는 pdfLaTeX 같은 TeX 프로그램입니다.
- TeX Live 스냅샷: 프로젝트가 사용하는 클래스, 패키지, 글꼴, 도구의 고정된 모음입니다.
- 콜드 컴파일: 아직 엔진이나 TeX 파일을 가져와야 하는 컴파일입니다.
- 웜 컴파일: 브라우저에 이미 준비된 엔진과 파일을 재사용할 수 있는 컴파일입니다.
- 체크포인트: 이후 호환되는 편집이 다시 시작할 수 있도록 안전하게 저장한 엔진 상태입니다.
편집기 옆에서 실행되는 컴파일러#
일반적인 LaTeX 조판은 브라우저 안에서 실행됩니다. CorTeX는 wasmtex를 사용해 TeX 엔진을 최신 브라우저에서 실행할 수 있는 이식 가능한 바이너리 형식인 WebAssembly로 패키징합니다.
웜 컴파일에서 주 TeX 실행은 원격 서버로 업로드하고 컴파일한 뒤 다운로드하는 왕복 과정을 피합니다. 협업 변경은 공동 저자 사이를 이동할 수 있지만 조판을 위해 별도로 서버의 컴파일 결과를 기다릴 필요는 없습니다. 편집기와 컴파일러는 \input이나 \include로 불러오는 파일을 포함해 같은 브라우저 내 프로젝트 파일을 읽습니다.
연구자 입장에서는 일반 본문이나 수식 편집 뒤 전체 원고를 컴파일 서버에 먼저 업로드하지 않고 미리보기를 갱신할 수 있다는 뜻입니다.
첫 컴파일에서 재사용할 실행 환경을 준비합니다#
브라우저에는 TeX Live가 기본으로 설치되어 있지 않습니다. 콜드 컴파일 중 CorTeX는 선택한 TeX 엔진을 불러오고 문서가 쓰는 패키지, 글꼴, 형식 파일을 가져와야 합니다. 학회 템플릿은 한 페이지짜리 문서보다 더 많은 파일을 불러와야 하는 것이 자연스럽습니다.
이 파일은 변경되지 않는 TeX Live 스냅샷에서 가져옵니다. 특정 주소의 파일이 예기치 않게 바뀌지 않으므로 브라우저가 안전하게 캐시할 수 있고 프로젝트는 선택한 TeX 환경에 계속 연결됩니다.
프로젝트가 열려 있는 동안 CorTeX는 준비된 엔진을 계속 사용할 수 있습니다. 탭을 닫으면 엔진은 종료되지만 다운로드한 TeX 파일은 브라우저 캐시에 남을 수 있습니다. 브라우저 데이터를 지우거나 파일이 캐시에서 제거되거나 프로젝트의 TeX 환경을 바꾸면 이후 컴파일이 다시 콜드 컴파일이 될 수 있습니다.
프로젝트에 필요한 TeX 파일을 기억합니다#
브라우저가 빠진 TeX 파일을 가져올 때마다 엔진은 멈춰야 합니다. 파일을 하나씩 가져오면 조판 시간보다 네트워크 지연이 더 길 수 있습니다.
성공적으로 컴파일한 뒤 CorTeX는 프로젝트가 사용한 TeX Live 파일 이름을 기록합니다. 클래스, 패키지, 글꼴, 형식 파일이 포함될 수 있습니다. 이 기록에는 논문 본문이 없습니다. 프로젝트를 다시 열면 엔진이 각 파일을 하나씩 요청하기 전에 알려진 집합을 병렬로 가져올 수 있습니다.
CorTeX는 현재 컴파일에 필요한 파일을 계속 확인하면서 지난번에 사용한 파일을 미리 준비합니다. 지원되는 기본 템플릿은 시험된 목록으로 시작하므로 첫 열기부터 이점을 얻을 수 있습니다.
CorTeX는 도움이 될 때만 준비를 시작합니다. 활성 작업 공간이 나타날 때까지 기다리고, 탭이 숨겨져 있거나 데이터 절약 모드를 사용 중이거나 연결이 매우 느리면 불필요할 수 있는 사전 다운로드를 피합니다. 사용자가 요청한 컴파일이 언제나 우선합니다.
이 최적화는 패키지가 많은 학술지 템플릿을 다시 열 때 가장 눈에 띕니다. 병렬 준비를 통해 같은 파일을 네트워크 요청 하나씩 다시 발견하지 않습니다.
짧게 이어진 입력을 유용한 컴파일 하나로 모읍니다#
단어 하나를 입력하면 1초보다 짧은 시간에 변경이 여러 번 생깁니다. 글자마다 TeX를 실행하면 작업을 낭비하고 오래된 결과가 새 미리보기를 덮어쓸 수 있습니다.
CorTeX는 짧게 이어지는 편집을 모은 뒤 컴파일합니다. 더 새로운 요청이 진행 중인 컴파일을 앞지르면 이전 결과는 미리보기를 갱신할 수 없습니다. 마지막 성공 결과의 입력이 하나도 바뀌지 않았다면 같은 입력을 다시 컴파일하지 않고 해당 PDF를 유지할 수 있습니다.
편집기는 키 입력을 먼저 처리하고 소스 검사와 PDF 작업은 별도로 예약합니다. 따라서 컴파일이 편집기의 즉각적인 반응을 막지 않습니다.
체크포인트를 이용해 편집 위치 근처에서 재개합니다#
호환되는 pdfLaTeX 프로젝트에서는 성공한 컴파일 뒤 커서 근처에 체크포인트를 준비할 수 있습니다. 체크포인트는 TeX 엔진의 상태를 저장합니다.
다음 편집이 그 위치 뒤에서 일어나고 앞선 입력이 그대로라면 엔진이 해당 지점부터 다시 시작해 나머지를 조판할 수 있습니다. 검증하지 않은 페이지 조각을 이어 붙이는 것이 아니라 여전히 완전한 PDF를 만듭니다.
CorTeX는 성공한 컴파일 뒤 잠시 입력이 없을 때 체크포인트를 준비하여 그 비용이 다음 편집 직후의 컴파일에 들어가지 않게 합니다. 준비가 시작되지 않았다면 새 편집이 준비를 취소합니다.
안전할 때만 이 단축 경로를 사용합니다. 설정 명령, 레이블, 인용, 필수 파일, 주 문서, 엔진, 프로젝트 구조를 바꾸면 전체 컴파일이 필요할 수 있습니다. 일부 오래된 환경은 체크포인트를 지원하지 않습니다. 다시 시작해도 안전하다는 것을 CorTeX가 증명할 수 없으면 전체 컴파일을 실행합니다.
따라서 안정된 원고의 뒤쪽 편집은 가장 짧은 경로의 좋은 후보입니다. 프리앰블을 수정하거나 인용을 바꾸면 전체 경로를 사용하는 것이 정상입니다.
무거운 그림은 자체 결과를 유지할 수 있습니다#
TikZ와 pgfplots 그림은 컴파일 중 그래픽을 그리는 작은 프로그램입니다. 그림이 많은 논문에서는 다시 그리는 시간이 본문을 조판하는 시간보다 길 수 있습니다.
TikZ 외부화가 활성화되어 있고 안전하면 CorTeX가 그림을 별도 작업으로 컴파일합니다. 그다음 TikZ 자체 내용 검사를 통해 텍스트만 편집한 뒤 변경되지 않은 그림을 재사용합니다. 기기에 메모리가 충분하면 그림 작업 여러 개를 함께 실행할 수 있습니다.
모든 그림을 안전하게 분리할 수 있는 것은 아닙니다. 오버레이와 일부 사용자 정의 환경은 전체 문서 문맥이 필요합니다. CorTeX는 이런 경우와 그림 작업 실패 뒤에 전체 컴파일로 돌아갑니다.
일부 보조 도구는 여전히 서버를 사용합니다#
일부 참고문헌과 색인 도구는 브라우저에서 실행할 수 없습니다. 문서에 Biber나 Xindy가 필요하면 CorTeX는 해당 단계에 필요한 파일만 격리된 서비스로 보냅니다. 주 TeX 실행은 계속 로컬에서 이루어지며, CorTeX는 동일한 보조 작업을 재사용할 수 있습니다. 엔진 선택과 단계 확인 방법은 LaTeX 컴파일하고 미리 보기에 설명되어 있습니다.
이 제한된 보조 입력에는 참고문헌, 색인 또는 필요한 소스 데이터가 들어 있을 수 있습니다. 일반적인 브라우저 내 조판 경로의 예외이며, 문서가 요청하지 않은 보조 단계로 프로젝트 파일을 보내지는 않습니다.
빠른 경로도 올바른 PDF를 만들어야 합니다#
모든 최적화에는 전체 컴파일로 돌아가는 경로가 있습니다. 캐시된 파일은 TeX 환경별로 분리됩니다. CorTeX는 소스, 필수 파일, 엔진, 환경이 계속 일치할 때만 결과를 재사용합니다. 오래된 컴파일은 새 미리보기를 덮어쓸 수 없습니다. 정확성은 모든 빠른 경로의 요구 사항이지 속도와 맞바꾸는 대상이 아닙니다.
통제된 측정이 보여 주는 것#
2026년 9월 3일의 내부 앱 내 Worker 추적에서는 검증된 tl2026-20260826-4f5a814 프로필의 24페이지 논문을 사용했습니다. 호환되는 체크포인트 재시작은 해당 추적의 전체 컴파일러 시간의 약 10분의 1이었습니다. 기록에는 절대 시간을 재현하는 데 필요한 브라우저 버전, 기기 CPU와 메모리, 캐시 준비 상태가 보존되지 않았습니다. 따라서 이는 메커니즘의 근거이지 최종 사용자 벤치마크나 속도 약속이 아닙니다. 또한 페이지 로드나 첫 PDF 페이지 표시가 아니라 컴파일러 작업을 측정했습니다. 결과는 문서, 브라우저, 기기, 캐시, 네트워크에 따라 달라집니다.
CorTeX는 컴파일러 준비, PDF 생성, 첫 PDF 페이지 표시를 별도로 측정합니다. 빌드는 최초 작업 공간 다운로드에 포함되는 컴파일러 코드의 크기를 제한하므로 컴파일러 속도를 위해 편집기 열기 속도를 희생하지 않습니다.
작성 중에 체감할 수 있는 차이#
새 브라우저나 파일이 많은 프로젝트에서는 첫 컴파일에 시간이 걸릴 수 있습니다. 브라우저 컴파일은 사용자의 기기를 이용하므로 오래되었거나 메모리가 적은 컴퓨터에서는 큰 논문이 더 느릴 수 있습니다. CorTeX는 작은 기기에서 병렬 작업을 제한하고 단축 경로가 안전하지 않을 때 전체 컴파일을 사용합니다.
직접 경로를 비교할 수 있습니다. 임시 LaTeX 프로젝트를 열고 첫 PDF를 기다린 뒤 끝부분 문장 하나를 바꾸고 다음 컴파일을 살펴보세요. 그다음 프리앰블의 패키지를 바꾸고 전체 경로와 비교합니다. 시간은 환경마다 다르지만 콜드 컴파일과 웜 컴파일의 차이는 확인할 수 있을 것입니다.
설정, 레이블, 인용을 자주 바꾸면 전체 실행이 늘 수 있고 복잡한 그림을 많이 다시 만들 때도 마찬가지입니다. 실용적인 조언은 LaTeX 미리보기 빠르게 유지하기와 LaTeX 프로젝트를 여러 파일로 나누기를 참고하세요.
편집 후 컴파일 시간을 비교할 때는 설정, 필요한 소스 파일, 그림 중 무엇이 바뀌었는지 기록하세요. 이 정보가 있어야 시간을 의미 있게 비교하고 미리보기 속도 안내에서 다음 확인 사항을 찾을 수 있습니다.