biber / biblatex

biblatex는 참고문헌을 LaTeX 쪽에서 조립하는 현대적인 패키지입니다. 고전적인 BibTeX가 .bst라는 독특한 작은 언어로 모양을 정했다면, biblatex는 스타일을 LaTeX 매크로로 쓰고 Unicode를 그대로 처리하며 정렬과 여러 참고문헌 목록을 세밀하게 제어합니다. 데이터를 읽고 정렬하는 동반 프로그램이 biber입니다. 문서에서는 \addbibresource.bib를 불러오고, \parencite\textcite로 인용하며, \printbibliography로 목록을 출력합니다.

biblatex와 biber란

둘은 혼동하기 쉬우므로 먼저 역할을 나누어 보겠습니다. biblatex는 인용의 모양과 참고문헌 목록의 형식을 담당하는 LaTeX 패키지입니다. biber는 biblatex 전용 외부 프로그램(백엔드) 으로, .bib 파일을 읽고 항목을 정렬·처리한 뒤 biblatex가 조판할 수 있는 형태로 넘깁니다. BibTeX의 .bst가 하던 일을 이제 서식은 biblatex(LaTeX 쪽), 읽기와 정렬은 biber가 나누어 맡는다고 보면 됩니다.

biblatex 설명서는 biber를 “biblatex의 기본 백엔드”라고 명확히 밝힙니다. biber는 us-ascii, 8비트 인코딩, UTF-8을 처리하고, 로캘을 고려한 정렬(sortlocale)도 지원합니다. 백엔드는 backend= 옵션으로 고를 수 있으며 기존 bibtex/bibtex8도 선택할 수 있지만, Unicode와 유연한 정렬을 쓰려면 biber가 사실상의 표준입니다.

최소 설정(불러오기와 출력)

사용법은 세 부분입니다. 프리앰블에서 \usepackage[...]{biblatex}로 스타일과 백엔드를 고른 다음 \addbibresource{refs.bib}로 데이터베이스를 등록합니다. 본문에서는 \cite 계열 명령으로 인용하고, 참고문헌 목록이 나올 위치에 \printbibliography를 둡니다.

document.tex
\documentclass{article}
\usepackage[style=authoryear, backend=biber]{biblatex}
\addbibresource{refs.bib}   % preamble; the .bib extension IS included

\begin{document}

The theory was introduced by \textcite{shannon1948}.
Later work built on it~\parencite{knuth1984}.

\printbibliography

\end{document}

BibTeX와의 가장 눈에 띄는 차이 두 가지는 이렇습니다. 첫째, 데이터베이스를 본문 끝의 \bibliography{refs}가 아니라 프리앰블의 \addbibresource{refs.bib}로 등록합니다. 둘째, 여기서는 .bib 확장자를 반드시 포함합니다(BibTeX의 \bibliography에는 확장자를 쓰지 않았습니다). \addbibresource는 여러 번 쓸 수 있어 파일을 나누어 관리할 수 있습니다.

스타일은 style= 하나로 선택합니다. 이는 bibliography 스타일(.bbx)과 citation 스타일(.cbx)을 동시에 불러오는 마스터 옵션입니다. 둘을 다르게 하고 싶을 때만 bibstyle=(목록의 모양)과 citestyle=(인용의 모양)을 따로 지정합니다. .bib 파일 자체의 작성법, 즉 @article 같은 항목과 인용 키는 BibTeX와 완전히 같으며 별도 페이지에서 자세히 다룹니다.

인용 명령

biblatex의 핵심 장점 중 하나는 의미에 따라 골라 쓰는 풍부한 인용 명령입니다. 기본 \cite 외에도 문맥에 맞게 다음을 선택합니다. 모든 명령은 \parencite[prenote][postnote]{key}처럼 앞 주석(“see” 등)과 뒤 주석(쪽 번호 등) 을 받을 수 있고, 쉼표로 구분한 여러 키도 넘길 수 있습니다.

