Sublime Text(LaTeXTools)

Sublime Text은 이 절에 늘어선 편집기 가운데 유일하게 유료이고, 아무것도 설치하지 않은 상태에서는 LaTeX에 대해 구문 정의밖에 모르는 편집기입니다. 무료판이라는 것은 존재한 적이 없고 기한을 강제하지 않는 평가판만 있을 뿐인데, 개인 라이선스는 여전히 일시불 99달러이고 맞은편의 경쟁자는 무료입니다. 이 편집기를 LaTeX 환경으로 바꾸는 것이 LaTeXTools입니다. 이 페이지에서는 LaTeXTools가 무엇을 더해 주는지, Ctrl+B 뒤에서 결국 latexmk가 도는 구조, 이 패키지의 최대 볼거리인 \ref\cite 퀵 패널, upLaTeX을 통과시키는 .latexmkrc 작성법, 그리고——독자가 정말로 망설이는 지점이므로——지금 Sublime Text을 고른다는 것이 무슨 뜻인지를 다룹니다.

LaTeXTools는 누가 만들었고 지금 누가 보수하는가

“LaTeXTools는 이미 죽은 것 아닌가”라는 의심에는 분명히 아니오라고 답할 수 있습니다. 저장소가 만들어진 것은 2011년 3월이고, README는 만든 이로 Ian Bacher, Marciano Siniscalchi, Richard Stein 세 사람을 들고 현재 보수 담당으로 DeathAxe를 적어 두었습니다. 안정판 4.5.14가 나온 것은 2026년 7월 30일이며, 지원 중단이나 “관리자 구함” 안내는 어디에도 없습니다. 한 가지 눈여겨볼 것은 놓인 자리입니다. GitHub의 SublimeText라는 조직에 있지만, 이는 Sublime HQ 사가 아니라 커뮤니티 조직이고 자기소개에도 커뮤니티가 보수하는 패키지 모음이라고 적혀 있습니다. 편집기와 패키지는 서로 다른 사람들의 것이라는 뜻입니다.

설치는 Package Control을 거치는 것이 정석입니다. Package Control 자체는 함께 배포되는 코드가 아니라 부트스트랩 설치기이며, 그것을 불러오는 메뉴 항목과 명령 팔레트 항목은 Sublime Text 3의 build 3124(2016년 9월)부터 들어 있습니다. 먼저 명령 팔레트(Windows・Linux는 Ctrl+Shift+P, macOS는 Cmd+Shift+P)에서 Install Package Control을 실행하고, 이어서 Package Control: Install Package에서 LaTeXTools를 고릅니다. 다시 시작할 필요는 없습니다. .tex를 열면 구문이 LaTeX으로 바뀌고 기능이 살아납니다.

그다음 반드시 할 일이 둘 있습니다. 하나는 설정 파일 준비로, Preferences → Package Settings → LaTeXTools → Settings – User를 열면 User 디렉터리에 편집 가능한 LaTeXTools.sublime-settings가 생깁니다. 플러그인 폴더 안의 기본 파일은 업데이트 때마다 덮어써지니 절대 손대지 마십시오. 다른 하나는 점검으로, 명령 팔레트에서 LaTeXTools: Check system을 실행하면 TeX 명령, PDF 뷰어, subl 실행 파일이 LaTeXTools에 보이는지를 한눈에 확인할 수 있습니다. 이 명령에는 키 할당이 없고 팔레트로만 부를 수 있습니다. 무언가 안 될 때 가장 먼저 치는 것이 이것입니다.

Ctrl+B 뒤에서는 latexmk가 돌고 있습니다

빌드는 Sublime Text 표준 키인 Ctrl+B(macOS는 Cmd+B)입니다. LaTeXTools는 자체 키를 늘리는 것이 아니라 빌드 시스템 자체를 갈아 끼웁니다. 기본 빌더는 traditional이고, 한 번의 빌드로 현재 파일을 저장하고 TeX 빌드 명령을 띄우고 로그를 해석해 오류・경고・(켜 두었다면) 오버풀 박스를 아래쪽 패널에 늘어놓은 뒤, PDF 뷰어를 열어 커서 위치로 정방향 검색합니다. 패널의 오류 줄을 누르면 그 줄로 뛰고, 패널을 닫았다면 Shift+Escape로 다시 부릅니다.

