Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/rougier/persid

Persistent identifier library for GNU Emacs
https://github.com/rougier/persid

arxiv bibtex doi emacs isbn issn lisp pmcid pmid

Last synced: about 1 month ago
JSON representation

Persistent identifier library for GNU Emacs

Awesome Lists containing this project

README

        

** Persistent Identifier Library

The Persistent Identifier Library allows to manipulate persistent
identifiers that are used to locate scholar resources online. The
library knows about the following formats:

- *isbn*: International Standard Book Number (https://isbn.org)
- *issn*: International Standard Serial Number (https://www.issn.org)
- *doi*: Digital Object identifier (https://www.doi.org)
- *pmid*: PubMed (https://pubmed.ncbi.nlm.nih.gov)
- *pmcid*: PubMed Central (https://www.ncbi.nlm.nih.gov/pmc)
- *arxiv*: Cornell University (https://arxiv.org)

Given an identifier in one of the known formats, the libray can query
information about the resources and format it as a bibtex entry. To do
so, the library primarily use the crossref.org API (doi,pmid, pcmi),
openalex.org API (issn), arxiv API (arxiv) and OpenLibrary (isbn)
Unfortunately, OpenLibrary is far from being complete and a lot of ISBN
records are missing.

The main function is the interactive =persid-insert-bibtex= function
that accept a single identifier and return the corresponding
bibtex inserting it into the buffer. To do that, the format of the identifier is
first identified and normalized (if needed), then the correspoding bibtex
is queried online:

- *doi*: [[https://www.crossref.org/documentation/retrieve-metadata/rest-api/a-non-technical-introduction-to-our-api/][Crossref API]] is used to get bibtex
- *pmid*: [[https://www.ncbi.nlm.nih.gov/pmc/tools/id-converter-api/][PubMed converter API]] is used to convert pmid to doi,
then the crossref API is used to get bibtex.
- *pmcid*: [[https://www.ncbi.nlm.nih.gov/pmc/tools/id-converter-api/][PubMed converter API]] is used to convert pmcid to doi,
then the crossref API is used to get bibtex.
- *arxiv*: [[https://arxiv.org/help/api/][arXiv API]] is used to get bibtex
- *issn*: [[https://docs.openalex.org/][OpenAlex API]] is used to get the name and the
publisher information.
- *isbn*: [[https://openlibrary.org/dev/docs/api/books][OpenLibrary Book API]] is used to get bibtex

*See also*: [[https://guides.lib.berkeley.edu/information-studies/apis][Information Studies: APIs for scholarly resources]]

** Example usage

#+begin_src emacs-lisp
(persid-insert-bibtex "arxiv:2008.06030")
#+end_src

#+begin_src bibtex
@Article{2020arXiv200806030R,
author = {{Rougier}, Nicolas P.},
title = "{On the design of text editors}",
journal = {arXiv e-prints},
keywords = {Computer Science - Human-Computer Interaction},
year = 2020,
month = aug,
eid = {arXiv:2008.06030},
pages = {arXiv:2008.06030},
archivePrefix = {arXiv},
eprint = {2008.06030},
primaryClass = {cs.HC},
adsurl = {https://ui.adsabs.harvard.edu/abs/2020arXiv200806030R},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
#+end_src bibtex

** Related work

- [[https://github.com/cpitclaudel/biblio.el][biblio.el]] makes it easy to browse and gather bibliographic
references and publications from various sources, by keywords or by
DOI. References are automatically fetched from well-curated sources,
and formatted as BibTeX.

- [[https://github.com/jkitchin/org-ref][org-ref]] makes it easy to insert citations, cross-references, indexes
and glossaries as hyper-functional links into org files. The links
are fontified so you can tell them apart from other links, and each
link is clickable to access functions like opening a pdf, notes or
url associated with the link. Each link also can be exported to
LaTeX to build a PDF. For citations, export to other formats is
supported by citeproc for high quality export to HTML, markdown,
plain text, or stand-alone (i.e. independent of a bibtex file)
LaTeX.

- [[https://github.com/yantar92/org-capture-ref][org-capture-ref]] extends org-ref's idea to auto-retrieve BiBTeX from
scientific paper links. Instead of limiting BiBTeX generation to
research purposes (scientific articles and books), this package
auto-generates BiBTeX for any possible web link (Youtube videos,
blog posts, reddit threads, etc).

- [[https://github.com/larsmagne/bookiez.el][bookiez]] is a library for looking up ISBNs via the Google Book API,
displaying the result, and maintaining a database of books.

- [[https://github.com/mpedramfar/zotra][zotra]] provides functions to get bibliographic information from a url
and save it into a bibtex file. It also provides a way to obtain a
list of attachments (e.g. PDF files) associated with a url. This is
done using Zotero translators, but without using the Zotero client.

- [[https://github.com/gkowzan/biblio-zotero][biblio-zotero]] retrieves and insert BibTeX records from various
sources by using Zotero translation server. Calling
biblio-zotero-insert-bibtex will forward the provided URL to the
server and insert a formatted BibTeX entry in the current buffer.

- [[https://github.com/emacs-citar/citar][Citar]] provides a highly-configurable completing-read front-end to browse and act on BibTeX, BibLaTeX, and CSL JSON bibliographic data, and LaTeX, markdown, and org-cite editing support.

- [[https://www.github.com/fabcontigiani/biblio-openlibrary][biblio-openlibrary]] provides an OpenLibrary backend for ~biblio.el~, allowing to
/interactively/ browse and gather bibliographic entries from OpenLibrary by ISBN.