Overleaf

Overleaf을 쓰는 동안 당신의 컴퓨터는 단 한 번도 조판하지 않습니다. Overleaf은 Overleaf 사의 서버에서 도는 TeX Live로 향한 브라우저 쪽 창구이며, 데스크톱 LaTeX 환경과의 차이는 거의 전부 이 한 가지 사실에서 파생됩니다. TeX Live를 갱신하는 대신 프로젝트마다 연도를 고르고, 없는 패키지를 tlmgr로 설치할 수 없으며, 컴파일러 플래그를 직접 칠 기회도 없고, 원고를 들이고 내는 일은 업로드・다운로드 아니면 git이 됩니다. 그 대가로 로컬 설치로는 결코 못 하는 한 가지를 얻습니다. 두 사람이 같은 줄을 동시에 쓰는 것입니다. 이 페이지는 그 제약과 보상을 실제로 마주치는 순서대로 따라갑니다.

손에 TeX이 없다는 사실이 무엇을 바꾸는가

먼저, 패키지를 스스로 더할 수 없습니다. Overleaf 서버에는 TeX Live 한 벌이 들어 있고 각 릴리스에는 5000개가 넘는 패키지가 담겨 있지만, 거기 없는 것을 tlmgr install로 추가할 수단은 사용자 쪽에 없습니다. 대신 .sty.cls를 프로젝트에 넣는 길이 있습니다. 다만 두는 자리에 규칙이 있습니다. 컴파일 과정은 이 파일들이 프로젝트 최상위에 있지 않으면 찾지 못합니다. 폴더로 정리하고 싶다면 최상위에 latexmkrc를 만들어 TEXINPUTS를 그쪽으로 돌려야 합니다.

latex
# latexmkrc at the top level of the project
# look in tex/ and bst/ before the system tree
$ENV{'TEXINPUTS'} = './tex//:' . $ENV{'TEXINPUTS'};
$ENV{'BSTINPUTS'} = './bst//:' . $ENV{'BSTINPUTS'};

latexmkrc가 통한다는 사실 자체가 Overleaf의 구조를 알려 줍니다. 빌드를 돌리는 것은 latexmk입니다. 그래서 컴파일러 플래그를 하나 더하고 싶을 때의 유일한 지렛대도 이 파일입니다. 다만 플래그를 더하고 싶어지는 상황은 생각보다 적습니다. 보통 -shell-escape를 요구하는 minted는 Overleaf 자신의 표현대로 “그대로 작동”합니다. 서버 쪽에서 이미 손을 써 두었기 때문입니다. 참고로 직접 호스팅하는 Community Edition은 모든 컴파일이 같은 컨테이너에서 돈다는 이유로 \write18을 기본으로 꺼 둡니다. 같은 이름을 단 두 산물이 외부 프로그램 호출에 관해서는 정반대의 기본값을 갖고 있는 셈입니다.

“Overleaf에서는 되는데 내 컴퓨터에서는 안 된다” — TeX Live 연도

이 어긋남의 원인은 대개 편집기가 아니라 배포판의 연도입니다. Overleaf에서 TeX Live 버전은 프로젝트 단위 설정이라, 톱니바퀴 아이콘에서 Compiler 항목으로 가 그 아래의 TeX Live version 드롭다운에서 고릅니다. 어떤 프로젝트에서 고른 연도가 다른 프로젝트에 영향을 주는 일은 없습니다. 옛 판들은 Legacy로 묶여 있으며, Overleaf 자신도 “새 프로젝트에는 권하지 않는다”고 하면서도 옛 템플릿이 통과하도록 남겨 두었습니다. 전환은 되돌릴 수 없는 변경이 아니므로 언제든 되돌릴 수 있습니다.

이 설계는 엉뚱한 것을 탓하지 않기 위해서라도 기억해 둘 값어치가 있습니다. 공저자 화면에서 그림이 깨지거나, 작년에는 통과하던 투고용 템플릿이 이제는 통과하지 않는다면, 가장 먼저 비교할 것은 편집기도 패키지 버전도 아니라 양쪽의 TeX Live 연도입니다. 반대로 나와 공저자와 투고처가 같은 연도로 맞춰지면 그 변수는 논의에서 사라집니다. 또한 Overleaf은 새 TeX Live가 나오면 검증을 거쳐 채택하므로, 상류 공개 직후 한동안은 기본값이 아직 전년도일 수 있습니다.

프로젝트 만들기: 첫 한 시간의 순서

