使用 chemformula 和 chemmacros 包进行数学反应注释

使用 chemformula 和 chemmacros 包进行数学反应注释

在下面的 MWE 中,我尝试使用chemformulachemmacros包来排版带有一些数学注释的反应。为什么反应 1 可以编译,而反应 2 却不能?

\documentclass[oneside,11pt]{book}

\usepackage[semibold,tt=false]{libertine}
\usepackage{libertinust1math}
\usepackage[
  expansion = false ,
  tracking = smallcaps ,
  letterspace = 40 ,
  final
]{microtype}
\usepackage[font={sf,small},labelsep=quad,labelfont=sc]{caption}
\usepackage{siunitx}
\usepackage{mathtools}
\usepackage{chemmacros}
\usechemmodule{reactions}
\chemsetup[reactions]{
  before-tag = R,
  tag-open = [,
  tag-close = ]
}
\usepackage{cleveref}

\begin{document}

% Reaction 1
\begin{reactions}
  2 H2O + 2 e- &<=> H2 + 2 OH-&{$E^{\circ}$}
\end{reactions}

% Reaction 2
\begin{reactions}
  2 H2O + 2 e- &<=> H2 + 2 OH-&{$E^{\circ} \approx \SI{-0.83}{\volt}$}
\end{reactions}

\end{document}

姆韦

答案1

E^{\circ}删除和之间的空格\approx足以使代码可编译。

chemformula有关's内空格的作用的深入解释(除非另有说明,\ch否则reaction环境主体将用 's 进行解析),请查看cgnieder 对相关问题的回答

在此处输入图片描述

\documentclass[oneside,11pt]{book}

\usepackage[semibold,tt=false]{libertine}
\usepackage{libertinust1math}
\usepackage[
  expansion = false ,
  tracking = smallcaps ,
  letterspace = 40 ,
  final
]{microtype}
\usepackage[font={sf,small},labelsep=quad,labelfont=sc]{caption}
\usepackage{siunitx}
\usepackage{mathtools}
\usepackage{chemmacros}
\usechemmodule{reactions}
\chemsetup[reactions]{
  before-tag = R,
  tag-open = [,
  tag-close = ]
}
\usepackage{cleveref}

\begin{document}

\begin{reactions}
  2 H2O + 2 e- &<=> H2 + 2 OH-& $E^{\circ}\approx \SI{-0.83}{\volt}$
\end{reactions}

\end{document}

chemmacros默认情况下会加载chemformula包以排版化学式,但也提供了使用其他包的可能性,例如mhchem\chemsetup{formula= mhchem})。由于mhchem使用不同的解析机制,方程式中的空格不是问题:

\documentclass[oneside,11pt]{book}

\usepackage[semibold,tt=false]{libertine}
\usepackage{libertinust1math}
\usepackage[
  expansion = false ,
  tracking = smallcaps ,
  letterspace = 40 ,
  final
]{microtype}
\usepackage[font={sf,small},labelsep=quad,labelfont=sc]{caption}
\usepackage{siunitx}
\usepackage{mathtools}
\usepackage{chemmacros}
\usechemmodule{reactions}
\chemsetup[reactions]{
  before-tag = R,
  tag-open = [,
  tag-close = ]
}
\chemsetup{formula= mhchem}
\usepackage{cleveref}

\begin{document}

\begin{reactions}
  2 H2O + 2 e- &<=> H2 + 2 OH-& $E^{\circ} \approx \SI{-0.83}{\volt}$
\end{reactions}

\end{document}

相关内容