Entfernen Sie den linken/rechten Rand einer TiKZ-Matrix

Entfernen Sie den linken/rechten Rand einer TiKZ-Matrix

Betrachten Sie das MWE unten. Dies erzeugt eine Matrix mit zwei überlappenden Zeilen (das ist, was ich will), es erzeugt jedoch auch zusätzliche Leerzeichen auf der linken und rechten Seite (die ich im Screenshot unten rot markiert habe).

Wie entferne ich diese „roten“ Leerzeichen links/rechts, ohne das MWE so stark zu verändern? Wie erreiche ich also links/rechts dasselbe Verhalten wie oben/unten?

Bildbeschreibung hier eingeben

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}

Antwort1

Das Problem ist nicht das Tikz-Bild, das in Ordnung ist, sondern die \fbox{}Leerzeichen um das Tikz-Bild herum. Siehe:

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

Der Zeilenumbruch danach \fbox{wird in TeX in ein Leerzeichen übersetzt. Dasselbe passiert mit dem Zeilenumbruch danach \end{tikzpicture}. Um das zu vermeiden, müssen Sie diese Zeilenumbrüche „auskommentieren“, und zwar wie folgt:

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

Beachten Sie, dass diese Art von Tricks im Tikz-Bild nicht erforderlich sind, da der Tikz-Parser alle Zeilenumbrüche ignoriert und das meiste, was %Sie am Ende mehrerer Zeilen hatten, daher nicht erforderlich ist.

Ich denke, Sie möchten draw=noneanstelle von draw=blackfür die schwarzen Quadrate, um die Fehlausrichtung mit grauen Kästchen zu vermeiden, die meiner Meinung nach unbeabsichtigt war). Da die Fbox außerdem eng ist, gibt es keinen Grund für \centering. Endgültiges Dokument:

\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}

Ergebnis:

Ergebnis

Antwort2

In diesem speziellen Fall \fboxist ein Überschuss vorhanden. Den gleichen Rand matrixkönnen Sie mit der Option drawin Ihrem erhalten 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}

Bildbeschreibung hier eingeben

verwandte Informationen