학술 클래스

투고처가 지정하는 학술 클래스——amsart, IEEEtran, elsarticle, revtex4-2, acmart——는 LaTeX 문서 클래스 가운데 가장 오해받는 부류입니다. TeX Live 2024에 들어 있는 acmart.cls 를 열어 보면 \LoadClass[\ACM@fontsize, reqno]{amsart} 라는 줄이 있습니다. 컴퓨터 과학 분야 ACM이 배포하는 투고 클래스가 실은 미국수학회의 클래스 위에 세워져 있다는 뜻입니다. 투고 클래스는 “받아 든 스타일시트”가 아니라 투고 규정을 실행 가능한 코드로 옮겨 적은 것이며, 저자가 보지 못하는 곳에서 다른 클래스와 패키지를 함께 불러옵니다. 이 페이지에서는 투고 클래스가 실제로 무엇을 고정하는지, 왜 그것과 싸우면 시간을 잃는지, 그리고 몰래 불려 온 패키지가 어디에서 문제를 일으키는지를 살펴봅니다.

투고 클래스는 무엇을 고정하는가

고정되는 것은 여섯 가지입니다. 단 수, 판면, 글꼴, 제목 체재, 표제부 구조, 참고문헌 서식. 저자에게 남는 것은 내용과 그 논리 구조뿐입니다. 그래서 투고처는 규칙 목록이 아니라 한 묶음——.cls, 짝이 되는 .bst 참고문헌 스타일, 채워 넣는 템플릿——을 배포합니다. 원고에는 \section{...}\cite{...} 로 의미만 적고, 외관에 관한 판단은 전부 클래스에 넘깁니다. 구조와 외관을 분리한다는 원칙 자체는 문서 클래스와 프리앰블 페이지가 다루므로 여기서는 되풀이하지 않습니다. 투고 클래스에서 새로운 점은 그 분리가 자기 취향이 아니라 남의 규정에 의해 강제된다는 것입니다.

여기서 가장 쓸모 있는 조언이 나옵니다. 클래스와 싸우지 마십시오. 쪽수 제한은 그 클래스의 판면을 기준으로 세므로, \vspace 를 지우거나 geometry 로 여백을 좁혀 벌어 놓은 쪽수는 제작 단계에서 다시 조판되는 순간 사라집니다. 2단을 1단으로 바꾸거나 글꼴을 갈아 끼운 원고는 심사에 넘어가기 전 형식 점검에서 되돌아올 수 있습니다. 반대로 클래스에 맡겨 두면 같은 본문을 그대로 다른 학회의 클래스로 옮길 수 있습니다. 투고 클래스가 저자에게 돌려주는 것은 “체재를 고민하지 않아도 되는 시간”이지 “체재를 손볼 자유”가 아닙니다.

구하는 쪽에도 함정이 하나 있습니다. 이 클래스들은 보통 최소 구성 TeX 환경에는 들어 있지 않습니다. TeX Live나 MiKTeX를 전체 설치하면 amsart, IEEEtran, acmart, elsarticle, revtex 가 함께 들어오지만, 최소 구성에서는 tlmgr install ieeetran 처럼 하나씩 설치하거나 출판사 배포물에서 .cls 를 꺼내 원고 옆에 둡니다. llncs 는 특히 로컬 배치가 많습니다. 그리고 반드시 투고처의 author kit 또는 author center에서 최신 템플릿을 다시 받으십시오. 낡은 로컬 사본을 계속 쓰다가 마감 전날 체재가 어긋난 것을 발견하는 사고는 해마다 어딘가에서 일어납니다.

amsart — 미국수학회 클래스와 정리 환경

amsart 는 미국수학회(AMS)의 논문 클래스입니다. 수학 분야 투고에서 가장 널리 쓰일 뿐 아니라 다른 클래스의 토대로도 쓰입니다. 앞에서 보았듯 acmart 가 이 클래스를 불러옵니다. 클래스가 amsmathamsfonts 를 직접 마련하므로 수식 관련 \usepackage 는 대부분 필요 없습니다. 표제부에서는 \title, \author 외에 \address{...}(소속 주소), \email{...}, \thanks{...}, \subjclass[2020]{...}(AMS 수학 주제 분류), \keywords{...} 를 쓰고, 정리 환경은 \newtheoremamsthm\theoremstyle 로 짭니다.

