Introduction of LaTeX2HTML Plugin

Introduction to LaTeX2HTML Plugin van abel Southwest University 01/07/2012 Keywords. Latex, Html

Please notice that, this is the old user’s manual of LaTeX2HTML with version less than 1.2.3, the new manual is The User’s Manual of LaTeX2HTML 2.0.0.

Abstract . This is an introduction to write your blog using LaTeX language with the help of latex2html plugin. Before you testing it, please assure you have installed some plugin of MathJax, the simple-mathjax is recommend. The designing principle is to make you publish a post from your latex document more quickly and conveniently. With a litter pre-definition in your latex document, I find it works lovely.

 1.  One Words Before the Starting
 2.  How to Write the Basic Information of Your Post
 3.  How to Write Section, Subsection and Subsubsection
 4.  Itemize and Enumerate: How to List Stuffs
 5.  The Color Scheme: How to Colorize You Content
 6.  How to Write a Theorem
   6.1.  Definition, Lemma, Proposition, Theorem, Corollary, Remark, Proof
     6.1.1.  Basic Usage of Environments
     6.1.2.  Assign a Name for Your Theorem
     6.1.3.  The Proof Environment
     6.1.4.  More Examples of Environments
   6.2.  The Problem, Answer Environments
   6.3.  The Exercise Environment
   6.4.  The Quote Environment
 7.  Auto Numbering and Referring Back
   7.1.  Auto Numbering and Referring Back to Equations
     7.1.1.  Basic Usage of Mathematical Environments
     7.1.2.  Auto Numbering Scheme of Equations
     7.1.3.  How to Numbered Equations by 3.a and 3.b
     7.1.4.  Skip Auto Numbering of Equations
     7.1.5.  How to Refer back to Equation Number
     7.1.6.  My Suggestion on “How to Write Equations”
   7.2.  Auto Numbering and Referring Back to Environments
     7.2.1.  Auto Numbering of Environments
     7.2.2.  Referring Back to Environments
   7.3.  Referring Back to Section
 8.  To-be Stuff
 9.  The Pre-definition in Your TeX File
 10.  Last Words and Feed Back
   10.1.  How to Jump Between Links
 11.  How to Get it?

1. One Words Before the Starting I will always post the code of the content right after it, which will make you more easy to follow my poor English.
2. How to Write the Basic Information of Your Post Just as in LaTeX, you can use commands such as:\title, \author, \address, \date, \keywords and the environment abstract to produce the basic information of your post. These command has the same meaning as in LaTeX, what’s more,

  • you can use \today in \date
  • you can use \emph to emphasis some thing
  • you can use \tableofcontents to get the table of contents
  • you can use \email or \mailto to set your mail, the first will be centered
3. How to Write Section, Subsection and Subsubsection

Just like in Latex, isn’t it? Replace \section with \subsection and \subsubsection if you want to write subsection and subsubsection, respectively. How about \subsubsubsection? Sorry, there is no such command.

Maybe you are still wandering: how do I get the list of contents by \tableofcontents command, one key factor is that I added a link just before each section and subsection, by which you can refer to it. See the referring back to section (sec:7.3) for detail.
4. Itemize and Enumerate: How to List Stuffs As you have already saw, we can list the element as

  • Firstly
  • Secondly

What’s more you can nest them, for example

  • Firstly
  • Secondly
    • The first item of Second
    • The second item of Second
      • The first item of the third item of second item

Enumerate works almost the same as itemize, except the style is different. For example replace enumerate in the above example with enumerate, then we get:

  1. Firstly
  2. Secondly
    1. The first item of Second
    2. The second item of Second
      1. The first item of the third item of second item
5. The Color Scheme: How to Colorize You Content As we have already showed that you can emphasis you content by \emph, one other way is use \underline. Besides, there is a more powerful scheme, now you emphasis some content with different colors, even for formulae.
Firstly, you must decide which class your content belonged to, the text content or the mathematics content, since these two classes are processed by different scheme, text is by latex2html and mathematics by mathjax.
Just as in Latex, the you can set a color for your formula by \color{color_name}{color_formula}. For example
\frac{\color{cyan}{a+b}}{c+d}, \quad

On the other hand, if you want to give color for your text content, then you should use
\textcolor{color_name}{color_contents}, for example
red and blue and green and cyan and magenta and yellow.

