在回答问题之前,为了不收到不想要的答案,我想指出我在 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}
2. 为了突出显示独立的多行数学定义或方程式,我使用empheq
的empheq
+ 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}
align
3. 为了突出显示/环境中数学解决方案的最终结果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\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}
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*
?
谢谢。