amsart 에서 처음 걸려 넘어지는 곳은 대개 초록의 위치 입니다. article 습관대로 \maketitle 뒤에 abstract 환경을 쓰면 로그에 이렇게 나옵니다. Class amsart Warning: Abstract should precede \maketitle in AMS document classes. 컴파일은 그대로 통과하므로 알아차리기 어렵고, 초록이 표제부 밖으로 떨어진 PDF가 나옵니다. abstract\maketitle 앞에 두는 것이 맞습니다. 이 관례는 amsart 를 토대로 삼은 acmart 에도 이어지는데, 그쪽은 경고가 아니라 오류로 멈춥니다.

latex
\documentclass[reqno]{amsart}
\newtheorem{theorem}{Theorem}[section]
\begin{document}
\title{On a Class of Analytical Engines}
\author{Ada Lovelace}
\address{Analytical Engine Lab, London, UK}
\email{[email protected]}
\subjclass[2020]{Primary 68N01; Secondary 01A55}
\keywords{analytical engine, program}

% the abstract must come BEFORE \maketitle in AMS classes
\begin{abstract}
This is the abstract.
\end{abstract}
\maketitle

\section{Introduction}
\begin{theorem}
Every engine has a program.
\end{theorem}
\end{document}

IEEEtran — IEEE 학술지와 회의록

IEEEtran 의 특징은 같은 클래스가 옵션에 따라 전혀 다른 체재로 바뀐다는 점입니다. \documentclass[journal]{IEEEtran} 이면 학술지 2단, \documentclass[conference]{IEEEtran} 이면 회의록이 되고, 짧은 논문용 technote 와 심사용 peerreview/peerreviewca 도 있습니다. compsoc(Computer Society), comsoc(Communications Society), transmag 를 더하면 해당 분과의 체재로 바뀌며, \documentclass[10pt,journal,compsoc]{IEEEtran} 처럼 글자 크기와 함께 쓸 수 있습니다. 용지는 letterpaper 가 기본이고 a4papercspaper 도 고를 수 있습니다.

고유한 작성법은 이렇습니다. 초록은 abstract 환경에, 키워드는 전용 IEEEkeywords 환경 에 씁니다. 이 환경은 학술지 모드에서 “Index Terms”, 회의 모드에서 “Keywords”라는 제목으로 자동 조판됩니다. 저자와 소속은 \IEEEauthorblockN{...}\IEEEauthorblockA{...} 를 조합하고, 참고문헌은 BibTeX 스타일 IEEEtran.bst 가 표준입니다. 눈에 잘 띄지 않지만 중요한 성질이 하나 더 있습니다. IEEEtran.cls 는 기본적으로 외부 패키지를 거의 불러오지 않습니다. TeX Live 2024에 들어 있는 판본에서 \RequirePackage 가 나오는 곳은 Computer/Communications Society용 수식 글꼴 탐색뿐입니다. 그래서 사용자가 hyperrefgeometry 를 직접 넣어도 잘 충돌하지 않습니다. 아래에서 볼 acmart 와는 정반대입니다. 템플릿은 IEEE의 Template Selector에서 다시 받는 것이 확실합니다.

latex
\documentclass[conference]{IEEEtran}
\begin{document}
\title{A Conference Paper}
\author{\IEEEauthorblockN{Ada Lovelace}
  \IEEEauthorblockA{Analytical Engine Lab\\ London, UK}}
\maketitle

\begin{abstract}
This is the abstract.
\end{abstract}

\begin{IEEEkeywords}
broadband networks, quality of service
\end{IEEEkeywords}

\section{Introduction}
The conference option sets the proceedings layout.
\end{document}

acmart — ACM 학술지와 회의록

acmart 는 ACM이 배포하는 통합 클래스로, 예전에 회의와 학술지마다 흩어져 있던 클래스들을 하나로 합친 것입니다. 체재는 format= 옵션 으로 고르며 format= 부분 자체는 생략할 수 있습니다. 심사 투고의 기본값은 1단인 manuscript, 많은 학술지는 acmsmall, 책으로 나오는 회의록은 sigconf, SIGPLAN 계열은 sigplan 입니다. 구분 요령은 acm 으로 시작하는 형식은 학술지·트랜잭션용, sig 로 시작하는 형식은 회의록용 이라는 것입니다. 그래서 \documentclass[sigconf]{acmart}\documentclass[manuscript,review,anonymous]{acmart} 처럼 씁니다. 한편 SIGCHI용 sigchi 와 SIGGRAPH용 siggraph 는 이미 폐지되었습니다. 어느 쪽이든 지정하면 클래스가 Class acmart Warning: The format sigchi is now obsolete. I am switching to sigconf. 라고 경고하며 알아서 바꿔 버립니다. sigchi-a 는 기존 문서를 위해 옵션만 남아 있는데, ACM이 그 체재의 원고를 받지 않는다고 클래스 자신이 경고합니다.

