Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I want to typeset a proof and want to emphasize what I do in each step e.g. by underbracing an equal-sign when I substitute a variable. In addition I also want to align equal-signs in every line. Unfortunately I don't know how to align an underbraced equal-sign and a non underbraced equal-sign at the same time.

Result of the MWE

Question: How can I align the underbraced and the non underbraced equal-sign vertically?

\documentclass{report}

\usepackage{amsmath} % Mathe
\usepackage{mathtools} % Mathe
\usepackage{amsfonts} % Mathesymbole

\begin{document}

\begin{align*}
    D(D^TD)^{-1} &\underbrace{=}_{\mathclap{D=B(B^TB)^{-1}}} B(B^TB)^{-1}((B(B^TB)^{-1})^TB(B^TB)^{-1})^{-1} \\
      &= B(B^TB)^{-1}(((B^TB)^{-1})^TB^TB(B^TB)^{-1})^{-1}
\end{align*}

\end{document}
share|improve this question
    
Use a \dagger or something similar for pseudo-inverses. It will be impossible to read if you do that. –  percusse Apr 24 '13 at 10:36
    
It is not a pseuso inverse B^T*B is a regular (square) matrix, so the inverse is well-defined. I want to show that if L(D)=L(B(B^T*B)^{-1}) is a lattice (discrete additive subgroup of R^m) then L(B) is the dual lattice of L(D). For more information see exercise 4 in this lecture note. –  patrickvogt Apr 24 '13 at 10:43
2  
I wouldn't even use the underbrace. Instead mention it in the text before or after the formula. Adding an underbrace to explain an equality does not look nice typographically. –  daleif Apr 24 '13 at 12:13

3 Answers 3

up vote 5 down vote accepted

You need first of all to make the \underbrace a math relation, for spacing; but you also have to extend the space reserved to it, because an underbrace has a minimum width:

\documentclass{report}

\usepackage{amsmath} % Mathe
\usepackage{mathtools} % Mathe
\usepackage{amsfonts} % Mathesymbole
\usepackage{calc}

\newcommand{\ueq}[1][]{%
  \if\relax\detokenize{#1}\relax
    \sbox0{$\underbrace{=}_{}$}%
    \mathrel{\mathmakebox[\wd0]{=}}
  \else
    \mathrel{\underbrace{=}_{\mathclap{#1}}}
  \fi}

\begin{document}

\begin{align*}
    D(D^TD)^{-1} &\ueq[D=B(B^TB)^{-1}] B(B^TB)^{-1}((B(B^TB)^{-1})^TB(B^TB)^{-1})^{-1} \\
      &\ueq B(B^TB)^{-1}(((B^TB)^{-1})^TB^TB(B^TB)^{-1})^{-1}
\end{align*}

\end{document}

So, if \ueq has no optional argument it produces an equal sign as wide as an underbraced one, otherwise it adds the underbrace.

enter image description here

share|improve this answer

The traditional way to annotate steps in a derivation is with labels. So you could instead do

\documentclass{report}

\usepackage{amsmath} % Mathe
\usepackage{mathtools} % Mathe
\usepackage{amsfonts} % Mathesymbole

\begin{document}
\begin{align}
    D(D^TD)^{-1} 
      &= B(B^TB)^{-1}((B(B^TB)^{-1})^TB(B^TB)^{-1})^{-1}  \label{subst}\\
      &= B(B^TB)^{-1}(((B^TB)^{-1})^TB^TB(B^TB)^{-1})^{-1} \label{trans}
\end{align}
Here \eqref{subst} is due to the substitution $D=B(B^TB)^{-1}$, and \eqref{trans} is by the transpose law for matrix multiplication.
\end{document}

sample code output

share|improve this answer

This seems to work

\(
\arraycolsep 0pt
\begin{array}{lcl}
    D(D^TD)^{-1} &\underbrace{=}_{\mathclap{D=B(B^TB)^{-1}}}
         & B(B^TB)^{-1}((B(B^TB)^{-1})^TB(B^TB)^{-1})^{-1} \\
      &= & B(B^TB)^{-1}(((B^TB)^{-1})^TB^TB(B^TB)^{-1})^{-1}
\end{array}
\)

enter image description here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.