Skip to main content

Pelican plugin for converting Pandoc's Markdown variant to HTML.

Project description

Pandoc Reader: A Plugin for Pelican

Build Status PyPI Version License

Pandoc Reader is a Pelican plugin that converts documents written in Pandoc’s variant of Markdown into HTML.

Requirements

This plugin requires a pandoc executable to be available on your PATH. We recommend using the latest version of Pandoc (2.11 and higher), as earlier versions are not supported.

To install this needed dependency, follow the Pandoc installation instructions.

Installation

This plugin can be installed via:

python -m pip install pelican-pandoc-reader

Configuration

This plugin converts Pandoc’s variant of Markdown into HTML. Conversion from other Markdown variants is supported but requires the use of Pandoc default files.

Converting to output formats other than HTML is not supported.

Specifying File Metadata

The plugin expects all Markdown files to start with a YAML-formatted content header, as shown below.

---
title: "<post-title>"
author: "<author-name>"
data: "<date>"
---

… or …

---
title: "<post-title>"
author: "<author-name>"
date: "<date>"
...

⚠️ Note: The YAML-formatted header shown above is syntax specific to Pandoc for specifying content metadata. This is different from Pelican’s front-matter format. If you ever decide to stop using this plugin and switch to Pelican’s default Markdown handling, you may need to switch your front-matter metadata to Python-Markdown’s Meta-Data format.

For more information on Pandoc's YAML metadata block or Pelican's default metadata format please visit the links below:

Specifying Pandoc Options

The plugin supports two mutually exclusive methods for passing options to Pandoc.

Method One: Via Pelican Settings

The first method involves configuring two settings in your Pelican settings file (e.g., pelicanconf.py):

  • PANDOC_ARGS
  • PANDOC_EXTENSIONS

In the PANDOC_ARGS setting, you may specify any arguments supported by Pandoc, as shown below:

PANDOC_ARGS = [
    "--mathjax",
    "--citeproc",
]

In the PANDOC_EXTENSIONS setting, you may enable/disable any number of the supported Pandoc extensions:

PANDOC_EXTENSIONS = [
    "+footnotes",   # Enabled extension
    "-pipe_tables", # Disabled extension
]

Method Two: Using Pandoc Default Files

The second method involves specifying the path(s) to one or more Pandoc default files, with all your preferences written in YAML format.

These paths should be set in your Pelican settings file by using the setting PANDOC_DEFAULT_FILES. The paths may be absolute or relative, but relative paths are recommended as they are more portable.

PANDOC_DEFAULT_FILES = [
    "<path/to/default/file_one.yaml>",
    "<path/to/default/file_two.yaml>",
]

Here is a minimal example of content that should be available in a Pandoc default file:

reader: markdown
writer: html5

Using default files has the added benefit of allowing you to use other Markdown variants supported by Pandoc, such as CommonMark and GitHub-Flavored Markdown.

Please see Pandoc default files for a more complete example.

⚠️ Note: Neither method supports the --standalone or --self-contained arguments, which will yield an error if invoked.

Generating a Table of Contents

If you want to create a table of contents (ToC) for posts or pages, you may do so by specifying the --toc or --table-of-contents argument in the PANDOC_ARGS setting, as shown below:

PANDOC_ARGS = [
    "--toc",
]

… or …

PANDOC_ARGS = [
    "--table-of-contents",
]

To add a ToC via a Pandoc default file, use the syntax below:

table-of-contents: true

The table of contents will be available for use in templates using the {{ article.toc }} or {{ page.toc }} Jinja template variables.

Enabling Citations

You may enable citations by specifying the citations extension and the -C or --citeproc option.

Set the PANDOC_ARGS and PANDOC_EXTENSIONS in your Pelican settings file as shown below:

PANDOC_ARGS = [
    "--citeproc",
]

… or …

PANDOC_ARGS = [
    "-C",
]

… and …

PANDOC_EXTENSIONS = [
    "+citations",
]

If you are using a Pandoc default file, you need the following as a bare minimum to enable citations:

reader: markdown+citations
writer: html5

citeproc: true

Without these settings, citations will not be processed by the plugin.

You may write your bibliography in any format supported by Pandoc with the appropriate extensions specified. However, you must name the bibliography file the same as your post.

For example, a post with the file name my-post.md should have a bibliography file called my-post.bib, my-post.json, my-post.yaml or my-post.bibtex in the same directory as your post, or in a subdirectory of the directory that your blog resides in. Failure to do so will prevent the references from being picked up.

Known Issues with Citations

If enabling citations with a specific style, you need to specify a CSL (Citation Style Language) file, available from the Zotero Style Repository. For example, if you are using ieee-with-url style file, it may be specified in your Pelican settings file, as shown below:

PANDOC_ARGS = [
   "--csl=https://www.zotero.org/styles/ieee-with-url",
]

Or in a Pandoc default file:

csl: "https://www.zotero.org/styles/ieee-with-url"

Specifying a remote (that is, not local) CSL file as shown above dramatically increases the time taken to process Markdown content. To improve processing speed, it is highly recommended that you use a local copy of the CSL file downloaded from Zotero.

You may then reference it in your Pelican settings file as shown below:

PANDOC_ARGS = [
   "--csl=path/to/file/ieee-with-url.csl",
]

Or in a Pandoc default file:

csl: "path/to/file/ieee-with-url.csl"

Calculating and Displaying Reading Time

This plugin may be used to calculate the estimated reading time of articles and pages by setting CALCULATE_READING_TIME to True in your Pelican settings file:

CALCULATE_READING_TIME = True

You may display the estimated reading time using the {{ article.reading_time }} or {{ page.reading_time }} template variables. The unit of time will be displayed as “minute” for reading times less than or equal to one minute, or “minutes” for those greater than one minute.

The reading time is calculated by dividing the number of words by the reading speed, which is the average number words read in a minute.

The default value for reading speed is set to 200 words per minute, but may be customized by setting READING_SPEED to the desired words per minute value in your Pelican settings file:

READING_SPEED = <words-per-minute>

The number of words in a document is calculated using the Markdown Word Count package.

Contributing

Contributions are welcome and much appreciated. Every little bit helps. You can contribute by improving the documentation, adding missing features, and fixing bugs. You can also help out by reviewing and commenting on existing issues.

To start contributing to this plugin, review the Contributing to Pelican documentation, beginning with the Contributing Code section.

License

This project is licensed under the AGPL-3.0 license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pelican-pandoc-reader-1.0.0.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

pelican_pandoc_reader-1.0.0-py3-none-any.whl (33.0 kB view details)

Uploaded Python 3

File details

Details for the file pelican-pandoc-reader-1.0.0.tar.gz.

File metadata

  • Download URL: pelican-pandoc-reader-1.0.0.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.7.9 Linux/5.4.0-1031-azure

File hashes

Hashes for pelican-pandoc-reader-1.0.0.tar.gz
Algorithm Hash digest
SHA256 b5a9caaa18a4552eaa4e3607b111ed70375da0bc96b9168d38616490f34c48a7
MD5 d786a3859a72e58913754f807ed22af3
BLAKE2b-256 5e4ec9a7c75f626d54361a5be99cc1080543d8f80e45a8c068932e9be2320544

See more details on using hashes here.

File details

Details for the file pelican_pandoc_reader-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pelican_pandoc_reader-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5bd280740ebd2cd7779f45d38d9e176fa861f265d6fe4d431fc3f9555cf04d97
MD5 30812baa67d23ce760b4bebf8ed19763
BLAKE2b-256 ac158cb8829d1f7dd9e4a52bb429969f1002e618a87dd86cce76933770c18d80

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page