Include LaTeX formatted math in your Foswiki pages
Description
This plugin allows you to include mathematics in a topic, with a format
very similar to LaTeX. The external program
latex2html is used to
generate
gif (or
png) images from the math markup, and the image is then included in
the page. The first time a particular expression is rendered, you will notice
a lag as
latex2html is being run on the server. Once rendered, the image is
saved as an attached file for the page, so subsequent viewings will not require
re-renders. When you remove a math expression from a page, its image is
deleted.
Note that this plugin is called
MathModePlugin, not LaTeXPlugin, because
the only piece of LaTeX implemented is rendering of images of mathematics.
Syntax Rules
<latex [attr="value"]* > formula </latex>
generates an image from the contained
formula. In addition attribute-value
pairs may
be specified that are passed to the resulting
img html tag. The only exeptions
are the following attributes which take effect in the latex rendering pipeline:
-
size: the latex font size; possible values are tiny, scriptsize, footnotesize, small, normalsize, large, Large, LARGE, huge or Huge; defaults to %LATEXFONTSIZE%
-
color: the foreground color of the formula; defaults to %LATEXFGCOLOR%
-
bgcolor: the background color; defaults to %LATEXBGCOLOR%
The formula
will be displayed using a
math latex environment by default. If the formula
contains a latex linebreak (
\\) then a
multline environment of amsmath is used instead.
If the formula contains an alignment sequence (
& = &) then an
eqnarray environment
is used.
Note that the old notation using
%$formula$% and
%\[formula\]%
is still supported but are deprecated.
If you might want to recompute the images cached for the current page then append
?refresh=on to its url,
e.g. click
here to refresh the formulas
in the examples below.
Examples
The following will only display correctly if this plugin is installed and
configured correctly.
<latex title="this is an example">
\int_{-\infty}^\infty e^{-\alpha x^2} dx = \sqrt{\frac{\pi}{\alpha}}
</latex>
<latex>
{\cal P} & = & \{f_1, f_2, \ldots, f_m\} \\
{\cal C} & = & \{c_1, c_2, \ldots, c_m\} \\
{\cal N} & = & \{n_1, n_2, \ldots, n_m\}
</latex>
<latex title="Calligraphics" color="orange">
\cal
A, B, C, D, E, F, G, H, I, J, K, L, M, \\
\cal
N, O, P, Q, R, S, T, U, V, W, X, Y, Z
</latex>
<latex>
\sum_{i_1, i_2, \ldots, i_n} \pi * i + \sigma
</latex>
This is

new inline test.
| Greek letters |
\alpha |
|
\theta |
|
\beta |
|
\iota |
|
\gamma |
|
\kappa |
|
\delta |
|
\lambda |
|
\epsilon |
|
\mu |
|
\zeta |
|
\nu |
|
\eta |
|
\xi |
|
Installation Instructions
You do not need to install anything in the browser to use this extension. The following instructions are for the administrator who installs the extension on the server.
Open configure, and open the "Extensions" section. "Extensions Operation and Maintenance" Tab → "Install, Update or Remove extensions" Tab. Click the "Search for Extensions" button.
Enter part of the extension name or description and press search. Select the desired extension(s) and click install. If an extension is already installed, it will
not show up in the
search results.
You can also install from the shell by running the extension installer as the web server user: (Be sure to run as the webserver user, not as root!)
cd /path/to/foswiki
perl tools/extension_installer <NameOfExtension> install
If you have any problems, or if the extension isn't available in
configure, then you can still install manually from the command-line. See
https://foswiki.org/Support/ManuallyInstallingExtensions for more help.
Configuration
There are a set of configuration variables that an be set in different places.
All of the below variables can be set in your
LocalSite.cfg file like this:
$Foswiki::cfg{MathModePlugin}{<Name>} = <value>;
Some of the below variables can
only be set this way, some of the may be
overridden by defining the respective preference variable.
| Name |
Preference Variable |
Default |
HashCodeLength |
|
32 |
ImagePrefix |
|
'_MathModePlugin_' |
Latex2Img |
|
'.../tools/MathModePlugin_latex2img' |
LatexBGColor |
%LATEXBGCOLOR% |
white |
LatexFGColor |
%LATEXFGCOLOR% |
black |
LatexFontSize |
%LATEXFONTSIZE% |
normalsize |
ImageType |
%LATEXIMAGETYPE% |
'png' |
LatexPreamble |
%LATEXPREAMBLE% |
'\usepackage{latexsym}' |
ScaleFactor |
%LATEXSCALEFACTOR% |
1.2 |
| |
default background color |
| |
default font size |
| |
default text color |
| |
extension of the image type; possible values are 'gif' and 'png' |
| |
factor to scale images |
| |
latex preamble to include additional packages (e.g. \usepackage{mathptmx} to change the math font) ; note, that the packages amsmath and color are loaded too as they are obligatory |
| |
length of the hash code. If you switch to a different hash function, you will likely have to change this |
| |
string to be prepended to any auto-generated image |
| |
the command to convert a latex formula to an image |
Dependencies
| Name | Version | Description |
|---|
| dvipng | >0 | Required. Required to generate .png output |
| latex2html | >0 | Required. Required by the plugin for all output. |
Change History
| 24 Sep 2025: |
added switch to hide server internals in latex error messages (reported by Boud Roukema) |
| 29 Aug 2025: |
fixed latex preamble config setting; some minor reorg of code |
| 18 Mar 2014: |
make sure the directory is present when caching images |
| 19 Mar 2011: |
added Config.spec and DEPENDENCIES to ease installation and configuration; improved compatibility to run this plugin on various Foswiki engines |
| 23 Apr 2009: |
converted to foswiki plugin |
| 07 Jan 2009: |
certified for foswiki/compat; removed deprecated endRenderingHandler |
| 07 Dec 2007: |
replaced templfile with mktemp in the latex2img helper script |
| 13 Nov 2007: |
fixed plugin on 4.2 |
| 18 Dec 2006: |
only use one bgcolor |
| 02 Oct 2006: |
don't fail on hierarchical webs; backwards compatible tempfile cleanup |
| 31 Aug 2006: |
added NO_PREFS_IN_TOPIC; using xcolor instead of color latex package now to be able to specify colors in html typical codes; default preamble uses latexsym now |
| 07 Aug 2006: |
switched from latex2html to latex+dvipng+convert; added size, color, bgcolor to <latex> tag; rendering pngs by default now; reworked plugin settings; added a latex2img shell script; returning full latex error report |
| 04 Aug 2006: |
major rewrite; fixed security issues by using the sandbox feature and creating tempfiles properly; added new <latex>...</latex> tag to support multiline formulas; better configurability; better error reporting; fixed issues where images have not been cleaned up regularly; speedup don't clean orphaned images during view but during save; speedup by adding lazy compilation and initialization; implemented a postRenderingHandler for T* V4; prevent auto-generated images stored in pub from being auto-attached using T* V4 |
| 03 Apr 2002: |
Initial version |
Error during latex2img execution