@celine/bibhtml
@celine/bibhtml is a Web
Components-based referencing system for HTML documents. It aims to provide a similar user experience to
referencing in LaTeX/BibTeX. It's a thin wrapper around Citation.js
@celine/bibhtml takes significant inspiration from @citation-js/replacer, References Web Component
| GitHub | MaxwellBo/ |
License | MIT |
|---|---|---|---|
| JSR | jsr.io/ |
Version | 0.9.0β, |
Installation
Add the following script to your HTML file's <head> element:
API
@celine/bibhtml is structured around 3 custom elements:
-
<bh-cite> -
<bh-reference> -
<bh-bibliography>
<bh-cite>willighagen2019</bh-cite>
...
<bh-reference id="willighagen2019">
@article{willighagen2019,
title = {Citation.js: a format-independent, modular bibliography tool for the browser and command line},
author = {Willighagen, Lars G.},
year = 2019,
month = aug,
keywords = {Bibliography, Javascript},
volume = 5,
pages = {e214},
journal = {PeerJ Computer Science},
issn = {2376-5992},
url = {https://doi.org/10.7717/peerj-cs.214},
doi = {10.7717/peerj-cs.214}
}
</bh-reference>
...
<bh-bibliography format="apa">
</bh-bibliography>
The bh- prefix was chosen to make the use of <bh-cite> relatively short.
<bh-cite>
To cite
Citation.js<bh-cite> element:
If we cite a missing reference
The inner text of a <bh-cite> element is displayed instead of its reference number when:
- The cited reference ID does not correspond to a
<bh-reference>element with a matchingidattribute - JavaScript is disabled
- @celine/bibhtml fails to load or execute properly
The <bh-cite>'s ref attribute allows us to provide a more graceful fallback, by parsing the
reference ID from the ref attribute rather than the inner text. We'll cite Citation.js<a href="#willighagen2019"> to the <bh-reference> element.
We can use <bh-cite>'s href attribute with a reference ID to force the inner text to always be displayed.
This permits us to cite references with flexible inline citation formatting, like (
We can still use an inner fallback link with the href attribute: [
<bh-reference>
Each <bh-reference> must be tagged with an id attribute, and contain reference information in 4 supported formats:
BibTeX
This expands to reference
Unstructured text
A <bh-reference> can contain unstructured text. This format is useful when:
- The reference is not in a machine readable format
- The reference is malformed
- The machine readable format is not supported by @celine/bibhtml or Citation.js
Observe that the reference
DOI
This expands to reference
Wikidata
This expands to reference
<bh-bibliography>
The <bh-bibliography> finds <bh-reference>s and renders them in a formatted list (like at the bottom of the page).
</bh-bibliography> has very simple calling semantics. Just:
<bh-bibliography format="apa"> </bh-bibliography>
Do not put <bh-reference> elements inside the <bh-bibliography> element. Everything will break.
The format attribute sets the citation style. Currently only 1 is supported, "apa".
References are rendered in the order they are cited by <bh-cite> elements, not the order they are declared in the HTML document.
Extras
<bh-cite> has an appropriate implementation of disconnectedCallback to remove the citation from the bibliography when the <bh-cite> element is removed from the DOM.