긴 문서는 장별로 파일을 나누고 그림은 별도 파일로 두면 관리하기 쉽습니다. LaTeX에는 나눈 파일을 다시 이어 붙이는 방법이 여러 가지 있으며, 용도에 따라 나눠 씁니다. 어디에나 붙여 넣는 \input, 장 단위 조각을 위한 \include(부분 빌드용 \includeonly 포함), 각 파일을 단독으로도 컴파일할 수 있게 하는 subfiles / standalone package가 있습니다. 이 페이지는 그 선택 기준을 다룹니다.
\input — 어디에나 붙여 넣기
\input{file}은 그 파일의 내용을 명령이 놓인 위치에 그대로 삽입합니다. 그 자리에 직접 입력한 것과 같은 취급입니다. 페이지 나눔은 일어나지 않고, 프리앰블과 본문 모두에서 쓸 수 있으며, 중첩도 가능합니다. 확장자는 .tex가 있다고 간주됩니다. 공통 프리앰블, 표, 짧은 절 같은 작은 조각을 가져올 때 알맞습니다.
% main.tex
\documentclass{report}
\input{preamble/common}
\begin{document}
\input{sections/intro}
\input{tables/experiment-settings}
\end{document}\include — 장 단위로 나누기
\include{file}은 포함하기 전후에 \clearpage를 실행하고, 그 덩어리만을 위한 별도의 .aux 파일로 전환합니다. 장처럼 큰 단위를 위한 구조입니다. \include는 중첩할 수 없습니다(단, \include된 파일 안에서 \input을 쓰는 것은 가능합니다). 새 페이지에서 시작해야 하는 장 단위 분할에 사용합니다.
\include{chapters/ch1}\includeonly — 일부만 빠르게 컴파일
프리앰블에 \includeonly{ch2,ch3}라고 쓰면 LaTeX는 그 장들만 처리합니다. 각 \include는 자기 .aux를 보관하므로, 처리하지 않은 장의 페이지 번호와 상호 참조도 직전 전체 빌드의 값으로 유지됩니다. 즉 한 번 전체를 빌드해 두면, 이후에는 편집 중인 한 장만 짧은 시간에 다시 빌드할 수 있습니다. (이는 \include 전용이며 \input에는 적용되지 않습니다.)
\includeonly{chapters/ch3} % プリアンブルに置く / put in the preamblesubfiles / standalone — 파일 단독 컴파일
\include 방식은 어디까지나 본문 파일에서만 빌드할 수 있습니다. subfiles package를 사용하면 각 하위 파일을 단독으로도 컴파일할 수 있고, 동시에 본문의 프리앰블을 자동으로 상속합니다. 본문에서는 \subfile{...}를 쓰고, 각 하위 파일의 첫머리에 \documentclass[../main.tex]{subfiles}라고 쓰기만 하면 됩니다. 책 전체를 빌드하지 않고 한 장만 확인하고 싶을 때 편리합니다.
% main.tex
\documentclass{book}
\usepackage{subfiles}
\begin{document}
\subfile{chapters/ch1}
\end{document}
% chapters/ch1.tex
\documentclass[../main.tex]{subfiles}
\begin{document}
\chapter{はじめに}
\end{document}비슷한 standalone package/class는 각 파일이 자기만의 프리앰블을 갖게 합니다. 더 유연하지만 작성은 더 복잡합니다. 특히 그림과 TikZ에 잘 맞습니다. 그림을 standalone 파일로 두어 단독으로는 잘라낸 PDF/이미지로 출력하면서, 본문에도 가져올 수 있습니다.
무엇을 언제 쓸까
분할 설계는 먼저 디렉터리 수준에서 정해 두면 덜 헷갈립니다. 본문 장은 chapters/, 긴 절이나 표는 sections/ 또는 tables/, 그림은 figures/, 공통 설정은 preamble/에 둡니다. 파일 이름에는 공백을 피하고 영문자, 숫자, 하이픈, 밑줄로 맞춥니다. 나중에 CI나 다른 OS에서 빌드할 때, 이런 평범한 명명 규칙이 그대로 재현성이 됩니다.
- 작은 조각, 공통 프리앰블 →
\input. - 새 페이지에서 시작하는 장 단위 →
\include(부분 빌드용\includeonly포함). - 각 장을 단독으로도 컴파일, 공통 프리앰블 →
subfiles. - 그림을 단독 파일로 만들고 본문에서도 재사용, 각자 프리앰블 →
standalone.
또한 latexmk는 가져온 파일도 의존 관계로 추적하므로, 파일을 나누어도 자동 빌드나 저장 시 재컴파일은 그대로 작동합니다. 새로 분할한 프로젝트에서 “file not found”가 나오면, 먼저 경로를 본문 파일 기준 상대 경로로 썼는지, .tex 확장자를 불필요하게 중복하지 않았는지, 빌드 명령을 하위 디렉터리가 아니라 프로젝트 루트에서 실행하고 있는지 확인합니다.
또 다른 흔한 실패는 하위 파일을 직접 컴파일하는 것입니다. \input이나 \include로 가져온 파일에는 보통 \documentclass도 프리앰블도 없으므로 standalone document가 아닙니다. 장만 단독으로 컴파일해야 한다면 subfiles, 그림만 독립 PDF로 만들고 싶다면 standalone을 사용합니다. 일반 장 파일을 억지로 단독 컴파일하지 않는다는 경계를 분명히 해 둡니다.