acmart 의 고유한 작성법은 요구하는 메타데이터의 양 에 집중되어 있습니다. 학술지라면 \acmJournal{TOMS} 처럼 약칭으로 지정하고, 정규 논문에서는 CCS(ACM Computing Classification System) 개념\begin{CCSXML}...\end{CCSXML}\ccsdesc{...} 로 선언하며 \keywords{...} 를 덧붙입니다. 소속은 \affiliation{\institution{...}\city{...}\country{...}} 처럼 요소별로 나누어 씁니다. 참고문헌은 natbib 기반의 ACM-Reference-Format 입니다. 그리고 amsart 에서 물려받은 초록 규칙이 여기서는 강제입니다. \maketitle 뒤에 abstract 를 두면 ! Class acmart Error: Abstract must be defined before maketitle command. Please move it! 로 멈춥니다. 경고로 끝나는 amsart 와 달리 이쪽은 아예 빌드되지 않습니다.

latex
\documentclass[sigconf]{acmart}
\begin{document}
\title{A Proceedings Paper}
\author{Ada Lovelace}
\affiliation{\institution{Analytical Engine Lab}\city{London}\country{UK}}

% abstract before \maketitle, or acmart raises an error
\begin{abstract}
This is the abstract.
\end{abstract}

\ccsdesc[500]{Networks~Network reliability}
\keywords{broadband networks, quality of service}
\maketitle

\section{Introduction}
The sigconf format sets the ACM proceedings layout.
\end{document}

llncs — Springer의 LNCS

llncs 는 Springer의 회의록 시리즈 Lecture Notes in Computer Science(LNCS) 와 자매 시리즈 LNAI・LNBI 용 클래스이며, \documentclass{llncs} 처럼 이름으로 바로 지정합니다. ECCV, MICCAI를 비롯해 Springer에서 회의록을 내는 수많은 국제회의가 이 체재를 채택하며, 레이아웃은 article 을 확장한 1단입니다. 고유한 작성법은 저자와 소속을 쓰는 방식에 몰려 있고, 이를 위해 클래스가 표준 LaTeX에 없는 \institute 명령 을 추가합니다. \author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2}} 처럼 \inst{n} 으로 소속 번호를 붙이고 \institute{first affiliation \and second affiliation} 로 소속을 나열하면 번호가 자동으로 매겨집니다. 이메일 주소는 \institute 안에 \email{...} 로 씁니다. 참고문헌 스타일은 splncs04(\bibliographystyle{splncs04})입니다. runningheads 옵션은 권 편집자용이라 단독 투고에서는 보통 필요하지 않습니다.

latex
\documentclass{llncs}
\begin{document}
\title{An LNCS Contribution}
\author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2}}
\institute{Paris-Dauphine University, Paris, France\\
  \email{[email protected]}
  \and Sorbonne University, Paris, France\\
  \email{[email protected]}}
\maketitle

\begin{abstract}
The abstract follows the title block.
\end{abstract}

\section{Introduction}
Bibliography style: splncs04.
\end{document}

elsarticle — Elsevier 학술지

elsarticle 는 Elsevier 각 학술지에 투고하는 원고용 클래스로 \documentclass[preprint,12pt]{elsarticle} 처럼 씁니다. 기본값은 a4paper,10pt,oneside,onecolumn,preprint 이고, preprint 는 투고용으로 여유 있는 1단 체재를 만듭니다. 1p3p5p 는 게재 시의 판면(1단, 2단, 초록을 통단으로 짠 2단)에 대응하며 최종 지면은 출판사가 짭니다. 심사용으로 행간을 넓히는 review, 인쇄본에 가까운 final, 익명 투고용 doubleblind 도 있습니다. 고유한 작성법은 frontmatter 환경 입니다. \title{...}, \author{...}, \affiliation{...}(예전 방식인 \address{...} 도 여전히 동작합니다), abstract 환경, keyword 환경을 모두 이 안에 넣고, 본문은 \end{frontmatter} 뒤에서 시작합니다. 저자와 소속은 라벨로 연결해 \author[a]{...}\affiliation[a]{organization={...}, city={...}, country={...}} 처럼 씁니다.

