我正在尝试编写一个化学反应,其中包含一个化学结构。我在对齐和键长方面遇到了一些问题。这是一个最小的工作示例:
\documentclass[a4paper,article]{memoir}
\usepackage[version=3]{mhchem}
\usepackage{chemfig}
\begin{document}
\ce{3CH3CHOHCH3 + Cr2O7^{2-} -> 3\chemfig{C(-[:0]CH_3)(-[:180]CH_3)(=[:270]O)} + 2Cr^{3+} + 7H2O}
\end{document}
输出结果如下:
我遇到的问题是:
- 键长:尽管两个 CH3 基团相同,但键长并不相同。单独缩放每个键会有些麻烦(这是我正在研究的较简单的结构之一),因此我更希望有某种方法可以确保键长恒定。
- 与其余反应对齐:似乎下标“3”的底部与其余反应的基线对齐,我想避免这种情况。有没有什么方法(最好是自动的,但我尽量采用)将结构上行的基线与其余部分的基线对齐?
- 下标高度:mhchem 包创建的下标与 chemfig 包创建的下标高度不同。我尝试在 \chemfig 命令中包含 \ce 命令,但似乎 chemfig 将以这种方式生成的公式视为图像,这会妨碍将键与特定原子对齐。这还会干扰键相对于 CH3 基团的垂直位置。
我知道 chemfig 也可以用来排版反应,但是看看这,看来mhchem在这方面更加人性化。
任何帮助都将非常感激。
答案1
将我的评论整合成一个答案:
我写道 »没有办法让
chemfig
s 键的长度都一样。引用第二部分第 4 节键长的chemfig
手册:«我们不应该谈论键长,而应该使用术语原子间距。如果有效,只有原子间距可以用 \setatomsep 调整,如我们在第 6 页看到的那样。一旦设置了此参数,键长取决于原子的内容,在较小程度上取决于键与水平面的夹角。显然,两个“较细”的原子的边缘间距将比两个较大的原子更大。
虽然在我发表评论时确实如此,但目前已经更新
chemfig
。自 1.1 版以来,以下情况是可能的:当星号遵循宏时
\chemfig*
,键具有固定长度,因此中心原子之间的距离变为可变。宏\enablefixedbondlength
使此行为对所有宏(带星号或不带星号)有效,而\disablefixedbondlength
恢复为默认行为。[...] 在环中,即使带星号\chemfig*
,也会恢复默认行为以绘制正多边形。关于你的第二点第三部分第四节垂直对齐有一些信息。不过,我猜它不会立即有用。尽管如此,它仍然是重要的信息。不过,你问题中公式的解决方案很简单:用不同的方式写出你的公式:
\chemfig{CH_3-C(=[6]O)-CH3}
请记住第一的公式中的原子决定了整个公式的基线。
至于你的第三点,我建议阅读博客文章“探索 ChemFig:自定义外观”
\cf
我们自己的 @JosephWright 解释了如何在 chemfig 中使用 mhchem 的方法\printatom
。关键部分是重新定义\CF@node@content
\makeatletter \def\CF@node@content{% \expandafter\expandafter\expandafter \printatom\expandafter\expandafter\expandafter {\csname atom@\number\CF@cnt@atomnumber\endcsname}% \ensuremath{\CF@node@strut}% } \makeatother
然后允许
\renewcommand*{\printatom}[1]{{\sffamily\cf{#1}}}
例如。