6. How to Write a Theorem There are two group of environments, which process the content such as Theorem. One is used for a post, in which you mainly state something formally, just like you do in a research paper; The other is used for problem-discussion situation, in which you ask questions and hope for some examples and answers.
Of course the border is not so strict, for example the examp environment can used in both cases.
Here are the complete list of environments you can use (The example will be pop up at some time later), I take first few words of a environment to represent it, for example thm for Theorem:

  • First group: defn(Definition), lem(Lemma), prop(Proposition), thm(Theorem), cor(Corollary), rem(Remark), excs(Exercise), proof(Proof)
  • Second group: prob(Problem), answer(Answer)
  • Mixed: examp(Example), quote(Quotation)
I will go through the two group one by one, let’s begin with the first group.
6.1. Definition, Lemma, Proposition, Theorem, Corollary, Remark, Proof

Firstly, you should keep in mind that: the distinguish between command and environment is

A command begin with a \ and followed with the name, at last the content of command. It looks like \emph{text}; A environment must be wrapped by begin and end.
6.1.1. Basic Usage of Environments Here is an example of definition environment:
Definition 1. Suppose that $(X,\mathcal M)$ and $(Y,\mathcal N)$ are measurable spaces, and $f:X\to Y$ is a map. We call $f$ is measurable if for every $B\in\mathcal N$ the set $f^{-1}(B)$ is in $\mathcal M$.

The other is similar, just replace defn with any one of the above environment:

Remark 1. If $Y$ is a topological space, and $\mathcal N$ is the $\sigma$-algebra of Borel sets, then $f$ is measurable if and only if the following condition satisfied:
  • For every open set $V$ in $Y$, the inverse image $f^{-1}(V)$ is measurable.

6.1.2. Assign a Name for Your Theorem You can even assign a name to these environment, just as you did in latex, use [text] just behind the environment, for example:

Lemma 2 (fundamental lemma of integration). Let $\set{f_n}$ be a Cauchy sequence of step mappings. Then there exists a subsequence which converges pointwise almost everywhere, and satisfies the additional property: given $\eps$ there exists a set $Z$ of measure $< \eps$ such that this subsequence converges absolutely and uniformly outside $Z$.

6.1.3. The Proof Environment The following are the proof environment, and some more examples, if you are impatient to other contents, then just skip this subsection by click sec:6.2.

Proof . For each integer $k$ there exists $N_k$ such that if $m,n\geq N_k$, then
\|f_m-f_n\|_1< \frac{1}{2^{2k}}.
We let our subsequence be $g_k=f_{N_k}$, taking the $N_k$ inductively to be strictly increasing. Then we have for all $m,n$:
\|g_m-g_n\|_1 \]
We shall show that the series
converges absolutely for almost all $x$ to an element of $E$, and in fact we shall prove that this convergence is uniform except on a set of arbitrarily small measure.
Let $Y_n$ be the set of $x\in X$ such that
Since $g_n$ and $g_{n+1}$ are step mappings, it follows that $Y_n$ has finite measure. On $Y_n$ we have the inequality
Z_n=Y_n\cup Y_{n+1}\cup\cdots.
\mu(Z_n)\leq \frac{1}{2^{n-1}}.
If $x\not\in Z_n$, then for $k\geq n$ we have
|g_{k+1}(x)-g_k(x)| \]
and from this we conclude that our series
is absolutely and uniformly convergent, for $x\not\in Z_n$. This proves the statement concerning the uniform convergence. If we let $Z$ be the intersection of all $Z_n$, then $Z$ has measure $0$, and if $x\not\in Z$, then $x\not\in Z_n$ for some $n$, whence our series converges for this $x$. This proves the lemma.

6.1.4. More Examples of Environments

Theorem 3. Let $f_n$ be a Cauchy sequence in $\mathcal L^1$ which is $L^1$-convergent to an element $f$ in $\mathcal L^1$. Then there exists a subsequence which converges to $f$ almost everywhere, and also such that given $\eps$, there exists a set $Z$ of measure $< \eps$ such that the convergence is uniform on the complement of $Z$.

Corollary 4. An element $f\in\mathcal L^1$ has seminorm $\|f\|_1=\int_X|f|\rd\mu=0$ if and only if $f$ is equal to $0$ almost everywhere.