여기에 이 페이지에서 가장 자주 밟는 지뢰가 있습니다. elsarticle.cls 는 뒷부분에서 \RequirePackage[\@biboptions]{natbib} 를 실행합니다. 즉 클래스가 이미 natbib을 불러 놓았고, 기본 인용 형식은 numbers 입니다. 그것을 모른 채 프리앰블에 \usepackage[authoryear]{natbib} 를 쓰면 ! LaTeX Error: Option clash for package natbib. 로 멈춥니다. 같은 numbers 를 넘겼을 때만 우연히 통과하기 때문에 증상이 나타났다 말았다 해서 더 성가십니다. 올바른 해결책은 셋입니다. 클래스 옵션으로 넘기거나(\documentclass[preprint,authoryear]{elsarticle}), 클래스가 마련한 \biboptions{...} 를 쓰거나, nonatbib 옵션으로 불러오기 자체를 막는 것입니다. 참고문헌 스타일은 elsarticle-num, elsarticle-num-names, elsarticle-harv 중에서 고릅니다. natbib 쪽 인용 명령은 natbib 페이지가 다룹니다.

latex
% author-year is a CLASS option here -- do not reload natbib yourself
\documentclass[preprint,authoryear,12pt]{elsarticle}
\begin{document}
\begin{frontmatter}
\title{An Elsevier Manuscript}
\author[a]{Ada Lovelace}
\affiliation[a]{organization={Analytical Engine Lab},
  city={London}, country={UK}}

\begin{abstract}
The abstract lives inside the front matter.
\end{abstract}

\begin{keyword}
broadband networks \sep quality of service
\end{keyword}
\end{frontmatter}

\section{Introduction}
Text begins after the front matter.
\bibliographystyle{elsarticle-harv}
\end{document}

REVTeX — 물리 분야(APS / AIP)

revtex4-2 는 미국물리학회(APS)와 미국물리협회(AIP) 학술지용 클래스이며, 버전이 클래스 이름 자체에 들어 있습니다. 학회(aps/aip), 학술지명(prl, prb, prx, prfluids 등), 체재(preprint/reprint/twocolumn) 세 갈래의 옵션을 조합해 \documentclass[prl,aps,reprint]{revtex4-2} 처럼 지정합니다. 소속을 쓰는 방식이 독특합니다. \affiliation{...} 을 각 \author{...} 바로 뒤에 두면 그 저자의 소속이 되고, 같은 소속이 이어지는 저자는 자동으로 묶입니다. 위 첨자 번호 방식을 원하면 클래스 옵션 superscriptaddress 를 씁니다. 참고문헌 스타일은 apsrev4-2 입니다.

REVTeX도 natbib을 안에 품고 있지만 넘기는 옵션이 elsarticle 과 다릅니다. revtex4-2.cls\RequirePackage[sort&compress]{natbib} 를 실행합니다. 즉 인용 번호가 자동으로 오름차순 정렬되고, 연속된 번호는 범위 표기로 묶입니다. 그래서 \cite{c,a,b} 라고 써도 출력은 [1–3] 같은 모양이 됩니다. 이는 물리 분야 관례에 맞춘 의도적인 기본값이지 키를 적은 순서 탓이 아닙니다. 여기서도 \usepackage{natbib} 을 직접 덧붙이지 말고 클래스에 맡기십시오.

latex
\documentclass[prl,aps,reprint]{revtex4-2}
\begin{document}
\title{A Physical Review Letter}
\author{Ada Lovelace}
\affiliation{Analytical Engine Lab, London, UK}
\author{Charles Babbage}
\affiliation{Analytical Engine Lab, London, UK}

% in REVTeX the abstract comes before the title block is typeset
\begin{abstract}
This is the abstract.
\end{abstract}
\maketitle

\section{Introduction}
% natbib is loaded by the class with sort&compress
Text.
\bibliographystyle{apsrev4-2}
\end{document}

클래스가 이미 불러온 패키지와 Option clash

투고 클래스에서 나오는 오류는 대부분 한 가지 원인에서 옵니다. 클래스가 이미 불러 놓은 패키지를 저자가 옵션까지 붙여 다시 불러오는 것 입니다. 대표적인 예가 acmart 입니다. TeX Live 2024에 들어 있는 판본은 geometry, hyperref, fancyhdr, natbib, microtype, booktabs, caption, setspace, xcolor, graphicx 등을 스스로 불러옵니다. 그래서 \documentclass[sigconf]{acmart} 뒤에 \usepackage[margin=1in]{geometry} 를 쓰면 ! LaTeX Error: Option clash for package geometry. 로 멈춥니다. elsarticle 역시 graphicx 를, 그리고 지면용 옵션에서는 geometry 를 불러옵니다. “여백을 바꾸려 했더니 오류가 났다”는 증상은 거의 이것입니다.

