23
votes

In Pandoc markdown, I can use '$$' to start a display math environment. However, these equations are not numbered in latex so I hope to use the equation environment instead, like this:

\begin{equation}
x+1 = 2 \\
y+2 = 3 
\end{equation}

That's fine if I convert markdown to latex. But it does't work when I convert it to HTML with Mathjax because Pandoc treats these lines as raw_latex ignores them in HTML.

I tried to forbid the raw_latex extension

pandoc -f markdown-raw_latex ...

This time the two equations are displayed in the same line because the backslashes are escaped by Pandoc so the "\" doesn't produce a newline correctly.

Note that the following code works fine when converted to HTML but produces compilation error in latex.

$$    
\begin{equation}
    x+1 = 2 \\
    y+2 = 3 
\end{equation}
$$

Is there any way to handle this problem?

2

2 Answers

18
votes

Try the pandoc-eqnos filter. Labels may be attached to equations using attributes:

 $$ y = mx +b $$ {#eq:description}

... and then referenced like this:

@eq:description

For tex/pdf output, LaTeX's native equation environment and \label and \ref macros are used; for all others the numbers are hard-coded.

Instructions are given on the pandoc-eqnos page for how to install and apply the filter.

2
votes

There is not good native support for proper equation numbering but there is a workaround.

> pandoc -s -o math.html --mathjax 
(@) $$y=5$$

A paragraph here explaining 

(@) $$y=6$$

Output

<body>
<ol style="list-style-type: example">
<li><span class="math">\[y=5\]</span></li>
</ol>
<p>A paragraph here explaining</p>
<ol start="2" style="list-style-type: example">
<li><span class="math">\[y=6\]</span></li>
</ol>
</body>

Numbering example

Obviously the output can be styled with css to suit. On the other hand, the tex output of this method also places the numbers to the left. Which compromise you choose is up to you.