Proposition 5 (Monotone Convergence Theorem). Let $\set{f_n}$ be an increasing (resp. decreasing) sequence of real valued functions in $\mathcal L^1$ such that the integrals
\int_X f_n\rd\mu
are bounded. Then $\set{f_n}$ is a Cauchy sequence, and is both $\mathcal L^1$ and almost everywhere convergent to some function $f\in\mathcal L^1$.

Proposition 6 (Fatou’s Lemma). Let $\set{f_n}$ be a sequence of real valued non-negative functions in $\mathcal L^1$. Assume that
is exists (so is a real number $\geq0$). Then $\liminf f_n(x)$ exists for almost all $x$, the function $\liminf f_n$ is in $\mathcal L^1$, and we have
\int_X\liminf f_n\rd \mu\leq\liminf\int_X f_n\rd\mu=\liminf\|f_n\|_1.

6.2. The Problem, Answer Environments The second group of environments are provided for discussion, after all, this is a discussion platform. They are: prob for Problem, examp for Example, and answer for Answer.
It almost works the same as the first group, for example

Problem 1 (Egoroff’s theorem). Assume that $\mu$ is $\sigma$-finite. Let $f:X\to E$ be a map and assume that $f$ is the pointwise limit of a sequence of simple maps $\set{\varphi_n}$. Given $\eps$, show that there exists a set $Z$ with $\mu(Z)< \eps$ such that the convergence of $\set{\varphi_n}$ is uniform on the complement of $Z$.

But, the differences between them is that, the answer is numbered with prob (the examp, excs, rem will numbered independently), to see this, for example:

Answer 1.1. Assume first that $\mu(X)$ is finite. Let $A_k$ be the set where $|f|\geq k$. The intersection of all $A_k$ is empty so their measures tend to $0$. Excluding a set of small measure, you can assume that $f$ is bounded, in which case $f$ is in $\mathcal L^1(\mu)$ and you can use the fundamental lemma of integration.

Answer 1.2. This is another answer for the problem.

You should note that the number of answer is reset to 1 by prob, of course, more sensible. For example:
Problem 2. Why we should firstly process the positive measurable functions, then the real measurable functions and at last the complex measurable functions for the integral of measurable functions?

There are the answers for this problem:

Answer 2.1. In fact, you can define the integral of complex function directly.

Answer 2.2. There is another more instructive answer…

6.3. The Exercise Environment Maybe, at somewhere, you want the reader consider about something, then you can use excs environment for Exercise. Please keep in mind that it will have independent numbering, just as prob, but will not reset the number of answer. Here is an example:

Excise 1. Suppose $(X,\mu)$ is a measure space, and that $f$ is measurable, then $\int_X f\rd \mu=0$ if and only if $f\equiv0$ almost everywhere.

6.4. The Quote Environment Sometimes, there are some words or comments on the content, it is like a remark, but it is not so formal. And, if you are write a lecture notes, these words may be the lecturer said before or after an important thing, such as theorems. I have defined a new environment quote to deal with these stuff. For example:
Before the theorem

Theorem 7. Let $\Omega\subset\R^n$ and $u:\Omega\to\R$, then
  1. If $u\in C^2(\Omega)$ is harmonic in $\Omega$, then $u$ satisfies MVP;
  2. If $u\in C(\Omega)$ satisfies MVP, then $u$ is smooth and harmonic.

we want to add a comment on it, then you can use

A function satisfying mean-value properties is only required to be continuous. However, a harmonic function is required to be $C^2$. Thus, the equivalence of this two kind of functions will be significant.

7. Auto Numbering and Referring Back PLEASE NOTE THAT: since1.2.3, the auto number scheme is done by MathJax, not my plugin any more, so please visit mathjax for how to use the auto-numbering scheme)
7.1. Auto Numbering and Referring Back to Equations 7.1.1. Basic Usage of Mathematical Environments All the mathematical environments: equation, align, multline, gather will auto-numbering. For example

An example of multline, which will make the last line flush right:
\int_a^b \biggl\{ \int_a^b [ f(x)^2 g(y)^2 + f(y)^2 g(x)^2 ]
-2f(x) g(x) f(y) g(y) \,dx \biggr\} \,dy \\
=\int_a^b \biggl\{ g(y)^2 \int_a^b f^2 + f(y)^2
\int_a^b g^2 – 2f(y) g(y) \int_a^b fg \biggr\} \,dy

