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:
\documentclass[]{article}
\usepackage{mathtools}
\begin{document}
\[
\left(
\begin{array}{ccccc}
1 \\
& 1 & & \text{\huge0}\\
& & 1 \\
& \text{\huge0} & & 1 \\
& & & & 1
\end{array}
\right)
\]
\end{document}
or \makebox(0,0){\text{\huge0}}
if you want to have the same line spacing.
\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
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}\]
\ddots
and \cdots
instead? - user2478
\ddots
across lines & columns of the matrix and, anyway, these \ddots
never join up properly. - rcabane
\cdots
and \ddots
give a non-zero width. - rcabane
With {pNiceMatrix}
of nicematrix
.
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
$\begin{pNiceMatrix}[left-margin]
\times & \times & \times & \times & \times \\
& \times & \times & \times & \times \\
& & \times & \times & \times \\
\Block{2-2}<\Huge>{0}
& & & \times & \times \\
& & & & \times \\
\CodeAfter
\tikz \draw (2-|1) -| (3-|2) -| (4-|3) -| (5-|4) -| (6-|5) ;
\end{pNiceMatrix}$
\end{document}
\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\XSolid
has been defined somewhere but I have no idea where exactly. Oh I think the package that defines\XSolid
is TikZ - SkyWalker\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