npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

metalsmith-bibtex

v1.1.5

Published

A metalsmith plugin to load and render bibtex bibliographies.

Downloads

9

Readme

metalsmith-bibtex

A metalsmith plugin to load and render bibtex bibliographies.

Installation

$ npm install metalsmith-bibtex

Javascript Usage

Pass the options to Metalsmith#use:

var bibtex = require('metalsmith-bibtex');

metalsmith.use(bibtex({
    collections: {
        publications: 'bib/publications.bib',
        other: 'bib/other.bib'
    },
    default: 'publications',
    style: 'default', // available styles: ['default', 'ieeetr']
    keystyle: 'numbered',
    sortBy: 'year',
    reverseOrder: true
}));

Options

  • collections: the collections from different bibtex files. Each collection is accessible in the global context through its key as bibtex.key
  • default: key of the default bibliography
  • style: Style for rendering bibliographic entries using handlebars helper. Current styles include:
    • default
    • ieeetr
  • keystyle: specifies if the style of citation in the text and bibliography keys (nothing if undefined). Possible options are numbered and citekey.
  • sortBy: specifies the default field for sorting bibliographies.
  • reverseOrder: specifies if entries should be sorted in reverse order.

Handlebars Helpers

Displaying a bibliography

Displaying an entire collection

The plugin defines a handlebars helper for rendering an entire bibtex collection as formatted HTML. It takes a collection as argument, and optionally a style, and key style:

{{bibliography <collection> [style=bibtex.style.<styleName>] [keystyle='numbered'|'citekey']}}

Displaying a single entry

Similarly, the bibformat helper renders a single bibtex entry:

{{bibformat <entry> [style=bibtex.style.<styleName>]}}

Manipulating CSS

The rendering helpers wrap all the fields of a bibtex entry in html tags with classes such as class="bibtex title", which allows for further styling.

Sorting and Grouping

Sorting

Collections can be sorted according to any field using the bibsort helper:

{{bibsort <collection> <field> [bool:reverseOrder]}}

Example: rendering a collection sorted by year in descending order:

{{bibliography (bibsort bibtex.other _year true)}}

Grouping

Collections can be grouped by unique values of a given field:

{{bibgroup <collection> <field>}}

Example of bibliography grouped by entry type:

{{#each (bibgroup bibtex.other _entrytype)}}
    <h4>{{group}}</h4>
    {{bibliography entries}}
{{/each}}

Citations inside a page

Another helper allows for referring to publications inside the body of the text, which aggregates the cited items in a local bibtex collection.

The cite command can take the collection as optional argument:

{{#bibcite [bibtex.<collection>]}}citekey1 citekey2{{/bibcite}}
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua {{#bibcite}}mccreight1982complete
wheeler1976techniques{{/bibcite}}. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum {{#bibcite
bibtex.other}}Markowitz1996{{/bibcite}}.
</p>

[...]

<h1>References</h1>
{{bibliography citations keystyle=bibtex.keystyle}}

Example

See 'example' folder for use within a metalsmith project.

Credits

This plugin relies on bib2json (all the hard work is there!).

License

MIT