如何进行全局设置以框选每个显示和内联的数学运算?

如何进行全局设置以框选每个显示和内联的数学运算?

我不知道如何设置全局设置来框住每个显示和内联数学。该框装饰有彩色框架、彩色背景和彩色前景(文本或数学)。

通过进行全局设置,我可以轻松地打开或关闭它,其余部分保持不变。

我知道有 2 个宏,\everydisplay\everymath,但除了用 更改描边颜色之外,我无法使用它们\color{red}

答案1

为了播放以下示例,添加了一个\fbox内联数学:

\documentclass{article}

\newsavebox{\mymathbox}
\everymath{%
  \mathsurround=0pt$%
  \begin{lrbox}{\mymathbox}\everymath{}$%
  \aftergroup\mathboxend
}
\newcommand*{\mathboxend}{%
  \end{lrbox}%
  \fbox{\usebox{\mymathbox}}%
}

\begin{document}

$abc$ Hello\textsuperscript{World}

\begin{tabular}{l}Hello\\World\end{tabular}

\begin{minipage}{4em}Hello\\World\end{minipage}

\begin{minipage}[t]{4em}Hello\\World\end{minipage}

\end{document}

更新:解释及\mathsurround=0pt补充。

目标是

\fbox{$...$}

如果\everymath调用,我们已经处于数学模式。因此第一个$结束数学模式。给出的空间\mathsurround将设置在空公式周围,因此它被设置为零。

然后打开一个水平框(lrbox),我们再次切换到数学模式,但 为空\everymath。通过\aftergroup我们到达关闭后立即到达的点$,我们可以关闭框并用 设置框\fbox

变化添加。

我们也可以让数学组就位并将其放入lrbox里面:

\everymath{%
  \begin{lrbox}{\mymathbox}%
  \everymath{}$\mathsurround=0pt\relax
  \aftergroup\mathboxend
}
\newcommand*{\mathboxend}{%
  \end{lrbox}%
  \fbox{\usebox{\mymathbox}}%
  $%
}

这些方法的区别在于\mathsurround,如果 不为零,则对 的处理方式。在第一种情况下,空间放在框内,在第二种情况下,空间放在框外。

但是,这种通过 实现的通用方法有一个严重的缺点\everymath。内联数学运算用于许多不同的地方,因此该示例还在不需要内联数学运算的地方显示了方框。

使用 \fbox 进行内联数学运算

相关内容