Як замовити цитати за зовнішнім виглядом за допомогою 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.