대응은 순서대로 세 가지입니다. 첫째, 그 옵션을 클래스 옵션으로 넘길 수 있는지 먼저 의심하십시오. elsarticleauthoryear 가 바로 그런 경우입니다. 둘째, 꼭 먼저 손을 써야 한다면 \documentclass 앞에 \PassOptionsToPackage{...}{geometry} 를 쓰십시오. 클래스가 패키지를 불러올 때 그 옵션이 합류합니다. 셋째, 애초에 여백이나 단 수를 바꾸는 것 자체가 투고 규정 위반인 경우가 많으므로 하지 않는 것이 정답 일 가능성을 먼저 따져 보십시오. 무엇이 불려 왔는지 알려면 프리앰블 맨 앞에 \listfiles 를 두고 로그 끝을 보는 것이 가장 빠릅니다.

클래스투고처 / 분야기억할 점
amsart미국수학회(수학)abstract\maketitle 앞에. acmart 의 토대이기도 합니다
IEEEtranIEEE 학술지와 국제회의(전기・정보)옵션으로 모드 전환(journal, conference, technote). 외부 패키지를 거의 안 불러옵니다
acmartACM 학술지와 회의록(컴퓨터 과학)format= 으로 체재 선택. CCS 개념 필수. 내부에서 많은 패키지를 불러옵니다
llncsSpringer LNCS / LNAI / LNBI 회의록소속은 \institute\inst{n} 으로. 참고문헌은 splncs04
elsarticleElsevier 학술지(전 분야)앞부분은 frontmatter 환경에. 클래스가 natbib을 불러오므로 \biboptions 사용
revtex4-2APS / AIP 학술지(물리)\affiliation\author 바로 뒤에. natbib을 sort&compress 로 불러옵니다

여기 든 것은 대표적인 예일 뿐입니다. Springer에는 더 새로운 통합 클래스 sn-jnl 이 있고, 수학 분야에는 amsart 의 단행본판인 amsbook 과 출판사별 클래스가 있으며, 생의학 분야에는 출판사마다 자체 템플릿이 있습니다. 분야가 달라도 방금 본 세 가지 원칙은 그대로 통합니다. 체재를 바꾸지 말 것, 템플릿을 다시 받을 것, 클래스가 이미 불러온 패키지를 두 번 불러오지 말 것.

투고 직전에 확인할 여섯 가지

투고 클래스에서의 실패는 LaTeX 문법 오류보다 템플릿에서 조금씩 멀어진 것 이 원인인 경우가 많습니다. 마감 전날 당황하지 않도록 다음 여섯 가지를 기계적으로 점검하십시오.

  • 첫 줄을 다시 읽으십시오. \documentclass[...] 의 옵션이 투고 규정과 정확히 같습니까? 심사용(review, preprint, manuscript, anonymous)과 최종본(reprint, sigconf 등)은 보통 다릅니다.
  • 표제부를 템플릿 모양으로 되돌리십시오. 클래스마다 \author, 소속, 초록, 키워드를 쓰는 방식이 다릅니다. 직접 만든 매크로로 감싸 두었다면 되돌립니다. 그러지 않으면 출판사 검사나 XML 변환이 메타데이터를 뽑아내지 못할 수 있습니다.
  • 참고문헌을 따로 한 번 돌려 보십시오. 클래스가 지정한 .bst(IEEEtran, ACM-Reference-Format, splncs04, elsarticle-*, apsrev4-2)를 쓰고, BibTeX이나 Biber를 실행해 미정의 인용이 남지 않았는지 확인합니다.
  • 로그를 끝까지 읽으십시오. Option clash, Unused global option(s), 글꼴 대체, Overfull \hbox 로 인한 문단 삐져나옴은 PDF만 봐서는 보이지 않습니다.
  • 템플릿 한 벌을 통째로 고정하십시오. CTAN의 .cls, 출판사 키트의 낡은 .bst, 다른 해의 골격을 섞지 마십시오. README에 출처와 받은 날짜를 한 줄 적어 두면 공저자와 다툴 일이 줄어듭니다.
  • 제출물의 형태를 확인하십시오. 소스 일습인지 PDF인지, 그림 형식(EPS/PDF/PNG), 파일 이름 규칙, 익명화 필요 여부는 클래스가 아니라 투고 시스템의 규정입니다.