如何在 align/align* 环境中定义像 mathtools' \Aboxed 这样的数学模式宏,但为多行方程式着色而不破坏对齐?

如何在 align/align* 环境中定义像 mathtools' \Aboxed 这样的数学模式宏,但为多行方程式着色而不破坏对齐?

在回答问题之前,为了不收到不想要的答案,我想指出我在 LaTeX 中主要有 4 种方程式或数学相关框的用法(对于与标题相关的问题,请跳至用法编号4)。

1. 为了封装一大串数学属性,我使用自己的自定义tcolorbox环境定义tcolorbox\newtcolorbox宏。

例子:

% !TEX program = lualatex
\documentclass[preview,border={5mm 5mm 5mm 5mm},varwidth]{standalone}
\usepackage{mathtools}
\usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
    \setmathfont{Latin Modern Math}
\usepackage{setspace}\setdisplayskipstretch{}
\usepackage{xcolor}
\usepackage{tcolorbox}
\newtcolorbox{mybox}[1][]{colback=black!5!white,colframe=black,boxrule=1pt,arc=0mm,#1}

\begin{document}
\onehalfspacing\small%
\begin{mybox}[before skip=4ex, after skip=5ex, boxsep=0pt,left=0pt,right=15pt,top=-7pt,bottom=10pt]
\begin{alignat*}{99}
    &\text{(Associative law for addition)} & && a + (b + c) & &&= (a + b) + c. \tag{P1}  \\
    &\text{(Existence of an additive identity)} & && a + 0 & &&= 0 + a = a. \tag{P2}  \\
    &\text{(Existence of additive inverses)} & && a + (-a) & &&= (-a) + a = 0. \tag{P3} \\
    &\text{(Commutative law for addition)} && & a + b & &&= b + a. \tag{P4} \\
    &\text{(Associative law for multiplication)} & && a \cdot (b \cdot c) & &&= (a \cdot b) \cdot c. \tag{P5} \\
    &\text{(Existence of a multiplicative identity)} & && a \cdot 1 & &&= 1 \cdot a = a;\quad 1 \neq 0. \tag{P6}\\
    &\text{(Existence of multplicative inverses)} & && a \cdot a^{-1} & &&= a^{-1} \cdot a = 1, \text{ for } a \neq 0. \tag{P7} \\
    &\text{(Commutative law for multiplication)} & && a \cdot b & &&= b \cdot a. \tag{P8} \\
    &\text{(Distributive law)} & && a \cdot (b + c) & &&= a \cdot b + a \cdot c. \tag{P9}
\end{alignat*}
\end{mybox}
\end{document}

用法 1

2. 为了突出显示独立的多行数学定义或方程式,我使用empheqempheq+ align/align*环境 +tcolorbox\tchbhighmath盒子(宏的一个特例\tcboxmath)。

例子:

% !TEX program = lualatex
\documentclass[preview,border={5mm 5mm 5mm 5mm},varwidth]{standalone}
\usepackage{mathtools}
\usepackage{physics}
\usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
    \setmathfont{Latin Modern Math}
\usepackage{setspace}\setdisplayskipstretch{}
\usepackage{xcolor}
\usepackage[most]{tcolorbox}
\usepackage{empheq}
\tcbset{highlight math style={colback=black!5!white,colframe=black,boxrule=1pt,capture=hbox,arc=0mm,boxsep=0pt,left=4pt,right=4pt}}

\begin{document}
\onehalfspacing\small%
The fact that \(-a > 0\) if \(a < 0\) is the basis of a concept which will play an extremely important role in this book. For any number \(a\), we define the \textbf{absolute value} \(\abs{a}\) of \(a\) as follows:

\begin{empheq}[box=\tcbhighmath]{align*}
    \abs{a} &=
    \begin{cases*}
        \phantom{-}a, & if \(a\geq 0\), \\
        -a, & if \(a\leq 0\).
    \end{cases*}
    \\[3pt]
    \abs{a} &= \sqrt{a^2}.
\end{empheq}
\end{document}

用法 2

align3. 为了突出显示/环境中数学解决方案的最终结果align*,我使用自定义彩色版本的宏mathtools'\Aboxed宏取自并修改自此TeX.SX 答案

(我将可选参数切换为背景颜色而不是框架颜色)

例子:

% !TEX program = lualatex
\documentclass[preview,border={-15mm 5mm 10mm 0mm},varwidth]{standalone}
\usepackage{mathtools}
\usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
    \setmathfont{Latin Modern Math}
\usepackage{setspace}\setdisplayskipstretch{}
\usepackage{xcolor}

    % \Acolorboxed (color \Aboxed command) modified from https://tex.stackexchange.com/a/610299/228055
    % Basic syntax: \Acolorboxed[<background color>]{<LHS> &<aligned character> <RHS>}
\makeatletter
\newcommand*\Acolorboxed[2][yellow!75]{%
   \let\bgroup{\romannumeral-`}%
   \@Acolorboxed{#1}#2&&\ENDDNE
}
\def\@Acolorboxed#1#2&#3&#4\ENDDNE{%
  \ifnum0=`{}\fi
  \setbox\z@\hbox{$\displaystyle#2{}\m@th$\kern\fboxsep \kern\fboxrule}%
  \edef\@tempa{\kern\wd\z@ & \kern-\the\wd\z@ \fboxsep\the\fboxsep \fboxrule\the\fboxrule}%
  \@tempa
  \fcolorbox{black}{#1}{\m@th$\displaystyle#2#3$}%
} 
\makeatother

\begin{document}
\onehalfspacing\small%

\begin{align*}
            x^3 + x^2 - 4x + 2 &= (x - 1)(x^2 + 2x - 2) = 0, \\
            x_1 &= 1, \\ 
            x_2 &= \frac{-2 + \sqrt{2^2 - 4(1)(-2)}}{2(1)} = \frac{2 + 2\sqrt{3}}{2},  \\ 
            x_3 &= \frac{-2 - \sqrt{2^2 - 4(1)(-2)}}{2(1)} = \frac{2 - 2\sqrt{3}}{2}, \\[1.5ex]
            \Acolorboxed{x &\in \left\{1 - \sqrt{3}, 1, 1 + \sqrt{3}\right\}.}
        \end{align*}
\end{document}

用法 3

4. 使用颜色突出显示多行align/环境中数学解决方案的最终结果align*不会破坏先前未装箱的行的对齐,我不知道在其中使用什么。

我想要混合使用号码3和使用编号4但使用empheq不会继续从前一个未装箱的行进行对齐,并且使用\Acolorboxed(类似于\Aboxed)是不可能的,因为宏无法处理多行对齐的方程式。所以我需要一个新的宏。

这个宏的一个示例(我们称之为\Acolorboxedmulti[<background color>]{<LHS> &<alignment character> <RHS>})如下:

\begin{align*}
    a &= 1, \\
    b &= 2, \\
    \Acolorboxedmulti[yellow!75]{%
    c &= 3, \\
    d &= 4, \\
    e &= 5.
    }
\end{align*}

本质上,我的问题是

我如何定义宏\Acolorboxed但可以在一个适合宽度的框中处理多行对齐的方程式,而不会破坏align/中前几行的对齐align*

谢谢。

相关内容