The next example will show how to numbered the equation at a given line:
&= z – \gamma_{10} x – \sum_{m+n\ge2} \gamma_{mn} x^m z^n\\
&= z – M r^{-1} x – \sum_{m+n\ge2} M r^{-(m+n)} x^m z^n
\zeta^0 &= (\xi^0)^2, \\
\zeta^1 &= \xi^0 \xi^1

7.1.2. Auto Numbering Scheme of Equations I hope you have already noticed that the above equations are numbered automatically, in fact, this is my first goal to write a plugin to process the latex code. Mathjax process mathematical perfectly, the only non-advantage is that it can’t automatically add number for equations. When I got a way to add number for the equations automatically, I found that I can go a litter far

  1. automatically numbering theorems, which can be realize by set CSS’s before element with a counter, but it may not work for IE6;
  2. automatically numbering sections, and which can produce a table of contents, as you have already see.
Then, when did the equation should be added number automatically?
Here is the rule:
  1. If you use either one of these environments: equation,align,multline,gather;
  2. If you do use these environments, then latex2html will search tag,notag sign inside these environments;
  3. If it find a tag, then it will reset the number of equation ($eqn); one reason is that, \tag{eqn_num} will set the present equation with number eqn_num, another more important reason is that you can set the equation number as 2.a, 2.b, 3.a.b, 3.a.c and so on.
  4. If it find notag in the equation body, then it will make this equation without number
  5. If neither tag nor notag have found, then it will assign a new number to the equation, i.e., $eqn;
7.1.3. How to Numbered Equations by 3.a and 3.b Here is an example with varied number:

I want to say a liter words about this scheme, i.e., numbering with num.lower-case-alpha:

  • first, the style of tag must be number plus lower-case-alpha, with dot split them, and there may be more than one lower-case-alpha, but the first one must be a number, of course may be more than one digit;
  • these scheme is designed for the group of equations are similar, thus their numbering is almost the same
  • in order to refer to these equations, you should use something like \eqref{eq:5.a} or \eqref{eq:5.b}, see sec:7.1.5 for more details.
  • the number of the next equation will be num+1
For example, if you write another equation, which you would like to numbered automatically, then this equation will be numbered as (8) in the present situation, since we already used 7 in 7.a.b. For example,
\int_a^b \biggl\{ \int_a^b [ f(x)^2 g(y)^2 + f(y)^2 g(x)^2 ]
-2f(x) g(x) f(y) g(y) \,dx \biggr\} \,dy \\
=\int_a^b \biggl\{ g(y)^2 \int_a^b f^2 + f(y)^2
\int_a^b g^2 – 2f(y) g(y) \int_a^b fg \biggr\} \,dy

7.1.4. Skip Auto Numbering of Equations Any one of the following thing will make the auto-numbering scheme false:

  • use the stared version of environments, for example you use equation* instead of equation
  • use the \tag{your_number} that will make the equation numbered by your_number given in \tag
  • use \notag that will make the equation without number, but there should be no manually set \tag
  • (This drawback has already fixed by removing the \label{*} before processing the equation) Another not-so-perfect thing is that you should not write a \label or \notag just behind the begin part. (Since the label now is process by mathjax, the following is not appear anymore!)For example, if you write something like
    a+b=c\quad \text{it not numbered, since you have set a }\textbf{\label}\text{ for it}
    The code of above equation is:

    Considering this drawback, I try to fix it by warping the automatic added lable and \notag with an {} to distinguish these are added manually. In other words, this will make the following equation auto-number:

7.1.5. How to Refer back to Equation Number You can refer back to a numbered equation by \eqref, please note that the \ref is used for another stuff, so please use \eqref for equations, and which will add () automatically.
For example:
can you see the difference between \eqref{eq:2} and \eqref{eq:8}?

Please note that the difference is that \eqref{eq:8} is centered for all lines.
The important thing in using \eqref is that it must looks like \eqref{eq:number}, here the eq: inside {} is fixed, and the number is the number for your equation, which either auto-added by latex2html or set manually by you.
If you want refer back to the equation with number 5.a or 5.b, it should be exactly as \eqref{eq:5.a} or \eqref{eq:5.b}, and no equation has associated with \eqref{eq:5}. Please have a check that which one of the above link works?

