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.

Release files for pelican-math-svg 0.10.5

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.10.5
File Size Uploaded
pelican_math_svg-0.10.5.tar.gz 22.2 kB Details

Built distribution (wheel)

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

Total release size: 45.1 kB

Release files / pelican_math_svg-0.10.5.tar.gz

Download URL pelican_math_svg-0.10.5.tar.gz
Size 22.2 kB
Tags Source
SHA-256 checksum
How to use checksums
16c5aa7931d91552ae5b80fc36f77f435998824b1990c5c7a02b7c3667970133
BLAKE2b-256 checksum
How to use checksums
8b2603b1603e9799bc8540dac33293c764dcfaa2c085f35fc24c5bf2ee9c94fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.5.1 CPython/3.11.3 Linux/6.3.9-arch1-1

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

Download URL pelican_math_svg-0.10.5-py3-none-any.whl
Size 23.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4b9e9e588e7d8f8fc3117e678e7f3e35ff3642af146da7aef87dd4abe2a3c0b0
BLAKE2b-256 checksum
How to use checksums
780b231d201ece4d7c7c5c53ceb0815b3508e6800405e118dc70705938c06037
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.5.1 CPython/3.11.3 Linux/6.3.9-arch1-1

Release history Release notifications | RSS feed

This release

0.10.5 This release

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

0.8.1

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