명령출력 형태사용할 때
\cite추가 없는 기본 레이블(숫자/알파벳식에서는 대괄호)본문에 자연스럽게 넣는 최소 형태
\parencite인용 전체를 괄호로 감쌈(숫자/알파벳식에서는 대괄호)문장 끝 등의 괄호 인용
\textcite저자명과 괄호 안 레이블, “Author (year)”인용이 문장의 구성 요소일 때
\footcite인용 전체를 각주에 넣고 마침표로 끝냄출처를 각주로 표시하는 형식
\autocite스타일이 정하는 형태(문장부호도 자동 이동)스타일에 맡기고 전체를 한 번에 바꾸고 싶을 때
\citeauthor / \citeyear저자만 / 연도만본문에서 저자나 연도만 언급할 때

\textcite는 “as Knuth (1984) showed...”처럼 인용이 문장의 일부일 때 사용하며, 저자를 주어 자리에 둘 수 있습니다. \parencite는 반대로 문장 끝에 조용히 괄호로 넣고 싶을 때 씁니다. \autocite는 한 단계 더 추상화된 명령으로, \parencite처럼 동작할지 \footcite처럼 동작할지(숫자식에서는 \supercite)를 autocite= 옵션으로 바꿉니다. autocite=plain\cite처럼, autocite=inline\parencite처럼, autocite=footnote\footcite처럼, autocite=superscript는 위첨자 형태로 만듭니다(실제로는 각 스타일이 적절한 기본값을 정합니다).

여러 문헌을 한 번에 인용하면서 각 문헌에 별도의 앞/뒤 주석을 붙이려면 \parencites, \autocites 같은 복합 인용(multicite) 형태를 사용합니다. \parencites[35]{key1}[88--120]{key2}{key3}처럼 각 항목에 개별 뒤 주석을 붙일 수 있습니다.

스타일 체계

biblatex에는 범용 스타일이 기본으로 포함되어 있으며, style=에 이름을 넘기기만 하면 전체 모양이 바뀝니다. 대표적인 것은 아래와 같습니다. 각 스타일은 인용의 모양(.cbx)과 목록의 모양(.bbx)을 함께 전환합니다.

스타일인용 모양특징
numeric[1] 같은 번호기본값. LaTeX 표준 번호식과 비슷합니다. numeric-comp는 [1–3]처럼 범위로 묶습니다
alphabetic[Jon95] 같은 영숫자 레이블BibTeX의 alpha와 비슷하며 저자+연도에서 짧은 태그를 만듭니다
authoryear“Doe 1995a” 같은 저자-연도같은 저자/연도에는 a, b…를 붙입니다. -comp는 저자를 묶습니다
authortitle저자와 짧은 제목인문학에서 흔하며 연도를 전면에 내세우지 않습니다
verbose처음에는 전체 서지, 이후에는 축약형각주에 자세한 출처를 제시하는 형식용

이 밖에도 분야별 전용 스타일이 많습니다. 공학의 ieee, 심리학 등의 apa(biblatex-apa 패키지), 자연과학의 naturescience, 시카고식 chicago(biblatex-chicago), 법학의 oscola, 인문학의 mla 등이 있습니다. .bst를 쓰지 않고도 학회나 출판처 형식에 맞출 수 있으며, 여러 스타일은 CTAN에서 설치할 수 있습니다.

불러올 때 옵션으로 모양을 더 조정할 수 있습니다. sorting=은 순서를 고릅니다(nty = 이름, 제목, 연도가 기본값; nyt = 이름, 연도, 제목; ynt = 연도, 이름, 제목; none = 인용 순서 유지). maxbibnames / maxcitenames는 “et al.”로 줄이기 전에 표시할 저자 수를 정하고, backref=true는 각 항목에서 인용된 위치로 돌아가는 역참조를 추가합니다. maxnames는 이들을 함께 설정하는 마스터 옵션입니다.

빌드 절차(biber 사용)

