воскресенье, 24 апреля 2011 г.

Прикручиваем BibTeX под Ubuntu

Задача стоит такая, сделать список литературы, сделать его по ГОСТу 71 и не затратить при этом много усилий. Лично я использую редактор Kile, поэтому будет основываться на нём.

Для начала настроим Kile, в нём можно проводить сборку BibTeX. Это делается в Settings - Build - BibTeX. На этом я останавливаться не буду, это всё просто. Начнём с ГОСТа, причем с поддержкой UTF8. Для этого нам понадобиться вот эти файлы. Качаем их, кидаем в папку со своим компилируемым файлом файл utf8gost71s.bst. Далее вставляем после \begin{document} и до \end{document} следующее:
\renewcommand{\bibname}{Список литературы}
\bibliographystyle{utf8gost71s}
\bibliography{lit}
\addcontentsline{toc}{section}{Список литературы}

Смотрим и запоминаем. Первая строка изменяет название списка литературы c "Литература" на "Список литературы". Вторая строка применяет скопированный файл. Далее подключается файл lit.bib. И наконец, четвертая строка, добавляет в toc файл название "Список литературы" и он появляется в оглавлении.

Теперь необходимо заполнить сам файл lit.bib. Для этого можно использовать программы вида KBiB, KbibTeX или даже при помощи Kile, в котором есть готовые заготовки в меню LaTeX - Bibliography. Покажу как это делать руками. Для начала записываем в файл:
@book{byrkat,
author = {Буркат, В. С. and Друкаев, В. А.},
title = {Сокращение выбросов в атмосферу при произсодстве алюминия},
publisher = {ООО <<Любавич>>},
year = 2005,
key = {Буркат},
address = {СПБ},
language = {russian}
}
Как заполнять подобные записи имеется куча инструкций, например вот эта.
Далее необходимо поставить ссылку на литературу в тексте, в нашем случае вот такую \cite{byrkat}. Стоит заметить, что language = {russian} является важной строкой, без неё автоматические добавления типа страница будут заполняться на английском.

Дальше лучше. Компилируем всё это наше дело либо через Kile, либо следующими командами:
pdflatex file_name.tex
bibtex file_name.aux
Далее снова два раза компилируем файл и получаем готовый результат.
pdflatex file_name.tex && pdflatex file_name.tex