使用 TikZ 中 chemfig 定义的节点名称,引入负坐标改变箭头的位置

使用 TikZ 中 chemfig 定义的节点名称,引入负坐标改变箭头的位置

bond我在名为(在 内定义)的节点和其下方的\chemfig节点之间绘制一个箭头。一切似乎都很好,直到我引入任何具有负-坐标的元素。Sy

这是一个不错的例子:

%% First MWE
\documentclass{standalone}
\usepackage{chemfig}
\begin{document}
\begin{tikzpicture}
    \draw (0,0) -- (4,0);
    \node (hydrogen) at (2,1.5) {\chemfig{[:30]H-[@{bond}]H}};
    \node (S) at (2,0.25) {S};
    \draw[->] (bond) -- (S);
\end{tikzpicture}
\end{document}

产生这样的结果:

这种情况没问题

当我引入一条定义节点的单行(2,-0.5)(显然问题出在负坐标)时,会发生以下情况:

%% Second MWE
\documentclass{standalone}
\usepackage{chemfig}
\begin{document}
\begin{tikzpicture}
    \draw (0,0) -- (4,0);
    \node (hydrogen) at (2,1.5) {\chemfig{[:30]H-[@{bond}]H}};
    \node (S) at (2,0.25) {S};
    \draw[->] (bond) -- (S);
    \node (negative) at (2,-0.5) {"Negative" node};
\end{tikzpicture}
\end{document}

有问题的一个

因此显然创建一个新节点会扰乱箭头的坐标。

思考我所做的是被允许的,因为chemfig手册上说:

这是通过使用语法“ @{<argument>}”标记电子移动箭头的出发点和到达点来实现的。此语法允许tikz放置节点,并使该节点在命令参数之外可\chemfig访问

答案1

这可能会为你指明正确的方向——chemmove定义一个单独的scope,而没有它就等于将一个嵌套tikzpicture在另一个里面,从而导致错误

在此处输入图片描述

\documentclass{article}
\usepackage{chemfig}
\usetikzlibrary{positioning}
\begin{document}
     {\chemfig{[@{bond}:30]H-[]H}}
\chemmove{
\node[below=1cm of bond] (S) {S};
\draw[->](bond) --(S);
\node[below=2mm of S](negative){Negative node};
}

\end{document}

相关内容