我想并排显示两个 12x12 矩阵。这是一个过渡,所以应该有一个箭头在中间在它们之间。我必须使用tikz
,因为我想突出显示在此转换中发生变化的一个条目。
我的问题是:好的将这两个矩阵并排放置的方式,箭头在中间,就是这样不是是否需要使用 $\quad$ 和其他绝对间距参数进行复杂的尝试和错误过程?(到目前为止我发现的只是这,并且他们也使用了绝对间距)。
我的代码:
\documentclass{article}
\usepackage{amsmath}
\setcounter{MaxMatrixCols}{12}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{tikz}
\usetikzlibrary{matrix}
\newcommand{\mybox}[3]{
\draw[color=red] (#1-#2-#3.north west) -- (#1-#2-#3.north east)--(#1-#2-#3.south east) -- (#1-#2-#3.south west)-- (#1-#2-#3.north west);
}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}{.4\textwidth}
\begin{tikzpicture}
\matrix(m)[matrix of math nodes,left delimiter=(,right delimiter=)]
{
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 &1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 &1 \\
0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 &1 \\
0 & 0 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 1 & 0 &0 \\
0 & 1 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 &0 \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 0 & 0 & 1 &0 \\
0 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 1 & 0 &0 \\
1 & 1 & 0 & 1 & 1 & 0 & 1 & 1 & 1 & 0 & 0 &0 \\
};
\mybox{m}{10}{8}
\end{tikzpicture}
\end{subfigure}
$\longrightarrow$
\begin{subfigure}{.4\textwidth}
\begin{tikzpicture}
\matrix(n)[matrix of math nodes,left delimiter=(,right delimiter=)]
{
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 &1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 &1 \\
0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 &1 \\
0 & 0 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 1 & 0 &0 \\
0 & 1 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 &0 \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & 0 & 0 & 0 & 1 &0 \\
0 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 1 & 0 &0 \\
1 & 1 & 0 & 1 & 1 & 0 & 1 & 1 & 1 & 0 & 0 &0 \\
};
\mybox{n}{10}{8}
\end{tikzpicture}
\end{subfigure}
\caption{Just the arrow}
\end{figure}
\begin{figure}
\centering
\begin{subfigure}{.4\textwidth}
\begin{tikzpicture}
\matrix(m)[matrix of math nodes,left delimiter=(,right delimiter=)]
{
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 &1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 &1 \\
0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 &1 \\
0 & 0 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 1 & 0 &0 \\
0 & 1 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 &0 \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 0 & 0 & 1 &0 \\
0 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 1 & 0 &0 \\
1 & 1 & 0 & 1 & 1 & 0 & 1 & 1 & 1 & 0 & 0 &0 \\
};
\mybox{m}{10}{8}
\end{tikzpicture}
\end{subfigure}
$\quad \qquad\longrightarrow\,$
\begin{subfigure}{.4\textwidth}
\begin{tikzpicture}
\matrix(n)[matrix of math nodes,left delimiter=(,right delimiter=)]
{
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 &1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 &1 \\
0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 &1 \\
0 & 0 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 1 & 0 &0 \\
0 & 1 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 &0 \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & 0 & 0 & 0 & 1 &0 \\
0 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 1 & 0 &0 \\
1 & 1 & 0 & 1 & 1 & 0 & 1 & 1 & 1 & 0 & 0 &0 \\
};
\mybox{n}{10}{8}
\end{tikzpicture}
\end{subfigure}
\caption{nasty fix with absolut spaces}
\end{figure}
\end{document}
答案1
\subcaptionbox
如果您想有子字幕,可以使用,或者什么都不用。
我声明,\small
为了使页面适合大矩阵,您的文档可能不需要它。
\documentclass{article}
\usepackage{amsmath}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usepackage{lipsum}
\newcommand{\mybox}[3]{
\draw[color=red] (#1-#2-#3.north west) -- (#1-#2-#3.north east)--(#1-#2-#3.south east) -- (#1-#2-#3.south west)-- (#1-#2-#3.north west);
}
\begin{document}
\lipsum[1]
\begin{figure}[htp]
\centering\small
\subcaptionbox{Start}{%
\begin{tikzpicture}[ampersand replacement=\&]
\matrix(m)[matrix of math nodes,left delimiter=(,right delimiter=)]
{
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 1 \& 1 \& 1 \& 1 \& 0 \&1 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 1 \& 0 \& 0 \& 1 \&1 \\
0 \& 0 \& 1 \& 0 \& 0 \& 1 \& 0 \& 0 \& 1 \& 0 \& 0 \&1 \\
0 \& 0 \& 1 \& 0 \& 1 \& 0 \& 0 \& 0 \& 0 \& 1 \& 0 \&0 \\
0 \& 1 \& 1 \& 0 \& 0 \& 0 \& 1 \& 0 \& 0 \& 0 \& 0 \&0 \\
1 \& 1 \& 1 \& 1 \& 1 \& 1 \& 1 \& 1 \& 0 \& 0 \& 1 \&0 \\
0 \& 1 \& 0 \& 0 \& 0 \& 1 \& 0 \& 0 \& 0 \& 1 \& 0 \&0 \\
1 \& 1 \& 0 \& 1 \& 1 \& 0 \& 1 \& 1 \& 1 \& 0 \& 0 \&0 \\
};
\mybox{m}{10}{8}
\end{tikzpicture}%
}
\raisebox{6.5\baselineskip}{$\longrightarrow$}
\subcaptionbox{End}{%
\begin{tikzpicture}[ampersand replacement=\&]
\matrix(n)[matrix of math nodes,left delimiter=(,right delimiter=)]
{
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 1 \& 1 \& 1 \& 1 \& 0 \&1 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 1 \& 0 \& 0 \& 1 \&1 \\
0 \& 0 \& 1 \& 0 \& 0 \& 1 \& 0 \& 0 \& 1 \& 0 \& 0 \&1 \\
0 \& 0 \& 1 \& 0 \& 1 \& 0 \& 0 \& 0 \& 0 \& 1 \& 0 \&0 \\
0 \& 1 \& 1 \& 0 \& 0 \& 0 \& 1 \& 0 \& 0 \& 0 \& 0 \&0 \\
1 \& 1 \& 1 \& 1 \& 1 \& 1 \& 1 \& 0 \& 0 \& 0 \& 1 \&0 \\
0 \& 1 \& 0 \& 0 \& 0 \& 1 \& 0 \& 0 \& 0 \& 1 \& 0 \&0 \\
1 \& 1 \& 0 \& 1 \& 1 \& 0 \& 1 \& 1 \& 1 \& 0 \& 0 \&0 \\
};
\mybox{n}{10}{8}
\end{tikzpicture}%
}
\caption{Just the arrow}
\end{figure}
\begin{figure}[htp]
\centering\small
\begin{tikzpicture}[ampersand replacement=\&]
\matrix(m)[matrix of math nodes,left delimiter=(,right delimiter=)]
{
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 1 \& 1 \& 1 \& 1 \& 0 \&1 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 1 \& 0 \& 0 \& 1 \&1 \\
0 \& 0 \& 1 \& 0 \& 0 \& 1 \& 0 \& 0 \& 1 \& 0 \& 0 \&1 \\
0 \& 0 \& 1 \& 0 \& 1 \& 0 \& 0 \& 0 \& 0 \& 1 \& 0 \&0 \\
0 \& 1 \& 1 \& 0 \& 0 \& 0 \& 1 \& 0 \& 0 \& 0 \& 0 \&0 \\
1 \& 1 \& 1 \& 1 \& 1 \& 1 \& 1 \& 1 \& 0 \& 0 \& 1 \&0 \\
0 \& 1 \& 0 \& 0 \& 0 \& 1 \& 0 \& 0 \& 0 \& 1 \& 0 \&0 \\
1 \& 1 \& 0 \& 1 \& 1 \& 0 \& 1 \& 1 \& 1 \& 0 \& 0 \&0 \\
};
\mybox{m}{10}{8}
\end{tikzpicture}
\raisebox{6.5\baselineskip}{$\longrightarrow$}
\begin{tikzpicture}[ampersand replacement=\&]
\matrix(n)[matrix of math nodes,left delimiter=(,right delimiter=)]
{
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \&0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 1 \& 1 \& 1 \& 1 \& 0 \&1 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 1 \& 0 \& 0 \& 1 \&1 \\
0 \& 0 \& 1 \& 0 \& 0 \& 1 \& 0 \& 0 \& 1 \& 0 \& 0 \&1 \\
0 \& 0 \& 1 \& 0 \& 1 \& 0 \& 0 \& 0 \& 0 \& 1 \& 0 \&0 \\
0 \& 1 \& 1 \& 0 \& 0 \& 0 \& 1 \& 0 \& 0 \& 0 \& 0 \&0 \\
1 \& 1 \& 1 \& 1 \& 1 \& 1 \& 1 \& 0 \& 0 \& 0 \& 1 \&0 \\
0 \& 1 \& 0 \& 0 \& 0 \& 1 \& 0 \& 0 \& 0 \& 1 \& 0 \&0 \\
1 \& 1 \& 0 \& 1 \& 1 \& 0 \& 1 \& 1 \& 1 \& 0 \& 0 \&0 \\
};
\mybox{n}{10}{8}
\end{tikzpicture}
\caption{Just the arrow}
\end{figure}
\end{document}
答案2
您的问题是矩阵比环境subfigure
( .4\textwidth
) 指定的宽度要宽,因此它们会伸出右边缘。这会导致与箭头重叠。
inner sep
通过修改节点的字体大小和以及column sep
矩阵的来减小矩阵的大小row sep
。我还增加了 sa 位的宽度subfigure
。
\documentclass{article}
\usepackage{amsmath}
\setcounter{MaxMatrixCols}{12}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{tikz}
\usetikzlibrary{matrix}
\newcommand{\mybox}[3]{
\draw[color=red] (#1-#2-#3.north west) -- (#1-#2-#3.north east)--(#1-#2-#3.south east) -- (#1-#2-#3.south west)-- (#1-#2-#3.north west);
}
\tikzset{pmatrix/.style={
matrix of math nodes,outer sep=0pt,
nodes={
% font={\small},
inner sep=2.5pt
},
column sep=0pt,row sep=0pt,
left delimiter=(,right delimiter=)}
}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}{.45\textwidth}
\centering
\begin{tikzpicture}
\matrix(m)[pmatrix]
{
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 &1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 &1 \\
0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 &1 \\
0 & 0 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 1 & 0 &0 \\
0 & 1 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 &0 \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 0 & 0 & 1 &0 \\
0 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 1 & 0 &0 \\
1 & 1 & 0 & 1 & 1 & 0 & 1 & 1 & 1 & 0 & 0 &0 \\
};
\mybox{m}{10}{8}
\end{tikzpicture}
\end{subfigure}
$\longrightarrow$
\begin{subfigure}{.45\textwidth}
\centering
\begin{tikzpicture}
\matrix(n)[pmatrix]
{
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 &1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 &1 \\
0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 &1 \\
0 & 0 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 1 & 0 &0 \\
0 & 1 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 &0 \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & 0 & 0 & 0 & 1 &0 \\
0 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 1 & 0 &0 \\
1 & 1 & 0 & 1 & 1 & 0 & 1 & 1 & 1 & 0 & 0 &0 \\
};
\mybox{n}{10}{8}
\end{tikzpicture}
\end{subfigure}
\caption{Just the arrow}
\end{figure}
\end{document}
答案3
也许我错过了什么,但你不需要 TikZ:简单\fcolorbox
就可以了:
\documentclass{article}
\usepackage{mathtools}
\setcounter{MaxMatrixCols}{12}
\usepackage{xcolor}
\begin{document}
\[
\begin{pmatrix}
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 &1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 &1 \\
0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 &1 \\
0 & 0 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 1 & 0 &0 \\
0 & 1 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 &0 \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & \mathclap{\fcolorbox{red}{white}{\,1\,}} & 0 & 0 & 1 &0 \\
0 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 1 & 0 &0 \\
1 & 1 & 0 & 1 & 1 & 0 & 1 & 1 & 1 & 0 & 0 &0 \
\end{pmatrix}
\longrightarrow
\begin{pmatrix}
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &0 \\
0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 &1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 &1 \\
0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 & 1 & 0 & 0 &1 \\
0 & 0 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 1 & 0 &0 \\
0 & 1 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 &0 \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & \mathclap{\fcolorbox{red}{white}{\,0\,}} & 0 & 0 & 1 &0 \\
0 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 1 & 0 &0 \\
1 & 1 & 0 & 1 & 1 & 0 & 1 & 1 & 1 & 0 & 0 &0
\end{pmatrix}
\]
\end{document}