BibTeX — программное обеспечение для создания форматированных списков библиографии. BibTeX используется совместно с LaTeX'ом и входит во все известные дистрибутивы TeX и LaTeX.

BibTeX был создан Ореном Паташником и Лесли Лэмпортом в 1985 году. BibTeX позволяет работать со списками источников, отделяя библиографическую информацию от её представления. Принцип отделения содержимого от его представления использован как в самом LaTeX’е, так и в XHTML, CSS и др.

Использование При подготовке документа в LaTeX система BibTeX предоставляет по сравнению со стандартным LaTeX-окружением thebibliography следующие преимущества: список литературы генерируется автоматически по всем ссылкам \cite, упомянутым в тексте; можно использовать единую библиографическую базу (bib-файл) во всех своих текстах, во всех работах отдела, и т. д.; легко обмениваться библиографическими базами с коллегами; нет необходимости помнить правила оформления библиографии, так как BibTeX делает эту работу автоматически с помощью стилевых bst-файлов.

Для вызова BibTeX’а достаточно заменить окружение thebibliography командами \bibliographystyle{stylefile} % bst-файл, задающий стиль оформления библиографии \bibliography{bibfile} % имя bib-файла, содержащего библиографическую базу например, \bibliographystyle{gost780s} % ГОСТ 7.80 \bibliography{MachLearn} % MachLearn.bib Можно использовать несколько библиографических баз одновременно (тогда их имена указываются через запятую).

Тексты, использующие BibTeX, необходимо обрабатывать 4 раза: первый проход LaTeX (создание aux-файла с запросами ссылок), затем BibTeX (создание bbl-файла с библиографией, готовой для вставки в LaTeX-файл), и ещё два прохода LaTeX (вставка библиографии и актуализация номеров ссылок).

В TeX Live и MiKTeX есть Perl-скрипт latexmk, который выполняет все необходимые вызовы автоматически. В MiKTeX также есть утилита texify, которая тоже выполняет все необходимые вызовы автоматически.

Библиографические базы: bib-файлы BibTeX использует bib-файлы специального текстового формата для хранения списков библиографических записей. Каждая запись описывает ровно одну публикацию — статью, книгу, диссертацию, и т. д.

Bib-файлы можно использовать для хранения библиографических баз данных. Многие программы, работающие с библиографиями, (такие, как JabRef) и онлайн-сервисы цитирования (ADS, CiteULike) могут экспортировать ссылки в bib-формат.

Каждая запись выглядит следующим образом: @ARTICLE{tag, author = {Список авторов}, title = {Название статьи}, year = {год}, journal = {Название журнала} } Здесь ARTICLE — тип записи («статья»), tag — метка-идентификатор записи (которая позволяет ссылаться в тексте с помощью \cite{tag}), дальше список полей со значениями.

