I would like to use TikZ matrices to for some drawings. I am currently using nodes and positioning them manually to simulate a tabular. That helps in positioning arrows and shading.
However, if I use something like the following code:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix [matrix of nodes,row sep=0,column 2/.style={nodes={rectangle,draw,minimum width=3em}}]
{
0 & 6 \\
1 & 3 \\
};
\end{tikzpicture}
\end{document}
The nodes' lower and upper borders do not overlap, resulting in a double border between nodes.
edit:
Jake suggested a very nice solution, using negative row separation row sep
. That work very well for one column tables. But the columns are misaligned when there are more columns.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[cell/.style={rectangle,draw=black},
space/.style={minimum height=1.5em,matrix of nodes,row sep=-\pgflinewidth,column sep=-\pgflinewidth,column 1/.style={font=\ttfamily}}]
\matrix (first) [space, column 1/.style={font=\ttfamily},column 2/.style={nodes={cell,minimum width=2em}}]
{
0 & 6 \\
1 & 3 \\
2 & 9 \\
};
\matrix (second) [right=of first, space, column 2/.style={minimum width=3em,nodes={cell,minimum width=3.5em}},column 3/.style={nodes={cell,minimum width=2em}}]
{
0 &a & 6 \\
1 & & 3 \\
2 &c & 9 \\
};
\matrix [right=of second, space, column 2/.style={minimum width=3em,nodes={cell,minimum width=3.5em}},column 3/.style={nodes={cell,minimum width=2em}}]
{
0 &a & 6 \\
1 &b & 3 \\
2 &c & 9 \\
};
\end{tikzpicture}
\end{document}
Best Answer
If you set
row sep
to-\pgflinewidth
, the lines will overlap exactly:In order to make sure that the cells align correctly horizontally, you need to make the
text height
andtext depth
the same across the entire row. By settingnodes in empty cells
, all cells will be drawn, even if no content is provided. Alternatively, you can enter{}
into empty cells to achieve the same effect.