BibTeX 사용자들이 처음 걸리는 부분이 여기입니다. biblatex 참고문헌을 올바르게 만들려면 전통적으로 latex → biber → latex → latex 순서로 처리합니다. 여러 번 실행하는 이유는 BibTeX와 같습니다. 엔진과 biber가 보조 파일을 통해 정보를 주고받기 때문입니다. 하지만 결정적인 차이는 bibtex가 아니라 biber를 호출한다는 점입니다. pdflatex를 써도 같으며, latexpdflatex로 바꾸기만 하면 됩니다.

terminal
$ pdflatex document.tex   # 1st pass: records cited keys
$ biber    document        # NOT bibtex: reads .bcf + .bib, sorts/processes
$ pdflatex document.tex    # pulls in the processed data
$ pdflatex document.tex    # resolves all references

biber에 넘기는 것은 .tex가 아니라 작업 이름(확장자 없음) 입니다. biber는 biblatex가 써 내는 제어 파일 .bcf(XML)를 읽습니다. 흔한 실패는 편집기나 latexmk가 여전히 bibtex를 호출하도록 설정되어 있어 “정의되지 않은 인용” 경고나 빈 참고문헌이 나오는 경우입니다. backend=biber를 선택했다면 도구 쪽도 biber를 호출하도록 설정해야 합니다. 네 번을 수동으로 돌리는 것은 번거로우므로 실무에서는 보통 latexmk에 맡깁니다.

terminal
$ latexmk -pdf document.tex   # detects biblatex and runs biber automatically

최근 latexmk는 biblatex를 감지해 자동으로 biber를 호출하므로, 보통 한 번 실행하면 필요한 반복까지 끝납니다(오래된 환경에서는 .latexmkrc$pdf_mode 등과 함께 biber 설정을 적습니다). 일본어는 upLaTeX 등으로 조판하고 DVI를 거쳐 dvipdfmx로 PDF를 만들지만, biber가 Unicode를 지원하므로 sortlocale=ja_JP를 주면 일본어 정렬도 처리할 수 있습니다(langid 필드로 일본어/서양어 참고문헌 목록을 나누는 운용도 흔합니다).

왜 BibTeX보다 biblatex인가

biblatex/biber가 새 프로젝트에서 선호되는 이유는 BibTeX의 구조적 제약을 정면으로 해결하기 때문입니다. 구체적으로는 다음과 같습니다.

  • 완전한 Unicode 지원. biber는 UTF-8을 직접 처리하므로 다국어 저자명과 악센트 기호가 어렵지 않습니다.
  • LaTeX로 쓰는 스타일. 서식은 LaTeX 매크로와 불러오기 옵션으로 제어되며, 스택 지향 .bst 언어를 쓸 필요가 없습니다.
  • 유연한 정렬과 현지화. sorting=sortlocale로 순서와 언어를 세밀하게 제어할 수 있습니다.
  • 여러 참고문헌 목록. \printbibliography[type=...] 또는 [keyword=...]로 유형이나 주제별로 목록을 나눌 수 있습니다.
  • 풍부한 인용 명령. \textcite, \parencite, \autocite 등으로 의미에 맞게 일관되게 인용할 수 있습니다.

마지막 항목인 여러 목록은 실무에서 효과가 큽니다. 예를 들어 1차 자료와 2차 문헌을 나누거나 문서 유형별로 묶는 일을 데이터에 손대지 않고 할 수 있습니다. \printbibliography 필터에는 type=(특정 항목 유형만), nottype=(그 유형 제외), keyword= / notkeyword=(.bibkeywords 필드로 필터링), heading= / title=(제목 지정) 등이 있습니다.

document.tex
\printbibliography[type=article, title={Journal articles}]
\printbibliography[type=book,    title={Books}]
\printbibliography[keyword=primary, title={Primary sources}]

BibTeX 시대의 natbib에 익숙하다면 \usepackage[natbib=true]{biblatex}\citep, \citet 같은 natbib식 별칭을 제공하므로 옮겨 가기 쉽습니다.