Найти в Дзене
Блокнот математика

BiBTeX - оформление библиографии

Сегодня я расскажу про бибтех --- систему оформления библиографии. Заодно поделюсь малоизвестными секретами. Кто имел удовольствие оформлять библиографические списки по правилам, оценит. Впрочем, всяко бывает, к доработке напильником всегда надо быть готовым!

Что такое ТеХ --- вы уже в курсе. Если не в курсе - скоро будет заметка и о нем. Итак,

Что такое BiBTeX?

BiBTeX – инструмент для формирования библиографии. Обычно она оформляется как окружение thebibliography. BiBTeX создает именно его в файле .bbl
Команда:

bibtex file.aux (файл .aux создается latex’ом или pdflatex’ом)

или

bibtex8 file.aux

Потом – еще один или два раза latex или pdflatex.

Первый раз ТеХ компилирует текст, запоминая ссылки на литературу. Бибтех создает библиографический список. Второй вызов Теха расставляет ссылки. Третий вызов может подправить то, что нарушилось при вставке ссылок --- номера страниц, содержание/оглавление и тому подобное.

Lifehack:
Можно просто взять thebibliography из file.bbl
И вставить в свой файл .tex

Можно использовать make для того, чтобы автоматизировать эти вызовы. Например, таким makefile-ом (<Tab> означает символ табуляции):

all: file.tex
<Tab> pdflatex file.tex
<Tab> -bibtex8 file.aux (знак ‘минус’ означает игнорирование ошибок)
<Tab> pdflatex file.tex
<Tab> pdflatex file.tex

Как пользоваться BiBTeX?
В .tex-файле, в конце:

\bibliographystyle{ gost2008s.bst }
\bibliography{chapter1.bib, chapter2.bib}

Стили библиографии --- *.bst. Их много, их предоставляют журналы, есть коллекция стилей gost, есть несколько стилей в поставке ТеХа. А биб-файлы --- это ваши базы источников.

А как быть с кириллицей?

При использовании bibtex с кириллицей могут быть проблемы. Во-первых, стиль бибтеха может менять регистр символов (скажем, в заглавии статьи все слова с большой буквы или, напротив, с малой), а откуда ему знать, что строчная "А" - это "а", а заглавная "б" - это "Б"?

Русский язык сюрпризов не таит, а вот немецкая ß в верхнем регистре SS, не говоря уж про греческую сигму, которых две строчных и одна заглавная, или испанскую ll, которая не две l. При том, что кроме латиницы, кириллицы, греческой и армянской письменности --- другие вообще не имеют регистра символов.

Вторая проблема связана с порядком букв. Бибтеху неизвестен порядок букв языка, а он может различаться в разных языках, даже если буквы одни и те же.

А буква Ё идет не по алфавиту, если смотреть на коды символов.

А порядок необходим для сортировки.

Для расширенных ASCII кодировок есть bibtex8. Он позволяет подключать файл, описывающий эти аспекты: соответствие прописных-строчных и алфавитный порядок:
bibitex8 -c cp1251.csf file.aux

Как цитировать литературу?

Цитирование осуществляет команда

\cite[как это будет в тексте]{идентификатор}

Идентификатор помечает источник в базе. Необязательная часть в квадратных скобках позволяет добавить что-то в текст, например, номер страницы: [1, c. 42].

Малоизвестная команда \nocite{идентификатор} позволяет вставить источник в библиографию без ссылки на него в тексте. Может стоять в любом месте.

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

Важно, чтобы концы строк были "какие надо".

Если в Линуксе использовать биб с концами строк в стиле Windows, работать не будет, но ошибка не диагностируется.

А еще надо следить за кодировкой --- все должно быть в одной кодировке.

Запись выглядит вот так:

@article{ identificator,
author = {...},
title = “...”,
year = 1948,
journal = JMS,

}

В конце каждой строки должна быть запятая!

После символа @ стоит тип записи. Их много, самые распространенные @article, @book, @inproceedings. Далее в фигурных скобках --- содержание записи в виде ключ = значение.

Идентификатор идет просто в виде значения.

Значения могут быть либо в фигурных скобках, либо в кавычках, либо быть числом, либо строковой константой.

Константы полезны для повторяющихся строк, например, для названий журналов. Вот так они определяются:

@STRING{JMS = {J Marine Systems}}

Числа могут быть в фигурных скобках или в кавычках, но лучше без них --- тогда Бибтех может что-то делать с числами, например, сократить год до двух цифр (если стиль предписывает).

Обсудим некоторые часто встречающиеся поля и их секреты.

  • Поле pages – только диапазон! Без с., pp., …
  • Поле journal – используйте константы, чтобы один журнал не возникал тремя способами.
  • Поле address – это, обычно, город: М.:, London
  • Поле language = {russian} – влияет на вставки вроде et al / и др., ed: / под ред. И тому подобные
  • Поле note – что угодно. Например, [In Russian]

Поле title

BiBTeX может менять регистр в заголовках! Защитить текст можно, взяв его в фигурные скобки, например:

  • title = {Моделирование {С}инего моря. {Ч}асть 1 {Т}еория}
  • title = {О решении {СЛАУ} методом {Г}аусса}
  • title = {{НИИЧАВО РАН}}
  • title = {Гипотеза {$X^2+x^2$}}
  • title = {Об употреблении {C$_2$H$_5$OH}}

Поля author или editor

Авторы разделяются словом "and":

author = {А. Эйнштейн and others} --- будет написано "А. Эйнштейн и др."

Есть два способа записи автора:

  • А. Эйнштейн – без запятых, “инициалы фамилия”.
  • До 4 полей через запятую:
    Эйнштейн, А.
    Bush, G., Jr.

Лучше сокращать имена до инициалов!

Обработка TeX-ом

Команды типа \”o, --, $H_2$, $\alpha^2$ --- обрабатываются TeX’ом.

Будьте осторожны при копировании – если не работаете в unicode, буквы с акцентами, греческие и т.п. могут вызвать проблемы.

Стиль

  • Используйте метки вида Einstein1915
  • Тогда легче отлавливать дубликаты записей!
  • У меня есть поле AKA – как цитировался источник в моих же разных статьях
  • Никаких loh, pots, dub – сами себя запутаете!

Стандартные стили

● abbrv – сжатый стиль: 322(12):42-66, 1948
● acm – более привычный: 322, 12 (1948), 42-66
● alpha – ссылки с текстовыми метками
● ieeetr – стиль IEEE: vol. 322, no.12, pp.42-66, 1948
● plain – похож на abbrv
● siam
● gost

Про gost
● gost2008 – отвечает ГОСТ 7.0.5-2008
● Есть и другие (gost2003, gost780)
● ugost2008 – UTF8 (но сортировка и инициалы - ваши проблемы).
● gost2008s – с сортировкой (помните про cp1251.csf !!)
● gost2008l – не сокращает список авторов

Я веду bib-базу своих статей и легко генерирую список статей по ГОСТу за данный год.

Какие есть типы записей, какие поля необходимы для данного типа, а какие возможны --- смотрите, например, в Википедии.

Buona fortuna, colleghi!