在没有 tikzset 的情况下在 chemfig 中创建离域双键?

在没有 tikzset 的情况下在 chemfig 中创建离域双键?

我正在尝试创建一个离域双键,类似于例子在 chemfig 文档中给出。他们建议使用 tikz 库包 {decorations} 来实现这一点。在运行分子的实际 chemfig 代码之前,文档建议使用此设置代码:

\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}}}
\setatomsep{4em}

此后,标准 chemfig 语法出现:

\chemfig{[:-30]R-C-[::60]C(-[::60,,,,,rddbond]O)-[,,,,lddbond]N(-[::-60]C-R}

我的问题:我不知道如何使用 tikz,甚至不知道它是什么。我运行上面的代码,编译器提示“! Package pgfkeys Error: I do not know the key /tikz/lddbond/ .style' and I am going to ignore it. Perhaps you misspelled it.如何实现 tikz 来创建这些非局域双键;或者,如何在不使用 tikz 的情况下创建双键?”

答案1

这对我有用:

\documentclass{article}
\usepackage{chemfig}
\usetikzlibrary{decorations}
\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}}}
\setatomsep{4em}
\begin{document}
\chemfig{
  [:-30]R-C-[::60]C(
    -[::60,,,,,rddbond]O
  )-[,,,,lddbond]N(
    -[::-60]H
  )-[::60]C-[::-60]R
}
\end{document}

  • 正如 Claudio 的评论所述,/和之间的空格已被删除。.style
  • \usetikzlibrary{decorations}是根据 pisoir 的评论添加的。
  • 的语法\chemfig已更正。

相关内容