我正在尝试构建与金属配位的 EDTA 分子:
这是我目前所得到的:
使用此代码:
\chemfig{
O=[2,,]C
(-[3,2,,1]CH_2-[1,,1]N
(-[7,,,2]H_2C-[0,,]C
(=[7,,]O)
(-[1,,]O^{-}))
(-[4,,,2]H_2C-[2,,2,2]H_2C-[0,,]N
(-[1,,,2]H_2C-[0,,2]C
(=[1,,]O)
(-[7,,]O^{-}))
(-[3,,,2]H_2C-[1,2,2]C
(=[2,,]O)
(-[7,,]O^{-}))))
(-[1,,]O^{-})
}
我不知道该怎么做,就是把金属放在中心。我知道我必须以某种方式使用钩子,但我不知道从哪里开始。我是否必须从头开始,从金属开始画这个图形?
附加问题:如何改变金属键的颜色?
答案1
放置M
相当简单:使用\chemmove
,它会产生覆盖tikzpicture
,然后例如 calc 语法。我发现更困难的是重现键样式。我最终查找了定义,然后重复了我认为它们的作用。(编辑:细微调整,非常感谢 AndréC 的推动。)
\documentclass{article}
\usepackage{chemfig}
\usetikzlibrary{calc}
\begin{document}
\chemfig{
O=[2,,]C
(-[3,1.8,,1]CH_2-[1,,1]@{N1}{N}
(-[7,,,2]H_2C-[0,,]@{C1}{C}
(=[7,,]O)
(-[1,,]@{OM1}{O^{-}}))
(-[4,,,2]H_2C-[2,,2,2]H_2C-[0,,]@{N2}{N}
(-[1,,,2]H_2C-[0,,2]@{C2}{C}
(=[1,,]O)
(-[7,,]@{OM2}{O^{-}}))
(-[3,1.2,,2]H_2C-[1,2,2]C
(=[2,,]O)
(-[7,,]@{OM3}{O^{-}}))))
(-[1,,]@{OM4}{O^{-}})
}
\chemmove[brown!70!black]{%
\node (M) at ($(OM1)!0.5!(N2)$) {M};
\fill let \p1=($(M)-(OM1)$),\n1={atan2(\y1,\x1)} in
($(OM1.\n1)!1mm!(M)$) coordinate (aux1) (M) --
($ (aux1)!1mm!90:(M) $) -- ($ (aux1)!1mm!-90:(M) $)
-- cycle;
\fill let \p1=($(M)-(N1)$),\n1={atan2(\y1,\x1)} in
($(N1.\n1)!1mm!(M)$) coordinate (aux2)
(M) --
($ (aux2)!1mm!90:(M) $) -- ($ (aux2)!1mm!-90:(M) $)
-- cycle;
\draw[thick,-,shorten >=1mm] (M) to (OM3.south -|M.center);
\draw[thick,-,shorten >=1mm] (M) to (OM4.north -|M.center);
\begin{scope}
\clip let \p1=($(M)-(OM2)$),\n1={atan2(\y1,\x1)} in
($(OM2.\n1)!1mm!(M)$) coordinate (aux3) (M) --
($ (aux3)!1mm!90:(M) $) -- ($ (aux3)!1mm!-90:(M) $)
-- cycle;
\draw[-,line width=2mm, dash pattern=on 1pt off 2pt,line cap=butt] (M) --(aux3);
\end{scope}
\begin{scope}
\clip let \p1=($(M)-(N2)$),\n1={atan2(\y1,\x1)} in
($(N2.\n1)!1mm!(M)$) coordinate (aux4) (M) --
($ (aux4)!1mm!90:(M) $) -- ($ (aux4)!1mm!-90:(M) $)
-- cycle;
\draw[-,line width=2mm, dash pattern=on 1pt off 2pt,line cap=butt] (M) --(aux4);
\end{scope}
}
\end{document}
答案2
这可以仅使用钩子()来完成?[❬name❭,❬bond❭,❬tikz❭]
,而无需在环境中使用额外的覆盖chemfig{…}
。绘制 3D 结构可能有些乏味,因此以下是我一直尝试坚持的一些关键点:
- 整个复合物的对称性和螯合配体的排列首先由金属中心决定,因此从八面体开始作为 edta 配位的金属中心。
- 声明一组键长来描述明显更长的 M-L 键以及有机配体内的各种键,这些键一旦投影到 2D 表面(屏幕/纸张)上就会看起来不同。
- 通常使用较长的键来描绘金属有机物也是一个好主意,因为这些插图通常必须包含立体化学描述符并且总体上非常拥挤。
- 通常,我只使用 15° 的角度增量。这有助于微调复杂的结构,同时允许在头脑中进行几何计算。
考虑到这一点,同一结构有两种变体:
- 正面视图,显示所有原子;
- 沿旋转是-轴为了更好地进行 3D 表示,省略了所有碳和氢原子。
\documentclass[
crop,
border=5,
tikz=true,
multi={page},
12pt
]{standalone}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{tikz}
\tikzset{
M-L bond/.style={
color=red,
},
}
\usepackage{chemfig}
\setchemfig{
angle increment=15,
atom sep=\bndlen,
bond offset=1pt,
double bond sep=3pt,
cram width=\cramwid,
compound sep=5.0em,
scheme debug=false,
bond join=true,
chemfig style={line width=\lnwid},
arrow style={line width=\lnwid},
}
\newcommand{\bndlen}{2.0em}
\newcommand{\bndlenshort}{0.5}
\newcommand{\bndlenshorter}{0.75}
\newcommand{\bndlenlonger}{1.5}
\newcommand{\bndlenlong}{1.8}
\newcommand{\lnwid}{0.7pt}
\newcommand{\cramwid}{0.3em}
\begin{document}
\begin{page}
\chemfig{
\color{red}{M}
(<:[:15,\bndlenlong,,,M-L bond]O\rlap{${}^-$}
-[:135]C?[c1]
(=[:45]O)
)
(-[:90,\bndlenlong,,,M-L bond]O\rlap{${}^-$}
-[:150]C?[c3]
(=[:90]O)
)
(<:[:165,\bndlenlong,,,M-L bond]N
(-[:180]H_2C?[c5])
(-[:105]H_2C?[c3])
-[:45]C?[c1](-[:90,\bndlenshort,,,draw=none]H\rlap{$_2$})
)
(<[:-15,\bndlenlong,,,M-L bond]O\rlap{${}^-$}
-[:-135]C?[c2]
(=[:-60]O)
)
(-[:-90,\bndlenlong,,,M-L bond]O\rlap{${}^-$}
-[:-150]C?[c4]
(=[:-90]O)
)
(<[:-165,\bndlenlong,,,M-L bond]N
(-[:180]H_2C?[c5])
(-[:-105]H_2C?[c4])
-[:-45]C?[c2](-[:-90,\bndlenshort,,,draw=none]H\rlap{$_2$})
)
}
\end{page}
\begin{page}
\chemfig{
\color{red}{M}
(<:[:15,\bndlenlong,,,M-L bond]O\rlap{${}^-$}
-[:120,\bndlenshorter]?[c1]
(=[:45,\bndlenshorter]O)
)
(-[:90,\bndlenlong,,,M-L bond]O\rlap{${}^-$}
-[:150]?[c3]
(=[:105,\bndlenshorter]O)
)
(<:[:150,\bndlenlonger,,,M-L bond]N
(-[:180]?[c5])
(-[:105]?[c3])
-[:30]?[c1]
)
(<[:-30,\bndlenlonger,,,M-L bond]O\rlap{${}^-$}
-[:-135,\bndlenshorter]?[c2]
(=[:-60,\bndlenshorter]O)
)
(-[:-90,\bndlenlong,,,M-L bond]O\rlap{${}^-$}
-[:-150]?[c4]
(=[:-105,\bndlenshorter]O)
)
(<[:-165,\bndlenlong,,,M-L bond]N
(-[:165]?[c5])
(-[:-105]?[c4])
-[:-60,\bndlenshorter]?[c2]
)
}
\end{page}
\end{document}