我有以下 tikz 代码:
\schemestart
\chemname{\chemfig[][scale=0.6]{
*6(-=(-\lewis{6,O}-[:30]*6(-(=\lewis{57,O})(-[90,0.25,,,draw=none]@{a1}S)-\lewis{26,O}*6(--)))-=-*6(-(=\lewis{13,O})-(*6(-=-=-=)))=)
}}{
2-(4-benzoylphenoxy)essigsäure Ethylesther
}
\chemfig{
\chemsign{+}
@{a0}\vphantom{K}\chemabove{K}{\hspace{5mm}\scriptstyle\oplus}
\hspace{4mm}
\chemabove{OH}{\hspace{-7mm}\scriptstyle\ominus}
}
\chemmove[-stealth,red,shorten <=3pt]{
\draw(a0)..controls+(up:10mm)and+(north west:10mm)..(a1.north);}
\arrow
\arrow(@c1--){0}[-90,0.333] % Line break!
\chemname{\chemfig[][scale=0.6]{
*6(-=(-O-[:30]*6(-(-[:330]\Lewis{15,O}-[:330]-[:30]O)(-[:210]\Lewis{357,O})-OH))-=-*6(-(=O)-(*6(-=-=-=)))=)
}}{
2-(4-benzoylphenoxy)essigsäure
}
\chemfig{
\chemsign{+}
\chemabove{K}{\hspace{5mm}\scriptstyle\oplus}\hspace{4mm}
\chemsign{+}
H_2O
}
\arrow
\schemestop
得到如下图像:
很容易看出添加的 K^(+) 和 (+)^OH 排列不正确。我试过了,\vphantom{K}
但似乎不起作用。
还有一个奇怪的事情是红色箭头。在我的原始文档中,它没有指向正确的位置,但使用独立程序生成此图像时,箭头位置正确。这是什么原因造成的?
答案1
我通常不在“环境”中使用\chemname
and 。(但这可能是个人喜好)。相反,我经常使用长度为零的不可见箭头来划分化合物。此外,我会选择比默认的, ,... 更有意义的节点名称。这样,当您引用化合物时,更容易看到您实际上指的是哪一个,并且自动名称是否因整个方案的更改而更改并不重要。\chemsign
\schemestart
\schemestop
c1
c2
因为我也不喜欢\oplus
,\ominus
所以我会用(我自己的)正式费用chemmacros
它为它们提供宏,例如 \fplus
和\fminus
。当您尝试输入离子(尤其是具有形式电荷的离子)时,其\ch
宏还允许更简单的语法。
总而言之,我会做这样的事情(在使用代码时,我改变了骨架公式中的细节,但懒得再撤消它们......):
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{chemfig}
% formal charges and other stuff like the \ch{} macro:
\usepackage{chemmacros}
\begin{document}
% turn all of chemmacros' charges into formal ones,
% i.e. also the ones set with \ch{}:
\chemsetup{option/circled=all}
% the scheme:
\schemestart
\setatomsep{1.8em}
\chemfig{
*6(
-=(
-\lewis{26,O}-[:30]*6(
-(=\lewis{57,O})-[@{a1,0}]\lewis{26,O}*6(--)
)
)-=-*6(-(=\lewis{13,O})-(*6(-=-=-=)))=
)
}
%
\arrow(ester.-5--){0}[,0]
\ch{+ K+}%
\chemfig{
@{a0}{\ch{^-OH}}
}
\chemmove[-stealth,red,shorten <=1pt, shorten >=3pt]{
\draw(a0)..controls+(up:10mm)and+(up:10mm)..(a1.north);}
\arrow
\arrow(@ester--estername){0}[-90,.2] longuncomprehensiveiupacname
\arrow(@estername--saeure){0}[-90,0.333] % Line break!
\setatomsep{1.8em}
\chemfig{
*6(
-=(
-O-[:30]*6(
-(-[:330]\lewis{15,O}-[:330]-[:30])(-[:210]\chembelow[1.5ex]{\lewis{357,O}}{\fscrm})-OH
)
)-=-*6(-(=O)-(*6(-=-=-=)))=
)
}
\arrow(.-6--){0}[,0]
\ch{+ K+}
\arrow
\arrow(@saeure--){0}[-90,.2] longuncomprehensiveiupacname
\schemestop
\end{document}