Логотип программы BibTeX
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, которая тоже выполняет все необходимые вызовы автоматически.
BibTeX использует bib-файлы специального текстового формата для хранения списков библиографических записей.
Каждая
запись
описывает ровно одну публикацию ? статью, книгу, диссертацию, и т. д.
Bib-файлы можно использовать для хранения библиографических баз данных. Многие программы, работающие с библиографиями, (такие, как
JabRef
) и онлайн-сервисы цитирования (
ADS
[1]
,
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
: Институт, вовлечённый в публикацию, необязательно издатель
isbn
: Код издания
ISBN
(Международный стандартный книжный номер)
journal
: Название журнала, содержащего статью
key
: Скрытое ключевое поле, задающее порядок сортировки (если ≪author≫ и ≪editor≫ не заданы)
month
: Месяц публикации (может содержать дату). Если не опубликовано ? создания
note
: Любые заметки
number
: Номер журнала
organization
: Организатор конференции
pages
: Номера страниц, разделённые запятыми или двойным дефисом. Для книги ? общее количество страниц
publisher
: Издатель
school
: Институт, в котором защищалась диссертация
series
: Серия, в которой вышла книга
title
: Название работы
type
: Тип отчёта, например ≪Заметки исследователя≫
url
: WWW-адрес
volume
: Том журнала или книги
year
: Год публикации (если не опубликовано ? создания)
Дополнительно, каждая запись содержит ключевое поле, которое служит для цитирования или кросс-ссылок на эту запись. Это поле должно быть уникальным (в рамках использующей работы) и непустым. Это поле не имеет названия, не является частью других полей и идёт первым по-порядку.
BibTeX использует bst-файлы для описания того, как bib-записи преобразуются в текст на
LaTeX
'e.
Каждый bst-файл представляет собой программу на простом стековом языке программирования,
напоминающем
Forth
или
PostScript
. Есть программы, позволяющие генерировать .bst-файлы автоматически (например, custom-bib или Bib-it).
Обычно BibTeX формирует вывод в формате TeX или LaTeX, но существуют и стилевые файлы для генерации формата
HTML
.
Многие журналы или издательства, которые принимают публикации в формате LaTeX, снабжают также библиографическими стилями для авторов. Это удостоверяет, что стиль оформления библиографии также будет соответствовать требованиям издателя с минимальными усилиями.
Языковая поддержка в полном объёме встроена в современные версии LaTeX и BibTeX. Однако BibTeX не поддерживает
[1]
bib-файлы, закодированные в
UTF-8
и других вариантах
Юникода
, который является единственным
кроссплатформенным
методом кодировки текста на языках, отличных от английского. Причина в том, что активная разработка BibTeX была прекращена в 1988 году, до появления Юникода (версия 0.99c выпущена в 1988 году, текущая версия 0.99d, содержавшая малые изменения, ? в 2010 году).
[2]
Пользователь чистого BibTeX вынужден использовать 8-битные кодировки bib-файлов (хотя tex-файлы при этом могут быть в Юникоде). Несмотря на это, опыт использования BibTeX в операционной системе
Linux
(
Ubuntu
10.04) показывает корректную работу BibTeX с русскими символами в кодировке
UTF-8
.
Заменами BibTeX являются CrossTeX и
Biber
.
[3]
CrossTeX не доступен
[4]
в основных свободных дистрибутивах
Tex Live
и
MiKTeX
и пока не имеет
[5]
полной поддержки Юникода.
Biber доступен
[6]
в Tex Live и MiKTeX и имеет
[7]
полную поддержку UTF-8 (Юникод версии 6.0). Biber может работать только в связке с BibLaTeX.
[8]
BibLaTeX разрабатывался как надстройка над BibTeX и может работать как с BibTeX, так и с Biber; Biber при этом заменяет BibTeX.
В настоящее время сайт
CTAN
призывает
[9]
использовать 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. В окончательном виде ссылка может выглядеть, например, так:
- Корн Г. А., Корн Т. М.
Справочник по математике для научных работников и инженеров
. ?
М.
: ≪
Наука
≫, 1974.
В зависимости от стилевого файла, 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
,
title
=
{Название доклада}
,
author
=
{Первый Автор and Второй Автор}
,
crossref
=
{conference:06}
,
pages
=
{330?331}
,
}
@PROCEEDINGS
{
conference:06
,
editor
=
{Первый Редактор and Второй Редактор}
,
title
=
{Proceedings of the Xth Conference on XYZ}
,
booktitle
=
{Proceedings of the Xth Conference on XYZ}
,
year
=
{2006}
,
month
=
{October}
,
}
При этом следует добавлять
booktitle
к записи сборника, чтобы избежать предупреждения BibTeX’а ≪empty booktitle≫.
Вывод LaTeX этого примера может выглядеть примерно так:
- Автор, Первый and Автор, Второй (October 2006), Название доклада, in: Proceedings of the Xth Conference on XYZ, pp 330?331.