[Tex/LaTex] How to box two lines inside align*

alignboxesmath-mode

I asked a similar question today except it was targeted at one particular line inside the align* environment. Now I want to enclose two lines. The failed attempt below makes my intention clear:

\begin{align*}
\ce{K_a $\times$ K_b} &= \ce{K_w}\\
-\log(\ce{K_a $\times$ K_b}) &= -\log\ce{K_w}\\
 -( \log(\ce{K_a}) + \log(\ce{K_b}) ) &= -\log\ce{K_w} & \text{(Using log law for LHS.)} \\
 - \log(\ce{K_a}) - \log(\ce{K_b}) &= -\log\ce{K_w}\\
\fbox{
 \begin{minipage}{\textwidth}
\ce{pK_a} + \ce{pK_b} &= \ce{pK_w}\\
&=14.00 \text{ (at \SI{25}{\celsius})}\\
\end{minpage}
}
\end{align*}

\Aboxed from mathtools pkg was a great solution, you didn't have to specify mandatory parameters and it was as simple as Aboxed{ } – alas it only works for single line boxes.

As for \Aboxed I don't want to be asked how wide the box should be – it should be automatically determined.

As usual, I prefer predefined solutions, and less obstrusive code to achieve the desired effect. The less clutter the better.

P.S. By the way, this manual seems to suggest \mbox, and anologously \fbox ought to draw frames around the enclosed content. Previously I could not get \mbox to display visible frames…

Best Answer

Here an inspiration with tikz

(everyone is welcome to modify the example -- i am not familiar with tikz)

\documentclass{article}
\usepackage{mathtools}
\usepackage{mhchem}
\usepackage{siunitx}

\usepackage{tikz}
\newcounter{markeq}
\setcounter{markeq}{0}
\newcommand*\bmarkeq{%
   \stepcounter{markeq}%
   \tikz[remember picture]\node(startframe-\themarkeq){\strut};}
\newcommand*\emarkeq{%
   \begin{tikzpicture}[remember picture,overlay]
     \node (endframe-\themarkeq){\strut};
     \draw[,red,opacity=0.8] (startframe-\themarkeq.north) rectangle (endframe-\themarkeq.south);
   \end{tikzpicture}%
}

\begin{document}


\begin{align*}
\ce{K_a $\times$ K_b} &= \ce{K_w}\\
-\log(\ce{K_a $\times$ K_b}) &= -\log\ce{K_w}\\
 -( \log(\ce{K_a}) + \log(\ce{K_b}) ) &= -\log\ce{K_w} & \text{(Using log law for LHS.)} \\
 - \log(\ce{K_a}) - \log(\ce{K_b}) &= -\log\ce{K_w}\\
\bmarkeq\ce{pK_a} + \ce{pK_b} &= \ce{pK_w}\\
&=14.00 \text{ (at \SI{25}{\celsius})}\emarkeq
\end{align*}


\end{document}

EDIT

With the very great idea of egreg you get:

\documentclass{article}
\usepackage{mathtools}
\usepackage{mhchem}
\usepackage{siunitx}

\usepackage{tikz}
\newcounter{markeq}
\setcounter{markeq}{0}

\newcommand{\pstrut}[1]{\vrule height0pt depth0pt width0pt #1 \fboxsep}
\newcommand*\bmarkeq{\stepcounter{markeq}%
  \tikz[remember picture]\node(startframe-\themarkeq){\pstrut{height}};%
  \kern\fboxsep}
\newcommand*\emarkeq{\kern\fboxsep
  \begin{tikzpicture}[remember picture,overlay]
    \node (endframe-\themarkeq){\pstrut{depth}};
    \draw[,red,opacity=0.8] (startframe-\themarkeq.north) 
      rectangle (endframe-\themarkeq.south);
  \end{tikzpicture}%
}


\begin{document}


\begin{align*}
\ce{K_a $\times$ K_b} &= \ce{K_w}\\
-\log(\ce{K_a $\times$ K_b}) &= -\log\ce{K_w}\\
 -( \log(\ce{K_a}) + \log(\ce{K_b}) ) &= -\log\ce{K_w} & \text{(Using log law for LHS.)} \\
 - \log(\ce{K_a}) - \log(\ce{K_b}) &= -\log\ce{K_w}\\
\bmarkeq\ce{pK_a} + \ce{pK_b} &= \ce{pK_w}\\
&=14.00 \text{ (at \SI{25}{\celsius})}\emarkeq
\end{align*}


\end{document}

enter image description here

enter image description here