# Upper triangular matrix with big zero in lower triangular?

I can represent an upper trapezoidal matrix say as shown below. I would like to replace all those zeros with a single big zero that spans across the low triangle rows and columns, and maybe also add a delimiter along the diagonal that clearly shows it is an upper diagonal matrix. How can I do that?

\newcommand\x{\XSolid}
%\newcommand\x{\ding{53}}
$$\left( \begin{array}{*5{c}} \x & \x & \x & \x & \x \\ 0 & \x & \x & \x & \x \\ 0 & 0 & \x & \x & \x \\ 0 & 0 & 0 & \x & \x \\ 0 & 0 & 0 & 0 & \x \\ \end{array}\right)$$


Separate question ... why the \x command I define outputs # rather than the intended cross symbol? It outputs the same symbol # no matter if I use \XSolid or \ding{53}

UPDATE: taking the answer as input, I ended doing this:

\newcommand\x{\times}
\newcommand\bigzero{\makebox(0,0){\text{\huge0}}}
\newcommand*{\bord}{\multicolumn{1}{c|}{}}
$$\left( \begin{array}{ccccc} \x & \x & \x & \x & \x \\ \cline{1-1} \bord & \x & \x & \x & \x \\ \cline{2-2} & \bord & \x & \x & \x \\ \cline{3-3} & \bigzero & \bord & \x & \x \\ \cline{4-4} & & & \bord & \x \\ \cline{5-5} \end{array}\right)$$


which produces this:

-
\documentclass{article}\begin{document}\XSolid\end{document} results in ! Undefined control sequence., thus I assume you are loading a package to define \XSolid? Which package/which version, please? –  Stephen Aug 30 '12 at 15:17
good question! I have no idea :D it is a large report and I have been adding packages as needed. As I understand \XSolid has been defined somewhere but I have no idea where exactly. Oh I think the package that defines \XSolid is TikZ –  Giovanni Azua Aug 30 '12 at 15:22
You could place a \show\XSolid in the preamble. When it is still undefined, it will print to the log "> \XSolid=undefined. ", when it is defined it will give the definition, and if the definition is changed (from X to #), it will give a changed definition. For a lot of packages this might be a lot of work to find which package (re-)defines it... –  Stephen Aug 30 '12 at 15:29

$\left( \begin{array}{ccccc} 1\\ & 1 & & \text{\huge0}\\ & & 1\\ & \text{\huge0} & & 1\\ & & & & 1 \end{array} \right)$


or \makebox(0,0){\text{\huge0}} if you want to have the same line spacing.

-
perfect! good catch about the line spacing .. I was getting nervous about it :D then saw your timely edit :) perfect! –  Giovanni Azua Aug 30 '12 at 15:24
Instead of \makebox(0,0){...} You can use \smash{\text{\huge 0}}. It also easier to insert in LyX which doesn't seem to support the \makebox(...) (width,height) option. –  Guy Nov 8 '14 at 20:13

Just in case : you might need repeated dots across the diagonal. Here is a ugly way to do so.

\newcount\dotcnt\newdimen\deltay
\def\Ddot#1#2(#3,#4,#5,#6){\deltay=#6\setbox1=\hbox to0pt{\smash{\dotcnt=1
\kern#3\loop\raise\dotcnt\deltay\hbox to0pt{\hss#2}\kern#5\ifnum\dotcnt<#1

$\begin{pmatrix} 1\Ddot{12}.(6pt,-2pt,6pt,-5pt)&1\Ddot8.(9pt,2pt,6pt,0pt)&\quad&\quad&1\\ &&&&\\ &&&&\\ &&&&\\ &\mbox{\Huge 0}&&&\\ &&&&1\\ \end{pmatrix}$

why don't you use \ddots and \cdots instead? –  Herbert Aug 30 '12 at 21:36
It is really painful to adjust various \ddots across lines & columns of the matrix and, anyway, these \ddots never join up properly. –  rcabane Sep 1 '12 at 8:04
One more note : the width of the various elements has some influence onto the column widths and line heights. The suggested macro gives a zero width & height to the repeated dots, while \cdots and \ddots give a non-zero width. –  rcabane Sep 9 '12 at 12:44