natbib

natbib은 고전적인 BibTeX를 그대로 쓰면서 저자-연도 인용을 구현하는 표준 패키지입니다. 표준 \cite를 다시 구현하여 문장의 일부처럼 읽히는 텍스트형 \citet(Jones et al. (1990))과 괄호형 \citep((Jones et al., 1990))를 구분합니다. 저자-연도식과 숫자식을 모두 다루며, 전용 스타일 plainnat, abbrvnat, unsrtnat를 제공합니다. 이 페이지에서는 풍부한 인용 명령과 출력 예, 괄호와 구분 기호를 바꾸는 옵션, 그리고 더 새로운 biblatex와의 관계를 살펴봅니다.

불러오기와 문헌 스타일

natbib은 프리앰블에서 \usepackage{natbib}로 불러옵니다. 참고문헌 목록의 모양은 \bibliographystyle로 고르며, 보통 natbib 전용 plainnat, abbrvnat, unsrtnat 중 하나를 지정합니다. 이들은 표준 plain, abbrv, unsrt에 대응하는 natbib판이며, 중요한 점은 저자-연도식과 숫자식 모두에서 사용할 수 있다는 것입니다. 문헌 데이터는 .bib 파일에 두고 \bibliography{filename}으로 읽어들입니다.

document.tex
\documentclass{article}
\usepackage{natbib}
\bibliographystyle{plainnat}
\begin{document}

The design of \TeX{} is described in detail by \citet{knuth1986}.
This result has been confirmed elsewhere \citep{lamport1994}.

\bibliography{refs}
\end{document}

처리 흐름은 일반 BibTeX와 같습니다. latex(또는 pdflatex) → bibtexlatexlatex, 즉 LaTeX, BibTeX, LaTeX 두 번 순서로 실행하면 인용과 참고문헌 목록이 확정됩니다. 일본어 문헌이 포함된 경우 bibtex 대신 pbibtex / upbibtex를 사용합니다. 자세한 내용은 BibTeX 페이지를 보세요.

두 기본 명령 — \citet와 \citep

natbib의 중심은 텍스트형 \citet괄호형 \citep 두 명령입니다. \citet{key}는 저자명을 문장의 일부로 출력하고 연도만 괄호에 넣습니다(Jones et al. (1990)). 그래서 “Jones et al. (1990) showed that...”처럼 주어로 쓸 수 있습니다. \citep{key}는 전체를 괄호로 감싸며((Jones et al., 1990)), 문장 끝에 붙이는 형태입니다. 일반 \cite는 저자-연도 모드에서는 \citet처럼, 숫자 모드에서는 \citep처럼 동작하므로 natbib에서는 \cite를 피하는 것이 안전합니다.

선택 인수로 주석을 붙일 수 있습니다. 주석이 하나면 뒤 주석(인용 뒤)이 되어 \citep[chap.~2]{key}(Jones et al., 1990, chap. 2)를 출력합니다. 주석을 두 개 쓰면 앞 주석과 뒤 주석이 되어 \citep[see][p.~5]{key}(see Jones et al., 1990, p. 5)가 됩니다. 앞 주석만 붙이고 싶으면 뒤 주석을 비워 \citep[see][]{key}라고 쓰면 됩니다((see Jones et al., 1990)). ~는 줄이 중간에서 끊기지 않게 하는 비분리 공백입니다.

latex
The algorithm is due to \citet{knuth1986}.
It runs in linear time \citep[Theorem~3]{knuth1986}.
See the discussion of line breaking \citep[see][chap.~2]{knuth1986}.
Similar ideas appear elsewhere \citep{knuth1986,lamport1994}.

인용 명령 목록

natbib은 \citet / \citep를 바탕으로 용도별 파생 명령을 갖추고 있습니다. 아래 표는 저자-연도 모드에서의 출력 예입니다(인용 키 jon90은 Jones, Baker, Williams(1990)를 가리킨다고 가정합니다). 별표가 붙은 \citet* / \citep*는 “et al.”로 줄이지 않고 전체 저자 목록을 출력하며, \citealt / \citealp는 같은 내용을 괄호 없이 출력합니다. \citeauthor는 저자명만, \citeyear는 연도만, \citeyearpar는 연도를 괄호에 넣어 반환합니다.

명령출력 예용도
\citet{jon90}Jones et al. (1990)본문식 인용(저자를 주어로)
\citep{jon90}(Jones et al., 1990)괄호 인용
\citet*{jon90}Jones, Baker, and Williams (1990)전체 저자 목록(본문식)
\citep*{jon90}(Jones, Baker, and Williams, 1990)전체 저자 목록(괄호식)
\citealt{jon90}Jones et al. 1990괄호 없음, 본문식
\citealp{jon90}Jones et al., 1990괄호 없음; 괄호 안 내용만
\citeauthor{jon90}Jones et al.저자명만
\citeauthor*{jon90}Jones, Baker, and Williams전체 저자명만
\citeyear{jon90}1990연도만
\citeyearpar{jon90}(1990)연도를 괄호에 넣음

\citealp는 이름 그대로 \citep에서 괄호를 뺀 것이며, 주석도 받을 수 있습니다. \citealp[chap.~2]{jon90}Jones et al., 1990, chap. 2를 출력합니다. 괄호 안에 자유 텍스트와 인용을 섞고 싶을 때는 \citetext{...}가 편리하며, \citetext{priv.\ comm.}(priv. comm.)가 됩니다. \citefullauthor{key}\citeauthor*와 마찬가지로 전체 저자 목록을 반환합니다.

