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.

The following matrix equation looks great:

\begin{align*}
\overset{A}{\left[\begin{matrix}t_{1}&1\\ 
\vdots&\vdots\\
t_{n}&1
\end{matrix}\right]}
\overset{x}{\left[\begin{matrix}
x_{1}\\x_{2}
\end{matrix}\right]}
&=
\overset{b}{\left[\begin{matrix}
b_{1}\\ \vdots \\ b_{n}
\end{matrix}\right]}
\end{align*}

Except I am accustomed to having the tops of my matrices aligned when I write on scratch paper. How can I accomplish this in LaTeX?

share|improve this question
add comment

2 Answers

up vote 7 down vote accepted

A note before, amsmath provides special *matrix environments:

  • pmatrix for ( · )
  • bmatrix for [ · ]
  • Bmatrix for { · }
  • vmatrix for | · |
  • Vmatrix for || · ||

Solution 1

I used the \vphantom macro that resizes the box inside the \overset to same height like the other parts.

Code

\documentclass{article}
\usepackage{amsmath}
\newcommand*\biggestpart{}
\begin{document}
\renewcommand*\biggestpart{
  \begin{bmatrix}
    t_1    & 1 \\
    \vdots & \vdots \\
    t_n    & 1
  \end{bmatrix}
}
\begin{align*}
\overset{A}{\biggestpart}
\overset{x}{
  \vphantom{\biggestpart}
  \begin{bmatrix}
    x_1 \\ x_2
  \end{bmatrix}
}
&=
\overset{b}{
  \begin{bmatrix}
    b_1 \\ \vdots \\ b_n
  \end{bmatrix}
}
\end{align*}
\end{document}

Output

enter image description here

Solution 2

As the second row in the bigger matrices are not of the same height of x_2 the \vphantom command is used again (try it without to see the effect or replace \vdots with “normal” math stuff like x_0).

Code

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
\overset{A}{
  \begin{bmatrix}
    t_1    & 1 \\
    \vdots & \vdots \\
    t_n    & 1
  \end{bmatrix}}
\overset{x}{
\begin{array}{@{}c@{}}{
  \begin{bmatrix}
    x_1 \\ x_2 \vphantom{\vdots}
  \end{bmatrix}}\\\\
\end{array}
}
&=
\overset{b}{
  \begin{bmatrix}
    b_1 \\ \vdots \\ b_n
  \end{bmatrix}
}
\end{align*}
\end{document}

Output

enter image description here

share|improve this answer
    
That's it exactly! Thank you. –  Roci Oct 17 '12 at 15:45
add comment

Here is a sans-amsmath version of Qrrbrbirlbel's answer:

enter image description here

\documentclass{article}
\newcommand{\matlabel}[2]{% \matlabel{<label>}{<stuff>}
  \begin{array}{@{}c@{}} \mbox{\small$#1$} \\ #2 \end{array}
}
\begin{document}
\[
  \matlabel{A}{\left[\begin{array}{@{}cc@{}}
      t_1 & 1 \\
      \vdots & \vdots \\
      t_n & 1
    \end{array}\right]}
  \matlabel{x}{\left[\begin{array}{@{}c@{}}
      x_1 \\ \vphantom\vdots x_2 \\
    \end{array}\right] \\
    \mathstrut}\mathrel{\raisebox{-.5\normalbaselineskip}{=}}
  \matlabel{b}{\left[\begin{array}{@{}c@{}}
      b_1 \\ \vdots \\ b_n
    \end{array}\right]}
\]
\end{document}

The only major difference is the setting of the matrix label as an element in an "vertical array", rather than an "upper limit in a math operator." As a consequence, the vertical alignment with respect to the mathematical axis has to be adjusted... using \mathrel{\raisebox{-.5\normalbaselineskip}{=}}.

share|improve this answer
add comment

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.