WPMathPub
WPMathPub
Description
WPMathPub renders mathematical equations in WordPress using the Mathpublisher rendering engine, supporting both native pmath syntax and LaTeX-style input. It generates fast, high-quality PNG images with halo-free transparent backgrounds for reliable display across posts, pages, comments, and RSS feeds.
The plugin also includes Math-Pub Rosetta, a standalone app built on the same Mathpublisher engine. Rosetta mirrors WPMathPub’s behavior outside WordPress, allowing users to publish math anywhere – as a WPMathPub pmath tag learning tool, as a gateway to any LaTeX-enabled document (including Microsoft Office and Overleaf), or directly in WordPress comments. (Launch the Rosetta app)
Unlike MathJax-based plugins, WPMathPub performs server-side rendering, producing static equation images that display consistently across browsers and devices without requiring client-side JavaScript.
This approach provides reliable rendering for:
- WordPress posts, pages, and comments
- Cached pages
- Environments where JavaScript rendering is not desirable
- RSS feeds and feed aggregators RSS example
WPMathPub extends the classic mathpublisher engine with modern WordPress integration including shortcode support, LaTeX translation, image caching, and configurable rendering options.
Mathematical Equation Rendering
Mathematical expressions can be embedded directly into WordPress content using the pmath shortcode.
Basic native usage:
[pmath]x^2 + y^2 = z^2[/pmath]
Custom size and color:
[pmath size=18 color="blue"]E = mc^2[/pmath]
LaTeX input with inline text:
This is a fraction: [pmath latex=1]\frac{a}{b}[/pmath]
Normal, upright text with the same inherited color and size:
LaTeX example – [pmath size=24 color="#006687" latex=1]\text{This is a fraction:}\,\frac{a}{b}[/pmath]
Native example – [pmath size=24 color="#006687"]text{NPV(CF, R) := } text{IV} + delim{[}{ sum{k=1}{N}{ {text{CF}_k}/{(1+text{R}/100)^k}}}{]}[/pmath]
Expressions are rendered as PNG images using the GD and FreeType libraries and cached for efficient reuse. Rosetta extends this with visual error checks and copy to clipboard buttons that move your equations into WPMathPub content, external presentation tools, or anywhere PNG images are accepted. The result lives up to Rosetta’s tagline: Your math. Any platform.
Features
- pmath shortcode tag math expression rendering
- Inline text with math images using pmath shortcode tag
- Control of math image size and color
- LaTeX command translation (Check out the complete syntax list)
- Server-side PNG equation generation
- Gutenberg WPMathPub math block with PMath and LaTeX mode switching
- Halo-free color rendering with alpha transparency
- Transparent background support for dark themes
- Minimal WordPress database footprint
- Efficient PNG image caching
- Math-Pub Rosetta application
- Enter math syntax manually, starting with examples, or using the Math Insert Menu
- Paste pmath tags from WPMathPub enabled content into the Math Test Area
- Allow external users to post math content into comments after visual inspection
- Math Insert Menu includes search, category, and show all for easier syntax use
- Copy resulting math to clipboard
- Copy out and past in allows for roundtrip math syntax development with WPMathPub
- Target audience includes WPMathPub users, new LaTeX learners, and image reuse
- WordPress admin tools panel
- Configurable default equation size
- Configurable default equation color with color picker
- Installation status display
- PNG image cache status and control
- Policy control for cleanup on plugin delete
Installation
- Upload the plugin folder to the
/wp-content/plugins/directory. - Activate the plugin through the WordPress Plugins menu.
- Optional: change defaults under Tools WPMathPub.
- Optional: share the Math-Pub Rosetta link in your content to support math enabled comments.
Screenshots

Example rendered equation in page

Example rendered equation in comment

Example Gutenberg block

Example from syntax page

WordPress admin configuration panel top

WordPress admin configuration panel bottom

Dashboard message requests administrator clear math image cache on new version install

