Библиография: BibTeX и BibLaTeX

Урок про автоматическую библиографию — ещё одну причину, по которой учёные выбирают LaTeX.

BibTeX/BibLaTeX — система библиографии: вы храните источники в файле .bib, ссылаетесь на них командой \cite, а список литературы и стиль цитирования формируются автоматически.

В научной работе список литературы — это десятки источников и строгие требования к оформлению. Вручную это кошмар. LaTeX строит библиографию из базы данных источников по выбранному стилю одним нажатием.

Файл источников .bib

Источники описывают записями в отдельном файле references.bib. Каждая запись — это тип и поля:

@article{einstein1905,
  author  = {Einstein, Albert},
  title   = {Zur Elektrodynamik bewegter K\"orper},
  journal = {Annalen der Physik},
  year    = {1905},
  volume  = {17},
  pages   = {891--921}
}

@book{knuth1984,
  author    = {Knuth, Donald E.},
  title     = {The TeXbook},
  publisher = {Addison-Wesley},
  year      = {1984}
}

Ключ записи (einstein1905, knuth1984) — это идентификатор, по которому вы будете ссылаться. Один .bib можно переиспользовать во всех своих работах.

Цитирование в тексте

Команда \cite{ключ} вставляет ссылку, а две команды в конце документа печатают сам список:

Как показал Эйнштейн~\cite{einstein1905}, ...
Подробнее о \TeX{} см.~\cite{knuth1984}.
...
\bibliographystyle{plain}     % стиль оформления
\bibliography{references}     % подключить .bib (без расширения)

В тексте появятся ссылки вроде «[1]», «[2]», а в конце — пронумерованный список литературы. Что важно: в список попадут только процитированные источники, и они отсортируются и оформятся по выбранному стилю.

Стили цитирования

СтильВид ссылки
plainчисловые [1], сортировка по алфавиту авторов
unsrtчисловые, в порядке цитирования
alphaбуквенно-числовые [Ein05]
BibLaTeX + authoryear(Эйнштейн, 1905)

Сменить стиль всего списка — это поменять одно слово. Современная замена классическому BibTeX — BibLaTeX с движком biber: он гибче, лучше работает с юникодом и кириллицей и поддерживает ГОСТ-стили цитирования, что важно для российских работ.

Как работает под капотом

Процесс многошаговый: LaTeX при первом проходе собирает все \cite и пишет их ключи в файл .aux. Затем запускается BibTeX (или biber): он читает .aux, находит нужные записи в .bib, форматирует их по выбранному стилю и пишет готовый список в файл .bbl. Следующие проходы LaTeX вставляют .bbl в документ и подставляют номера ссылок. Отсюда классическая последовательность сборки latex → bibtex → latex → latex — её автоматизирует latexmk.

Типы записей и обязательные поля

В .bib каждая запись начинается с символа собаки и типа: @article, @book, @inproceedings (статья в сборнике конференции), @incollection (глава в коллективной монографии), @phdthesis (диссертация), @techreport, @misc (для всего, что не подошло, — например, ссылок на сайты). У каждого типа есть набор обязательных полей: для @article это author, title, journal и year, а volume и pages необязательны; для @book обязателен издатель publisher. Если пропустить обязательное поле, BibTeX выдаст предупреждение, а если перепутать тип — запись оформится не по тем правилам, что нужны для этого вида источника. Поэтому держать .bib в порядке так же важно, как и сам текст: это переиспользуемая база на годы вперёд.

natbib, nocite и форматы ссылок

Пакет natbib расширяет цитирование и поддерживает два больших семейства стилей: числовое (ссылки вида [1], [2]) и автор-год (вида «Эйнштейн, 1905»). Для второго семейства он даёт две ключевые команды: \citep{ключ} ставит ссылку в круглых скобках внутри предложения, а \citet{ключ} делает автора частью текста — «как показал Эйнштейн (1905)». Команда \nocite{ключ} добавляет источник в список литературы, не печатая ссылку в тексте, — это удобно, когда работу нужно упомянуть в библиографии, но цитировать в предложении незачем. А \nocite{*} с особой звёздочкой втягивает в список все записи из подключённого .bib сразу — так делают, когда нужно показать полный аннотированный перечень литературы независимо от того, что процитировано.

Совет по практике

Не набирайте записи .bib руками — это утомительно и легко ошибиться в полях. Почти каждая электронная библиотека (Google Scholar, arXiv, издательские сайты, DOI-сервисы) умеет экспортировать готовую BibTeX-запись по кнопке: вы копируете её в свой файл и при необходимости правите ключ на удобный вам. Менеджеры литературы вроде Zotero или JabRef хранят всю базу и выгружают единый .bib для проекта. Так вы получаете аккуратные поля без опечаток, а главное преимущество системы остаётся при вас: один раз собранную базу вы переиспользуете во всех будущих статьях, диссертации и отчётах, меняя лишь стиль оформления под требования конкретного издания.

Частые ошибки

  • Собрать один раз и удивиться, что список пуст — нужна цепочка latex/bibtex/latex/latex.
  • Опечатка в ключе \cite — предупреждение «Citation undefined» и [?].
  • Кириллица в BibTeX без поддержки — берите BibLaTeX+biber для русских источников.

Итоги

  • Источники — в .bib; ссылка в тексте — \cite{ключ}.
  • Список и стиль формируются автоматически; сменить стиль — одно слово.
  • Для русского и ГОСТ берут BibLaTeX с biber.
Проверьте себя
1. Где хранятся описания источников для библиографии?
AПрямо в тексте документа
BВ отдельном файле .bib в виде записей с ключом и полями
CВ файле .aux
DВ преамбуле .tex
2. Что попадёт в итоговый список литературы при стиле plain?
AВсе записи из .bib
BТолько процитированные через \cite источники, отсортированные по алфавиту
CНичего, список надо писать руками
DТолько книги
3. Почему библиография требует запуска BibTeX между проходами LaTeX?
AТак быстрее
BBibTeX читает ключи из .aux, форматирует записи и пишет список в .bbl для LaTeX
CЭто нужно только для книг
DBibTeX заменяет компилятор