.bib 파일은 LaTeX 안에서만 끝나는 것이 아닙니다. 그 주변에는 인용 모양을 담당하는 CSL, DOI나 arXiv에서 서지 정보를 자동으로 가져오는 장치, 그리고 .bib를 계속 키워 가는 문헌 관리 소프트웨어라는 넓은 생태계가 있습니다. 이 페이지는 글쓰기 전후에 참고문헌을 어떻게 모으고, 정리하고, 내보내는지 한눈에 살펴봅니다.
CSL과 citeproc — biblatex 밖의 세계
CSL(Citation Style Language)은 인용과 참고문헌 목록의 모양을 설명하는 XML 기반의 개방형 형식입니다. “성은 이름 앞에”, “연도는 괄호로”, “두 번째 이후 저자는 &로 연결” 같은 규칙을 .csl 스타일 파일에 선언적으로 씁니다. 저널마다 다른 투고 규정을 이 파일 하나로 표현하는 셈입니다.
CSL의 가장 큰 장점은 엔진에 의존하지 않는다는 것입니다. BibTeX의 .bst가 BibTeX 전용이고 biblatex 스타일이 LaTeX 안 전용인 반면, CSL은 어떤 조판 시스템에도 묶이지 않습니다. 실제 서식화는 citeproc 처리계가 맡습니다. Zotero는 JavaScript 구현인 citeproc-js를 사용하고, Word 플러그인과 여러 도구도 각자의 citeproc 구현으로 같은 .csl을 해석합니다. 그래서 하나의 스타일 파일이 Zotero, Word, Markdown 어디서나 통합니다.
스타일의 보고는 Zotero Style Repository입니다. 학술지부터 학회까지 8,500개 이상의 스타일(더 넓은 커뮤니티 전체로는 10,000개 이상)이 Creative Commons(CC BY-SA)로 자유롭게 사용할 수 있게 제공됩니다. CSL은 Zotero 전용이 아니므로, 여기서 받은 .csl은 대부분의 경우 CSL 지원 도구에서 그대로 동작합니다.
CSL을 가장 많이 활용하는 도구는 pandoc입니다. Markdown으로 원고를 쓰고 --citeproc을 붙여 변환하면 본문의 [@knuth1984] 같은 인용 키가 형식화된 인용으로 바뀌고, 끝에는 참고문헌 목록이 생성됩니다. 핵심은 LaTeX의 biblatex를 거치지 않고도 Markdown에서 바로 PDF, Word, HTML로 참고문헌 포함 출력을 만들 수 있다는 점입니다.
pandoc paper.md --citeproc \
--bibliography=refs.bib \
--csl=ieee.csl \
-o paper.pdf--bibliography에 .bib(또는 CSL-JSON / RIS)을, --csl에 스타일을 넘기기만 하면 됩니다. --csl을 생략하면 기본값으로 Chicago author-date가 사용됩니다. --bibliography는 여러 번 지정할 수 있어 .bib 파일을 나누어 관리해도 묶어 줍니다. 요컨대 pandoc + CSL은 LaTeX를 쓰지 않는 사람도 기존 .bib 자산을 그대로 활용할 수 있는 경로라고 생각하면 됩니다.
biblatex / BibTeX와 CSL의 구분
같은 .bib를 입력으로 받을 수는 있지만, 실제로 서식을 담당하는 것은 다릅니다. 아래 표에서 역할을 구분해 두면 “이게 LaTeX인가, 아닌가?”로 헤매지 않게 됩니다.
| 관점 | BibTeX / biblatex | CSL + citeproc | |
|---|---|---|---|
engine | 실행 위치 | LaTeX 안(bibtex / biber) | LaTeX 밖에서도(Zotero, Word, pandoc) |
style-file | 스타일 형식 | .bst(BibTeX) / biblatex 스타일 | .csl(XML) |
styles | 스타일 수 | 주요 학술지는 갖추어져 있지만 작성은 어려움 | Zotero 저장소에 8,500+ |
output | 잘 맞는 출력 | LaTeX → PDF | Word, HTML, Markdown → PDF 등 |
use | 이럴 때 | LaTeX로 본격 조판 | LaTeX를 쓰지 않음 / 공저자가 Word 사용 |
어느 쪽이든 입력은 같은 .bib여도 됩니다. 따라서 현대적인 자세는 문헌 데이터베이스를 공통 자산으로 유지하고, 출력 경로만 LaTeX(biblatex)인지 CSL(pandoc)인지 고르는 것입니다.
항목 자동 가져오기(DOI, arXiv)
.bib 항목을 손으로 입력할 필요는 거의 없습니다. 대부분의 논문에는 DOI가 있고, DOI에서 BibTeX를 바로 가져올 수 있습니다. 원리는 Crossref content negotiation입니다. DOI에 대해 “BibTeX 형식이 필요하다”고 HTTP 헤더로 알리면 등록 기관이 BibTeX 항목을 반환합니다.
# DOI から BibTeX を取得(-L でリダイレクト追従)
curl -LH "Accept: application/x-bibtex" \
"https://doi.org/10.1145/3186893" >> refs.bib-L은 필수입니다. doi.org는 어떤 등록 기관이 메타데이터를 가지고 있는지 판단해 리다이렉트하므로, 이를 따라가지 않으면 유용한 내용을 얻을 수 없습니다. 명령줄이 번거롭다면 같은 원리를 웹에서 제공하는 doi2bib.org에 DOI를 붙여 넣어도 BibTeX를 얻을 수 있습니다(arXiv ID와 PubMed ID도 받습니다).
arXiv 프리프린트는 초록 페이지 오른쪽의 “Export BibTeX citation”에서 BibTeX를 직접 내보낼 수 있습니다. Crossref(그리고 Google Scholar의 “Cite → BibTeX”)도 비슷하게 BibTeX를 출력합니다. 출처가 어디든 입력 수고는 거의 0에 가깝습니다.
다만 자동 생성된 항목은 그대로 쓰기에는 거칠다는 점에 주의해야 합니다. 저자명 표기 흔들림, 제목 속 고유명사가 소문자로 바뀌는 문제(보호하려면 {...}로 감싸야 함), 불필요하거나 중복된 필드, 수식 기호 깨짐, arXiv판과 출판판 혼동 등이 흔합니다. 가져온 뒤에는 한 번 살펴보고 citation key를 자신의 규칙에 맞게 정리하는 것까지가 작업입니다.
문헌 관리 소프트웨어와 자동 내보내기 .bib
문헌이 수십에서 수백 건 규모가 되면 문헌 관리 소프트웨어로 다루는 것이 현실적입니다. 표준적인 분업은 앱에서 논문을 수집·정리하고, 거기서 .bib를 내보내 LaTeX에 넘기는 방식입니다.
- Zotero — 무료 오픈소스 표준 도구. 브라우저에서 한 번 클릭으로 가져오고 CSL(citeproc-js)로 서식을 처리합니다. LaTeX 사용자는 Better BibTeX 확장을 추가하면 안정적인 citation key 생성과
.bib자동 내보내기가 가능합니다. - Better BibTeX(Zotero 확장) —
auth.lower + shorttitle(3,3) + year같은 규칙으로 충돌 없는 인용 키를 만들며, 키는 항상 “고정”되어 변하지 않습니다. 내보낼 때 Keep updated를 켜면 라이브러리 변경이.bib에 자동 반영됩니다. - JabRef — BibTeX/biblatex를 네이티브로 다루는 관리 소프트웨어. 별도 내부 형식 없이
.bib를 그대로 읽고 씁니다. ID(DOI, arXiv, ISBN)에서 항목을 가져오는 기능도 내장되어 있습니다. - BibDesk(macOS) — Mac용 BibTeX 프런트엔드.
.bib를 직접 편집하고 PDF 자동 파일링(AutoFile)과 외부 데이터베이스 검색을 지원합니다. - Mendeley / Paperpile — Mendeley는 BibTeX 내보내기를 지원합니다. Paperpile은 Google Docs 연동에 강하고 역시 BibTeX를 출력할 수 있습니다.
실무 흐름은 어디서나 비슷합니다. (1) 앱에서 문헌 관리 → (2) .bib를(가능하면 자동으로) 내보내기 → (3) LaTeX 쪽에서 \addbibresource{refs.bib}(biblatex) 또는 \bibliography{refs}(BibTeX)로 읽기. Better BibTeX처럼 자동 내보내기를 설정해 두면 원고 쪽은 .bib를 “항상 최신인 생성물”로 다룰 수 있어 수동 동기화가 필요 없습니다.
주의할 점은 citation key가 안정적이어야 한다는 것이 협업의 생명선이라는 점입니다. 내보낼 때마다 키가 바뀌면 본문의 모든 \cite{...}가 한꺼번에 깨집니다. Better BibTeX가 키를 고정하는 이유가 바로 이것이며, 소프트웨어 없이 손으로 .bib를 쓰더라도 처음에 키 명명 규칙을 정해 두면 나중이 편해집니다.