Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vene/pelican-bibtex
pelican-bibtex: Manage your academic publications page with Pelican and BibTeX
https://github.com/vene/pelican-bibtex
Last synced: 3 months ago
JSON representation
pelican-bibtex: Manage your academic publications page with Pelican and BibTeX
- Host: GitHub
- URL: https://github.com/vene/pelican-bibtex
- Owner: vene
- License: unlicense
- Created: 2013-04-22T07:00:34.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2023-05-29T13:55:15.000Z (over 1 year ago)
- Last Synced: 2024-04-08T10:35:44.782Z (10 months ago)
- Language: Python
- Size: 139 KB
- Stars: 51
- Watchers: 6
- Forks: 29
- Open Issues: 10
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
- awesome-pelican - BibTeX - Manage your academic publications page with Pelican and BibTeX (Plugins)
README
Pelican BibTeX
==============Organize your scientific publications with BibTeX in Pelican
Author | Vlad Niculae
----------------|-----
Author Email | [email protected]
Author Homepage | http://vene.ro
Github Account | https://github.com/vene*Note*: This code is unlicensed. It was not submitted to the `pelican-plugins`
official repository because of the license constraint imposed there.Requirements
============`pelican_bibtex` requires `pybtex`.
```bash
pip install pybtex
```How to Use
==========This plugin reads a user-specified BibTeX file and populates the context with
a list of publications, ready to be used in your Jinja2 template.Configuration is simply:
```python
PUBLICATIONS_SRC = 'content/pubs.bib'
```If the file is present and readable, you will be able to find the `publications`
variable in all templates. It is a list of tuples with the following fields:
```
(key, year, text, bibtex, pdf, slides, poster)
```1. `key` is the BibTeX key (identifier) of the entry.
2. `year` is the year when the entry was published. Useful for grouping by year in templates using Jinja's `groupby`
3. `text` is the HTML formatted entry, generated by `pybtex`.
4. `bibtex` is a string containing BibTeX code for the entry, useful to make it
available to people who want to cite your work.
5. `pdf`, `slides`, `poster`: in your BibTeX file, you can add these special fields,
for example:
```
@article{
foo13
...
pdf = {/papers/foo13.pdf},
slides = {/slides/foo13.html}
}
```
This plugin will take all defined fields and make them available in the template.
If a field is not defined, the tuple field will be `None`. Furthermore, the
fields are stripped from the generated BibTeX (found in the `bibtex` field).Template Example
================You probably want to define a 'publications.html' direct template. Don't forget
to add it to the `DIRECT\_TEMPLATES` configuration key. Note that we are escaping
the BibTeX string twice in order to properly display it. This can be achieved
using `forceescape`.```python
{% extends "base.html" %}
{% block title %}Publications{% endblock %}
{% block content %}function disp(s) {
var win;
var doc;
win = window.open("", "WINDOWID");
doc = win.document;
doc.open("text/plain");
doc.write("<pre>" + s + "</pre>");
doc.close();
}
Publications
- {{ text }}
[ Bibtex ]
{% for label, target in [('PDF', pdf), ('Slides', slides), ('Poster', poster)] %}
{{ "[ %s ]" % (target, label) if target }}
{% endfor %}
{% for key, year, text, bibtex, pdf, slides, poster in publications %}
{% endfor %}
{% endblock %}
```
Extending this plugin
=====================
A relatively simple but possibly useful extension is to make it possible to
write internal links in Pelican pages and blog posts that would point to the
corresponding paper in the Publications page.
A slightly more complicated idea is to support general referencing in articles
and pages, by having some BibTeX entries local to the page, and rendering the
bibliography at the end of the article, with anchor links pointing to the right
place.