Как создать bibtex файл
В этом блоге публикуются заметки и решения, найденные в процессе работы, освоения и жизни в дистрибутиве Debian GNU/Linux.
Зачем нужен BiBTeX и как его использовать
Этот пост является частью большой статьи"Как оформить диплом в LaTeX?",
которую написал virens,
ведущий блога "Записки дебианщика"
В этом посте уже говорилось о том, что такое BiBTeX и как его использовать. Судя по поступившим комментариям, это немного не очевидно - поэтому приведу простой пример использования единой библиографической базы BiBTeX в нескольких документах. Естественно, предполагается, что все необходимые программы (tetex, jabref, java) установлены и работают.
BiBTeX or not BiBTeX?
Чтобы ответ на этот вопрос стал более нагляден и очевиден, я приведу примеры документов с его использованием и без. Особенно ярко это проявляется тогда, когда кусок документа с цитированием литературных источников вставляется в другой документ - и это сейчас будет продемонстрировано.
BibTeX не используется
Итак, создан простенький документ, в нём несколько ссылок на литературу, причём эти ссылки должны нумероваться в порядке упоминания. Вот как выглядит исходный код документа:
Разумеется, показан не весь документ, а лишь его часть. Ещё раз: ссылки \cite <> будут пронумерованы в том порядке, в котором они упомянуты в окружении \begin < thebibliography >. \end < thebibliography >а не в порядке упоминания в тексте!
А вот как выглядит набранный документ:
Метод Голда [4] получен из метода ван Циттерта [5], но с предположени-ем, что действует он только для положительных чисел. Восстанавливает последующему алгоритму
<. >
[4] GOLD, R. : An Iterative Unfolding Method for Matrices, Tech. Rep. ANL-
6984, Argonne National Laboratory, Argonne, Illinois, 1964.
[5] Journal of Electrical Engineering, Vol. 56, NO. 5-6, 2005, 141-
145 Multidimensional FFT Based Positive Definite Gold Deconvolution
Algorithm Miroslav Morhac - Vladislav Matousek
Теперь, если переставить местами в окружении \begin < thebibliography >. \end < thebibliography >ссылки \bibitem и \bibitem , то в тексте ссылки будут стоять так:
Метод Голда [5] получен из метода ван Циттерта [4], но с предположением, что действует он только для положительных чисел. Восстанавливает последующему алгоритму
что не есть правильно. Особенно это будет прискорбно в большом документе и совсем грустно - в составленном из нескольких. Единственное исключение из этого правила - некоторые научные журналы (вроде Optics Letters и Optics Express), которые явно требуют вставлять библиографические ссылки в текст статьи в окружении \begin < thebibliography >. \end < thebibliography >- их системы BiBTeX не переваривают. Обходится это очень просто: создаётся ещё один документ со статьёй, которому указывается библиографическая база данных BiBTeX. Файл компилируется, после чего берётся содержимое файла bbl и вставляется в финальную версию статьи.
Включаем BibTeX
Для этого не нужно особых телодвижений: нужно вбить источники литературы в базу через удобную графическую оболочку Jabref, кинуть на каталог базы симлинк , явно указать в документе использование BibTeX-овской базы и задать в преамбуле стиль библиографии.
Всё по порядку: вбиваем источники литературы в базу при помощи графический оболочки JabRef, копируем в каталог с документом. Теперь симлинк будет указывать на каталог, где находится база - таким образом, множество документов будут использовать одну и ту же базу.
Вот как это выглядит всё вместе:
Как и обещалось, вы работаете с текстом в ЛаТеХе, как и прежде, только вместо явного прописывания источников литературы вы заставляете этим заниматься ЛаТеХ. Машина работает, вы - отдыхаете. И это правильно.
Несколько замечаний по BiBTeX
Надеюсь, крутизна BiBTeX прочувствована и вы уже с увлечением набиваете свою библиографическую базу. Однако есть пара тонких моментов, которые мне хотелось бы осветить.
Вопрос: А где теперь мои процитированные литературные источники?
Ответ: Они теперь в файле имядокумента.bbl, который можно открыть, посмотреть и при необходимости скопировать в другой документ. В этом примере он выглядит так:
Вопрос: Как переопределить в преамбуле, чтобы список литературы был через точку?
Ответ: Для этого в преамбуле (до \begin < document >) прописываем:
И всё, теперь в списке литературы источники будут идти как 1. 2. . N.
Вопрос: Можно ли в одном документе использовать не одну базу, а несколько?
Ответ: Да, можно, тогда их имена указываются через запятую без пробелов. Например, так: \bibliography
В следующем посте приведу пример использования стилей оформления литературы в BiBTeX.
Потребность набрать статью в TeX/LaTeX всегда возникает срочно. И срочность эта тем выше, чем меньше будущий автор знаком с LaTeX (или TeX). Поэтому не будем тратить время на исторический экскурс, установление разницы между TeX и LaTeX, и тонкости произношения названий, а сразу приступим к оформлению статьи.
Для этого нужно: 1) установить TeX и редактор для работы с ним, например, Texmaker или TeXstudio (я использую последний) или 2) воспользоваться онлайновым TeX-редактором, например Overleaf или ShareLaTeX (потребуется бесплатная регистрация).
Статья, которую мы хотим написать, выглядит так
Будем оформлять её постепенно.
1. Создадим простейший документ LaTeX:
Всё, что находится между \begin и \end называется "телом" документа. Сюда мы будем помещать набираемый текст.
Перед \begin расположена "преамбула" с настройками документа. В нашем случае настройка всего одна:
Она говорит, что созданный документ — статья (article).
В LaTeX существует множество классов, задающих то или иное оформление документа: статья, отчёт, книга, презентация и т. п.
Многие солидные журналы предлагают собственные классы для оформления статей. Например, публикации в журналах Американского физического общества оформляются при помощи класса revtex:
(четвёрка означает номер версии класса).
2. Добавим в документ произвольный текст, оттранслируем его
Как видно, набранный на русском языке текст не отображается в готовом документе. Исправим это.
3. Добавим в преамбулу следующие строки
4. При наборе текста, абзацы нужно разделять пустой строкой. В качестве примера наберём следующий текст:
5. Теперь укажем название ( \title ), автора ( \author ) и дату создания статьи ( \date ):
Разумеется, можно указывать не все, а только часть этих данных.
Команда \maketitle отображает указанные данные в документе (можете убрать её и посмотреть, что получится).
В качестве даты мы указали сегодняшнее число ( \today ), поэтому результаты трансляции у нас с вами будут немного отличаться.
6. Добавим команды, управляющие начертанием шрифта и его размером:
Как видно, команда \textbf , действующая на текст "полужирным", отображает его в готовом документе полужирным шрифтом и т. п.
Поначалу кажется, что все эти команды будет трудно запомнить. На практике же, то что используются часто, запоминается сами собой. Для остальных команд существует меню
и панели инструментов
которые есть в любом редакторе для работы с TeX.
7. Наберём следующий текст:
Конструкция, помещённая в окружение \begin. \end , представляет собой маркированный список. Каждый пункт списка начинается с команды \item .
8. Займёмся структурой документа. Мы уже немного умеем набирать текст — вот и поместим его в отдельный раздел. Остальные разделы зарезервируем под примеры вставки формул и рисунков.
Заголовок раздела создаётся командой \section . Нам нужно добавить заголовки
так, чтобы получилось следующее:
9. Формулы, которые размещаются внутри абзаца, окружают одиночными долларами $. $ или командами \(. \) .
Вынесенные в отдельный абзац, так называемые выключные формулы, окружаются \[ и \] или \begin. \end . В последнем случае формулы автоматически нумеруются.
Добавим в раздел "Немного математики" следующий текст:
TeX автоматически сжимает внутритекстовые формулы так, чтобы они занимали меньше места по высоте. Вы можете проверить это, поместив внутрь абзаца интеграл из последней формулы.
Чтобы упростить набор формул, в редакторах TeX'а существуют панели инструментов с "подсказками":
10. Рисунки, выполненные в виде файлов графических форматов (PNG, JPEG, PDF и т.п.), вставляются в документ при помощи команды \includegraphics :
В нашем случае, помимо вставки рисунка, выполняется уменьшение его размеров в 2 раза.
Файл TeX_lion.jpg должен находится в одном каталоге с текстом статьи.
Чтобы всё это сработало, нужно указать в преамбуле документа:
— что означает "подключить пакет graphicx".
Пакеты — это тематические наборы функций, расширяющие возможности TeX в том или ином направлении. Мы уже использовали их, когда нужно было обеспечить поддержку кириллицы.
11. Вставленный рисунок нужно центрировать и добавить к нему заголовок. Сделать это можно, поместив нужные команды в окружение figure :
Окружение figure создаёт "плавающий" объект. Это значит, что рисунок будет помещён в то место документа, где это обеспечит лучшее качество заполнения страницы. Опция h (here) рекомендует TеX'у разместить рисунок "здесь", то есть в том месте, где стоит команда \inludegraphics .
12. Чтобы сослаться на какой-то объект — рисунок, таблицу, раздел или уравнение — нужно пометить этот объект командой \label . Ссылка выполняется командой \ref .
Изменим текст раздела Иллюстрации следующим образом:
Обработка документа со ссылками происходит в два этапа: сначала транслятор сохраняет имена объектов и рассчитывает соответствующие им номера, затем он заменяет команды \ref этими номерами. Поэтому такой документ нужно, вообще говоря, транслировать дважды. Некоторые редакторы TeX'а достаточно "умны" и автоматически транслируют документ нужное число раз.
, стоящая перед \ref , задаёт неразрывный пробел.
13. Статья почти готова. Теперь можно добавить аннотацию
и заняться оформлением документа в целом, то есть размерами шрифтов, полей страницы и т. п.
14. Отчего мы не занялись этим раньше? От того, что редакция журнала, скорее всего, уже создала класс с настройками оформления статьи. Нам остаётся лишь указать его в \documentclass , чтобы документ стал выглядеть так, как того требуют правила журнала.
Подобные классы обычно основываются на базовом классе article, к которому добавлены некоторые настройки.
В качестве примера мы настроим: 1) базовый размер шрифта, а также 2) размер страницы и величину полей документа.
Увеличим размер базового шрифта с 10 пунктов (pt), принятых по умолчанию, до 12 пунктов
При этом соответственно увеличатся и все относительные размеры, заданные командами вроде \tiny и \Huge ).
Настройку параметров страницы выполним с помощью пакета geometry:
a4paper задаёт размер страницы (А4), остальные параметры задают размеры полей документа: левого, правого, верхнего и нижнего (в сантиметрах).
Транслируем документ и получим
— то, что и требовалось.
Мы можем легко изменить оформление документа, использовав для этого другие классы. Например, разработанный в Германии пакет KOMA-Script предлагает использовать для оформления статей класс scrartcl.
Заменив в \documentclass article на scrartcl, получим
15. Примеры оформления статей и правила хорошего "типографического" тона можно найти в руководстве, подготовленном издательством ФИЗМАТЛИТ, и сборнике примеров.
Комментарии
Дмитрий Храмов
Компьютерное моделирование и все, что с ним связано: сбор данных, их анализ, разработка математических моделей, софт для моделирования, визуализации и оформления публикаций. Ну и за жизнь немного.
Можно пройтись по файлу и перед названиями нечитаемых полей добавить три буквы OPT.
Разве biblatex не может bbl генерить?
Он генерирует какой-то другой bbl.
Сейчас решил проблему прогоном
Так он переделывает BIB базу, убирая лишние поля (руками никак, очень много записей). Потом прогнал через bibtex.
Но ситуация повториться еще не один раз, хотелось бы найти более изящное решение.
Именно для этого в текстовых редакторов есть поиск и замена :)
Я думаю имеет смысл посмотреть в эти bbl-файлы и понять чем они отличаются. Де факто это ведь просто TeXовские куски кода. Скорее всего там просто пара-тройка команд разъезжается в определении.
Evgueni ★★★★★ ( 08.06.17 20:08:41 )Последнее исправление: Evgueni 08.06.17 20:10:18 (всего исправлений: 2)
Нет, bbl после biber - это вообще не теховский код, а инструкции какие-то для самого biber.
А что ты на самом деле хочешь получить? Неужели не список литературы?
А что у него установлено, и как работает? Может его можно научить запускать
А .bbl у biblatex отличается кардинально от bibtex'овского. Там вообще нет сформированного списка литературы. Там набор полей, из которых он делается уже внутри команды \printbibliography .
А что у него установлено, и как работает? Может его можно научить запускать
А .bbl у biblatex отличается кардинально от bibtex'овского.
Да, потому тему и создал. Но я делаю так:
Если знаете, как сделать проще, то буду рад послушать.
А может тогда сдаться и попробовать backend=bibtex для biblatex ?
Может быть. Ближайшие пару дней буду активно заниматься оформлением литературы, рассмотрения такой вариант.
А может тогда сдаться и попробовать backend=bibtex для biblatex?
Через полторы недели книгу нужно отдавать в печать. И один из авторов сейчас настаивает на том, чтобы я сделал bbl файл и дальнейшие правки (при необходимости) вносились туда уже вручную.
Если у Вас есть опыт, (на счет backend=bibtex), то поделитесь, пожалуйста, мне нужно сейчас оперативно все делать, каждый час на счету.
Сегодня я расскажу про бибтех --- систему оформления библиографии. Заодно поделюсь малоизвестными секретами. Кто имел удовольствие оформлять библиографические списки по правилам, оценит. Впрочем, всяко бывает, к доработке напильником всегда надо быть готовым!
Что такое ТеХ --- вы уже в курсе. Если не в курсе - скоро будет заметка и о нем. Итак,
Что такое BiBTeX?
BiBTeX – инструмент для формирования библиографии. Обычно она оформляется как окружение thebibliography. BiBTeX создает именно его в файле .bbl
Команда:
bibtex file.aux (файл .aux создается latex’ом или pdflatex’ом)
Потом – еще один или два раза 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-файле, в конце:
Стили библиографии --- *.bst. Их много, их предоставляют журналы, есть коллекция стилей gost, есть несколько стилей в поставке ТеХа. А биб-файлы --- это ваши базы источников.
А как быть с кириллицей?
При использовании bibtex с кириллицей могут быть проблемы. Во-первых, стиль бибтеха может менять регистр символов (скажем, в заглавии статьи все слова с большой буквы или, напротив, с малой), а откуда ему знать, что строчная "А" - это "а", а заглавная "б" - это "Б"?
Русский язык сюрпризов не таит, а вот немецкая ß в верхнем регистре SS, не говоря уж про греческую сигму, которых две строчных и одна заглавная, или испанскую ll, которая не две l. При том, что кроме латиницы, кириллицы, греческой и армянской письменности --- другие вообще не имеют регистра символов.
Вторая проблема связана с порядком букв. Бибтеху неизвестен порядок букв языка, а он может различаться в разных языках, даже если буквы одни и те же.
А буква Ё идет не по алфавиту, если смотреть на коды символов.
А порядок необходим для сортировки.
Для расширенных ASCII кодировок есть bibtex8. Он позволяет подключать файл, описывающий эти аспекты: соответствие прописных-строчных и алфавитный порядок:
bibitex8 -c cp1251.csf file.aux
Как цитировать литературу?
Цитирование осуществляет команда
\cite[как это будет в тексте]
Идентификатор помечает источник в базе. Необязательная часть в квадратных скобках позволяет добавить что-то в текст, например, номер страницы: [1, c. 42].
Малоизвестная команда \nocite позволяет вставить источник в библиографию без ссылки на него в тексте. Может стоять в любом месте.
Коллекции источников: файлы .bib
Можно иметь одну громадную коллекцию --- бибтех извлечет только то, что нужно. А можно --- много маленьких, на каждую работу отдельно.
Важно, чтобы концы строк были "какие надо".
Если в Линуксе использовать биб с концами строк в стиле Windows, работать не будет, но ошибка не диагностируется.
А еще надо следить за кодировкой --- все должно быть в одной кодировке.
Запись выглядит вот так:
В конце каждой строки должна быть запятая!
После символа @ стоит тип записи. Их много, самые распространенные @article, @book, @inproceedings. Далее в фигурных скобках --- содержание записи в виде ключ = значение.
Идентификатор идет просто в виде значения.
Значения могут быть либо в фигурных скобках, либо в кавычках, либо быть числом, либо строковой константой.
Константы полезны для повторяющихся строк, например, для названий журналов. Вот так они определяются:
Числа могут быть в фигурных скобках или в кавычках, но лучше без них --- тогда Бибтех может что-то делать с числами, например, сократить год до двух цифр (если стиль предписывает).
Обсудим некоторые часто встречающиеся поля и их секреты.
BiBTeX может менять регистр в заголовках! Защитить текст можно, взяв его в фигурные скобки, например:
Поля author или editor
Авторы разделяются словом "and":
author = --- будет написано "А. Эйнштейн и др."
Есть два способа записи автора:
- А. Эйнштейн – без запятых, “инициалы фамилия”.
- До 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-базу своих статей и легко генерирую список статей по ГОСТу за данный год.
Какие есть типы записей, какие поля необходимы для данного типа, а какие возможны --- смотрите, например, в Википедии.
Читайте также: