A Matrix with labels, dashed lines
Perhaps the following is more suitable:
\documentclass{article}
\usepackage{arydshln,leftidx,mathtools}
\begin{document}
\[
\setlength{\dashlinegap}{2pt}
\leftidx{_{m-r}^{\phantom{m-r}\llap{$\scriptstyle r$}}}{\left( \begin{array}{c:c}
\smash{\overset{r}{B}} & \mathclap{\smash{\overset{n-r}{C}}} \\
\hdashline
D & E
\end{array} \right)}{}
\]
\end{document}
The gaps between the dashes of \hdashline
has been shortened from 4pt
down to 2pt
. mathtools
provides \mathclap
(a zero-width box that is centred) and also loads amsmath
, which provides \overset
(a math accent-type macro). I've \smash
ed the elements in the first row to not let the array
delimiters over the height of B
or C
.
leftidx
is a super-small package that adds left indexing functionality. See Superscripts before a letter in math.