Типы записей Каждая запись должна быть определённого типа, описывающего тип публикации. Следующие типы являются стандартными и обрабатываются почти всеми стилями BibTeX (названия расположены по алфавиту и содержат списки полей, возможные поля см. ниже): article Статья из журнала.Необходимые поля: author, title, journal, yearДополнительные поля: volume, number, pages, month, note, key book Определённое издание книги.Необходимые поля: author/editor, title, publisher, yearДополнительные поля: volume, series, address, edition, month, note, key, pages booklet Печатная работа, которая не содержит имя издателя или организатора (например, самиздат).Необходимые поля: titleДополнительные поля: author, howpublished, address, month, year, note, key conference Синоним inproceedings, оставлено для совместимости с Scribe.Необходимые поля: author, title, booktitle, yearДополнительные поля: editor, pages, organization, publisher, address, month, note, key inbook Часть книги, возможно без названия. Может быть главой (частью, параграфом), либо диапазоном страниц.Необходимые поля: author/editor, title, chapter/pages, publisher, yearДополнительные поля: volume, series, address, edition, month, note, key incollection Часть книги, имеющая собственное название (например, статья в сборнике).Необходимые поля: author, title, booktitle, yearДополнительные поля: editor, pages, organization, publisher, address, month, note, key inproceedings Тезис (труд) конференции.Необходимые поля: author, title, booktitle, yearДополнительные поля: editor, series, pages, organization, publisher, address, month, note, key manual Техническая документация.Необходимые поля: titleДополнительные поля: author, organization, address, edition, month, year, note, key mastersthesis Магистерская диссертация.Необходимые поля: author, title, school, yearДополнительные поля: address, month, note, key misc Использовать, если другие типы не подходят.Необходимые поля: noneДополнительные поля: author, title, howpublished, month, year, note, key phdthesis Кандидатская диссертация.Необходимые поля: author, title, school, yearДополнительные поля: address, month, note, key proceedings Сборник трудов (тезисов) конференции.Необходимые поля: title, yearДополнительные поля: editor, publisher, organization, address, month, note, key techreport Отчёт, опубликованный организацией, обычно пронумерованный внутри серии.Необходимые поля: author, title, institution, yearДополнительные поля: type, number, address, month, note, key unpublished Документ, имеющий автора и название, но формально не опубликованный (рукопись).Необходимые поля: author, title, noteДополнительные поля: month, year, key

Поля записей Каждая запись содержит некоторый список стандартных полей (можно вводить любые другие поля, которые просто игнорируются стандартными программами):

addendum: то же, что note, но добавляется в самом конце библиографической записи. address: Адрес издателя (обычно просто город, но может быть полным адресом для малоизвестных издателей) annote (в JabRef — abstract): Аннотация для библиографической записи. author: Имена авторов (если больше одного, то разделяются and) booktitle: Наименование книги, содержащей данную работу. chapter: Номер главы crossref: Ключ кросс-ссылки (позволяет использовать другую библио-запись в качестве названия, например, сборника трудов) edition: Издание (полная строка, например, «1-е, стереотипное») editor: Имена редакторов (оформление аналогично авторам) eprint: Описание электронной публикации, часто препринт или технический отчет howpublished: Способ публикации, если нестандартный institution: Институт, вовлечённый в публикацию, необязательно издатель journal: Название журнала, содержащего статью key: Скрытое ключевое поле, задающее порядок сортировки (если «author» и «editor» не заданы). month: Месяц публикации (может содержать дату). Если не опубликовано — создания. note: Любые заметки number: Номер журнала organization: Организатор конференции pages: Номера страниц, разделённые запятыми или двойным дефисом. Для книги — общее количество страниц. publisher: Издатель school: Институт, в котором защищалась диссертация. series: Серия, в которой вышла книга. title: Название работы type: Тип отчёта, например «Заметки исследователя» url: WWW-адрес volume: Том журнала или книги. year: Год публикации (если не опубликовано — создания)

Дополнительно, каждая запись содержит ключевое поле, которое служит для цитирования или кросс-ссылок на эту запись. Это поле должно быть уникальным (в рамках использующей работы) и непустым. Это поле не имеет названия, не является частью других полей и идёт первым по-порядку.

Стили оформления библиографии: bst-файлы BibTeX использует bst-файлы для описания того, как bib-записи преобразуются в текст на LaTeX'e. Каждый bst-файл представляет собой программу на простом стековом языке программирования, напоминающем Forth или PostScript. Есть программы, позволяющие генерировать .bst-файлы автоматически (например, custom-bib или Bib-it).

Обычно BibTeX формирует вывод в формате TeX или LaTeX, но существуют и стилевые файлы для генерации формата HTML.

Многие журналы или издательства, которые принимают публикации в формате LaTeX, снабжают также библиографическими стилями для авторов. Это удостоверяет, что стиль оформления библиографии также будет соответствовать требованиям издателя с минимальными усилиями.

