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.10.4

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.4
File Size Uploaded
pelican-math-svg-0.10.4.tar.gz 22.8 kB Details

Built distribution (wheel)

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

Total release size: 45.7 kB

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

Download URL pelican-math-svg-0.10.4.tar.gz
Size 22.8 kB
Tags Source
SHA-256 checksum
How to use checksums
fbc3698df5202f1ebeb6235dedd49ec64a08de9591dac3eb54650748d6657467
BLAKE2b-256 checksum
How to use checksums
73442899d5b6731f831edebe801276f3053f7d3137276f787563a3b7824380b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.1 CPython/3.10.7 Linux/5.15.0-1020-azure

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

Download URL pelican_math_svg-0.10.4-py3-none-any.whl
Size 23.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3b6936872addd7a918914e6f88b3d0adb1df2b89d88e0b1926863a81da7e11c1
BLAKE2b-256 checksum
How to use checksums
1ec9e4b32732cbe542e4c91b02363e05642e16e97412330fbc63c6eb2f7ebc84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.1 CPython/3.10.7 Linux/5.15.0-1020-azure

Release history Release notifications | RSS feed

0.10.5

2 release files

This release

0.10.4 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