我一直在尝试使用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
\tcbhighmath
tcolorbox
\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}