删除 TiKZ 矩阵的左/右边距

删除 TiKZ 矩阵的左/右边距

考虑下面的 MWE。这将生成一个具有 2 个重叠行的矩阵(这就是我想要的),但是,它也会在左侧和右侧创建额外的空白(在下面的屏幕截图中,我将其标记为红色)。

如何以最小的 MWE 更改删除左/右“红色”空白?那么如何使左/右行为与上/下行为相同?

在此处输入图片描述

平均能量损失

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\setlength{\fboxsep}{0pt}
\fbox{
\centering
\begin{tikzpicture}[ampersand replacement=\&,%
grayspacer/.style={%
  draw=none,%
  fill=gray,%
  inner sep=0pt,%
  },%
matstyle/.style={%
  matrix of nodes,%
  nodes={%
    draw=black,%
    rectangle%
    ,minimum size=0.5cm,%
    fill=black%
    },%
  nodes in empty cells,%
  column sep=0.55cm,%
  row sep=-5pt,
  inner sep=0pt%
  },%
>=latex%
]%
\matrix[matstyle] (mat)
{
  \& |[grayspacer]|   \& |[grayspacer]| \& \\
 |[grayspacer] | \& \& \& |[grayspacer]| \\
};
 \end{tikzpicture}
}
\end{document}

答案1

问题不在于 tikz 图片,它是没问题的,而是\fbox{}tikz 图片周围有空格。参见:

\fbox{
\centering
\begin{tikzpicture}% Omitted
 % ... Omitted
\end{tikzpicture}
}

后面的换行符\fbox{在 TeX 中被翻译成空格。 后面的换行符也是一样\end{tikzpicture}。为了避免这种情况,你必须“注释掉”这些换行符,就像这样:

\fbox{%
\centering
\begin{tikzpicture}% Omitted
 % ... Omitted
\end{tikzpicture}%
}

请注意,在 tikzpicture 中这些技巧不是必需的,因为 tikz 解析器会忽略所有换行符,所以%在几行末尾的大部分内容都不是必需的。

我认为您需要的是draw=none而不是draw=black黑色方块,以避免与灰色框错位(我认为这是无意的)。此外,由于 fbox 很紧,因此没有必要\centering。最终文件:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\setlength{\fboxsep}{0pt}
\fbox{%
\begin{tikzpicture}[ampersand replacement=\&, >=latex,
   grayspacer/.style={draw=none, fill=gray, inner sep=0pt,},
   matstyle/.style={ matrix of nodes,
     nodes={draw=none, rectangle, minimum size=0.5cm, fill=black},
     nodes in empty cells, column sep=0.55cm, row sep=-5pt,inner sep=0pt,
     },
   ]
  \matrix[matstyle, inner sep=0pt] (mat)
  {
     \& |[grayspacer]|   \& |[grayspacer]| \& \\
   |[grayspacer] | \& \& \& |[grayspacer]| \\
   };
\end{tikzpicture}%
}
\end{document}

结果:

结果

答案2

在此特定情况下,a是多余的。您可以使用以下选项获得\fbox相同的边框:matrixdrawmatstyle

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
    \begin{tikzpicture}[%ampersand replacement=\&, >=latex,
matstyle/.style = {matrix of nodes,draw,
                   nodes={draw=none, rectangle, minimum size=0.5cm, fill=black},
                   nodes in empty cells, 
                   column sep=0.5cm, row sep=0pt,
                   },
                        ]
\matrix[matstyle, inner sep=0pt] (mat)
{
            & |[gray]|  & |[gray]|  &          \\
|[gray]|    &           &           & |[gray]| \\
};
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容