
Considere o MWE abaixo. Isso produz uma matriz com 2 linhas sobrepostas (é isso que eu quero), no entanto, também cria espaços em branco extras nos lados esquerdo e direito (que deixei em vermelho na imagem abaixo).
Como faço para remover esse espaço em branco 'vermelho' esquerdo/direito com alteração mínima do MWE? Então, como obter o mesmo comportamento esquerda/direita e superior/inferior?
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}
Responder1
O problema não é a imagem do tikz, o que é bom, mas sim a \fbox{}
que inclui espaços ao redor da imagem do tikz. Ver:
\fbox{
\centering
\begin{tikzpicture}% Omitted
% ... Omitted
\end{tikzpicture}
}
A nova linha após \fbox{
é traduzida para TeX em um espaço. O mesmo acontece com a nova linha depois de \end{tikzpicture}
. Para evitar isso, você deve "comentar" essas novas linhas, assim:
\fbox{%
\centering
\begin{tikzpicture}% Omitted
% ... Omitted
\end{tikzpicture}%
}
Observe que, dentro da imagem do tikz, esse tipo de truque não é necessário, porque o analisador do tikz ignora todas as novas linhas, portanto, a maior parte do que %
você tinha no final de várias linhas não é necessária.
Acho que você deseja, draw=none
em vez draw=black
dos quadrados pretos, evitar o desalinhamento com as caixas cinzas, o que considero não intencional). Além disso, como o fbox é apertado, não há razão para isso \centering
. Documento final:
\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}
Resultado:
Responder2
Neste caso particular, a \fbox
é excedente. A mesma borda ao redor matrix
você pode obter com a opção draw
em 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}