如何使用 TikZ 在使用 chemfig 包绘制的分子上绘图/注释?

如何使用 TikZ 在使用 chemfig 包绘制的分子上绘图/注释?

我刚刚发现了 TikZ 化学绘图衍生chemfig包。我只想使用 TikZ 的相对节点添加一些透明框来突出显示绘制分子的某个区域,并添加一些文本。需要相对性,以便在旋转时保持所有东西完整。因此,分子是用相对角度而不是绝对角度绘制的。另一个要求是,我怎样才能用大括号代替阴影框的想法,我的意思是只把阴影区域放在两个大括号之间?
我想要的看起来像下面的图片:

在此处输入图片描述

代碼chemfig

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{chemfig}
\begin{document}
\setatomsep{2em}

\chemfig{[:-30]*5(-(=O)-N(-O-[::60]([::-60]--[::60]--[::60]--[::60]-(=[::-60]O)-[::60]O-#(,7pt)[::-60]*5(N-(=O)---(=O)-#(0,5pt)) )=[::60]O)-(=O)--)}

\end{document}

答案1

这不是充分自动(你需要指定分子的旋转相应的\chemmove命令)和 TikZ 代码很可能还有改进空间,但这可能是一个开始。它放置了两个不可见的键,我用chemfigs@{<node name>}语法标记了各自的端点。它们稍后用于绘制矩形。

在此处输入图片描述

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{chemfig}

\begin{document}
\setatomsep{2em}

\chemfig{
  [:-30]*5(
    -(=O)-N(
      -O(-[::110,2,,,draw=none]@{a})
      -[::60](
        [::-60]--[::60]--[::60]--[::60]
        -(=[::-60]O)(-[::-50,2,,,draw=none]@{b})
        -[::60]O-#(,7pt)[::-60]
        *5(N-(=O)---(=O)-#(0,5pt))
      )=[::60]O
    )-(=O)--
  )
}
\chemmove[orientation/.style={rotate=0}]{
  \draw[orientation,draw=black,opacity=.2,fill=black!30]
    (a) -| (b) -| (a)
    node[pos=.25,above,opacity=1,orientation]{Some text here} ;
}

\chemfig{
  [:0]*5(
    -(=O)-N(
      -O(-[::110,2,,,draw=none]@{a})
      -[::60](
        [::-60]--[::60]--[::60]--[::60]
        -(=[::-60]O)(-[::-50,2,,,draw=none]@{b})
        -[::60]O-#(,7pt)[::-60]
        *5(N-(=O)---(=O)-#(0,5pt))
      )=[::60]O
    )-(=O)--
  )
}
\chemmove[orientation/.style={rotate=30}]{
  \draw[orientation,draw=black,opacity=.2,fill=black!30]
    (a) -| (b) -| (a)
    node[pos=.25,above,opacity=1,orientation]{Some text here} ;
}

\chemfig{
  [:-60]*5(
    -(=O)-N(
      -O(-[::110,2,,,draw=none]@{a})
      -[::60](
        [::-60]--[::60]--[::60]--[::60]
        -(=[::-60]O)(-[::-50,2,,,draw=none]@{b})
        -[::60]O-#(,7pt)[::-60]
        *5(N-(=O)---(=O)-#(0,5pt))
      )=[::60]O
    )-(=O)--
  )
}
\chemmove[orientation/.style={rotate=-30}]{
  \draw[orientation,draw=black,opacity=.2,fill=black!30]
    (a) -| (b) -| (a)
    node[pos=.25,above,opacity=1,orientation]{Some text here} ;
}

\end{document}

相关内容