结合使用 mhchem 和 chemfig 包

结合使用 mhchem 和 chemfig 包

我正在尝试编写一个化学反应,其中包含一个化学结构。我在对齐和键长方面遇到了一些问题。这是一个最小的工作示例:

\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

将我的评论整合成一个答案:

  • 我写道 »没有办法让chemfigs 键的长度都一样。引用第二部分第 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}}} 例如。

相关内容