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 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}}
\begin{equation}
  \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)
\end{equation}

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|}{}}
\begin{equation}
  \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)
\end{equation}

which produces this:

enter image description here

share|improve this question
1  
\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
1  
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
add comment

2 Answers

up vote 18 down vote accepted
\[
\left(
 \begin{array}{ccccc}
   1\\
    & 1 & & \text{\huge0}\\
    & & 1\\
    & \text{\huge0} & & 1\\
    & & & & 1
 \end{array}
\right)
\]

enter image description here

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

share|improve this answer
    
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
add comment

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
\advance\dotcnt 1\repeat}\hss}\setbox2=\vtop{\box1}\ht2=#4\box2}

And an exemple (using amsmath, of course) :

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

\Ddot in action

share|improve this answer
1  
why don't you use \ddots and \cdots instead? –  Herbert Aug 30 '12 at 21:36
1  
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
    
Is there also a non-ugly way to do this? –  Christian Nov 28 '13 at 20:39
    
I don't know ! Do you have any ideas ? –  rcabane Dec 24 '13 at 13:01
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.