# Definitive answer to org-mode export HTML versus LaTeX

I keep being stymied by the apparent incompatibility of HTML and LaTeX export. Here's what I have in my .org file header:

#+LATEX_CLASS: article
#+LATEX_CLASS_OPTIONS: [american]


In reality, I don't know if this gets seen by orgmode export to HTML, perhaps by export to LaTeX? So to start, here is working piece of markup that displays great in both HTML and LaTeX:

#+begin_src latex :packages '(("" "tikz")) :exports results :results output raw :file other12.png :imagemagick yes :iminoptions -density 600 :imoutoptions -geometry 500

\usetikzlibrary{decorations.pathreplacing}

\begin{tikzpicture}[scale=1]
\draw[step=1cm,thin,gray!60] (-6,-6) grid (6,6);
\draw[<->] (-6,0)--(6,0) node[right]{$x$};
\draw[<->] (0,-6)--(0,6) node[above]{$y$};
\draw[line width=2pt,blue,-stealth](0,0)--(4,-3) node[anchor=south west]{$\boldsymbol{(4,-3)}$};
\draw[line width=2pt,gray,-stealth](2,3)--(6,0) node[anchor=south west];
\draw[line width=2pt,gray,-stealth](-5,4)--(-1,1) node[anchor=south west];
\draw[line width=2pt,gray,-stealth](-3,-1)--(1,-4) node[anchor=south west];
\draw [decorate,color=red,decoration={brace,amplitude=10pt},xshift=-0pt,yshift=0pt] (-5.0,1.0) -- (-5.0,4.0) node [red,midway,xshift=-0.65cm]
{\footnotesize $-3$};
\draw [decorate,color=red,decoration={brace,amplitude=10pt,mirror,raise=1pt},xshift=-0pt,yshift=0pt] (-5,1) -- (-1,1) node [red,midway,yshift=-0.6cm] {\footnotesize $4$};
\end{tikzpicture}

#+end_src


This also displays in both HTML and LaTeX correctly:

\begin{align*}
\|x\|&=\sqrt{4^2+(-3)^2} \\
&= \sqrt{25} \\
&= 5
\end{align*}


as well as this:

\begin{equation*}
x = \begin{pmatrix}
\phantom{-} 4 \\
-3 \\
\end{pmatrix}
\end{equation*}


but this on the HTML side

\setstackEOL{\\}
\begin{equation*}
x=\parenVectorstack[r]{4\\-3\\2}
\end{equation*}


doesn't know what \setstackEOL{\\} is, nor \parenVectorstack[r] and displays mangled. The LaTeX export looks fine, though. And if I put it in a LaTeX babel code block, it disappears from the HTML entirely, while, again, the LaTeX export displays just fine. Confusing is how the Tikz code block is displayed in both HTML and LaTeX, but any other attempt at a LaTeX code block is ignored and left completely out of the HTML export.

My educated guess is that the org-mode HTML export processes is handled by MathJax, which is a subset of LaTeX. But then I'd like to know definitively what can be done and what cannot be done LaTeX-wise for the HTML export.

As I've researched this issue, it seems like a very big, complicated, outwardly-billowing, crawling-across-broken-glass trial-and-error slugfest that will take a serious sorting out. The "documentation" at orgmode.org here is hardly better than a reference dump, i.e., it will require painstaking, meticulous trial-and-error to sort out what exactly can and cannot be done, culminating in a user/beginner-friendly tutorial write-up. Hence, I absolve the community of answering this. Till then, I lay this on ice.. . . . .

• I wish org-export was replaced by an interface to Pandoc, which is a very well designed software to convert between text file formats. – scaramouche Feb 8 at 23:38
• @scaramouche ox-pandoc is available via melpa. – Tobias Feb 9 at 1:52

You already discovered yourself that MathJax does not offer all the finesses of LaTeX.

That is the main reason why you can use another LaTeX-backend for HTML export with the help of the tex option of the html exporter. Example:

#+OPTIONS: tex:dvipng


Choosing dvipng as LaTeX backend, your document is exported fine to HTML.

• Thanks for your response. But if I'm not mistaken, using dvipng converts any LaTeX math markup to little png images, which may or may not fit the surrounding text size and font-wise. I especially like the MathJax feature of being able to right-click on a formula and get the underlying LaTeX markup. – 147pm Feb 10 at 15:19