​Hello
 Alan,

I'm not 100% sure, but I think the distorted PNG file is generated by dvipng. It seems that dvipng cannot handle tikz blocks very well, and one must use imagemagick for those blocks. I think this line:

#+header: :imagemagick :iminoptions -density 600 :imoutoptions -geometry 800

should be

#+header: :imagemagick yes :iminoptions -density 600 :imoutoptions -geometry 800

so that imagemagick would be used instead of dvipng, which is the global default.

As said by Andreas,
​it's probably that ​
your
​​
by
​​
-backend
​​
macro
​​
​is not working​
 properly, or, maybe you are not using a recent enough version of org-mod
​​
e
​​
. This
​​
​​
magic
​, if I remember correctly,​
​​
​​
is
​​
​​
​​
act
​​
​​
uall
​​
​​
​​
​​
​​
​​
​​
​​
​​
​​
​​
​​
​​
​​
​y​
​​
done
​​
by
​​
a
​​
special
​​
case
​​
added
​​
to
​​
some
​​
latex
​​
babel
​​
export
​​
function
​​
, wh
​​
ich is contributed by Andreas somehow recently. You may want to try upgrade your org-mode and try again.

Also please follow this link [1] to fix a
​bug
 in htlatex as mentioned in Andreas's mail, or your html export will fail silently (showing success on emacs, but no images generated).

[1] http://tex.stackexchange.com/a/232739




--

Mail from Haochen Xie

On Thu, Sep 3, 2015 at 9:30 PM, Andreas Leha <andreas.leha@med.uni-goettingen.de> wrote:
Hi Alan,

Glad you like the example.

Three things:
1. It still works for me ;-)
2. The distorted png might come from the bug in htlatex I mentioned in
this thread [1].
3. It seems that the by-backend does not work properly for you.  I am
not sure about the reason for that.  What org-mode version do you run?

HTH,
Andreas


[1] http://tex.stackexchange.com/a/232739



Alan Schmitt <alan.schmitt@polytechnique.org> writes:
> Hello Andreas,
>
> I’m slowly catching up on the org mailing list, and I found your example
> very interesting. I tried to run it and it does not seem to work here.
> Here is what I did:
> - I copied the code below to a file
> - I evaluated the last block
> - I made sure that latex was one of the org-babel-load-languages
>   language
> - I tried executing the first block, which generated this strange png
>
>
>
> - I exported both to html and pdf, and in both cases I would have
>   a reference to the png instead of the svg/tikz code.
>
> I’m afraid I’m missing a step. Do you see what I’m doing wrong?
>
> Thanks,
>
> Alan
>
> On 2015-08-12 10:50, Andreas Leha <andreas.leha@med.uni-goettingen.de> writes:
>
>> #+LATEX_HEADER: \usepackage{tikz}
>>
>> First execute the second code block, to define the convenience macro
>> and to set the required new variables in ob-latex.el.  Then export to
>> HTML and to pdf to see the tree exported as an SVG image and as
>> embedded tikz respectively.
>>
>> * Tikz test
>> Here's a tree, exported to both html and pdf.
>>
>> #+header: :file (by-backend (html "tree.svg") (latex "tree.tikz") (t "tree.png"))
>> #+header: :imagemagick :iminoptions -density 600 :imoutoptions -geometry 800
>> #+header: :results file raw
>> #+header: :fit yes
>> #+begin_src latex
>>   \usetikzlibrary{trees}
>>   \begin{tikzpicture}
>>     \node [circle, draw, fill=red!20] at (0,0) {1}
>>     child { node [circle, draw, fill=blue!30] {2}
>>       child { node [circle, draw, fill=green!30] {3} }
>>       child { node [circle, draw, fill=yellow!30] {4} }};
>>   \end{tikzpicture}
>> #+end_src
>>
>> #+results:
>> [[file:tree.png]]
>>
>> * COMMENT setup
>> #+begin_src emacs-lisp :results silent
>>   (setq org-babel-latex-htlatex "htlatex")
>>   (defmacro by-backend (&rest body)
>>     `(case (if (boundp 'backend) (org-export-backend-name backend) nil) ,@body))
>> #+end_src