在 align* 环境中仅对一个对齐方程使用 \tcbhighmath 吗?

在 align* 环境中仅对一个对齐方程使用 \tcbhighmath 吗?

我正在尝试弄清楚如何在环境\tcbhighmath中的集合中只使用一个方程式放置一个风格化的框align*。例如:

\begin{align*}
   x &= 2 + y \\
   y &= 1 + z \\
   z &= 3 + x
\end{align*}

我只想要一个围绕最后一个等式的框:z = 3 + x。

答案1

您不能直接将一个框跨越两align列,但是这里有一个解决方法可以获得所需的结果。

align使用两次传递来排版方程式:第一次传递测量所有组件的高度/宽度,第二次传递实际上对它们进行排版。我们定义了一个新命令\mathbox{...&...}来收集方程式的左半部分和右半部分。在测量传递(\ifmeasuring@为真)中,我们通常设置列文本以获得正确的宽度。

第二步设置一个零宽度\tcbhighmath框,其中包含列文本,另外向左移动左列文本宽度与框样式的几个参数(内边距、规则宽度等)之和,以使等号与框外的等号对齐。结果基本上是一个空的右列,左列中的框与两列重叠。

最小示例代码:

\documentclass{article}
\usepackage{mathtools}
\usepackage[theorems]{tcolorbox}

\makeatletter

\def\mathbox#1{\mathbox@#1\@end}
\def\mathbox@#1&#2\@end{%
    \ifmeasuring@
        #1%
    \else
        \begingroup
        \setbox0=\hbox{$\displaystyle#1$}%
        \dimen0=\dimexpr\wd0+\kvtcb@left@rule+\kvtcb@leftupper
                            +\kvtcb@boxsep+\kvtcb@bbleft\relax
        \hskip-\dimen0\relax
        \mathrlap{\tcbhighmath{\displaystyle#1 #2}}%
        \hskip\dimen0\relax
        \endgroup
    \fi
    &
    \ifmeasuring@
        #2%
    \fi
}

\makeatother

\begin{document}
\begin{align*}
   x &= 2 + y \\
   y &= 1 + z \\
   z &= 3 + x
\end{align*}
\begin{align*}
   x &= 2 + y \\
   y &= 1 + z \\
   \mathbox{z &= 3 + x}
\end{align*}
\end{document}

输出

在此处输入图片描述

答案2

\documentclass{article}
\usepackage{mathtools}
\usepackage[theorems]{tcolorbox}
\tcbset{
highlight math/.append style={
        grow to left by =4.25mm,}
}
  \let\boxed=\tcbhighmath
\begin{document}
\begin{align*}
   x &= 2 + y \\
   y &= 1 + z \\
   \Aboxed{z &= 3 + x}
\end{align*}
\end{document}

在此处输入图片描述

一些解释

mathtools包提供了\Aboxed可以像这样使用的命令:

\usepackage{mathtools}
...
\begin{align*}
   x &= 2 + y \\
   y &= 1 + z \\
   \Aboxed{z &= 3 + x}
\end{align*}

产生这样的事物:

在此处输入图片描述

根据mathtools手册:internally \Aboxed does use \boxed

为了让\Aboxed命令使用该\tcbhighmath框,我们重新定义该\boxed命令\let\boxed\tcbhightmath 并得到:

在此处输入图片描述

正如所见,我们需要调整框的位置,因此我们 在样式grow to left by = <some distance>中添加选项highlight math\tcbset{highlight math/.append style={grow to left by =4.25mm,}}

答案3

您可以使用hf-tikz

\documentclass{article}
\usepackage{amsmath,hf-tikz}

\begin{document}

\begin{align*}
   x &= 2 + y \\
   y &= 1 + z \\
   \tikzmarkin{a}z &= 3 + x\tikzmarkend{a}
\end{align*}

\end{document}

\tikzmarkin和的参数\tikzmarkend应该是一个唯一的字符串。

在此处输入图片描述

相关内容