3

First time posting here, and my english isn't that good but i'll try to explain my problem the best I can. I'm trying to externalize a figure, that was built using chemfig. Now the problem is that when I use \tikzexternalize it changes the position all the arrows of the fig. and it crops part of the figure. The figure is a description of electron movements of a molecule.

This is what I get without \tikzexternalize (the way i'm looking for after externalize)

enter image description here

This is what I get when I use \tikzexternalize

enter image description here

This is the code i'm using:

\documentclass[letterpaper,12pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[spanish,es-noquoting]{babel}
\usepackage{tikz}
\usepackage{chemfig}
\usepackage{chemmacros}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{external}
%\tikzexternalize[prefix=tikz/]
\newcommand\namebond[4][3pt]{\chemmove{\path(#2)--(#3)node[midway,sloped,yshift=#1]{#4};}}
\newcommand{\bold}{\textbf}

\begin{document}
\pgfdeclaredecoration{ddbond}{initial}
{
\state{initial}[width=4pt]
{
\pgfpathlineto{\pgfpoint{4pt}{0pt}}
\pgfpathmoveto{\pgfpoint{2pt}{2pt}}
\pgfpathlineto{\pgfpoint{4pt}{2pt}}
\pgfpathmoveto{\pgfpoint{4pt}{0pt}}
}
\state{final}
{
\pgfpathlineto{\pgfpointdecoratedpathlast}
}
}
\tikzset{lddbond/.style={decorate,decoration=ddbond}}
\tikzset{rddbond/.style={decorate,decoration={ddbond,mirror}}}


\begin{tikzpicture}
\chemfig{\lewis{2:4:,O}=[:280,0.8]@{a3}\lewis{5:,N}?[4]-[@{a2,0.5}:262,1.1,,,dotted]Ir?[2](-[:270]Ir?[1]?[3])-[@{a1,0.45},1.2]Ir?[3](-[:270]Ir?[1]?[2])-[:98,1.1,,,dotted]\lewis{7:,N}?[4,1,dotted]=[:80,0.8]\lewis{0:2:,O}}
\chemmove{\draw[-{Stealth[left]},shorten >=2pt](a1).. controls +(80:8mm)  and +(45:5mm) .. (a2);}

\end{tikzpicture}
\end{document}

I really don't know how to fix it. Any pointers on info that I could check would be really appreciated because all my searches have failed on this.

3
  • Please see tex.stackexchange.com/a/129914 Does it help?
    – cgnieder
    Commented Nov 2, 2014 at 23:23
  • Thanks but it dosen't. I've been looking around and i think the problem is with the \chemmove option in the chemfig manual says: "Actually, the \chemmove command puts its argument in a “tikzpicture” environment with the options “remember picture, overlay”. So it looks like there might be a problem with that and i cant figure out how to fix it. Thanks anyways.
    – Leothan
    Commented Nov 3, 2014 at 2:51
  • Well, the idea behind the post I linked is to disable externalization for the piece of code that doesn't work... That really doesn't work? Strange...
    – cgnieder
    Commented Nov 3, 2014 at 6:41

1 Answer 1

3

I've communicate with the developer of chemfig, and he point me out an aspect that I wasn't considering:

You can't externalize a tikz picture made with "overlay,remember picture" options. It is not a chemfig limitation: it is a tikz limitation!

Therefore, \chemmove can't be externalized.

Have a look at, for example, this question : Tikz External vs. Overlay

So that's it.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .