我刚刚发现了 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 代码很可能还有改进空间,但这可能是一个开始。它放置了两个不可见的键,我用chemfig
s@{<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}