문장 시작에서 대문자로 — \Citet / \Citep

저자명에 “van der”나 “della” 같은 von part가 있으면 \citet{dRob98}는 소문자 그대로 della Robbia (1998)를 출력합니다. 문장 첫머리에서는 대문자로 시작해야 하므로 natbib은 첫 글자를 강제로 대문자로 만드는 대문자 버전 명령을 제공합니다. \Citet, \Citep, \Citealt, \Citealp, \Citeauthor처럼 앞 글자를 대문자로 한 이름을 사용합니다(별표 형식도 있습니다).

명령출력 예
\citet{dRob98}della Robbia (1998)— 보통(소문자 유지)
\Citet{dRob98}Della Robbia (1998)— 문장 시작용
\Citep{dRob98}(Della Robbia, 1998)
\Citealt{dRob98}Della Robbia 1998
\Citealp{dRob98}Della Robbia, 1998
\Citeauthor{dRob98}Della Robbia

여러 문헌 인용과 숫자 모드

쉼표로 구분해 여러 문헌을 한 번에 인용할 수 있습니다. 저자-연도 모드에서는 같은 저자이고 연도만 다른 인접 항목은 저자명을 반복하지 않고 묶입니다. \citep{jon90,jam91}(Jones et al., 1990; James et al. 1991), \citep{jon90,jon91}(Jones et al., 1990, 1991), 같은 저자 같은 연도라면 \citep{jon90a,jon90b}(Jones et al., 1990a,b)가 됩니다.

같은 원고를 숫자식으로 바꾸는 것도 natbib이면 본문을 고치지 않아도 됩니다. \usepackage[numbers]{natbib} 같은 옵션을 넘기거나 \setcitestyle{numbers}를 쓰면 \citet / \citep 출력이 번호로 바뀝니다. 숫자 모드에서 \citet{jon90}Jones et al. [21], \citep{jon90}[21], 주석이 붙은 \citep[chap.~2]{jon90}[21, chap. 2]가 됩니다. \usepackage[super]{natbib}을 선택하면 Nature 같은 학술지의 위첨자 번호로 만들 수 있습니다. 숫자 모드에서는 \citet에 여러 인용을 넘기는 것은 권장되지 않습니다.

괄호와 구분 기호 옵션

인용의 모양, 즉 괄호 종류와 구분 문자는 패키지 옵션으로 한꺼번에 지정할 수 있습니다. 괄호는 round(기본 원괄호), square, curly, angle입니다. 여러 인용의 구분자는 semicolon(기본 세미콜론) 또는 comma입니다. 모드는 authoryear(기본), numbers, super입니다. 또한 번호를 참고문헌 목록 순서로 정렬하는 sort, 연속 번호를 범위로 압축하는 sort&compress(예: 3–6, 15), 정렬 없이 압축하는 compress가 있습니다.

latex
\usepackage[square,numbers,sort&compress]{natbib}

그 밖에 각 문헌의 첫 인용에서만 전체 저자 목록을 출력하는 longnamesfirst, chapterbib와 함께 참고문헌 목록을 \section*로 만드는 sectionbib 등이 있습니다. colonsemicolon과 같은 기능으로, 초기 용어 오류가 남은 것입니다.

불러온 뒤 스타일을 바꾸고 싶을 때는 \setcitestyle{...}(natbib 8에서 추가)를 사용하고 키워드를 쉼표로 구분해 넘깁니다. 모드는 authoryear / numbers / super, 괄호는 round / square 또는 open={(}close={)}, 구분자는 semicolon / comma 또는 citesep={;}, 저자와 연도 사이에는 aysep={,}, 연도 사이에는 yysep={,}, 뒤 주석 앞에는 notesep={, }를 씁니다. 예를 들어 \setcitestyle{square,aysep={},yysep={;}}처럼 세밀하게 조정할 수 있습니다.

오래된 \bibpunct로도 같은 조정을 할 수 있습니다. 프리앰블에서 사용하며 선택 인수 하나와 필수 인수 여섯 개를 받습니다. 순서대로 여는 괄호, 닫는 괄호, 여러 인용의 구분자, 모드 지정(숫자식은 n, 위첨자는 s, 그 외는 저자-연도식), 저자와 연도 사이의 구두점, 저자가 같을 때 연도 사이의 구두점입니다. 기본값은 \bibpunct{(}{)}{;}{a}{,}{,}입니다(앞의 선택 인수는 뒤 주석 앞의 문자). \setcitestyle이 더 읽기 쉬우므로 새 문서에는 \setcitestyle을 권장합니다.

natbib과 biblatex

natbib은 오랫동안 전통적인 BibTeX 자산을 그대로 살리면서 저자-연도 인용으로 이어 주는 다리 역할을 해 왔습니다. 기존 .bib 파일, .bst 스타일, BibTeX 처리계를 그대로 사용할 수 있다는 것이 강점이며, 많은 학회와 출판사가 아직도 natbib을 전제로 합니다.

더 새로운 대안은 biblatex(처리계 biber와 함께 사용)입니다. biblatex는 정렬과 서식을 LaTeX 쪽에서 유연하게 제어하고, 다국어와 현지화 출력에 강하게 설계되어 있습니다. 새 프로젝트에서 자유롭게 고를 수 있다면 biblatex도 유력하지만, 투고 규정이 natbib(또는 특정 .bst)을 요구한다면 natbib을 사용합니다. 둘은 함께 쓸 수 없으므로 둘 중 하나를 선택합니다. 자세한 내용은 biber / biblatex 페이지를 보세요.