Як замовити цитати за зовнішнім виглядом за допомогою BibTeX?


259

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

Як замовити цитати за порядком появи у документі?


36
Корисне запитання (наголошено), але чи не слід належати до tex.stackexchange.com ?
Chthonic Project

12
@ChthonicProject, я не думаю, що tex.stackexchange.com розпочався до 2010 року, і це питання з 2008 року. Також питання було б занадто старим, щоб мігрувати, тому воно живе тут.
Річард Еріксон

1
Видаліть файли .aux та .bbl та перебудуйте
Emad Aghayi

Відповіді:


195

На це питання є три гарні відповіді.

  • Використовуйте 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. Інші пакети можуть бути кращими для швидшого / надійнішого рішення.
Брендан

1
Мені потрібно додати, що якщо ви використовуєте біблатекс. Краще використовувати \ 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

Проста відповідь виникає! Незважаючи на те , що централізована відповідь Вілла Робертсона - це врешті-решт шлях до спільноти LaTeX, тривала відсутність вбудованої підтримки LyX - це величезний (і все більше бентежить) блокатор. Минуло вісім років, як це питання було вперше поставлено! Я ніколи не ставлю пріоритети для розробників LyX. Це 2016. Автомобілі без водіїв та портативні суперкомп'ютери - це річ, але тут ми залишаємось - прикуті до того ж чудового каменя сорому BibTeX. biblatexbiblatex
Сесіль Карі

1
Він не працює в додатку Overleaf. Я зняв їх на зворотному боці від overleaf.com/learn/how-to/Clearing_the_cache , але це не вирішує проблему.
Емад Агаїй

21

Лише коротка примітка - я використовую модифіковану версію plain.bst, що сидить у каталозі зі своїми файлами Latex; виявляється, сортування за порядком зовнішності є відносно легкою зміною; просто знайдіть фрагмент коду:

...
ITERATE {presort}

SORT
...

... і прокоментуйте це - я звернувся до:

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

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

Ура!

EDIT: щойно зрозумів, що те, що я написав, є насправді в коментарі @ChrisN: "чи можете ви відредагувати його, щоб видалити команду SORT ";)


18

Найкраще, що я придумав, - це використання unsrtстилю, який, здається, є переробленим plainстилем. тобто

\bibliographystyle{unsrt}
\bibliography{bibliography}

Однак що робити, якщо мій стиль не є типовим?


4
Якщо ви використовуєте користувацький стиль BibTeX, чи можете ви редагувати його, щоб видалити команду SORT?
ChrisN

За замовчуванням сторінка wiki рекомендує вам просте повідомлення. Якщо ви необережно копіюєте та вставляєте, ви будете використовувати звичайний замість стилю unrt. en.wikibooks.org/wiki/LaTeX/Bibliography_Management
Andras Gyomrey

12

Ви відповіли на своє власне запитання --- unsrtвикористовуватиметься тоді, коли ви хочете, щоб посилання на ne були вказані у порядку звернення.

Але ви також можете поглянути на natbib , надзвичайно гнучкий пакет цитування. Я не уявляю, як жити без цього.


7
natbib впливає лише на набір команд \ cite команд у самому документі. Сказавши це, він поширюється з unsrtnat.bst, щоб досягти ефекту, який прагнув оригінальний плакат. (Я б рекомендував біблатекс в ці дні над natbib, якщо абсолютна стабільність не є найважливішою.)
Буде Робертсон,

5

Я трохи новачок у Bibtex (і в цілому в Латекс), і я хотів би відновити цю стару публікацію, оскільки знайшов, що вона з'явилася в багатьох моїх пошукових запитах 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}для отримання рефракцій у порядку цитування в документі.


Ваша претензія щодо формату, здається, суперечить прийнятій (і сильно обґрунтованій) відповіді. Не могли б ви уточнити?
Zero3

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
Ласкаво просимо до переповнення стека! Здається, ваша відповідь фактично не відповідає на поставлене запитання. Ваша інформація може бути цінною, але вона, ймовірно, краще підходить як коментар до однієї з інших відповідей (як тільки ви отримаєте необхідну репутацію для розміщення коментарів).
Zero3

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.