我想定义新的环境来以某种方式突出显示某些方程式。例如,我希望突出显示的方程式以红色文本显示或在其周围带有方框。我可以使用红色文本版本,但带方框的版本会给出两个相关错误:
缺少}插入。\begin{boxedeq*}
额外的 },或者忘记了 $。\end{boxedeq*}
由于新环境的前后部分存在不匹配的括号,因此我的理解是我需要使用\bgroup
and\egroup
代替{
and}
。这适用于红色文本的情况,但错误表明它不适用于方框情况(}
在前部分插入“缺失”并}
在后部分发现“额外”)。
以下是 MWE:
\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{color}
% equation/equation* environments highlighted in red
\newenvironment{higheq}{\textcolor{red}\bgroup\begin{equation}}{\end{equation}\egroup}
\newenvironment{higheq*}{\textcolor{red}\bgroup\begin{equation*}}{\end{equation*}\egroup}
% equation/equation* environments highlighted with box
\newenvironment{boxedeq}{\begin{equation}\boxed\bgroup}{\egroup\end{equation}}
\newenvironment{boxedeq*}{\begin{equation*}\boxed\bgroup}{\egroup\end{equation*}}
\begin{document}
\begin{higheq}
\sin^2(x) + \cos^2(x) = 1
\end{higheq}
\begin{equation}
\boxed{\sin^2(x) + \cos^2(x) = 1}
\end{equation}
\begin{boxedeq*}
\sin^2(x) + \cos^2(x) = 1
\end{boxedeq*}
\end{document}
输出如下:
我该如何避免这个错误?
答案1
如果你对更精美的盒子感兴趣,tcolorbox
可以使用,并且它与 很好地交互empheq
。下面是一个展示一些可能性的小例子:
\documentclass[dvipsnames]{article}
\usepackage{empheq}
\usepackage[many]{tcolorbox}
\tcbset{
highlight math style={
enhanced,
colframe=NavyBlue!70!black,
colback=NavyBlue!10,
boxrule=1pt,
}
}
\newenvironment{boxedeq}
{\empheq[box=\tcbhighmath]{equation}}
{\endempheq}
\newenvironment{boxedeq*}
{\empheq[box=\tcbhighmath]{equation*}}
{\endempheq}
\begin{document}
\begin{boxedeq}
\sin^2(x) + \cos^2(x) = 1
\end{boxedeq}
\begin{boxedeq*}
\sin^2(x) + \cos^2(x) = 1
\end{boxedeq*}
\tcbset{
highlight math style={
enhanced,
colframe=Maroon,
colback=Peach!10,
arc=4pt,
boxrule=1pt,
drop fuzzy shadow
}
}
\begin{boxedeq}
\sin^2(x) + \cos^2(x) = 1
\end{boxedeq}
\begin{boxedeq*}
\sin^2(x) + \cos^2(x) = 1
\end{boxedeq*}
\tcbset{
highlight math style={
enhanced,
colframe=black,
colback=white,
arc=0pt,
boxrule=1pt,
}
}
\begin{boxedeq}
\sin^2(x) + \cos^2(x) = 1
\end{boxedeq}
\begin{boxedeq*}
\sin^2(x) + \cos^2(x) = 1
\end{boxedeq*}
\end{document}
答案2
说\boxed\bgroup<tokens>\egroup
和 不一样\boxed{<tokens>}
。您不能使用\bgroup
它来替代参数分隔符。
您可以使用这个empheq
包来满足您的需求。
\documentclass{article}
\usepackage{empheq}
\newenvironment{boxedeq}
{\empheq[box=\fbox]{equation}}
{\endempheq}
\newenvironment{boxedeq*}
{\empheq[box=\fbox]{equation*}}
{\endempheq}
\begin{document}
\begin{boxedeq}
\sin^2(x) + \cos^2(x) = 1
\end{boxedeq}
\begin{boxedeq*}
\sin^2(x) + \cos^2(x) = 1
\end{boxedeq*}
\end{document}