Come ordinare citazioni per aspetto utilizzando BibTeX?


259

Di default (usando lo plainstile) BibTeX ordina le citazioni in ordine alfabetico.

Come ordinare le citazioni per ordine di apparizione nel documento?


36
Domanda utile (aggiornata), ma non dovrebbe appartenere a tex.stackexchange.com ?
Chthonic Project,

12
@ChthonicProject, non credo che tex.stackexchange.com sia iniziato fino al 2010 e questa domanda sia del 2008. Inoltre, la domanda sarebbe troppo vecchia per migrare, quindi vive qui.
Richard Erickson,

1
Elimina i file .aux e .bbl e ricostruisci
Emad Aghayi il

Risposte:


195

Ci sono tre buone risposte a questa domanda.

  • Usa lo unsrtstile bibliografico, se sei soddisfatto della sua formattazione altrimenti
  • Usa lo strumento makebst (link) per progettare il tuo stile bibliografico

E la mia raccomandazione personale:

  • Usa il biblatexpacchetto (link) . È lo strumento di bibliografia più completo e flessibile nel mondo LaTeX.

Usando biblatex, scriveresti qualcosa del genere

\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
Un evidente vantaggio del pacchetto biblatex che mi ha fatto accettare questa risposta è che permette di modificare gli stili di riferimento usando le macro TeX piuttosto che lo strano voodoo BibTeX. Altri pacchetti potrebbero essere migliori per una soluzione più rapida / affidabile.
Brendan,

1
Devo aggiungere che se stai usando biblatex. Sarebbe meglio usare \ addbibresource invece \ bibliografia. Quindi\addbibresource{journals.bib,phd-references.bib}
Custodio,

126

Modificare

\bibliographystyle{plain}

per

\bibliographystyle{ieeetr}

Quindi ricostruiscilo alcune volte per sostituire i file .auxe .bblche sono stati creati quando hai utilizzato lo stile semplice.

O semplicemente eliminare i .auxei .bblfile e ricostruire.

Se usi MiKTeX non dovresti scaricare altro.


4
Grazie! Correzione eccellente e semplice!
Antillar Maximus,

Grande! Grazie per la soluzione semplice.
Maestà,

4
se stai scrivendo un documento per la pubblicazione ACM, allora unsrtsarebbe meglio che ieeetrpoiché quest'ultimo è pensato per un documento IEEE che ha una formattazione leggermente diversa. unsrte abbrvproduce lo stesso tipo di formattazione. Potresti dare un'occhiata a questo link
Ash Catchem,

La semplice risposta sorge! Mentre la risposta concentrica di Will Robertson è in definitiva la strada da percorrere per la comunità LaTeX, la continua mancanza di supporto incorporato da parte di LyX è un blocco enorme (e sempre più imbarazzante). Sono passati otto anni da quando questa domanda è stata posta per la prima volta! Non intaccherò mai le priorità degli sviluppatori di LyX. È il 2016. Le auto senza conducente e i supercomputer portatili sono una cosa, eppure rimaniamo - incatenati alla stessa pietra della vergogna BibTeX eseguibile. biblatexbiblatex
Cecil Curry,

1
Non funziona nell'applicazione Overleaf. Li ho rimossi in Overleaf da overleaf.com/learn/how-to/Clearing_the_cache ma non risolve il problema.
Emad Aghayi,

21

Solo una breve nota: sto usando una versione modificata di plain.bst seduto nella directory con i miei file Latex; risulta che l'ordinamento per ordine di apparizione è un cambiamento relativamente facile; basta trovare il pezzo di codice:

...
ITERATE {presort}

SORT
...

... e commentalo - L'ho trasformato in:

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

... e poi, dopo l'esecuzione bibtex, pdflatex, pdflatex- le citazioni verranno ordinati in ordine di apparizione (che è, essi saranno indifferenziati :)).

Saluti!

EDIT: appena realizzato che ciò che ho scritto è in realtà nel commento di @ChrisN: " puoi modificarlo per rimuovere il comando SORT ";)


18

Il meglio che mi è venuto in mente è usare lo unsrtstile, che sembra essere uno plainstile ottimizzato . vale a dire

\bibliographystyle{unsrt}
\bibliography{bibliography}

Tuttavia, cosa succede se il mio stile non è quello predefinito?


4
Se stai usando uno stile BibTeX personalizzato, puoi modificarlo per rimuovere il comando SORT?
ChrisN,

Per impostazione predefinita, la pagina wiki ti consiglia chiaramente. Se copi e incolli incautamente, utilizzerai lo stile semplice invece di unsrt. it.wikibooks.org/wiki/LaTeX/Bibliography_Management
Andras Gyomrey

12

Hai risposto alla tua domanda --- unsrtdeve essere usato quando desideri che i riferimenti a ne siano elencati nell'ordine di approvazione.

Ma potresti anche dare un'occhiata a natbib , un pacchetto di citazioni estremamente flessibile. Non riesco a immaginare di vivere senza di essa.


7
natbib ha effetto solo sulla composizione dei comandi \ cite nel documento stesso. Detto questo, è distribuito con unsrtnat.bst per ottenere l'effetto ricercato dal poster originale. (Raccomanderei biblatex in questi giorni su natbib, a meno che la stabilità assoluta non sia la più importante.)
Will Robertson,

5

Sono un po 'nuovo su Bibtex (e su Latex in generale) e mi piacerebbe rivivere questo vecchio post da quando l'ho scoperto in molte delle mie ricerche su Google sull'ordinazione di una bibliografia in Latex.

Sto fornendo una risposta più dettagliata a questa domanda nella speranza che possa aiutare alcuni novizi là fuori che affrontano le mie stesse difficoltà.

Ecco un esempio del file .tex principale in cui si chiama la bibliografia:

\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}

... e un esempio del file .bib stesso:

@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"
}

Nota i riferimenti nel file .bib sono elencati in ordine inverso ma i riferimenti sono elencati nell'ordine in cui sono citati nel documento.

Ulteriori informazioni sulla formattazione del file .bib sono disponibili qui: http://en.wikibooks.org/wiki/LaTeX/Bibliography_Management


3

Uso spesso lo stile bibliografico natbibperché fornisce un set di formati abbastanza completo e tag per noi.


2

con unsrtil problema è il formato. utilizzare \bibliographystyle{ieeetr}per ottenere riferimenti in ordine di citazione nel documento.


Il tuo reclamo sul formato sembra contraddire la risposta accettata (e fortemente votata). Potresti chiarire?
Zero3,

0

Il pacchetto datatool offre un buon modo per ordinare la bibliografia secondo un criterio arbitrario, convertendola prima in un formato di database.

Breve esempio, preso da qui e pubblicato per la cronaca:

\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

Se ti capita di usare amsrefs, avranno la precedenza su tutto quanto sopra - quindi commenta:

\usepackage{amsrefs}


1
Benvenuto in Stack Overflow! La tua risposta non sembra rispondere effettivamente alla domanda posta. Le tue informazioni potrebbero essere preziose, ma probabilmente sono più adatte come commento a una delle altre risposte (una volta ottenuta la reputazione necessaria per pubblicare commenti).
Zero3,

0

Uso natbibin combinazione con bibliographystyle{apa}. Per esempio:

\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

Aggiungi questo se vuoi che il numero di citazioni appaia in ordine nel documento che non saranno ordinate nella pagina di riferimento:

\bibliographystyle{unsrt}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.