我正在尝试创建一个离域双键,类似于例子在 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
已更正。