Math-Pub Rosetta is a standalone version of WPMathPub: learn, create, and publish anywhere

Launch the bundled copy of Math-Pub Rosetta from the link on the plugin page
Faq
Here are four references:
- Check out the WPMathPub math publisher page for the user guide.
- Check out the WPMathPub syntax page for a complete cross-reference of all pmath native and LaTeX supported commands.
- Check out the WPMathPub support page for video tutorials and a donation link in support of this project.
- Test drive WPMathPub features without installing the plugin using Math-Pub Rosetta (Launch the Rosetta app)
No. WPMathPub renders equations server-side as PNG images using the mathpublisher rendering engine.
Yes. WPMathPub includes a server-side LaTeX translator that converts standard LaTeX math commands into native pmath syntax before rendering. The result is identical PNG output — so a LaTeX expression and its pmath equivalent share the same cached image file, with no duplication. See the full command reference on the WPMathPub syntax page.
Rendered equation images are cached in:
/wp-content/uploads/wpmathpub/math-img/
The bundled Math-Pub Rosetta demo has its own cache directory:
/wp-content/plugins/wpmathpub/demo/img
Both cache directories can be monitored and cleared from the dashboard:
Tools > WPMathPub
The plugin preserves compatibility with the mathpublisher rendering engine, which produces raster images. PNG output ensures consistent rendering across browsers.
WPMathPub uses a high‑speed image cache to serve PNG math equations across your posts, pages, comments, and RSS feeds. Each equation is stored using a unique hash (similar to an MD5 fingerprint), so it only gets regenerated if the image doesn’t already exist in the cache.
When you install a new version of WPMathPub, the rendering engine may have improved. However, cached images won’t automatically update because their hash hasn’t changed. Clearing the cache ensures all equations are regenerated using the latest version. As your site loads, WPMathPub will automatically rebuild the image directory with fresh, updated PNGs.
A demo version of Rosetta is bundled with the WPMathPub plugin. You can launch it from Dashboard > Installed Plugins, where a link appears next to the WPMathPub entry. The screenshot in this section shows exactly where to click.
The latest full version of Math‑Pub Rosetta is available at Math‑Pub.org. The bundled version and the website version work the same way, but new Rosetta features are released independently from WPMathPub plugin updates — so the online version may include enhancements that haven’t yet been packaged with the plugin.
Reviews
Not compatible with wordpress 4.9.8
By anchorn9852 on November 23, 2018
Very useful
By thy92 on September 3, 2016
Very useful to use.
Thank you for this plugin.
got rid of the backslash problem
By hadzzz on September 3, 2016
The advantage of this plugin to other ones is that it doesn't use "\" (backslash) which other latex-based plugins do. Backslashes are sometimes stripped in WP leading to formulas not showing properly.
Changelog
3.0.5
- New: Math-Pub Rosetta — bundled standalone math expression tester (demo/rosetta.php). Visit your local copy via the new “Open Rosetta” link on the Plugins page, or use the full version at math-pub.org. Same syntax engine as the plugin; works portably outside WordPress.
- New: \text{}, \mathrm{}, \mbox{} for upright free-form text — uses bundled Latin Modern Roman font. Useful for “x_{\text{init}} + 5” style annotations and equation labels. \mathit{} for italic free-form text continues to work as before. Previously all four were aliased to italic, which was wrong for \text{}.
- New: \pmb{…} pseudo-bold renderer for any single symbol (image-overprint technique). Renders bolder weight than standard. Example: \vec{\nabla} \cdot E = \frac{\rho}{\varepsilon_0} with \pmb{\rho} bolds the rho.
- New: dot-family symbols — \cdot (centered dot), \bullet (filled bullet), \times (cross multiplication), \because (∵), \therefore (∴).
- Improved: cleaner glyph rendering at small font sizes (12–15) for trig functions, math operators, and Greek capitals. Uses bundled Latin Modern Roman in place of cmr10. Resolves the blob-like appearance where letters merged together (e.g., “tan” rendering with t looking bolder than an).
- Improved: integral symbol height and vertical alignment — smaller, raised slightly to reduce gap above the integrand.
- Improved: post-update admin notice with one-click “Refresh image cache” button. Cached PNGs regenerate on first page view; URLs stay stable so existing posts and RSS feeds keep working. Per-user, per-version dismissal.
- Fixed: white-screen-of-death protection. If mathpub_latex.php or mathpublisher.php goes missing (during update, FTP transfer, or security quarantine), the plugin now shows a clear admin notice and keeps the rest of WordPress running. Previously WordPress would fatal with E_ERROR.
- Fixed: matrix-with-delimiter wrappers were silently dropped. \left[ \begin{matrix}…\end{matrix} \right] now correctly renders matrix with bracket wrapper. Same fix applies to determinant form (\left| … \right|) and piecewise form (\left{ … ).
- Fixed: half-open interval form \left[x\right[ was leaving literal “x\right[” in output. Now correctly produces delim{[}{x}{[}.
- Fixed: \lim_{x \to a} f(x) was producing wrong pmath shape with body dropped. Now produces the correct lim{x right a}{f(x)}. \rightarrow recognized as synonym for \to.
- Fixed: \iiint, \iint, \int, \oint with leading position were greedily swallowing trailing operators into their body. “\iint_{a}^{b}x \prod_{a}^{b}x” now tokenizes as two separate operators rather than one giant double-integral.
- Fixed: descender clipping in upright text — bottom row of g, j, p, q, y and lowercase Greek β γ η μ ρ φ ψ χ ξ ζ was clipped by an off-by-one in canvas height. Fix is universal — also resolves a Greek descender clipping that had existed for years but was hidden because trig/operator names have no descenders.
- Fixed: thin space \, was rendering as a regular space. Now correctly maps to ~ (pmath thin space). Also fixed \; : ! variants.
- Fixed: function keywords \sin \cos \ln \log \exp \det \ker \dim \max \min were passing through with leading backslash. Engine still rendered them, but cache fingerprints differed from bare-keyword pmath, causing duplicate cached images. Now mapped explicitly.
- Fixed: warning messages for empty or malformed pmath tags.
- Internal: extracted inline LaTeX translator into reusable mathpub_latex.php module (zero behavior change for existing shortcodes). Engine bumped to v1.4.1.
3.0.4
- Added \hbar symbol (reduced Planck constant ℏ, Unicode U+210F)
- Fixed LaTeX \frac rendering for multi-token numerators and denominators
- Fixed image rendering failure at certain font sizes caused by decimal value in cached filename
- Fixed small vertical alignment error between inline text and math images
- Removed version salt for stable RSS feed and URL links
- Changed Gutenberg block default math syntax mode from pmath native to LaTeX
- Security: added direct file access protection (ABSPATH check) to wpmathpub.php, mathpublisher.php, and fonts/index.php
- Security: replaced unlink() with wp_delete_file() in wpmathpub.php and uninstall.php
- Security: replaced rmdir() with WP_Filesystem in uninstall.php
- Security: escaped admin page output with wp_kses_post()
- Fixed readme.txt Requires at least version 5.0 mismatch
3.0.3
- Improved error handling
- Improved rendering of PNG images
3.0.2
- Added color= shortcode attribute with hex and named color support
- Added LaTeX input mode via latex=1 shortcode attribute with full PHPMathPublisher syntax coverage
- Added Gutenberg WPMathPub math block with PMath/LaTeX mode switching and real-time preview
- Added admin panel default equation color setting with WordPress color picker
- Added admin panel default equation size setting
- Added uninstall.php to remove plugin database options on delete
- Fixed Greek Omega symbol rendering (three stacked bugs resolved)
- Fixed matrix and tabular LaTeX conversion
- Fixed tabular border string parsing to respect LaTeX | and \hline markers
- Improved PNG image cache handling and cache key discipline
- Improved rendering stability across PHP 7.2 through 8.3