핵심은 traditional 빌더의 실체가 latexmk라는 점입니다. TeX Live와 MacTeX에서는 latexmk를, MiKTeX에서는 texify를 부릅니다. 기본 명령줄은 이렇습니다. -cd는 처리 전에 소스 디렉터리로 옮기고, -f는 오류가 나도 갈 수 있는 데까지 가고, -interaction=nonstopmode는 대화형 정지를 피하며, -synctex=1이 뒤에서 다룰 정방향・역방향 검색에 필요한 동기화 데이터를 뱉습니다. 그리고 %E자리표시자로, 고른 엔진에 따라 -pdf(pdfLaTeX), -lualatex, -xelatex로 바뀝니다. 곧 엔진 선택이란 %E가 무엇으로 펼쳐지는지를 바꾸는 일에 지나지 않습니다.

terminal
latexmk -cd -f -%E -interaction=nonstopmode -synctex=1

여기서 경고가 하나 나옵니다. 최소한만 설치한 사람을 정확히 무는 함정이기 때문입니다. LaTeXTools는 latexmk에 의존하는데, latexmk가 늘 그 자리에 있는 것은 아닙니다. macOS의 BasicTeX에는 들어 있지 않으므로 sudo tlmgr install latexmk를 실행하거나 TeX Live Utility로 넣거나, latexmk가 필요 없는 쪽으로 builder를 바꿉니다. Ubuntu도 마찬가지여서 apt-get install texlive로는 들어오지 않으니 apt-get install latexmk가 필요합니다. MiKTeX에서는 빌더가 대신 texify를 부르는데, texifyoutput_directoryaux_directoryjobname도 지원하지 않습니다. 그것들이 필요하면 basic 빌더로 옮깁니다(지원하는 대신 makeindex는 다루지 않습니다). 참고로 builder_settings에는 빌드 동안에만 적용되는 환경 변수 사전인 env 키도 있습니다.

엔진을 고르는 가장 손쉬운 방법은 파일 첫머리의 매직 코멘트입니다. .tex의 첫 줄에 이것을 쓰면 해당 엔진이 쓰이고, 없으면 기본값은 pdfLaTeX입니다. 여러 파일로 된 프로젝트라면 이 줄은 루트(마스터) 파일에 놓습니다. TeXShop 호환을 위해 TS-program도 같은 뜻으로 통합니다. 받아들이는 값은 pdflatex, lualatex, xelatex 셋뿐입니다. 같은 계열에 %!TEX options = ...(엔진에 넘길 추가 옵션, --shell-escape 등), %!TEX root = <master>(루트 파일 지정), %!TEX output_directory%!TEX jobname(생성물의 위치와 이름)이 있습니다. 우선순위는 기억해 둘 만합니다. 지시자는 설정 파일보다 강하고, Ctrl+Shift+B로 고르는 빌드 배리언트는 그 지시자보다 강합니다. 배리언트를 골라 둔 채 엔진이 바뀌지 않는 혼란은 여기서 옵니다.

latex
%!TEX program = lualatex
%!TEX root = main.tex
%!TEX options = --shell-escape

또 하나의 요처는 texpath입니다. latexmk 등을 띄울 때 TeX 명령을 찾는 PATH이며, 특히 macOS에서는 GUI로 실행한 Sublime Text의 PATH가 셸과 달라서 값이 틀리면 “command not found”로 떨어집니다. 철칙은 texpath$PATH를 포함시키는 것입니다. 자기 경로를 앞에, 그다음에 $PATH. macOS라면 "/Library/TeX/texbin:$PATH"가 전형이고, Windows라면 설치 위치에 맞춘 "C:\\texlive\\2026\\bin\\windows;$PATH" 같은 값이 됩니다. Windows에서는 distro"texlive""miktex"로 맞춰 둡니다. 빌더를 바꾸려면 builderbasic(엔진과 bibtex・biber만 도는 최소 구성)이나 script(script_commands에 명령 순서를 직접 적는 방식)로 둡니다.

terminal
{
  // LaTeXTools.sublime-settings (User)
  "texpath": "/Library/TeX/texbin:$PATH",
  "builder": "traditional",
  "builder_settings": {
    "program": "lualatex",
    "options": ["--shell-escape"]
  }
}

