
아래 MWE를 고려하십시오. 이렇게 하면 2개의 겹치는 행(제가 원하는 것)이 있는 행렬이 생성되지만 왼쪽과 오른쪽에 추가 공백도 생성됩니다(아래 스크린샷에서 빨간색으로 표시).
MWE를 최소한으로 변경하면서 이 왼쪽/오른쪽 '빨간색' 공백을 어떻게 제거합니까? 그렇다면 위쪽/아래쪽과 동일한 동작을 왼쪽/오른쪽으로 가져오는 방법은 무엇입니까?
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}
답변1
문제는 tikz 그림이 아니라 \fbox{}
tikz 그림 주위에 공백이 포함되어 있다는 것입니다. 보다:
\fbox{
\centering
\begin{tikzpicture}% Omitted
% ... Omitted
\end{tikzpicture}
}
이후의 개행 문자는 \fbox{
TeX로 공백으로 변환됩니다. . 이후의 개행 문자에서도 마찬가지입니다 \end{tikzpicture}
. 이를 방지하려면 다음과 같이 해당 줄 바꿈을 "주석 처리"해야 합니다.
\fbox{%
\centering
\begin{tikzpicture}% Omitted
% ... Omitted
\end{tikzpicture}%
}
tikz 그림 내부에서는 이러한 종류의 트릭이 필요하지 않습니다. 왜냐하면 tikz 파서가 모든 줄 바꿈을 무시하므로 %
여러 줄 끝에 있는 대부분의 트릭이 필요하지 않기 때문입니다.
draw=none
검은 사각형 대신 draw=black
의도하지 않은 회색 상자와의 정렬 불량을 피하기를 원한다고 생각합니다 . 또한 fbox가 타이트하기 때문에 \centering
. 최종 문서:
\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}
결과:
답변2
이 특별한 경우에 a \fbox
는 잉여입니다. 다음 옵션을 사용하면 주변 의 동일한 테두리를 matrix
얻을 수 있습니다 .draw
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}