我想画出脂肪分子的形成过程,如下图所示
我尝试使用 hspace/vspace 和 yshift:
\documentclass[margin=2cm]{standalone}
\usepackage{chemfig}
\begin{document}
\schemestart
\chemfig{C(-[2,0.7])(-[4,0.7])(-[0]\lewis{57,O}(-[1]H))(-[6,3]C(-[2,0.7])(-[4,0.7])(-[0]\lewis{57,O}(-[1]H))(-[6,3]C(-[2,0.7])(-[4,0.7])(-[0]\lewis{57,O}(-[1]H))(-[6,0.7])))} \+ \chemfig{\lewis{57,O}(-[4]H)(-[1]C(=[3]\lewis{24,O})(-C_{15}H_{31}))} \arrow{0}[,0] \hspace*{-4.125cm} \+ \chemfig{\lewis{57,O}(-[4]\textcolor{red}{H})(-[1]C(=[3]\lewis{24,O})(-C_{15}H_{31}))} \chemmove[orientation/.style={rotate=0},xshift=-2cm, yshift=-2cm]{
\draw[orientation,draw=black,opacity=.2,fill=black!30]
node[pos=.25,above,opacity=1,orientation]{\+ \chemfig{\lewis{57,O}(-[4]\textcolor{red}{H})(-[1]C(=[3]\lewis{24,O})(-C_{15}H_{31}))}} ;
}
\schemestop
\end{document}
这可不太好。我该如何用 chemfig 实现完美对齐?
答案1
直到我完成代码后,我才意识到你的代码显示的内容与图片不同。但对齐的想法应该仍然有效。
您可能知道,chemfig
可以使用语法在化合物中添加锚点名称,@{<name>}
该语法可以在\chemmove
例如中引用,也可以在箭头中引用\arrow(@<name>--)
。下面的代码使用此语法来对齐脂肪酸\arrow(@OH1.base east--.base west){0}[,.2]
:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{chemfig}
\begin{document}
\begin{center}
\small
\setatomsep{2em}
\schemestart
\subscheme{
\chemfig{
H-C(-[2]H)(
-[6,2]C(-[4]H)(-@{OH2}OH)
-[6,2]C(-[4]H)(-@{OH3}OH)
-[6]H
)
-@{OH1}OH
}
\arrow(@OH1.base east--.base west){0}[,.2]
\+ \chemname{\chemfig{C_{17}H_{33}COOH}}{Ölsäure}
\arrow(@OH2.base east--.base west){0}[,.2]
\+ \chemname{\chemfig{C_{3}H_{7}COOH}}{Buttersäure}
\arrow(@OH3.base east--.base west){0}[,.2]
\+ \chemname{\chemfig{C_{17}H_{35}COOH}}{Stearinsäure}
}
\arrow{<=>[Veresterung][Verseifung]}[,1.5]
\chemfig{
H-C(-[2]H)(
-[6,2]C(-[4]H)(-O-C(=[2]O)-C_{3}H_{7})
-[6,2]C(-[4]H)(-O-C(=[2]O)-C_{17}H_{35})
-[6]H
)
-O-C(=[2]O)-C_{17}H_{33}
}
\schemestop
\end{center}
\end{document}