Библиография в LaTeX – сквозная нумерация

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

Во первых, при наборе текста в LaTex нужно стараться пользоваться метками и символьными ссылками. Это касается и формул, и рисунков, и названий глав, и, конечно же, списка литературы. То есть очень непрактично писать в редакторе так:

begin{equation}
E = mc^2
end{equation}

В знаменитой формуле (37) отображена связь между массой и энергией.

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

begin{equation} label{my_main_formula}
E = mc^2
end{equation}

В знаменитой формуле (ref{my_main_formula}) отображена связь между массой и энергией.


Аналогично нужно поступать и со списком литературы. Не писать так:

В работе [4] обсуждаются экспериментальные методики обнаружения эфирного ветра.
……
Список литературы

4. Е.Ц.Фотоненко, Мурзилка, 4, 1987

А делать это так:

В работе cite{fotonenko_1} обсуждаются экспериментальные методики обнаружения эфирного ветра.
……
begin{thebibliography}{99}

bibitem{fotonenko_1}
Е.Ц.Фотоненко, Мурзилка, 4, 1987

end{thebibliography}

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

Однако, есть один неприятный нюанс. При таком подходе ссылки будут идти с номерами, соответствующими порядку расположения источников в списке литературы. То есть, если статья Фотоненко расположена в окружении thebibliography пятой, то и в тексте на нее будет ссылка [5], даже если это первая работа, на которую ссылаются в статье. То есть мы можем получить текст, в котором ссылки на литературу будут беспорядочны: первой встречается ссылка [5], затем [1,3,4], затем [2]. Что же делать, если нужно, что бы нумерация ссылок на литературу была сквозной? То есть когда в тексте первая отсылка к списку литературы была бы [1], затем в тексте встречается [2,3,4], потом [5] и т.д.

Можно, конечно, отредактировать окружение thebibliography вручную, меняя местами строки. А можно воспользоваться bibtex для генерирования списка литературы. В интернете есть множество описаний как использовать bibtex, однако все они предполагают, что пользователь хочет использовать все его возможности. Но что делать, если нам нужен bibtex только как средство для сортировки ссылок в тексте, а не для того, что бы вести базу литературных источников, и стилевого их вывода в списке? То есть когда нужны полу-меры.

Итак, использование bibtex предполагает то, что теперь список литературы содержится не в файле с текстом, а в отдельном файле с расширением bib. Этот bib файл – обычный текстовый файл со своими метатегами, такая простая база данных. Создавать такие bib файлы можно в специальных программах для ведения библиографических баз данных, например, jabref. Однако, если начать создавать bib файл с помощью jabref можно обнаружить, что каждое наименование нужно вводить со всей строгостью: указать книга это или статья или препринт… , ввести в отдельные поля авторов, год, название журнала, если речь о статье, наименование издательства, если речь о книге и т.п. То есть процедура долгая и утомительная. И главное: существуют специальные стили для вывода библиографии. Например, в стиле содержится информация о том, что статью нужно выводить как

“Название статьи”, Авторы, год, номер, том, название журнала.

(причем номер – жирным шрифтом) или

Авторы, “Название статьи”, название журнала, том, номер, год.

То есть прописан порядок и стиль вывода полей из базы данных в bib файле. Но вот редактировать эти стили – довольно сложно, особенно если правила, предъявляемые к библиографии, сложные и запутанные. И что делать, если мы хотим использовать всю мощь bibtex только для сортировки, но сами ссылки на литературу в списке хотим вбивать вручную? Для этого нужно создать простейший стиль вывода библиографии (скачать). И создать bib файл в простом текстовом редакторе. Вот пример из двух наименований, который можно брать за образец, скопировав и вставив в чистый bib файл (например, my_bib.bib):

@ARTICLE{fotonenko_1,
title = {Е.Ц.Фотоненко, Мурзилка, 4, 1987},
owner = {Your name},
timestamp = {2011.01.01}
}

@ARTICLE{vilenkin,
title = {Алекс Виленкин, Мир многих миров: физики в поисках параллельных вселенных, Астрель 2010, 303с },
owner = {Your name},
timestamp = {2011.01.01}
}

@comment{jabref-meta: selector_publisher:}

@comment{jabref-meta: selector_author:}

@comment{jabref-meta: selector_journal:}

@comment{jabref-meta: selector_keywords:}

@comment{jabref-entrytype: ARTICLE: req[title] opt[]}

То есть дальше Вы можете с помощью Ctrl+C – Ctrl+V накопировать кучу блоков

@ARTICLE{citelink,
title = {Авторы, журнал и все что хотите},
owner = {Your name},
timestamp = {2011.01.01}
}

И заменяя citelink и title на свои внести в bib файл всю литературу.

Так, и что же делать с этим bib файлом? В Вашем документе перед
строчкой begin{document} нужно указать стиль вывода списка литературы – это ссылка на bst файл, который нужно положить в папку с Вашим документом.

bibliographystyle{simple}

Далее, после begin{document} можно указать какими словами называется список литературы:

renewcommand{bibname}{Список литературы по теме}

В тексте как и прежде использовать ссылки вида cite{vilenkin}, Вы видите, где в bib файле они находятся. На том месте, где раньше было окружение thebibliography нужно написать:

bibliography{my_bib}

(Это если Ваш bib файл называется my_bib.bib и он лежит в той же папке, что и ваш tex документ)

Затем, после компиляции Вашего документа списка литературы сразу не появится. Нужно запустить bibtex (в TeX редакторах есть такая опция),
запуск bibtex

и затем опять откомпилировать документ.

Поделиться:      twitter       facebook