명령, 환경, input으로 LaTeX 반복 코드 줄이기
반복 서식은 명령, 반복 구조는 환경, 공통 파일은 \input으로 줄일 수 있습니다. 실제로 같고 함께 바뀔 내용부터 시작하세요. 모든 반복에 추상화가 필요한 것은 아닙니다.
반복 서식은 명령
다음은 \vect, \code, \R을 한 번 정의합니다.
\documentclass[11pt]{article}\usepackage{kotex}\usepackage{amsmath,amssymb}\newcommand{\vect}[1]{\boldsymbol{#1}}\newcommand{\code}[1]{\texttt{#1}}\newcommand{\R}{\mathbb{R}}\begin{document}$\vect{x}\in\R^d$인 경우 \code{main.tex}를 엽니다.\end{document}서문 정의는 본문 전체에서 사용하고, 본문 정의는 실행 이후 해당 범위에서만 유효합니다. Command \R already defined.가 나면 이름을 바꾸거나 의도적인 재정의에는 \renewcommand, 기본 대안에는 \providecommand를 사용하세요.
\newcommand는 인수 아홉 개까지 지원하지만 네다섯 개만 되어도 정의를 보지 않고 읽기 어려울 수 있습니다.
반복 구조는 환경
resulttable은 열 지정과 머리글을 받습니다.
\documentclass[11pt]{article}\usepackage{kotex}\usepackage{booktabs}\newenvironment{resulttable}[2]{% \begin{table}[htbp]\centering \begin{tabular}{#1}\toprule #2\\\midrule}{% \bottomrule\end{tabular} \end{table}}\begin{document}\begin{resulttable}{lcc}{모델 & 정확도 & F1}기준 모델 & 0.812 & 0.794 \\제안 방법 & 0.867 & 0.851 \\\end{resulttable}\end{document}각 표는 데이터만 주고 환경이 선·열·배치를 제공합니다. 정의 오류가 사용 위치에서 보고될 수 있으므로 최소 호출로 시험하세요.
공통 정의는 파일로
서문을 복사하지 말고 preamble.tex를 만듭니다.
\usepackage{amsmath,amssymb}\newcommand{\vect}[1]{\boldsymbol{#1}}main.tex:
\documentclass{article}\usepackage{kotex}\input{preamble}\begin{document}$\vect{x}$\end{document}예제는 루트에서 컴파일합니다. 경로는 \input이 있는 장이 아니라 컴파일 작업 디렉터리 기준입니다. chapters/intro.tex에서 같은 폴더 파일을 부르더라도 \input{chapters/intro2}를 사용하세요.
\include는 페이지를 나누고 장별 보조 파일을 만드는 독립 장용입니다. \includeonly로 미리 볼 수 있지만 제외 장의 참조는 보조 정보에 의존합니다. 최종에는 전체 컴파일하고 \include는 중첩하지 않습니다.
추상화가 유용한 조건
여러 번 반복되고, 비슷한 정도가 아니라 같으며, 함께 수정될 가능성을 보세요. 엄격한 횟수 규칙은 아닙니다. 두 번 쓰는 내용을 분리하면 불필요한 이동이 생기고, 미묘한 차이를 처리할 옵션이 많으면 원문보다 읽기 어려워집니다.
컴파일 점검
정의가 본문 전에 읽히는지, 루트 기준 경로가 맞는지, 표·수식·참조가 의도한 대상을 가리키는지 확인하세요.
| 오류 | 원인 | 조치 |
|---|---|---|
Command \foo already defined. | 이름 충돌 | 이름 변경 또는 의도적 재정의 |
Environment foo undefined. | 늦은 정의·미로딩 | 서문 이동, \input 확인 |
File 'chapters/intro2.tex' not found. | 장 기준 경로 사용 | 루트 기준으로 수정 |
| 로그와 소스 위치가 달라 보임 | 매크로·환경 확장 중 실패 | 정의와 최소 호출만 시험 |
정리
서식은 명령, 구조는 환경, 공통 정의는 파일로 분리하고 장 경계는 메인에 둡니다. 가독성과 유지 보수에 도움이 될 때만 추상화하세요.
전체 폴더를 EasyLaTeX에 가져와 main.tex를 선택하세요.