\tikzexternalize 和 chemfig

\tikzexternalize 和 chemfig

第一次在这里发帖,我的英语不是很好,但我会尽力解释我的问题。我正在尝试将使用构建的图形外部化chemfig。现在的问题是,当我使用\tikzexternalize它时,图上所有箭头的位置都会改变。并且它会裁剪部分图形。该图是对分子电子运动的描述。

这就是我没有得到的\tikzexternalize(我在外部化之后寻找的方式)

在此处输入图片描述

这是我使用 \tikzexternalize 时得到的结果

在此处输入图片描述

这是我正在使用的代码:

\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}

我真的不知道该如何修复它。任何关于我可以检查的信息的指示都将不胜感激,因为我的所有搜索都失败了。

答案1

我已经与 chemfig 的开发人员进行了沟通,他指出了我没有考虑到的一个方面:

您无法将使用“覆盖、记住图片”选项制作的 tikz 图片外部化。这不是 chemfig 的限制:这是 tikz 的限制!

因此, \chemmove 不能被外部化。

例如,看一下这个问题: Tikz 外部与覆盖

就是这样了。

相关内容