绘制血红蛋白和配体

绘制血红蛋白和配体

在此处输入图片描述

我正在尝试生成这种形状,但在将氮原子与图中所示的略微弯曲的线连接起来时遇到了问题。有没有办法使用该chemfig包(或任何其他相关包)来生成此图?

我迄今为止的代码:

\documentclass[border=1mm]{standalone}
\usepackage{chemfig}
\begin{document}
\chemfig{[:-45]N-Fe([:-135]-N)([:45]-N)([:-45]-N)([:90,1.2]-O_2)(-[:-90,1.2]Histidine)}
\end{document}

在此处输入图片描述

答案1

与 texboy 的想法相同,但略有不同:

\documentclass[border=1mm]{standalone}
\usepackage{chemfig}

\setatomsep{40pt}

\begin{document}

\chemfig{
         Histidine
     -[:90]@{iron}Fe
           (-[:30]@{topright}N)
           (-[:150]@{topleft}N-[:180,0.2,,,white]) % the 'white' bond only
           (-[:210]@{bottomleft}N)                 % serves to expand the 
           (-[:330]@{bottomright}N)                % bounding box 
     -[:90,,,,draw=none]@{oxygen}O_2
}

\chemmove{\draw[shorten <=2pt,shorten >=2pt]
    (topleft.30) to [bend left=25] (topright.150);}

\chemmove{\draw[shorten <=2pt,shorten >=2pt]
    (topright.300) to [bend left=40] (bottomright.60);}

\chemmove{\draw[shorten <=2pt,shorten >=2pt,preaction={draw=white,very thick}]
    (bottomright.210) to [bend left=25] (bottomleft.330);}

\chemmove{\draw[shorten <=2pt,shorten >=2pt]
    (bottomleft.120) to [bend left=40] (topleft.240);}

\chemmove{\draw[shorten <=2pt,shorten >=2pt,preaction={draw=white,very thick}](iron) -- (oxygen);}

\end{document}

在此处输入图片描述

总的来说,最好不要将其用于chemfig这项特定任务;简单的tikzpicture环境可能更适合。

答案2

使用 TikZ 包

\documentclass{standalone}
\usepackage{amsmath,tikz}
\usetikzlibrary{arrows,calc}

\begin{document}
    \begin{tikzpicture}
    \tikzset{
        arc_of_ellipse/.style args={#1:#2:#3}{
                insert path={+ (#1:#3) arc (#1:#2:#3)}
        }
    }
    \def \n {4}
    \def \aM {3cm }
    \def \ac {2.5cm }
    \def \am {2cm }
    \node (Fe) at ($(0,0)$) {Fe};
    \foreach \i in {1,...,\n}
    {
        \pgfmathtruncatemacro{\j}{45+(\i - 1 )*360/\n}
        \pgfmathtruncatemacro{\k}{45+\i*360/\n}
        \draw[thick, red] (0,0) [arc_of_ellipse=\j + 5: \k-5 :\aM and \am];
        \node (N) at ($(\j:\aM and \am)$) {N};
        \draw[thick, blue] (Fe) -- (N);
    }
    \node (O2) at ($(0,\ac)$) {$\text{O}_2$};
    \draw[thick, blue] (Fe) -- (O2);
    \node[label={[xshift=0.55cm, yshift=-0.5cm]Histidine}] (Histidine) at ($(0,-\ac)$) {};
    \draw[thick, blue] (Fe) -- (Histidine);
    \draw [green] (Histidine)  to [bend left=35] (250:\aM and \am);
    \end{tikzpicture}
\end{document}

使用 TikZ 获得

答案3

在 的帮助下\chemmove,弯曲键是可能的,但它需要 2 次编译:

\documentclass{article}
\usepackage{chemfig,amsmath}
\begin{document}
\chemfig{Fe(-[:90,1.25]O_2)(-[:-90,1.25]\text{H}|\text{istidine})(-[:30]@aN)(-[:150]@bN)(-[:210]@cN)(-[:-30]@dN)}
\chemmove[-,shorten <=1pt,shorten >=1pt]{%
    \draw(a)..controls +(165:5ex)and+(15:5ex)..(b)
    ..controls+(205:5ex)and+(155:5ex)..(c)
    ..controls+(-15:5ex)and+(-165:5ex)..(d)
    ..controls+(25:5ex)and+(-25:5ex)..(a);}
\end{document}

在此处输入图片描述

相关内容