7.1.6. My Suggestion on “How to Write Equations”

  1. if you use > or < for greater and lesser in math, please add a blank-space before > and a blank-space after < . Or you will make the HTML translation program confused, since are standard tags for HTML language(code).
  2. use$$ for inline math
  3. use\[\] for oneline unnumbered display math
  4. use star version for multiline unnumbered display math, for example, use gather* environment for centered multiline equations
  5. use equation environment for oneline numbered display math
  6. use align environment for multiline numered display math, if you want make them aligned at some position( use & to set the point of align)
7.2. Auto Numbering and Referring Back to Environments 7.2.1. Auto Numbering of Environments All the environments except proof are auto numbered by latex2html, and the rem, prob, excs are numbered independently, what’s more, answer’s number will be reset by prob. The other environment will numbered continuously in one post (on one page, which means, if you use the <!–nextpage–> to have another page, then the number will all over begin from 1, if you consider this as an bug, sorry, I can’t fix it.)
7.2.2. Referring Back to Environments You can refer to the Theorem, Lemma, Corollary, Definition, Proposition, Remark, Problem, Exercise, and Answer environments by env_name:env_num. For example:
From defn:1 we know that…
From prop:4 we know that…
From answer:2.1 we know that…

Just like the referring back to the equations, when you use env_name:env_num to refer to the exist environments, you should note that

  • the environments, such as thm, are auto numbered by latex2html;
  • env_name is the name of environment, such as thm, answer and so on.
  • env_num is the number of the environment, you must assure that it is exists, which means that should matched with your environment. For example, if you write something such as \ref{prop:6} that will not work, since there isn’t a Proposition numbered with 6
  • Referring to the answer is a litter different, the env_num looks like 2.1, in other words, it should be exactly as the number in the post.
  • The style of \ref must looks like \ref{lem:2}, which means, the : is important.
7.3. Referring Back to Section You can use \ref{sec:1} to refer back to sec:1, and \ref{sec:6.1} to refer back to Subsection 1 of Section 6, which will looks like sec:6.1, and \ref{sec:7.1.3} to refer back to Subsubsection 3 of Subsection 1 of Section 7, which will looks like sec:7.1.3.

8. To-be Stuff Maybe in what follows I will try to make the cite of Bibitem available, but that’s just maybe, since my programming with php is badly poor, I hope somebody will make these thing become true.
9. The Pre-definition in Your TeX File In order to make publish a post from your TeX code become more easy, I suggest add the following code in your Tex document:

You can added your own definition of symbols to the post by $your_definition_of_symbols$, and place it at the beginning of the post. For example, if you add $\newcommand{\curl}{\mathrm{curl}}$ at the beginning of a post content, then you can use \curl in formula to get the upward form of curl(旋度).
10. Last Words and Feed Back This document contains the usage of the plugin latex2html, and if you find any errors, or have any suggestions even bugs of the plugin, you can leave a word here, or sent a mail to me:

It takes me about one week to write the plugin, I’m too tired to feel glad when I finally finished it. I don’t know whether it will help you a litter to post mathematics with latex language or not, but if it do have any, I will fell much better.
10.1. How to Jump Between Links If you have just click on a link, then you can go back where you were just by Alt+←

Now what? Just enjoy the latex2html plugin!!

11. How to Get it? You can download it here by right-click the following download link and save it as…, then you can install it as the usual plugins.
Downlad LaTeX2HTML

To get it, visit the plugin in wordpress:


  1. Thank you for your plugin, it is so cool !
    I noticed that it doesn’t work with bbpress, did I miss something ?
    Btw happy new year !

    • This plugin just replace the contents of post by matching of regular expression, I don’t know how bbpress work, if it has the standard functions as WP, then it should work.

      Another thing is that, as a scheme of acceleration, the plugin is designed to work on posts NOT on Home/Index page by default, you can have a check of the option.

    • After a while, I figured it out that the mathjax script is not loaded for wp_content() where the math is not included, you can have a test of it by adding a new page without math formular, then LaTeX2HTML will not add mathjax script in the footer of your page, since there is not math to proceed!!

      Ok, back to the problem, you will find BBPress is not use the standard wp_content() function to output the content of a topic, I believe that is the problem.

  2. \[
    \frac{\color{cyan}{a+b}}{c+d}, \quad