모든 일은 프로젝트 안에서 일어납니다. 대시보드 왼쪽 위의 New Project에서 텅 빈 Blank Project, 갤러리의 틀에서 시작하는 From Template, 손에 있는 .zip을 가져오는 Upload Project, 그리고 Import from GitHub를 고를 수 있습니다. 무엇을 고르든 편집기에 도착하며, 왼쪽에 파일 목록, 가운데에 소스, 오른쪽에 PDF가 놓인 삼분할 화면이 됩니다. 브라우저에서 바로 시작되는 손쉬움 탓에 템플릿도, 공동 편집도, Git도, 그림도 한꺼번에 만지고 싶어지지만, 사고를 줄이는 순서는 정해져 있습니다. 먼저 혼자서, 최소한의 본문이 확실히 PDF가 되는 데까지.

  • 빈 프로젝트나 투고처 템플릿을 고르고, 어느 파일이 입구인지——대개 main.tex——를 확인합니다.
  • 본문을 한 글자 고치기 전에 Recompile을 한 번 눌러, 출발 상태에서 PDF가 나오는지 확인합니다.
  • Menu에서 Compiler와 TeX Live version을 정하고, 헷갈릴 여지가 있으면 Main document도 명시해 둡니다.
  • 일본어를 쓴다면 LuaLaTeX으로 갈지 latexmkrc로 몰아가는 pLaTeX・upLaTeX으로 갈지를 일찍 정합니다.
  • 루트 파일과 컴파일러와 참고문헌 방침이 굳은 뒤에야 공저자를 초대합니다.
  • 투고 전에 ZIP을 내려받아 로컬에서 재현할 수 있는 사본을 확보해 둡니다.

Compiler를 무엇으로 할까 — 여기서 “LaTeX”이 뜻하는 것

드롭다운에는 넷뿐입니다. 기본값 pdfLaTeX, 그리고 LaTeXXeLaTeXLuaLaTeX. 선택은 그 프로젝트에만 적용됩니다. 판단의 축은 둘, 글꼴을 어떻게 다룰 것인가그림을 어떤 형식으로 가지고 있는가입니다. pdfLaTeX은 .png, .jpg, .pdf를 다루고 .eps는 그 자리에서 변환하며, XeLaTeX과 LuaLaTeX은 유니코드와 시스템 글꼴(OpenType・TrueType)을 곧바로 다루고 이미지 형식도 가리지 않습니다.

Compiler내용과 다룰 수 있는 이미지고르는 상황
pdfLaTeX기본값. .png, .jpg, .pdf. .eps는 그 자리에서 변환서양 문자 위주의 표준 문서
LaTeXDVI를 거쳐 PDF로(내부적으로 dvipdfmx). 이미지는 .eps.pspLaTeX 계열 방식, 그림이 모두 EPS일 때
XeLaTeX유니코드와 시스템 글꼴(OpenType・TrueType)OpenType을 손쉽게 쓰고 싶을 때, 여러 언어 혼용
LuaLaTeX유니코드, 시스템 글꼴, Lua를 통한 확장새로 짜는 문서. 일본어에도 알맞습니다

여기서 이름 하나가 오해를 부릅니다. 드롭다운의 LaTeX은 맨 latex 명령이라는 뜻이 아니라 DVI를 거쳐 PDF에 이르는 경로(내부에서 dvipdfmx를 부름)를 가리킵니다. 그래서 그림이 .eps.ps로 한정되고 .png를 그냥 놓을 수 없습니다. 반대로 아래에서 다루는 일본어 pLaTeX 방식은 바로 이 “LaTeX”을 고르는 데서 시작합니다. pstricks를 쓰고 싶을 때도 LaTeX이나 XeLaTeX을 고릅니다(LuaLaTeX은 pstricks를 지원하지 않습니다). 그리고 어느 파일이 본문의 입구인지는 Main document 설정이며, 파일 목록의 점 세 개 아이콘에서 바꿉니다.

일본어 조판: LuaLaTeX인가, latexmkrc를 거친 pLaTeX인가

기본값인 pdfLaTeX으로는 일본어를 조판할 수 없습니다. 아무 준비 없이 일본어를 치면 오류가 나거나 글자가 사라집니다. 길은 둘입니다. (1) Compiler를 LuaLaTeX으로 바꾸기, (2) latexmkrc로 pLaTeX・upLaTeX을 돌리기. 새로 시작한다면 (1)이 무난하고 설정은 사실상 한 줄입니다. Menu에서 Compiler를 LuaLaTeX으로 두고 \documentclassluatexja 계열 클래스——가로쓰기의 ltjsarticle이나 ltjarticle——를 지정하면 그것만으로 일본어 조판이 섭니다. 글꼴을 명시하지 않으면 적당한 기본값이 묻히고, luatexja-preset을 쓰면 IPAex 글꼴을 묻을 수 있습니다.

