
Considere el MWE a continuación. Esto produce una matriz con 2 filas superpuestas (eso es lo que quiero), sin embargo, también crea espacios en blanco adicionales en los lados izquierdo y derecho (que puse en rojo en la captura de pantalla siguiente).
¿Cómo elimino este espacio en blanco 'rojo' izquierdo/derecho con un mínimo de cambios en el MWE? Entonces, ¿cómo conseguir el mismo comportamiento hacia la izquierda/derecha que arriba/abajo?
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}
Respuesta1
El problema no es la imagen tikz, que está bien, sino \fbox{}
que incluye espacios alrededor de la imagen tikz. Ver:
\fbox{
\centering
\begin{tikzpicture}% Omitted
% ... Omitted
\end{tikzpicture}
}
La nueva línea posterior \fbox{
se traduce a TeX en un espacio. Lo mismo ocurre con la nueva línea después \end{tikzpicture}
. Para evitar eso, debes "comentar" esas nuevas líneas, así:
\fbox{%
\centering
\begin{tikzpicture}% Omitted
% ... Omitted
\end{tikzpicture}%
}
Tenga en cuenta que, dentro de la imagen tikz, este tipo de trucos no son necesarios, porque el analizador tikz ignora todas las nuevas líneas, por lo que la mayoría de las %
que tenía al final de varias líneas no son necesarias.
Creo que lo que quieres es, draw=none
en lugar de draw=black
los cuadrados negros, evitar la desalineación con los cuadros grises, lo cual creo que no fue intencional). Además, dado que fbox está ajustado, no hay motivo para \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:
Respuesta2
En este caso particular a \fbox
es excedente. matrix
Puede obtener el mismo borde alrededor con la opción draw
en su 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}