"Как оформить диплом в LaTeX?",
которую написал virens,
ведущий блога "Записки дебианщика"
Решение: есть кроссплатформенные системы ведения баз данных библиографических ссылок в LaTeX, одна из них - JabRef.
При написании объёмных научных трудов часто возникает проблема работы с библиографией в LaTeX. Обычно на начальном уровне освоения LaTeXники применяют для указания ссылок на литературу такую конструкцию, помещая её в конец своего tex-файла:
\addcontentsline{toc}{chapter}{Литература}Это значит буквально то, что написано: добавить главу "Литература" в конец списка, а ссылки (bibitem) указать в порядке перечисления их ниже. Вот тут-то и лежат грабли для начинающих TeXников - в тексте ссылки пронумеруются в том порядке, в котором они тут указаны, а не в порядке упоминания.
\begin{thebibliography}{99}
\bibitem{catheydowskinewparadigm} W.T. Cathey and E.R. Dowski, ``New paradigm for imaging systems'', Appl. Opt. 41, pp. 6080-6092, 2002.
Кроме того, начнутся большие проблемы, когда вы захотите часть литературных источников включить в другой документ. Какие из них брать? В каком порядке? Или вспомнить, каким словом вы обозвали какую-то книгу или монографию? Вот тут нам и приходит на выручку BiBTeX...
Библиографические базы данных
Это простой текстовый файл, в котором перечислены ваши библиографические ссылки, и работают с этими файлами специальные (но простые для использования) программы. При этом каждый раз, когда вы собираете LaTeX-файл, создаётся специальный файл имяфайла.bib, в который из этой самой базы (bib-файла) надёргиваются источники литературы, указанные в тексте.
Таким образом, вы избавлены от забот с библиографией - теперь вы будете добавлять источники литературы не в сам LaTeX-документ, а в bib-файл при помощи удобной графической программы. Эту библиографическую базу вы сможете использовать для многих документов, что имеет свои преимущества:
- если в описание ссылки на литературу вкралась ошибка, её можно исправить в базе - и это будет изменено во всех документах, ссылающихся на неё;
- ссылки появляются по мере упоминания и нумеруются правильно;
- простой поиск в базе для выяснения ключа цитирования (подставляемый в \cite{});
- возможность использования одной базы во многих документах;
- импорт и экспорт в другие библиографические форматы.
Как это работает
Для того, чтобы начать работу с BiBTeX, надо установить какую-нибудь оболочку к нему, создать новую библиографическую базу, заполнить её теми ссылками, которые у вас уже имеются в созданных LaTeXовских документах и слегка подправить в конце упоминание о библиографии. Если раньше вы писали в конце документа:
\addcontentsline{toc}{chapter}{Литература}то теперь следует писать (не указывая расширения bib):
\begin{thebibliography}{99}
\bibliography{путь/к/файлу/библиографии}и кроме того указать, какой стиль библиографических ссылок вы хотите использовать - чаще всего используется не сортированный (т.е. в порядке упоминания в тексте):
например,
\bibliography{biblio/my}
\bibliographystyle{unsrt}Эту строчку ставим в шапке LaTeXовского документа, после разного рода \usepackage но до \begin{document}. Вот и все дела.
Здесь следует использовать возможности операционной системы, которые здорово облегчают жизнь. Например, у вас есть два LaTeX-файла в разных каталогах (скажем, две статьи). При этом они используют одну и ту же библиографическую базу, которая находится в другом каталоге - как её использовать в разных документах!? Очень просто: Linux и *BSD системы давно умеют создавать символические ссылки на файлы и каталоги. Предположим, что библиографическая база my.bib находится в каталоге ~/docs/matlab/docus/topics/biblio/ и в латеховском документе указывается как \bibliography{biblio/my} - поэтому нужно просто сделать символическую ссылку (симлинк) на каталог, в котором база хранится:
ln -s ~/docs/matlab/docus/topics/biblio/ biblioи перекопировать симлинк в нужные каталоги, в которых находятся ваши латеховские документы. Всё, теперь все они будут работать с одной и той же базой. Легко и просто.
Надеюсь, я вас убедил и теперь осталось только всё это установить.
Приступаем к установке
Для того, чтобы всеми этими чудесами воспользоваться, нужно поставить программу-оболочку для работы с BibTeXом. Можно и руками набивать базу - пожалуйста, можно воспользоваться программами, уже имеющимися в дистрибутиве. Например, для Debian v3.1 Sarge, если поискать в репозитории:
# apt-cache search bibtex | grep tool bibtool - A tool for manipulating BibTeX data bases. bibview - X11 Bibliography database tool pybliographer - tool for manipulating bibliographic databases bibtool-dev - A library providing functions to deal with BibTeX files. search-ccsb - BibTeX search tool search-citeseer - BibTeX search toolто можно найти приличное количество таких программ.
Однако в плане удобства использования они сильно проигрывают JabRef, о которой и пойдёт речь дальше. Эта программа написана на Java, бесплатна и лицензирована под GPL - однако из-за того, что Java-машина в основную ветку дистрибутива Debian не входит (по лицензионным причинам), JabRef в Дебиане нет. Однако для неё есть дебиановский пакет, который можно скачать с сайта разработчиков, а пакет с Java-машиной - из non-free ветки дистрибутива Debian.
Ставим!
Итак, нам нужно скачать из Интернета пакеты j2re*.deb (у меня, например, jpre1.4_1.4.2.03-1_i386.deb), jabref*_all.deb (у меня установлен jabref_2.0.1-1_all.deb) и взять первый DVD-диск, на котором есть пакет java-common, входящий в стандартную поставку Дебиана.
Сначала ставим java-common из дистрибутива:
#apt-get install java-commonДалее ставим отдельно пакет с Java-машиной (если у вас более свежая версия - поправьте имя пакета):
#dpkg -i jpre1.4_1.4.2.03-1_i386.debКонфигуратор этого пакета может задать вопросы - типа согласны ли мы с лицензией (выбирать не приходится), и прочее. Отвечаем утвердительно - согласны с лицензией SUN и принимаем все остальные вопросы. Теперь ставим собственно JabRef - так же отдельно пакет (если у вас более свежая версия - поправьте имя пакета):
#dpkg -i jabref_2.0.1-1_all.debВсё - теперь добавляем JabRef в меню своего любимого оконного менеджера или графической среды и запускаем:
jabrefТак как программа на джаве, запускается она не быстро - это нормально. Интерфейс у неё простой и понятный.
Осталось только вбить литературные источники в этой программе в новую базу, сохранить, поставить во всех документах упоминание о том, что мы теперь используем BiBTex:
\bibliography{путь/к/файлу/библиографии}и работать, как всегда - ставить ссылки на литературу, а уж BiBTeX сам разберётся, как её указать. И в конце вашего LaTeXовского файла всегда будет аккуратный список литературы по всем правилам хорошего тона.
Несколько советов
Во-первых, не забываем про архивирование данных - и особенно библиографической базы данных. Это теперь наше всё. Её можно экспортировать в HTML или просто скопировать куда-нибудь в другое место.
Во-вторых, разного рода издательства и их электронные ресурсы, такие как SpringerLink и Elsavier предоставляют Citations для опубликованных у них работ. Не проходите мимо них и собирайте эти замечательные файлы (они обычно в формате RIS, но могут быть и в других форматах). Скачав и импортировав в JabRef в свою базу такой файл, вы получите уже набранную информацию о статье или книге - вам только остаётся подобрать для неё подходящий ключ, на который будете потом ссылаться. И всё.
Для любопытных
Физически теперь ваши ссылки будут одним файлом с расширением bib, который, если его открыть текстовым редактором, будет похож на:
This file was created with JabRef 2.0.1.Это и есть ваша база данных библиографии. Её, как сказано выше, можно набивать чем угодно - программами или руками, а так же привлечь к этому делу скрипты. Так же можно обмениваться ими с коллегами по работе. В общем, полная свобода действий.
Encoding: KOI8-R
@ARTICLE{catheydowskinewparadigm,
author = {W.T. Cathey and E.R. Dowski},
title = {New paradigm for imaging systems},
journal = {Appl. Opt.},
year = {2002},
volume = {41},
pages = {6080-6092},
owner = {penta4},
timestamp = {2006.05.12},
}
Как переименовать "Литература" (rename References in LaTeX)?
Если необходимо оформить список литературы для диплома, чтобы само название было СПИСОК ЛИТЕРАТУРЫ по центру (например). В зависимости от того, чем вы там диплом формляете (может, мудрёные пакеты какие), сделать можно вот так:
\begin{document}
\renewcommand\refname{\centering СПИСОК ЛИТЕРАТУРЫ}
\renewcommand\bibname{СПИСОК ЛИТЕРАТУРЫ}Почерпнул мудрости здесь.
41 комментариев: |высказаться!| RSS-лента дискуссии.|
@virens:
Информативная статья, почерпнул для себя кое-что интересное.
Есть один вопрос - чем это вы так красиво раскрашиваете исходный код latex в html?
2 Roman Lagunov said...
Информативная статья, почерпнул для себя кое-что интересное.
Программа была подсказана тов. Чернявским (Игорь, привет!), написана на Яве, работает везде.
Есть один вопрос - чем это вы так красиво раскрашиваете исходный код latex в html?
Загружаю его в Kate, ставлю подсветку LaTeX, потом File - Export - HTML и вставляю в блог. Всё :)
Кстати, хорошее для российских пользователей bibtex. Если кто не знает, до сих пор в РФ были свои ГОСТы на оформление бибилиографических списков, и чтобы bibtex им соответствовал, приходилось в и-нете искать соответствующие стилевые файлы, да еще и доводить их до ума. Но 2006, не то с 2007 года РФ переходит на международный стандарт оформления библиографии. Так что стало можно пользоваться стандартными стилями bibtex :)
а можно ли вставить два независимых списка литературы в документ? (В диссере сначала идет список своих публикаций, а в конце уже стандартный библиосписок).
2 portnov пишет...
Но 2006, не то с 2007 года РФ переходит на международный стандарт оформления библиографии. Так что стало можно пользоваться стандартными стилями bibtex :)
А у меня стиль unsrt, в тексте в квадратных скобках, в перечне - через точку (переопределяю в преамбуле)
2 Анонимный пишет...
а можно ли вставить два независимых списка литературы в документ?
Ммм... в общем да. Только сначала придётся получить два bib-файла, а потом уже вставлять их в документ обработанными. Использовать две базы одновременно не пробовал.
virens, выручай!
Как ты переопределил в преамбуле, чтоб список литературы был через точку??
Кстати, если не жалко, выложи плз несколько полных примеров своих работ в LaTeX. Чтоб была LaTeXовская нагрузка по-больше. А то толклвых примеров в инете относительно мало, а вопросов при работе всё больше и больше...
2 DeXPeriX комментирует...
virens, выручай!
А я только броузер закрыл :-)
Как ты переопределил в преамбуле, чтоб список литературы был через точку??
\makeatletter
\bibliographystyle{unsrt}
\renewcommand{\@biblabel}[1]{#1.}
\makeatother
Код надо будет в пост включить.
Кстати, если не жалко, выложи плз несколько полных примеров своих работ в LaTeX.
Каких работ? В смысле документов? Так там usepackage меняются в зависимости от цели. Но идея интересная, на новогодних праздниках что-нибудь накропаю, когда из-под ёлки вылезу :-))
Чтоб была LaTeXовская нагрузка по-больше.
Не понял, поясняй.
А то толклвых примеров в инете относительно мало, а вопросов при работе всё больше и больше...
Они будут. Готовлю серию по латеху, т.к. уже начал забывать трюки, которые я делал когда-то. Это верный признак того, что на блоге скоро будет много постов по латеху :-)
Чтоб была LaTeXовская нагрузка по-больше.
Например, у меня курсовая - почти сплошной текст и очень мало команд. Такое читать не очень интересно, хотя за пример сойдёт. А вот тут уже по-больше всяких LaTeXовских фич и т.п.: http://egorick.livejournal.com/71345.html
Оттуда, кстати, многое узнал. Сейчас сижу, разбираюсь... Хотелось бы побольше такого! :)
Но идея интересная, на новогодних праздниках что-нибудь накропаю, когда из-под ёлки вылезу :-))
С нетерпением жду!
Это верный признак того, что на блоге скоро будет много постов по латеху :-)
Тоже хорошо. Даже очень. По латеху хорошей русскоязычной инфы относительно мало - большоре дело делаешь
Кстати, примеры красивых презентаций с исходниками тоже не помешают ;)
P.S. Попытался запихнуть код для списка литературы в STY-файл. Послало куда подальше. Обыдно, я всё стараюсь туда пихать, чтоб подключить всё оформление одной строчкой....
2 Анонимный пишет...
Чтоб была LaTeXовская нагрузка по-больше.
Например, у меня курсовая - почти сплошной текст и очень мало команд.
Какая разница!? У меня код тоже не сложный - только рисунки и текст.
А вот тут уже по-больше всяких LaTeXовских фич и т.п.
Будет, но у меня другие фичи :-)
Сейчас сижу, разбираюсь...
Я тоже сидел и разбирался тут не так давно. Нужно было в верхнем колонтитуле рисунки вставлять...
2 DeXPeriX пишет...
Тоже хорошо. Даже очень. По латеху хорошей русскоязычной инфы относительно мало
Её не мало, просто она фрагментирована: либо слишком общие слова, либо слишком конкретные.
Попытался запихнуть код для списка литературы в STY-файл. Послало куда подальше.
Пихай это в преамбулу, не пошлёт.
Не понимаю, почему происходит автоматическая сортировка авторов, когда они перечисленны через запятую.
Пишу дипломную работу. Столкнулся с проблемой, при оформлении реферата требуется указать общее количество иллюстраций, таблиц и библиографических источников в документе. Чтобы в итоге видеть нечто похожее на "88 стр. 21 табл. 32 илюстр. 31 библ." Возникает вопрос, как это сделать в latex? Заставив поднапрячься гугол, смог считать лишь общее количество страниц. Очень прошу помочь. (__-nick-__ собака mail.ru)
Если ещё не поздно. За основу можно взять lastpage и по аналогии сделать для рисунков и библиографии.
А можно как-то повлиять на результат в виде списка литературы, настроить более точно выход? По какому принциму из bib файла берутся записи и образуют запись о литературе в зависимости от того, книга или буклет или ещё что?
Живой пример - посредством jabRef описываю книгу и получаю в bib файле запись:
@BOOK{microsoftProject2008,
title = {Microsoft Office Project 2007 Professional. Управление проектами:
Практическое пособие.},
publisher = {- СПб:.КОРОНА-Век},
year = {2008},
author = {Гультяев А.К.},
pages = {480},
timestamp = {2009.05.03}
}
Kile сгенерирует:
"
Гультяев А.К. Microsoft Office Project 2007 Professional. Управление проектами: Практическое пособие. - СПб:.КОРОНА-Век, 2008.
"
Куда делить страницы?
Это только пол беды. Для каждой книги в поле publisher ставить '-' тоже не радует. Можно ли как-то настроить вывод?
Используя JabRef, столкнулся с одной проблемой.
Имена авторов в ссылке не разделяются запятой:
Langer R., Vacanti J.P. в поле author обрабатывается как Vacanti J.P. Langer R.
Мне необходимо, чтобы все имена авторов следовали через запятую (без and или &).
Не поможете разобраться?
Как раз таки в бибилиографической записи имена авторов надо разделять с помощью "and" тогда в конечном варианте они будут разделены запятыми.
спасибо, muxacb.
кстати, хочется порекомендовать неплохой сервис PubMed-a:
http://www.bioinformatics.org/texmed/
время на формирование списка литературы резко сокращается, а "результат как всегда логичен и приятен"
=)
muxacb комментирует...
Как раз таки в бибилиографической записи имена авторов надо разделять с помощью "and" тогда в конечном варианте они будут разделены запятыми.
Вот как раз так и не получается.. Так и пишет с "and"-ом.
Использую Ubuntu->Kile->JabRef. Нашёл решение в виде костыля -- открывать файл "имя_проекта.bbl" и там руками править and на запятую. Однако не отказался бы делать всё по человечески, если знаете, подскажите...
у меня тупой вопрос, как сделать следующее?- обычно если я пишу \cite{Petrov, Sidorov...} он мне пишет, если авторы идут подряд [1,2,3...]как сделать в латехе чтобы он писал [1-10]?
Отвечу всем, кто спрашивает насчёт вида библиографических ссылок, которые появляются в документе: это делает стиль библиографии, который обычно лежит в файлах bst. Пристойные журналы или конференции дают его сами. Если нужно сделать свой стиль библиографических ссылок - здесь говорят как.
2 Prickly комментирует...
требуется указать общее количество иллюстраций, таблиц и библиографических источников в документе.
В латеховском варианте ГОСТ-7.32 это автоматизировано, но можно сделать и вручную: \listoffigures и \listoftables нам помогут.
Очень прошу помочь.
Prickly, я простой парень, а не техподдержка Дебиана :-))
2 Анонимный комментирует...
у меня тупой вопрос, как сделать следующее?- обычно если я пишу \cite{Petrov, Sidorov...} он мне пишет, если авторы идут подряд [1,2,3...]как сделать в латехе чтобы он писал [1-10]?
Использовать в преамбуле документа \usepackage{cite}
спасиб за ссылки очень помогло
просто, понятно, полезно! сп!
Пока в BibTeX'е нет внятной поддержки utf-8, пользоваться им невозможно.
Вот у меня проблема. Руссифицировал BibTex таким образом: прописал
bibtex8.exe --huge --csfile "cp1251rus.csf" в скрипте директории Winedt\Bin\TeX, скрипт называется BibTeX.bat. Версий Winedt 5.5.
В скрипте запуска TeXify, добавил команду set, указывающую путь к скрипту запуска BibTex:
set BIBTEX=C:\Tex\Winedt\Bin\TeX\BibTex.bat
TEXIFY.EXE --run-viewer %1 %2 %3 %4 %5 %6 %7 %8 %9
После проделанных процедур инструкция говорит, что русифицированный BibTex готов к работе в связке MikTex+WinEdt. MikTeh версии 2.4.
Однако при подключении стиля gost71u и любого другого gost, не пишутся инициалы авторов, а том и страницы представлены на английском: Vol, Pp.
Если подключить стандартный стилевой файл usrt, то инициалы есть и все остальное на русском.
Но! И в том, и другом случае номера ссылок представлены в том порядке, в каком записаны авторы в файле *.bib, а следовательно и *.bbl. То есть не получается сделать номера ссылок в порядке появления в тексте. Что делать?
Решение проблемы с пропаданием инициалов авторов в библиографии
http://www.ccas.ru/frc/bibtex.html
или
http://www.ccas.ru/voron/latex.html
Большое спасибо за шаблон отчета. Есть, однако, проблема. Я хочу оформить библиографию в соответсвии с ГОСТом, нужный .bst файл у меня есть, но при компиляции TeX его не видит и подставляет unsrt. Как добиться того, чтобы был виден мой стилевой файл?
Приверженцам UTF-8 можно посоветовать посмотреть на pybtex.
Всем доброго времени суток :)
Не так давно друг посоветовал начать осваивать LaTeX; начал - всё круто и замечательно, но:
Попытался прикрутить "внешнюю" библиографию, вроде всё делал по инструкции (+JabRef 2.5) - не пашет :( Требует некий файлик с расширением *.bbl
Подскажите, в чём проблема может быть... "Классическая" библиография работает исправно.
Всем доброго вечера!У меня возник следующий вопрос,- я написал библиографию, к каждой книге написаны note, при компиляции статьи в списке литературы появляются эти note,- каким оператором выключить отображение notice-ов,-чтобы не удалять каждые пометки в вайле *.bib.
Случайно при поиске в Google наткнулся на вашу статью в непонятном блоге и без ссылки на оригинал:
http://linprog.org.ua/blog/2009-11-04-49
Ворует, гад? Если бы не читал ваш блог, то и не заметил бы.
Случайно при поиске в Google наткнулся на вашу статью в непонятном блоге и без ссылки на оригинал:
http://linprog.org.ua/blog/2009-11-04-49
Ворует, гад? Если бы не читал ваш блог, то и не заметил бы.
Михаил, в том блоге куча ваших статей без авторства. Да за такое нужно "голову открутить и сказать, что так и було" (с)
@Zoresvit комментирует...
Случайно при поиске в Google наткнулся на вашу статью в непонятном блоге и без ссылки
Да знаю я этого отморозка. Ну и что мне с ним делать, подавать жалобу в Гаагский трибунал!? :-) Я, конечно, могу тряхнуть стариной и приехать к нему на дом с живительной клизьмой, нагретым паяльником и бейсбольной битой, дабы выразительно зачитать лекцию о Правах и Копирайтах в Цифровую Эпоху и провести прочие воспитательные мероприятия, но я один, а таких детей пепси-колы много. Посты будут появляться реже. Падёж надоев. Деграданс, дескрипанс и диссонанс :-)
@iv_vl комментирует...
Да за такое нужно "голову открутить и сказать, что так и було
Я там выше про живительные клизьмы распалялся :-) На это мне хочется вспомнить высказывание: "известность к художнику приходит не тогда, когда его картины в первый раз выставят, а когда их в первый раз украдут". Ну и он уже забросил радение за опенсорц.
К счастью, в моём фонтане вода ещё не кончилась, и по крайней мере на 2011 год вы баянами в моём исполнении уже обеспечены (календарь запланированных постов полон).
Мысленно жму руку автору статьи. Но.. время не стоит на месте, новые задачи порождают новые вопросы. и вот один из них - как в библиографии оформляется ссылка на статью, выложенную в интернете.
http://nuclphys.sinp.msu.ru/partmat/pm04.htm вот один из источников, и желательно было бы на него сослаться. но как это будет выглядеть - не знаю.
Большое спасибо за статью.
Еще, наверное, нужно добавить информацию о том, что для компиляции .bib файлов с юникодным наполнением есть специальная версия bibtex - bibtexu. Я пол-дня пытался понять, почему pdflatex не пропускает книгу, в поле author которой указана строка, написанная кириллицей, и выдает мне "Malformed UTF-8 sequence", пока не нашел на bugs.debian.com заметку о том, что для подобных целей есть отдельная программа.
Можно ли в списке литературы (не BibTeX) убрать повторяющиеся источники. Например, один и тот же источник стоит под номером 100 и 150.Можно ли сделать такое переопределение, что по \cite{15)} будет отражаться [100]?
я пользуюсь JabRef для создания и поддержки списка литературы. JabRef позволяет прикрепить к каждой записи ее pdf файл. Но когда я прикрепляю свой bib файл к ЛаТеХ и компилирую, он ругается на эту строку файла. Можно ли что-то сделать?
Здравствуйте, возникла проблема со списком литературы BibTeX. А именно: русский текст, который был написан в JabRef, превратился во что-то непонятное в готовом pdf. Даже не знаю что сделать ...
Здравствуйте. У меня такой вопрос. Я использую нумерацию листов сверху по середине. При попытке создать оглавление и список литературы Латех переносит номера страниц вниз. С оглавлением справился, есть пакеты, настраивается, сделал как по ГОСТУ, а вот список литературы. Во первых номер строки внизу по центру, при попытке изменить стиль колонтитула ничего не происходит. Само название "Список литературы" находиться ниже чем остальной текст и очень большой отступ. Подскажите как это все исправляется.
Особенно нужен номер страницы вверху!!! Буду очень благодарен. Спасибо.
Возможно, в качестве генератора БД источников будет удобнее программа Citavi. Ее нет под Linux, но мне удалось поставить под wine версию 3.4. Там полноценная БД с комментариями к книгам, сортировка по категориям. БЕсплатная до 100 источников, но могут лицензию подарить, как мне например :) Там на сайте надо поискать формы, что и как заполнить
В статью добавить надо, что сначала надо запускать BiBtex, только потом собирать pdf
Всем привет! Столкнулась с большой проблемой: хочу отформатировать список литературы по ширине страницы, но нигде не могу найти подходящего атрибута!
Отправить комментарий