\ref{\cite{를 치는 순간 뜨는 퀵 패널

LaTeXTools에서 가장 기분 좋은 대목이 여기입니다. \ref{\cite{를 다 친 순간, 화면 위쪽에 퀵 패널——Sublime Text 고유의 좁히기 목록——이 내려옵니다. \ref{라면 문서 안의 모든 \label, \cite{라면 \bibliography{}나 biblatex의 \addbibresource{}로 참조하는 문헌 파일의 모든 항목입니다. 몇 글자만 치면 흐린 일치로 좁혀지고, 골라서 Enter를 누르면 \ref{my-label}처럼 명령째로 삽입됩니다. 닫는 중괄호 바로 앞에 쉼표를 찍어 \cite{paper1,로 만들면 다중 인용의 둘째 이후 키도 같은 방식으로 고를 수 있습니다.

함정이 둘 있습니다. 첫째, LaTeXTools가 후보를 모으는 곳은 저장된 파일입니다. 방금 더한 라벨이나 키가 안 보이면 먼저 저장하십시오. 둘째, 지원하는 것은 외부 .bib 파일뿐이며 본문에 직접 쓴 \bibitem은 잡히지 않습니다. 자동으로 뜨는 것이 거슬리면 설정에서 끌 수 있고, 손으로 부르고 싶다면 \ref{ 등의 바로 뒤에서 Ctrl+l, x(macOS는 Cmd+l, x)나 Ctrl+l, Ctrl+f를 누릅니다. cleveref, fancyref, varioref, natbib, biblatex의 참조・인용 명령도 인식됩니다.

자동 완성 계열이 둘 더 있습니다. 명령 완성은 TeXStudio에서 온 완성 어휘 목록(CWL)을 함께 배포하며, \로 시작하는 순간 후보를 내놓습니다. \te를 치면 \textit 따위가 늘어서는 식입니다. 동작은 command_completion 설정이 정하며 prefixed(기본값, \로 시작할 때만), always, never 중에서 고릅니다. 문서가 읽어 들인 패키지의 후보는 cwl_autoload(기본값 켜짐)가 자동으로 더해 주고, env_auto_trigger를 켜면 \begin{\end{의 환경 이름도 완성됩니다. 다른 계열은 Fill Helper로, \usepackage{, \include{, \input{, \includegraphics{ 등을 치면 설치된 패키지나 현재 디렉터리의 파일을 내놓습니다(\includegraphics라면 이미지로 걸러집니다). 손으로 부르려면 Ctrl+l, Ctrl+f. 준비가 필요한 것은 패키지 완성뿐이니, 명령 팔레트에서 LaTeXTools: Build cache for LaTeX packages를 한 번 실행해 둡니다.

upLaTeX과 dvipdfmx — 경로는 .latexmkrc에 씁니다

여기가 일본어 문서에서 걸려 넘어지는 자리입니다. %!TEX programpdflatex, lualatex, xelatex만 받아들이므로 uplatex이나 platex을 직접 지목할 수 없습니다. LuaLaTeX으로 조판한다면 간단합니다. %!TEX program = lualatex이라고 쓰고 luatexjaltjsclasses 계열 클래스를 쓰면 됩니다. 까다로운 것은 DVI를 만든 뒤 PDF로 바꾸는 upLaTeX + dvipdfmx 경로입니다.

해법은 단순합니다. .latexmkrc에 엔진을 고르게 하는 것입니다. traditional 빌더의 실체가 latexmk이므로, 프로젝트 디렉터리(또는 홈)에 .latexmkrc를 두면 LaTeXTools 쪽 설정을 거의 건드리지 않고도 일본어용 경로로 바뀝니다. 요점은 $latexuplatex, $dvipdfdvipdfmx를 할당하고 $pdf_mode = 3으로 “DVI를 만든 뒤 dvipdfmx로 PDF” 경로를 고르는 것입니다. $latex에도 -synctex=1을 넘기면 DVI를 거쳐도 동기화 데이터가 PDF까지 실려 가서 뒤에서 다룰 검색이 통합니다. LaTeXTools 쪽에서는 %!TEX program 줄을 쓰지 않는 것이 안전합니다. 쓰면 pdfLaTeX의 %E가 선택되어 버립니다.

latexmkrc
$latex = 'uplatex -synctex=1 -interaction=nonstopmode -file-line-error %O %S';
$bibtex = 'upbibtex %O %B';
$biber = 'biber --bblencoding=utf8 -u -U --output_safechars %O %S';
$makeindex = 'upmendex %O -o %D %S';
$dvipdf = 'dvipdfmx %O -o %D %S';
$pdf_mode = 3;
$max_repeat = 5;

더 분명히 하고 싶다면 builder_settingscommand 키로 latexmk를 직접 지목할 수 있습니다. "command": "latexmk"라고 써 두면(옵션은 .latexmkrc에 그대로 둔 채) 일본어용으로 설정한 latexmk가 확실히 돕니다. command를 직접 쓰면 %!TEX program에 의한 엔진 자동 선택은 꺼지지만, 경로를 .latexmkrc에 고정하는 구성에서는 잃을 것이 없습니다. latexmk 자체 설정은 자동 빌드 페이지가 주인입니다.

정방향 검색은 Ctrl+l, j, 역검색은 뷰어 쪽 설정

LaTeXTools의 기본 빌드 명령에는 -synctex=1이 들어 있으므로, 평범하게 Ctrl+B만 눌러도 동기화 데이터(.synctex.gz)가 알아서 만들어집니다. 그다음은 한 번만 누르면 됩니다. .tex를 편집하다가 Ctrl+l, j(macOS는 Cmd+l, j)를 누르면 커서 위치에 해당하는 PDF 쪽이 나옵니다. 빌드 직후에도 정방향 검색이 자동으로 돌기 때문에 Ctrl+B만으로도 알맞은 자리가 열립니다. 동기화 없이 PDF만 열려면 Ctrl+l, v입니다. 참고로 Ctrl+l은 맨 Sublime Text에서는 “선택을 줄까지 넓히기” 키이지만, LaTeXTools가 켜진 .tex에서는 이 패키지 명령들의 접두가 됩니다. SyncTeX 자체의 원리는 전용 페이지에 있습니다.

역검색(PDF → 소스)은 뷰어가 Sublime Text을 되부르는 구조라 설정이 뷰어 쪽에 있습니다. 기본 뷰어는 OS별로 정해져 있고 viewer 설정으로 바꿉니다. Windows는 SumatraPDF, macOS는 Skim, Linux는 Evince(Linux Mint에서는 XReader)가 기본이며 Linux에서는 Okular와 Zathura도 고를 수 있습니다. Sioyek은 세 OS 모두에서 쓸 수 있고, 여기까지 나온 뷰어는 모두 정방향・역방향 검색을 지원합니다. 조심해야 할 예외가 macOS의 Preview.app으로, 둘 다 지원하지 않습니다. 클릭 방식도 제각각입니다. Skim은 Cmd+Shift+클릭, SumatraPDF는 더블 클릭, Evince와 Zathura는 Ctrl+왼쪽 클릭, Okular는 Shift+왼쪽 클릭입니다.

viewer 값OS비고
skimmacOSmacOS 기본값이자 정방향・역방향 검색을 모두 갖춘 사실상 유일한 macOS 뷰어
previewmacOSPreview.app을 열 뿐입니다. 정방향도 역방향도 되지 않습니다
sumatraWindowsWindows 기본값. Adobe의 PDF 뷰어는 열려 있는 PDF를 잠가 빌드를 깨뜨리므로 피합니다
evinceLinuxLinux 기본값. 시스템 Python에 dbus 바인딩이 필요합니다
okularLinux역검색은 Settings → Configure Okular → Editor에서 subl "%f:%l"을 등록합니다
zathuraLinux거의 설정 없이 동작합니다. 포커스 제어에는 wmctrl이나 xdotool이 있으면 확실합니다
xreaderLinuxLinux Mint 기본값. Evince와 거의 같게 다뤄집니다
sioyekLinux / macOS / Windows기술서와 논문을 겨냥한 뷰어. 세 플랫폼 모두에서 쓸 수 있습니다
commandLinux / macOS / Windows다른 뷰어를 직접 잇는 우회로. view_commandforward_sync_command를 씁니다

macOS의 Skim이라면 환경설정의 Sync 탭에서 “Sublime Text” 프리셋을 고르기만 하면 됩니다. 프리셋이 없는 옛 빌드에서는 Custom을 고르고 Command에 subl의 절대 경로(/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl), Arguments에 "%file":%line을 넣습니다. Windows의 SumatraPDF에서는 동기화 데이터가 있는 PDF를 열었을 때만 역검색 설정 칸이 나타나므로, 먼저 Ctrl+B로 한 번 빌드하고 그 PDF를 Sumatra에서 연 뒤 Settings → Options에 아래 명령줄을 등록합니다. 잘 안 될 때는 이 순서로 확인하십시오. -synctex=1을 붙여 빌드했는지, 뷰어의 프리셋이나 명령이 맞는지, 그리고 LaTeXTools: Check system으로 sublime_executable(subl의 위치)이 보이는지.

terminal
"C:\\Program Files\\Sublime Text\\sublime_text.exe" "%f:%l"

지금 LaTeX을 위해 Sublime Text을 살 이유가 있는가

먼저 라이선스의 형태를 정확히 짚어 둡시다. Sublime HQ 자신의 표현으로는, Sublime Text은 무료로 내려받아 평가할 수 있지만 계속 쓰려면 라이선스를 구입해야 하며, 평가에 강제 기한은 현재 두고 있지 않습니다. 라이선스는 이용자 단위입니다. EULA에 따르면 지원되는 모든 운영체제에서 유효하고, 주 사용자가 본인이라면 여러 대의 컴퓨터에서도 쓸 수 있습니다. 개인용은 일시불 구매이며 3년치 업데이트가 붙고, 3년이 지난 뒤에도 업데이트를 받으려면 업그레이드가 필요합니다. 법인용은 형태가 달라서 연 단위 좌석 구독이며, 처음 10석은 1석당 연 65달러, 좌석이 늘수록 단가가 낮아지는 단계제입니다(2026년 8월 기준 개인 라이선스는 99달러).

그 위에서 정직하게 봐 두어야 할 숫자가 둘 있습니다. 하나는 개발 속도입니다. 안정판은 2025년 5월 21일의 build 4200 이후로 움직이지 않아, 2026년 8월 기준 1년이 넘었습니다(개발판은 4207까지 나아갔지만 그쪽은 라이선스 보유자만 쓸 수 있습니다). 다른 하나는 이용자 분포입니다. Stack Overflow의 2025년 개발자 설문에서 통합 개발 환경으로 Visual Studio Code를 든 응답이 75.9%, Sublime Text은 10.5%였습니다. 대략 일곱 배의 차이입니다.

그래도 판단은 깔끔하게 갈립니다. 이미 Sublime Text을 갖고 있고 그 빠릿함이 자기 작업 방식의 이유라면, LaTeXTools는 충분히 완성되어 있고 지금도 보수되고 있습니다. 빌드도, 자동 완성도, 참조 패널도, 필요한 것은 다 있습니다. 반대로 지금 오로지 LaTeX을 위해 편집기를 고른다면, 확장의 수도 정리된 정보의 양도 VS Code 쪽에 있습니다. 원고 쪽에서 보면 어느 쪽을 골라도 .tex, .bib, .latexmkrc는 똑같고, 갈아타는 비용은 설정 파일 몇 장입니다. 그래서 이야기는 진짜 요점으로 내려앉습니다. 어느 편집기를 고르느냐보다 빌드를 프로젝트에 고정해 두는 편이 훨씬 중요합니다.

첫 점검 — 네 가지만 확인하기

  • 가장 먼저 칠 명령: 명령 팔레트에서 LaTeXTools: Check system을 실행해 TeX 명령, PDF 뷰어, subl 실행 파일이 모두 보이는지 확인합니다.
  • 일본어의 갈림길: LuaLaTeX이면 %!TEX program = lualatex. upLaTeX이면 %!TEX program을 아예 쓰지 말고 경로를 .latexmkrc에 맡깁니다.
  • 안 될 때: Ctrl+B가 명령을 못 찾는다고 하면 texpath를 봅니다. 참조가 갱신되지 않으면 저장하고 다시 빌드합니다. PDF에서 소스로 못 돌아가면 뷰어의 역검색 설정을 봅니다.
  • 프로젝트로 만들 신호: 그림이나 장 파일이 늘어나면 Sublime 프로젝트나 %!TEX root로 마스터를 고정해, 어느 탭에서 Ctrl+B를 눌러도 같은 PDF가 나오게 합니다.