latex
% Menu -> Compiler -> LuaLaTeX before compiling this file
\documentclass{ltjsarticle}
\usepackage[ipaex]{luatexja-preset}
\begin{document}
\section{はじめに}
こんにちは、\LaTeX! 数式も書けます: $e^{i\pi}+1=0$
\end{document}

일본 학회지에서 지금도 주류인 pLaTeX 방식으로 쓰려면 Compiler를 “LaTeX”으로 둔 뒤 프로젝트 최상위에 latexmkrc라는 이름의 파일을 더합니다. Overleaf은 latexmk로 빌드하므로, 이 파일이 “platex으로 처리하고 dvipdfmx로 PDF를 만들라”고 전하는 자리가 됩니다. upLaTeX을 쓴다면 platexuplatex으로, pbibtexupbibtex으로 바꿉니다. 비교적 새로운 선택지로 LuaLaTeX에서도 pLaTeX에서도 upLaTeX에서도 쓸 수 있는 jlreq 클래스도 있습니다.

latex
# latexmkrc for the pLaTeX route; set Compiler to LaTeX in the Menu
$latex = 'platex';
$bibtex = 'pbibtex';
$dvipdf = 'dvipdfmx %O -o %D %S';
$makeindex = 'mendex %O -o %D %S';

이 설정 작업 자체를 피하고 싶다면, 일본에서 만든 Cloud LaTeX은 설정 없이도 일본어를 조판합니다. 원고가 거의 일본어라면 검토할 만합니다. 한 가지 덧붙이면, Overleaf에서 편집기와 PDF를 오가는 클릭도 SyncTeX으로 움직이며, 컴파일할 때마다 서버에 output.synctex.gz가 만들어집니다. 출력 파일 이름이 본문 파일 이름이 아니라 한결같이 output.*인 것은 Overleaf의 빌드가 그렇게 짜여 있기 때문입니다. 다만 이 이동은 PDF 뷰어 설정을 “Browser”로 두면 작동하지 않습니다.

원고를 들이고 내기: ZIP, GitHub, 그리고 git bridge

손에 초고가 있다면 Upload Project가 가장 빠릅니다. .zip을 던져 넣으면 풀려서 폴더 구성 그대로 프로젝트가 됩니다. 다만 제한이 구체적입니다. 아카이브에는 LaTeX 컴파일러가 처리할 수 있는 파일만(순수 텍스트와 .eps.pdf.svg.png 이미지) 담을 수 있고, 편집 가능한 자료는 7 MB까지, 단일 파일은 50 MB를 넘을 수 없으며, 한 번의 업로드는 180개 파일까지입니다. Word의 .docx나 거대한 데이터셋은 애초에 들어가지 않습니다. 그리고 뜻밖의 함정으로, 본문 파일이 폴더 안에 들어 있으면 작동하지 않습니다. 전부가 하나의 폴더에 싸여 있는 zip이라면 내용물을 한 단계 밖으로 꺼내 다시 압축합니다.

원고가 Git에 있다면 길은 둘입니다. Import from GitHub는 Account Settings에서 GitHub 계정을 연결해 두면 보이는 저장소를 프로젝트로 바꿔 주고, 이후로는 Overleaf와 저장소 사이에서 push・pull을 할 수 있습니다. 다른 하나는 Git bridge로, 호스팅 서비스를 끼지 않고 git.overleaf.com에 직접 git clone을 합니다(클론 주소는 프로젝트 URL의 wwwgit으로 바꾼 것이며, 인증은 토큰으로 합니다). 둘 다 유료 요금제의 기능이고, Overleaf은 Git 서브모듈도 Git LFS도 지원하지 않습니다. 너무 큰 저장소는 용량 제한에 걸려 가져오기에 실패합니다.

공동 편집: Editor는 인원에 들어가고 Viewer는 들어가지 않습니다

Overleaf의 가장 큰 장점은 진짜 동시 편집입니다. 오른쪽 위의 Share에서 초대하면 같은 원고를 함께 열고 서로의 커서와 편집이 그 자리에서 보입니다. 초대 방법은 둘입니다. 이메일 주소로 초대(EditorViewer를 고름)하거나, Link Sharing으로 링크를 나눠 주는 것입니다. 링크는 두 종류가 발행되어, View 링크를 가진 사람은 읽을 수 있고 Edit 링크를 가진 사람은 편집할 수 있습니다(편집에는 계정 생성이 필요합니다).

