chemfig 中的钩子有问题

chemfig 中的钩子有问题

我正在尝试构建与金属配位的 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° 的角度增量。这有助于微调复杂的结构,同时允许在头脑中进行几何计算。

考虑到这一点,同一结构有两种变体:

  1. 正面视图,显示所有原子;
  2. 沿旋转-轴为了更好地进行 3D 表示,省略了所有碳和氢原子。

edta 金属配合物 1 edta金属配合物2

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

相关内容