Как заказать цитаты по внешнему виду с помощью BibTeX?


260

По умолчанию (используя plainстиль) BibTeX упорядочивает цитаты в алфавитном порядке.

Как заказать цитаты по порядку появления в документе?


36
Полезный вопрос (с голосованием), но не должен ли он принадлежать tex.stackexchange.com ?
Хтонический проект

12
@ChthonicProject, я не думаю, что tex.stackexchange.com был запущен до 2010 года, а этот вопрос относится к 2008 году. Кроме того, этот вопрос будет слишком стар, чтобы мигрировать, поэтому он живет здесь.
Ричард Эриксон

1
Удалите файлы .aux и .bbl и перестройте
Emad Aghayi

Ответы:


196

На этот вопрос есть три хороших ответа.

  • Используйте unsrtстиль библиографии, если вы довольны его форматированием, иначе
  • Используйте инструмент makebst (ссылка) , чтобы создать свой собственный стиль библиографии

И моя личная рекомендация:

  • Используйте biblatexпакет (ссылка) . Это самый полный и гибкий библиографический инструмент в мире LaTeX.

Используя biblatex, вы бы написали что-то вроде

\documentclass[12pt]{article}
\usepackage[sorting=none]{biblatex}
\bibliography{journals,phd-references} % Where journals.bib and phd-references.bib are BibTeX databases
\begin{document}
\cite{robertson2007}
\cite{earnshaw1842}
\printbibliography
\end{document}

2
Одним из очевидных преимуществ пакета biblatex, который заставил меня принять этот ответ, является то, что он позволяет редактировать эталонные стили с помощью макросов TeX, а не странного BibTeX voodoo. Другие пакеты могут быть лучше для более быстрого / более надежного решения.
Брендан

1
Я должен добавить, что если вы используете biblatex. Было бы лучше использовать \ addbibresource вместо \ библиографии. Итак\addbibresource{journals.bib,phd-references.bib}
Кустодио

126

+ Изменить

\bibliographystyle{plain}

в

\bibliographystyle{ieeetr}

Затем восстановить его несколько раз , чтобы заменить .auxи .bblфайлы , которые были сделаны , когда вы использовали простой стиль.

Или просто удалите .auxи .bblфайлы и перестройте.

Если вы используете MiKTeX, вам не нужно ничего загружать.


4
Спасибо! Отличное и простое исправление!
Антиллар Максимус

Большой! Спасибо за простое решение.
Ваше Величество,

4
если вы пишете статью для публикации ACM, то unsrtэто будет лучше, чем если ieeetrбы последняя предназначалась для бумаги IEEE, имеющей немного другое форматирование. unsrtи abbrvпроизводит тот же тип форматирования. Возможно, вы захотите взглянуть на эту ссылку
Ash Catchem

Простой ответ возникает! В то время как Уилл Робертсон «s biblatexзаточенного ответ , в конечном счете путь вперед для LaTeX сообщества, сохраняющееся отсутствие Lyx о встроенной поддержке biblatexогромная (и все более неловко) блокатор. Прошло восемь лет с тех пор, как этот вопрос был впервые задан! Я никогда не буду терпеть приоритеты разработчика LyX. Наступил 2016 год. Беспилотные автомобили и портативные суперкомпьютеры - это вещь, и все же мы остаемся здесь - прикованные к тому же безупречному камню позора BibTeX.
Сесил Карри

1
Это не работает в приложении Overleaf. Я снял их на обратной стороне от overleaf.com/learn/how-to/Clearing_the_cache , но это не решает проблему.
Эмад Агайи

21

Просто краткое замечание - я использую модифицированную версию plain.bst, сидящую в каталоге с моими латексными файлами; оказывается, что сортировка по порядку появления - относительно легкое изменение; просто найдите кусок кода:

...
ITERATE {presort}

SORT
...

... и прокомментируйте это - я превратил это в:

...
%% % avoid sort:
%% ITERATE {presort}
%%
%% SORT
...

... а затем, после запуска bibtex, pdflatex, pdflatex- цитаты будут отсортированы по порядку появления (то есть, они будут несортированными :)).

Ура!

РЕДАКТИРОВАТЬ: только что понял, что то, что я написал, на самом деле в комментарии @ChrisN: « вы можете отредактировать это, чтобы удалить команду SORT »;)


18

Лучшее, что я придумал, это использование unsrtстиля, который, кажется, подправлен plain. т.е.

\bibliographystyle{unsrt}
\bibliography{bibliography}

Однако что, если мой стиль не по умолчанию?


