Skip to main content

math-svg: A Plugin for Pelican

Build Status PyPI Version License pre-commit.ci status

Render math expressions to svg and embed them.

Installation

This plugin can be installed via:

python -m pip install pelican-math-svg

Afterwards, add the plugin to the PLUGINS list in your pelicanconf.py file, e.g.:

PLUGINS = [
    "math_svg",
]

Multi-Core Rendering

To use multi-core rendering of equations (highly recommended, especially when many equations have to be rendered) change the html target in the Makefile of your pelican site to a three step process:

html:
    PELICAN_MATH_SVG_DRY=True "$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
    pelican-math-svg render -j $(shell nproc)
    "$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)

The first commands will execute math-svg in dry-mode and only populate the equation database without actually rendering anything. The second command will render all missing equations in parallel. The number of threads is specified by the -j flag, in this example all CPU cores are used. Replace $(shell nproc) with a number to use a fixed number of cores. The last command is the usual pelican command and produces the output files again, know including the rendered equations.

Requirements

  • required LaTeX tools (all included in TeX Live and possibly other LaTeX distributions):
    • lualatex (or another LaTeX compiler if changed in the settings, see below)
    • pdfcrop
    • dvisvgm
  • scour (optional)
  • svgo (optional)

Usage

In Markdown you can use $x$ for inline math and

$$
  \int x^2
$$

for display math.

It is required to set the stroke color using the strokeonly class (this class name can be changed, see configuration options below), otherwise lines would be rendered white:

svg path.strokeonly {
    color: #000;
}

To change the fill color for equations as well, thus essential changing the default color for math, specify the following additionally:

span.math svg path,
div.math svg path {
    fill: #000;
}

Configuration

In your pelicanconf.py you can use the following options to tweak the behavior of the plugin:

Setting Description Default Value
`MATH_SVG["titles"] Whether to generate <title> tags containing the raw LaTeX code (recommended for accessibility). True
MATH_SVG["scale_inline"] scaling factor for inline math 1.0
MATH_SVG["scale_display"] scaling factor for display math 1.0
MATH_SVG["strokeonly_class] CSS class for SVG paths that have no filling and a black stroke color, useful when changing the color of rendered equations strokeonly
MATH_SVG["latex"]["args"] CLI arguments of the invoked LaTeX compiler "--interaction=errorstopmode", "--halt-on-error"
MATH_SVG["latex"]["preamble"] preamble of the generated LaTeX document [r"\documentclass[preview,border={2pt 0pt}]{standalone}",r"\usepackage{amsmath}",r"\usepackage{amssymb}",]
MATH_SVG["latex"]["program"] LaTeX compiler to use lualatex
MATH_SVG["pdfcrop"]["args"] CLI arguments for pdfcrop --hires
MATH_SVG["dvisvgm"]["args"] CLI arguments for dvisvgm ["--pdf", "--optimize=all", "--no-fonts", "--exact-bbox"]
MATH_SVG["scour"]["args"] CLI arguments for scour ["--strip-xml-prolog", "--remove-descriptions", "--remove-metadata", "--enable-comment-stripping", "--strip-xml-space", "--enable-id-stripping",]
MATH_SVG["scour"]["enabled"] whether to use scour to optimize SVG output True if scour is in $PATH, False otherwise
MATH_SVG["svgo"]["args"] CLI arguments for svgo ["--multipass", "--precision", "5"]
MATH_SVG["svgo"]["enabled"] whether to use svgo to optimize SVG output True if svgo is in $PATH, False otherwise

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 GPLv3 license.

Metadata

Release files for pelican-math-svg 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pelican-math-svg 0.8.1
File Size Uploaded
pelican-math-svg-0.8.1.tar.gz 22.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pelican-math-svg 0.8.1
File Interpreter ABI Platform
pelican_math_svg-0.8.1-py3-none-any.whl Python 3 none any Details

Total release size: 44.8 kB

Release files / pelican-math-svg-0.8.1.tar.gz

Download URL pelican-math-svg-0.8.1.tar.gz
Size 22.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c728f478977688458cf218ae00532071d430266794c265f9418b0287bdf87389
BLAKE2b-256 checksum
How to use checksums
f35e77bdad7468a2eaf660ae17b66415ae99515ff6d5d210a8fca649c4fdbe97
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.11 CPython/3.7.12 Linux/5.8.0-1042-azure

Release files / pelican_math_svg-0.8.1-py3-none-any.whl

Download URL pelican_math_svg-0.8.1-py3-none-any.whl
Size 22.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5ae673d3503ae16cb767fac3fdb9c553aae881914e6812884af743f8fec2a1c6
BLAKE2b-256 checksum
How to use checksums
c28b10b3f76b9f68f621ff10d2258ee774a16924ecc0bde9fa934a42b3487381
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.11 CPython/3.7.12 Linux/5.8.0-1042-azure

Release history Release notifications | RSS feed

0.10.5

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.2

2 release files

This release

0.8.1 This release

2 release files

0.8.0

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.4

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page