Eliminar el margen izquierdo/derecho de una matriz TiKZ

Eliminar el margen izquierdo/derecho de una matriz TiKZ

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?

ingrese la descripción de la imagen aquí

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=noneen lugar de draw=blacklos 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:

Resultado

Respuesta2

En este caso particular a \fboxes excedente. matrixPuede obtener el mismo borde alrededor con la opción drawen 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}

ingrese la descripción de la imagen aquí

información relacionada