4
Если вы используете собственный стиль BibTeX, можете ли вы отредактировать его, чтобы удалить команду SORT?
ChrisN

По умолчанию вики-страница рекомендует вас просто. Если вы будете небрежно копировать и вставлять, вы будете использовать обычный стиль вместо unsrt. ru.wikibooks.org/wiki/LaTeX/Bibliography_Management
Андрас Дьомрей,

12

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

Но вы также можете взглянуть на natbib , чрезвычайно гибкий пакет для цитирования. Я не могу представить себе жизнь без этого.


7
natbib влияет только на набор команд \ cite в самом документе. Сказав это, он распространяется с unsrtnat.bst для достижения эффекта, которого добивался оригинальный постер. (Я бы рекомендовал biblatex в наши дни вместо natbib, если только абсолютная стабильность не является наиболее важной.)
Will Robertson

5

Я немного новичок в Bibtex (и в Latex в целом), и я хотел бы возродить эту старую статью, так как я обнаружил, что она появилась во многих моих поисковых запросах Google о заказе библиографии в Latex.

Я даю более подробный ответ на этот вопрос в надежде, что он может помочь некоторым новичкам, столкнувшимся с теми же трудностями, что и я.

Вот пример основного файла .tex, в котором называется библиография:

\documentclass{article}
\begin{document}

So basically this is where the body of your document goes.

``FreeBSD is easy to install,'' said no one ever \cite{drugtrafficker88}.

``Yeah well at least I've got chicken,'' said Leeroy Jenkins \cite{goodenough04}.

\newpage
\bibliographystyle{ieeetr} % Use ieeetr to list refs in the order they're cited
\bibliography{references} % Or whatever your .bib file is called
\end{document}

... и пример самого файла .bib:

@ARTICLE{ goodenough04,
AUTHOR    = "G. D. Goodenough and others", 
TITLE     = "What it's like to have a sick-nasty last name",
JOURNAL   = "IEEE Trans. Geosci. Rem. Sens.",
YEAR      = "xxxx",
volume    = "xx",
number    = "xx",
pages     = "xx--xx"
}
@BOOK{ drugtrafficker88,
AUTHOR    = "G. Drugtrafficker", 
TITLE     = "What it's Like to Have a Misleading Last Name",
YEAR      = "xxxx",
PUBLISHER = "Harcourt Brace Jovanovich, Inc."
ADDRESS   = "The Florida Alps, FL, USA"
}

Обратите внимание, что ссылки в файле .bib перечислены в обратном порядке, но ссылки перечислены в порядке их цитирования в документе.

Дополнительную информацию о форматировании вашего файла .bib можно найти здесь: http://en.wikibooks.org/wiki/LaTeX/Bibliography_Management


3

Я часто использую стиль библиографии, natbibпотому что он предоставляет нам достаточно полный набор форматов и тегов.


2

с unsrtпроблемой формат. использовать \bibliographystyle{ieeetr}для получения ссылок в порядке цитирования в документе.


Ваша претензия в отношении формата, кажется, противоречит принятому (и сильно одобренному) ответу. Не могли бы вы уточнить?
Ноль3

0

Пакет datatool предлагает хороший способ сортировки библиографии по произвольному критерию, сначала преобразовав ее в некоторый формат базы данных.

Краткий пример, взятый отсюда и опубликованный для записи:

\documentclass{article}

\usepackage{databib}

\begin{document}
% First argument is the name of new datatool database
% Second argument is list of .bib files
\DTLloadbbl{mybibdata}{acmtr}
% Sort database in order of year starting from most recent
\DTLsort{Year=descending}{mybibdata}
% Add citations
\nocite{*}

% Display bibliography
\DTLbibliography{mybibdata}
\end{document}

0

Если вы используете, amsrefsони переопределят все вышеперечисленное - так что закомментируйте:

\usepackage{amsrefs}


1
Добро пожаловать в стек переполнения! Ваш ответ, похоже, не отвечает на поставленный вопрос. Ваша информация может быть ценной, но, вероятно, она лучше подходит в качестве комментария к одному из других ответов (если вы приобрели необходимую репутацию для публикации комментариев).
Ноль3

0

Я использую natbibв сочетании с bibliographystyle{apa}. Например:

\begin{document}

The body of the document goes here...

\newpage

\bibliography{bibliography} % Or whatever you decided to call your .bib file 

\usepackage[round, comma, sort&compress ]{natbib} 

bibliographystyle{apa}
\end{document}

0

Добавьте это, если вы хотите, чтобы количество ссылок в документе отображалось по порядку, они будут только не отсортированы на странице ссылок:

\bibliographystyle{unsrt}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.