我正在尝试以可读的方式初始化一个 16x16 矩阵。它是图的邻接矩阵,因此它填充了 1 和 0,我省略了 0 以使其更清晰。
我的问题:以以下方式启动矩阵:
\documentclass{article}
\usepackage{blkarray}
\begin{document}
\begin{blockarray}{ccccccccccccccccc}
& (1,1) & (1,2)& (1,3) & (1,4) & (2,1) & (2,2) & (2,3) & (2,4) & (3,1) & (3,2) & (3,3) & (3,4) & (4,1) & (4,2) & (4,3) & (4,4) \\
\begin{block}{c(cccccccccccccccc)}
(1,1)& & & & & 1 &&&&&&1&1&&&1&1 \\
(1,2)& & & & 1 & &&&&&&1&1&&&1&1\\
(1,3)& & & & & &&&&&&&&&&&\\
(1,4)& & & & & &&&&&&&&&&&\\
(2,1)& & 1 & & & &&&&&&1&1&&&1&1\\
(2,2)& 1 & & & & &&&&&&1&1&&&1&1\\
(2,3)& & & & & &&&&&&&&&&&\\
(2,4)& & & & & &&&&&&&&&&&\\
(3,1)& & & & & &&&&&&&&&&&\\
(3,2)& & & & & &&&&&&&&&&&\\
(3,3)& 1 & 1 & & & 1 &1&&&&&&&&&&1\\
(3,4)& 1 & 1 & & & 1 &1&&&&&&&&&1&\\
(4,1)& & & & & &&&&&&&&&&&\\
(4,2)& & & & & &&&&&&&&&&&\\
(4,3)& 1 & 1 & & & 1 &1&&&&&&1&&&&\\
(4,4)& 1 & 1 & & & 1 &1&&&&&1&&&&&\\
\end{block}
\end{blockarray}
\end{document}
我如何以适当的方式使矩阵居中,以使其完全可见?
我想试试哪种方式最适合显示 16x16 矩阵。由于矩阵大小以及我想突出显示 4x4 块,我也尝试使用表格,但遇到了同样的问题:
\documentclass{article} \usepackage{array} \begin{document}
> \makeatletter \newcommand{\thickhline}{%
> \noalign {\ifnum 0=`}\fi \hrule height 1pt
> \futurelet \reserved@a \@xhline } \newcolumntype{"}{@{\hskip\tabcolsep\vrule width 1pt\hskip\tabcolsep}}
> \makeatother
>
> \begin{tabular}{c"c|c|c|c"c|c|c|c"c|c|c|c"c|c|c|c|} • & (1,1) & (1,2)
> & (1,3) & (1,4) & (2,1) & (2,2) & (2,3) & (2,4) & (3,1) & (3,2) &
> (3,3) & (3,4) & (4,1) & (4,2) & (4,3) & (4,4) \\ \thickhline (1,1) &
> • & • & • & • & • & • & • & • & • & • & • & • & • & • & • & • \\
> \hline (1,2) & • & • & • & • & • & • & • & • & • & • & • & • & • & •
> & • & • \\ \hline (1,3) & • & • & • & • & • & • & • & • & • & • & •
> & • & • & • & • & • \\ \hline (1,4) & • & • & • & • & • & • & • & •
> & • & • & • & • & • & • & • & • \\ \thickhline (2,1) & • & • & • & •
> & • & • & • & • & • & • & • & • & • & • & • & • \\ \hline (2,2) & •
> & • & • & • & • & • & • & • & • & • & • & • & • & • & • & • \\ \hline
> (2,3) & • & • & • & • & • & • & • & • & • & • & • & • & • & • & • & •
> \\ \hline (2,4) & • & • & • & • & • & • & • & • & • & • & • & • & •
> & • & • & • \\ \thickhline (3,1) & • & • & • & • & • & • & • & • & •
> & • & • & • & • & • & • & • \\ \hline (3,2) & • & • & • & • & • & •
> & • & • & • & • & • & • & • & • & • & • \\ \hline (3,3) & • & • & •
> & • & • & • & • & • & • & • & • & • & • & • & • & • \\ \hline (3,4)
> & • & • & • & • & • & • & • & • & • & • & • & • & • & • & • & • \\
> \thickhline (4,1) & • & • & • & • & • & • & • & • & • & • & • & • & •
> & • & • & • \\ \hline (4,2) & • & • & • & • & • & • & • & • & • & •
> & • & • & • & • & • & • \\ \hline (4,3) & • & • & • & • & • & • & •
> & • & • & • & • & • & • & • & • & • \\ \hline (4,4) & • & • & • & •
> & • & • & • & • & • & • & • & • & • & • & • & • \\ \hline
> \end{tabular} \end{document}
您能给我一个解决方案吗?我也非常感谢有关显示大型矩阵的其他建议。
答案1
这是一个临时建议:旋转列标签。
\documentclass{article}
\usepackage{blkarray}
\usepackage{geometry} % set page and text block parameters
\usepackage{graphicx} % for "\rotatebox" macro
\newcommand\rb[1]{\rotatebox{90}{#1}} % shortcut macro
\begin{document}
\begin{center}
\begin{blockarray}{*{17}{c}}
& \rb{(1,1)} & \rb{(1,2)} & \rb{(1,3)} & \rb{(1,4)}
& \rb{(2,1)} & \rb{(2,2)} & \rb{(2,3)} & \rb{(2,4)}
& \rb{(3,1)} & \rb{(3,2)} & \rb{(3,3)} & \rb{(3,4)}
& \rb{(4,1)} & \rb{(4,2)} & \rb{(4,3)} & \rb{(4,4)} \\
\begin{block}{c(*{16}{c})}
(1,1)& & & & & 1 &&&&&&1&1&&&1&1 \\
(1,2)& & & & 1 & &&&&&&1&1&&&1&1\\
(1,3)& & & & & &&&&&&&&&&&\\
(1,4)& & & & & &&&&&&&&&&&\\
(2,1)& & 1 & & & &&&&&&1&1&&&1&1\\
(2,2)& 1 & & & & &&&&&&1&1&&&1&1\\
(2,3)& & & & & &&&&&&&&&&&\\
(2,4)& & & & & &&&&&&&&&&&\\
(3,1)& & & & & &&&&&&&&&&&\\
(3,2)& & & & & &&&&&&&&&&&\\
(3,3)& 1 & 1 & & & 1 &1&&&&&&&&&&1\\
(3,4)& 1 & 1 & & & 1 &1&&&&&&&&&1&\\
(4,1)& & & & & &&&&&&&&&&&\\
(4,2)& & & & & &&&&&&&&&&&\\
(4,3)& 1 & 1 & & & 1 &1&&&&&&1&&&&\\
(4,4)& 1 & 1 & & & 1 &1&&&&&1&&&&&\\
\end{block}
\end{blockarray}
\end{center}
\end{document}
更新:只是为了好玩:如果我必须绘制这个方案,我可能会使用这个代码。
\documentclass{article}
\usepackage{blkarray}
\usepackage{geometry} % set page and text block parameters
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\newcommand{\tikzstrut}[1]{%
\tikz[remember picture,baseline=(#1.base),inner sep=0pt] \node (#1) {\strut};%
}
\begin{document}
\begin{center}
\begin{blockarray}{*{17}{c}}
& & & & & &&&&&&&&&&& \\
&\tikzstrut{11}1 & 2 & 3 & 4\tikzstrut{14} &\tikzstrut{21}1 & 2 & 3 &
4\tikzstrut{24}
&\tikzstrut{31}1 & 2 & 3 & 4\tikzstrut{34} &\tikzstrut{41}1 & 2 & 3 &
4\tikzstrut{44}\\
\begin{block}{c(*{16}{c})}
(1,1)& & & & & 1 &&&&&&1&1&&&1&1 \\
(1,2)& & & & 1 & &&&&&&1&1&&&1&1\\
(1,3)& & & & & &&&&&&&&&&&\\
(1,4)& & & & & &&&&&&&&&&&\\
(2,1)& & 1 & & & &&&&&&1&1&&&1&1\\
(2,2)& 1 & & & & &&&&&&1&1&&&1&1\\
(2,3)& & & & & &&&&&&&&&&&\\
(2,4)& & & & & &&&&&&&&&&&\\
(3,1)& & & & & &&&&&&&&&&&\\
(3,2)& & & & & &&&&&&&&&&&\\
(3,3)& 1 & 1 & & & 1 &1&&&&&&&&&&1\\
(3,4)& 1 & 1 & & & 1 &1&&&&&&&&&1&\\
(4,1)& & & & & &&&&&&&&&&&\\
(4,2)& & & & & &&&&&&&&&&&\\
(4,3)& 1 & 1 & & & 1 &1&&&&&&1&&&&\\
(4,4)& 1 & 1 & & & 1 &1&&&&&1&&&&&\\
\end{block}
\end{blockarray}\tikz[overlay,remember picture]{
\foreach \i in {1,...,4} \draw[thick,decorate,decoration={brace}] (\i 1.north) -- (\i 4.north)
node[midway,above]{$(\i,\cdot)$};
}
\end{center}
\end{document}
答案2
呈现\scriptsize
并缩小标题列之间的间隙。
\documentclass{article}
\usepackage{blkarray,lipsum}
\begin{document}
\lipsum[3]\medskip
\centerline{\def\!{\kern-5pt}\scriptsize
\begin{blockarray}{ccccccccccccccccc}
& \!(1,1)\! & \!(1,2)\!& \!(1,3)\! & \!(1,4)\! & \!(2,1)\! & \!(2,2)\! & \!(2,3)\! & \!(2,4)\! & \!(3,1)\! & \!(3,2)\! & \!(3,3)\! & \!(3,4)\! & \!(4,1)\! & \!(4,2)\! & \!(4,3)\! & \!(4,4)\! \\
\begin{block}{c(cccccccccccccccc)}
(1,1)& & & & & 1 &&&&&&1&1&&&1&1 \\
(1,2)& & & & 1 & &&&&&&1&1&&&1&1\\
(1,3)& & & & & &&&&&&&&&&&\\
(1,4)& & & & & &&&&&&&&&&&\\
(2,1)& & 1 & & & &&&&&&1&1&&&1&1\\
(2,2)& 1 & & & & &&&&&&1&1&&&1&1\\
(2,3)& & & & & &&&&&&&&&&&\\
(2,4)& & & & & &&&&&&&&&&&\\
(3,1)& & & & & &&&&&&&&&&&\\
(3,2)& & & & & &&&&&&&&&&&\\
(3,3)& 1 & 1 & & & 1 &1&&&&&&&&&&1\\
(3,4)& 1 & 1 & & & 1 &1&&&&&&&&&1&\\
(4,1)& & & & & &&&&&&&&&&&\\
(4,2)& & & & & &&&&&&&&&&&\\
(4,3)& 1 & 1 & & & 1 &1&&&&&&1&&&&\\
(4,4)& 1 & 1 & & & 1 &1&&&&&1&&&&&\\
\end{block}
\end{blockarray}}
\end{document}
答案3
我认为您的标题栏没有必要向读者提供有意义的信息。我认为基于分类的呈现方式更合适。
由于您有二进制数据,我甚至会跳过 0,1 并在条目中放置一个项目符号。1 不会添加额外的信息,它只是说它已满,因此您可以通过绘制完整的单元格来进行视觉表示,使其像填字游戏一样,但我懒了。
\documentclass{article}
\usepackage{multirow}
\begin{document}
\begin{tabular}{c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c}
\multicolumn{2}{c|}{}&\multicolumn{4}{c|}{1}&\multicolumn{4}{c|}{2}&\multicolumn{4}{c|}{3}&\multicolumn{4}{c|}{4}\\ \cline{3-18}
\multicolumn{2}{c|}{}&1&2&3&4&1&2&3&4&1&2&3&4&1&2&3&4\\ \hline
\multirow{4}{*}{1}& 1& & & & & 1 &&&&&&1&1&&&1&1 \\\cline{2-18}
& 2& & & & 1 & &&&&&&1&1&&&1&1\\ \cline{2-18}
& 3& & & & & &&&&&&&&&&&\\ \cline{2-18}
& 4& & & & & &&&&&&&&&&&\\ \hline
\multirow{4}{*}{2}& 1& & 1 & & & &&&&&&1&1&&&1&1\\ \cline{2-18}
& 2&1& & & & &&&&&&1&1&&&1&1\\ \cline{2-18}
& 3& & & & & &&&&&&&&&&&\\ \cline{2-18}
& 4& & & & & &&&&&&&&&&&\\ \hline
\multirow{4}{*}{3}& 1& & & & & &&&&&&&&&&&\\ \cline{2-18}
& 2& & & & & &&&&&&&&&&&\\ \cline{2-18}
& 3&1& 1 & & & 1 &1&&&&&&&&&&1\\ \cline{2-18}
& 4&1& 1 & & & 1 &1&&&&&&&&&1&\\ \hline
\multirow{4}{*}{4}& 1& & & & & &&&&&&&&&&&\\ \cline{2-18}
& 2& & & & & &&&&&&&&&&&\\ \cline{2-18}
& 3&1& 1 & & & 1 &1&&&&&&1&&&&\\ \cline{2-18}
& 4&1& 1 & & & 1 &1&&&&&1&&&&& \\\hline
\end{tabular}
\end{document}