여기서 인원 상한이 작동합니다. Viewer는 상한에 세지 않지만, Editor는 프로젝트 소유자의 요금제 한도를 소비합니다. 한도를 넘긴 뒤 편집 링크로 들어온 사람은 자동으로 읽기 전용으로 내려갑니다. 무료 요금제의 공동 편집자는 1명——나와 한 사람이면 무료로 함께 쓸 수 있습니다. 유료 요금제는 이를 넓혀, Overleaf의 요금제 한도 문서(2026년 8월 확인) 기준으로 Student와 Standard는 10명, Pro는 무제한입니다.

검토와 개고의 도구는 무료와 유료로 뚜렷이 갈립니다. 문서 안의 댓글은 무료 요금제에서도 쓸 수 있지만, 편집 하나하나를 수용・거부하는 변경 내용 추적(track changes)과 프로젝트를 이전 상태로 되감는 완전한 버전 기록은 유료입니다. 공저자가 많은 개고 작업에서 이 둘이 필요해지는 순간이 보통 구독을 고민하게 되는 지점입니다. 참고로 Overleaf 자신은 2012년 무렵 수학자 John Hammersley와 John Lees-Miller가 WriteLaTeX이라는 이름으로 시작했고, 2017년 7월 경쟁 서비스이던 ShareLaTeX을 통합해 양쪽 사용자를 한 환경에 모았습니다. 지금 화면에 보이는 기능 배치는 그 합류의 산물입니다.

컴파일이 시간 초과될 때

서버에서 빌드하는 이상 시간에는 상한이 있습니다. Overleaf의 요금제 한도 문서(2026년 8월 확인)에 따르면 무료 요금제의 컴파일 시간은 10초, 유료 요금제는 240초입니다. 긴 학위논문이나 무거운 TikZ・pgfplots 그림이 이를 넘기면 도중에 끊깁니다. 브라우저에서 쓰는 한 피할 수 없는 제약이므로, 원고가 자라기 시작하면 프로젝트를 “편리한 초고장”이 아니라 “재현 가능한 조판 환경”으로 다루기 시작하는 편이 현명합니다.

  • Menu에서 Compiler・TeX Live version・Main document를 확인하고, 공저자에게도 같은 설정을 확인하게 합니다.
  • 무거운 TikZ・pgfplots나 고해상도 이미지 때문에 시간이 초과된다면, 그림을 미리 PDF로 구워 두거나 무거운 장을 잠시 빼서 원인을 좁힙니다.
  • 오류가 불어나면 Auto compile을 끄고 Stop on first error로 바꾼 뒤, 첫 오류만 고치고 나서 이어 읽습니다.
  • 오래된 중간 파일이 말썽을 부릴 수 있으므로, 뭔가 이상하면 프로젝트 캐시를 지우고 다시 컴파일합니다.
  • 투고 직전에 Download as ZIP을 실행하고, 그 묶음으로 로컬이나 별도 프로젝트에서 같은 PDF가 재현되는지 확인합니다.

템플릿에서 시작하면 무엇이 절약되는가

절약되는 것은 투고 규정을 나중에 맞추는 작업입니다. Overleaf의 갤러리에는 학술지・국제 학회・이력서・학위논문・슬라이드 등 방대한 출발점이 있으며, New Project → Templates에서 종류를 고르거나 overleaf.com/gallery를 직접 열어 마음에 드는 것의 Open as Template을 누르면 그 체재의 프로젝트가 만들어집니다. 특히 출판사나 학회가 마련한 “공식” 템플릿은 그 학술지의 클래스 파일과 레이아웃 규칙을 처음부터 안고 있고, 원고가 완성되면 Overleaf에서 그대로 투고할 수 있는 것도 있습니다.

고를 때의 실무적 조언이 하나 있습니다. 템플릿은 체재만이 아니라 Compiler와 TeX Live 연도에 대한 전제도 함께 들여옵니다. 열자마자 아직 한 글자도 고치지 않은 상태에서 Recompile을 한 번 눌러 그 전제에서 PDF가 나오는지 확인한 뒤 본문에 손대면, 나중에 “내가 쓴 부분이 문제인가, 템플릿이 낡은 것인가”를 가려낼 일이 없습니다. 직접 만든 템플릿을 갤러리에 투고할 수도 있습니다.