You want one @article{...} block to paste into references.bib. Here is the
shortest path to it — and then the six things that are usually wrong with
whatever you get back.
If the paper has a DOI, one command is enough
curl -LH "Accept: application/x-bibtex" https://doi.org/10.1038/nphys1170
@article{Aspelmeyer_2009, title={Measured measurement}, volume={5},
ISSN={1745-2481}, url={http://dx.doi.org/10.1038/nphys1170},
DOI={10.1038/nphys1170}, number={1}, journal={Nature Physics},
publisher={Springer Science and Business Media LLC},
author={Aspelmeyer, Markus}, year={2009}, month=Jan, pages={11–12} }
(Wrapped here for reading; the response actually arrives as one long line.)
This is DOI content negotiation. doi.org hands the request to whichever
registration agency minted the DOI, and both Crossref and DataCite serve
application/x-bibtex — which covers most journal articles and, since arXiv
began minting DataCite DOIs, most preprints too. No account, no browser, and it
loops over a text file of DOIs with no extra tooling.
Four other places that will hand you a .bib
| What you have | Where the BibTeX is |
|---|---|
| A Google Scholar result | The quote icon (“Cite”) under the result, then BibTeX at the bottom of the popup |
| An arXiv page | An “export BibTeX citation” button on any /abs/ page, under References & Citations |
| A record on ACL Anthology, DBLP, ACM DL or IEEE Xplore | The record page’s export or “Cite” control, with BibTeX among the formats — on ACL Anthology and DBLP the file is the record URL with the trailing slash (or .html) swapped for .bib |
| A paper already in a reference library | A copy button on the entry |
One gap worth knowing about: PubMed does not give you BibTeX. Its Cite
button offers AMA, MLA, APA and NLM as text, and the citation-manager export is
an .nbib file. Take the DOI off the record and run the command above instead.
The same paper, three sources, three different entries
Here is the BERT paper, fetched three ways on the same day.
Via the DOI, as above:
@inproceedings{Devlin_2019, title={}, url={http://dx.doi.org/10.18653/v1/N19-1423},
DOI={10.18653/v1/n19-1423}, booktitle={Proceedings of the 2019 Conference of the North},
publisher={Association for Computational Linguistics},
author={Devlin, Jacob and Chang, Ming-Wei and Lee, Kenton and Toutanova, Kristina},
year={2019}, pages={4171–4186} }
From ACL Anthology (editor, address, publisher and url dropped for
length; the author list re-flowed onto one line):
@inproceedings{devlin-etal-2019-bert,
title = "{BERT}: Pre-training of Deep Bidirectional Transformers for Language Understanding",
author = "Devlin, Jacob and Chang, Ming-Wei and Lee, Kenton and Toutanova, Kristina",
booktitle = "Proceedings of the 2019 Conference of the North {A}merican Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers)",
month = jun,
year = "2019",
doi = "10.18653/v1/N19-1423",
pages = "4171--4186"
}
And from a library that already had the paper saved:
@inproceedings{devlin2019bert,
title = {BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding},
author = {Jacob Devlin and Ming-Wei Chang and Kenton Lee and Kristina Toutanova},
booktitle = {Conference of the North American Chapter of the Association for Computational Linguistics},
pages = {4171--4186},
year = {2019},
doi = {10.18653/v1/n19-1423},
}
Same paper, same day, three different records. The DOI route returned an
empty title — Crossref’s deposit for this DOI carries none — plus a
truncated booktitle and an en dash in pages. Nothing errors; you simply get
a reference with no title in your bibliography. The ACL Anthology entry is the
best of the three because a human at the venue built it: the acronyms are
already braced, the page range already uses --. So: prefer the source closest
to the venue, and read whatever you get, because the fastest route is also the
one most willing to hand you a hole.
Six things to check before you paste it in
1. The capitals will not survive
plain, abbrv, unsrt and alpha — the classic styles most journal .bst
files descend from — lowercase every letter in a title except the first one, and
the first one after a colon and a space. The role of DNA methylation in Arabidopsis prints as The role of dna methylation in arabidopsis. Of the BERT
entries above, only the ACL Anthology one is safe, and that is because the
acronym is already braced as {BERT}. Sitting at the start of a title spares
just the first letter, so the unbraced BERT: in the library entry prints as
Bert:. Braces are the escape hatch — anything inside {} is left alone.
title = {{BERT}: Pre-training of Deep Bidirectional Transformers},
title = {The role of {DNA} methylation in {Arabidopsis}},
You will also see whole titles wrapped as {{...}}. That protects everything
at once and does work, but it also freezes capitalization the style may have
been changing on purpose — brace the token, not the sentence. On biblatex
with biber no case folding happens by default, but brace anyway: you rarely
control which style the venue will run your .bib through.
2. BibTeX will split names you did not want split
BibTeX reads author = {World Health Organization} as the first name “World
Health” and the surname “Organization”, so a style that abbreviates given names
prints it as W. H. Organization. Wrap the name in its own braces so it stays
one unit:
author = {{World Health Organization}},
The same rule saves any name containing the word and, which BibTeX otherwise
reads as a separator between two authors. And when a surname has more than one
part, use the Last, First form so nothing has to be guessed:
author = {van der Waals, Johannes Diderik},
3. @misc is not a synonym for “not sure”
Two entries for one paper, both real, both fetched the same day. From arXiv’s
DataCite DOI (author list trimmed; keywords and copyright dropped):
@misc{https://doi.org/10.48550/arxiv.1706.03762,
doi = {10.48550/ARXIV.1706.03762},
url = {https://arxiv.org/abs/1706.03762},
author = {Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and ...},
title = {Attention Is All You Need},
publisher = {arXiv},
year = {2017}
}
And from a library holding the published version:
@inproceedings{vaswani2017attention,
title = {Attention Is All You Need},
author = {Ashish Vaswani and Noam Shazeer and Niki Parmar and ...},
booktitle = {Conference on Neural Information Processing Systems},
volume = {30},
pages = {5998--6008},
year = {2017},
}
@misc has no required fields, so nothing warns you that the venue, volume and
pages are gone — it just prints as an author, a title and a year. Cite the
version a reader should go to: if a published version exists, use @article or
@inproceedings for it and keep the preprint link in url (or in eprint
under biblatex). Reach for @misc only when the preprint genuinely is the only
version.
4. Dashes and months
pages={11–12} in the first entry is a literal en dash. The BibTeX convention
is two hyphens — pages = {11--12} — which LaTeX renders as an en dash, and
which styles that reformat ranges can actually parse. Months are the same class
of problem: the standard styles define jan through dec and nothing else, so
an unbraced month=July is an undefined string that BibTeX drops, with the
warning string name "july" is undefined. Write month = jul, or
month = {July} to force the literal. The month=Jan in the first entry is
fine, incidentally: BibTeX matches macro names without regard to case, so it
resolves to jan.
5. Unicode, and the four characters you have to escape
A bare &, _ or # in a title (“Design & Analysis”) will halt the LaTeX run.
A bare % is quieter and worse: it starts a comment, so it raises no error at
all and simply swallows the rest of the line. Escape all four — \&, \_,
\#, \%. Accented characters are subtler.
Schölkopf is fine on biblatex with biber, which is UTF-8 native. Classic
bibtex is byte-oriented, so its sorting and case folding across multibyte
characters are unreliable — and any encoding mismatch between the .bib file
and whatever reads it turns Schölkopf into Schölkopf. If you have to stay
on bibtex, write Sch{\"o}lkopf.
6. A citation key you can actually type
The arXiv DOI above returns the key
https://doi.org/10.48550/arxiv.1706.03762. DBLP returns
DBLP:conf/naacl/DevlinCLT19. Rename it to something you will still recognise
in six months — vaswani2017attention — and do it before the key spreads
through a draft and every \cite{} has to be hunted down.
When it is forty papers, not one
Running those six checks forty times is the point at which people give up and paste whatever the first generator returned. The fix is structural: collect papers as you meet them, and take the bibliography out once, at the end, from one place.
That is the shape Litlas is built around. Papers go in from search results,
from the browser extension while you are reading, or by dragging a PDF into the
library, and an existing .bib imports without overwriting notes you have
already written. On any paper, View BibTeX opens the entry inline and
copies it in the same press; the Cite panel beside it renders the reference
in APA, Chicago author-date, IEEE, MLA or Vancouver and exports .bib, .ris
or CSL-JSON. A whole board — or the whole filtered library — comes out as a
single .bib. There is a setting for whether venues export in full
(“Conference of the North American Chapter of the Association for Computational
Linguistics”) or short (“NAACL”), which is the difference between an entry you
submit and one you rewrite — it applies to the per-paper export, though; the
whole-library .bib currently always uses the full form.
Two limits, so they are not a surprise. Litlas normalises page ranges to --,
but it does not add brace protection: the entry above really does say title = {BERT: Pre-training...}, and the {BERT} is still yours to type. And reading
one paper’s BibTeX needs no account — the per-paper export is public — while
building a library does, with the free plan capped at 3 boards and 100 items
and no card required.
The short version
- Have a DOI? One
curland you are done. - Have a URL? Try the site’s own
.biblink first, Google Scholar second. - Whatever comes back, read it: capitals, name splitting, entry type,
--, escapes, key.
Every generator produces plausible BibTeX. None of them produces finished BibTeX. That last pass is yours, and it takes about thirty seconds once you know the six places to look.
