
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?
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=none
anstelle von draw=black
fü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:
Antwort2
In diesem speziellen Fall \fbox
ist ein Überschuss vorhanden. Den gleichen Rand matrix
können Sie mit der Option draw
in 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}