反应化学宏指令周围的框

反应化学宏指令周围的框

我一直在尝试使用tcolorbox来构建反应,使用 中的反应环境chemmacros。使用\begin{tcolorbox}\end{tcolorbox}确实有效:

\documentclass{exam}
\usepackage{chemmacros}
\usepackage{tcolorbox}
\chemsetup{modules = all}

\begin{document}

Document starts

\begin{tcolorbox}
\begin{reaction}
    3 O2 -> 2 O3
\end{reaction}
\end{tcolorbox}

document continues here

\end{document}

这样生成的文档没有任何错误;但是,正如预期的那样,框跨越了文本宽度。我希望框适合反应,所以我尝试使用该tcbox命令。但是,如果我将它放在反应环境之前,我会得到一个错误的数学分隔符错误,反应数字会出现在框内,如果我在里面使用它,它不会编译(它显示 LaTeX 错误:“kernel/empty-search-pattern”空搜索模式。如需立即帮助,请输入 H .\end)。

有什么建议么?

答案1

chemmacros启动时reaction它基本上做三件事:

  • 它暂时将equation计数器设置为等于reaction计数器
  • 它将标签形式设置为reaction;为此它加载mathtools包,因为后者允许轻松控制方程的标签形式。
  • 然后它将反应内容放入公式控制宏中 – 默认情况chemformula\ch

最后一点是当您尝试在 中使用框宏时出现的问题reaction

但了解了上述内容后,我们可以模拟reaction使用equation,然后允许我们在内容的各个部分周围放置框架:

\begin{equation}
  \refstepcounter{reaction}\usetagform{reaction}
  \ch{...} \tag{\thereaction}
\end{equation}

例如使用tcolorbox及其库,我们现在可以使用或theorems来在内容周围放置一个框架(有关详细信息,请参阅手册):\tcboxmath\tcbhighmathtcolorbox

\documentclass{article}
\usepackage{chemmacros}
\usepackage{tcolorbox}
\tcbuselibrary{theorems}

\chemsetup{
  formula = chemformula ,
  modules = reactions
}

\begin{document}

Document starts
\begin{equation}
  \refstepcounter{reaction}\usetagform{reaction}
  \tcboxmath{\ch{3 O2 -> 2 O3}} \tag{\thereaction}
\end{equation}
document continues here
\begin{equation}
  a + b = c
\end{equation}

\end{document}

在此处输入图片描述

顺便说一句:除非绝对必要,否则请不要以数学或化学内容开始新段落……

答案2

我可以提出这样的建议,基于empheq(无需加载,amsmath因为它会加载mathtools):

\documentclass[svgnames]{exam}
\usepackage{chemmacros}
\usepackage{empheq}
\usepackage{tcolorbox}
\chemsetup{modules = all}
\newcommand*\widecolorbox[1]{\fboxsep=2ex\fboxrule=1pt\fcolorbox{black}{Gainsboro!40}{\hspace{1em}#1\hspace{1em}}}

\begin{document}

Document starts

%
\begin{empheq}[box =\widecolorbox]{equation}
\ch{
 3 O2 -> 2 O3}
\end{empheq}
%
document continues here

\end{document} 

在此处输入图片描述

相关内容