考虑下面的 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
相同的边框:matrix
draw
matstyle
\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}