Hi,

I'm trying to include a diagram drawn with tikz in a document, but
couldn't find an elegant way to conditionally export it as png when
generating HTML output and raw TeX code when generating PDF. It is
possible to use

#+OPTIONS: tex:imagemagick

to have tex blocks in the document exported as PNG in HTML, but since
I have other formulas which will render much better with MathJAX other
than embedded PNGs, i really don't want to do it. What I'm currently
doing is to use something like

#+BEGIN_SRC latex :file diagram.png :results value raw
\begin{tikzpicture}
  \draw (0,0) grid (7,5);
  \draw (0,0) node[below left] {$A$};
  \draw (7,5) node[above right] {$B$};
  \fill (0,0) circle (2pt);
  \fill (7,5) circle (2pt);
\end{tikzpicture}
#+END_SRC

#+RESULTS[da59bc402ce2d1055b5ff471ea7e398c4e0488f5]:
[[file:diagram.png]]

so that the diagram will be include in the HTML file as a png image,
and the pdf file will also include it as a raster image.

But this method is rather a workaround. I'd like to see a vector
diagram in the pdf file, which could be achieved if there is a way to
specify how a block of TeX source code should be handled when exported
to HTML regardless to the global settings. So I propose an extension
to #+BEGIN_LaTeX block so that a new header :html will control how the
specific block will be handled when exporting to HTML. The possible
values might be none, t, dvipng, or imagemagick. "none" will ignore
the whole block when exporting to HTML, just like the current
behavior; "t" will try to call MathJAX to interpret this block of TeX
code; and "dvipng" and "imagemagick" will call "dvipng" or
"imagemagick" to render a png file to be embedded in the HTML page.

If that extension is supported, we could then left the global option
tex:t while inline a tex powered figure with great convenience. For
example, in my use case, I could then just used the following code to
achieve what I want:

#+BEGIN_LaTeX :html imagemagick
\begin{tikzpicture}
  \draw (0,0) grid (7,5);
  \draw (0,0) node[below left] {$A$};
  \draw (7,5) node[above right] {$B$};
  \fill (0,0) circle (2pt);
  \fill (7,5) circle (2pt);
\end{tikzpicture}
#+END_LaTeX

As I'm new to org-mode, I may missed something that I could use
instead (although I searched the internet very hard). Please feel free
to disagree on me and point alternative ways to achieve my goal.

Thanks in advance.

Best regards,

Haochen

--

Mail from Haochen Xie