Поддержка различных языков и альтернативы Языковая поддержка в полном объёме встроена в современные версии LaTeX и BibTeX. Однако BibTeX не поддерживает bib-файлы, закодированные в UTF-8 и других вариантах Юникода, который является единственным кроссплатформенным методом кодировки текста на языках, отличных от английского. Причина в том, что активная разработка BibTeX была прекращена в 1988 году, до появления Юникода (версия 0.99c выпущена в 1988 году, текущая версия 0.99d, содержавшая малые изменения, — в 2010 году). Пользователь чистого BibTeX вынужден использовать 8-битные кодировки bib-файлов (хотя tex-файлы при этом могут быть в Юникоде). Несмотря на это, опыт использования BibTeX в операционной системе Linux (Ubuntu 10.04) показывает корректную работу BibTeX с русскими символами в кодировке UTF-8.

Заменами BibTeX являются CrossTeX и Biber.

CrossTeX не доступен в основных свободных дистрибутивах Tex Live и MiKTeX и пока не имеет полной поддержки Юникода.

Biber доступен в Tex Live и MiKTeX и имеет полную поддержку UTF-8 (Юникод версии 6.0). Biber может работать только в связке с BibLaTeX. BibLaTeX разрабатывался как надстройка над BibTeX и может работать как с BibTeX, так и с Biber; Biber при этом заменяет BibTeX.

В настоящее время сайт CTAN призывает использовать BibLaTeX+Biber (или хотя бы BibLaTeX+BibTeX) вместо чистого BibTeX.

Пример .bib-файл может содержать следующую запись, которая описывают математическую книгу: @Book{Korn, author = {Корн, Г. А. and Корн, Т. М.}, title = {Справочник по математике для научных работников и инженеров}, publisher = {«Наука»}, year = 1974, address = Москва, lang = ru }

Если документ ссылается на эту книгу, библиографическая информация может быть оформлена несколькими способами в зависимости от выбранного стандарта оформления (APA, MLA, Chicago и др.). То, как LaTeX форматирует ссылку, зависит от способа вызова команды \cite и выбранного стиля оформления LaTeX-документа. Если команда \cite{Korn} вызывается внутри документа, то программа bibtex включает книгу в список литературы для документа и генерирует соответствующий код форматирования LaTeX. В окончательном виде ссылка может выглядеть, например, так:

В зависимости от стилевого файла, BibTeX может переставлять фамилии и имена авторов, изменять регистр названий, опускать некоторые поля из .bib-файла, оформлять текст курсивом, добавлять знаки пунктуации и т. д. Так как один стилевой файл используется для всего списка литературы, то все библиографические ссылки оформляются единообразно с минимальным усилием авторов и редакторов.

Формат списка авторов Префиксы фамилий, такие как von, van и der обрабатываются автоматически, если они начинаются со строчной буквы, чтобы отличать их от фамилий. Фамилии из нескольких слов отделяются от имён и отчеств (или средних имён) тем, что они идут сначала, а потом, через запятую, пишутся имена и отчества. Именные суффиксы, как Ср. или Мл. или III обычно обрабатываются с помощью второй запятой-разделителя, как в примере:

@Book{hicks2001, author = "von Hicks, III, Michael", title = "Design of a Carbon Fiber Composite Grid Structure for the GLAST Spacecraft Using a Novel Manufacturing Technique", publisher = "Stanford Press", year = 2001, address = "Palo Alto", edition = "1st,", isbn = "0-69-697269-4" }

Вместо использования запятой, чтобы отделить именной суффикс от фамилии, можно выделить всё имя фигурными скобками: {Hicks III}.

Авторы должны отделяться словом and, а не запятыми или «и»:

@Book{Torre2008, author = "Joe Torre and Tom Verducci", publisher = "Doubleday", title = "The Yankee Years", year = 2008, isbn = "0385527403" }

Перекрёстные ссылки BibTeX позволяет ссылаться на другие публикации с помощью поля crossref. В следующем примере тезис ссылается на сборник тезисов. @INPROCEEDINGS {author:06,