4

In this code from TikZ (finite) grid with character in each cell

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}
\draw[step=0.5cm,color=gray] (-1,-1) grid (1,1);
\matrix[matrix of nodes,nodes={inner sep=0pt,text width=.5cm,align=center,minimum height=.5cm}]{
A & B & C & D \\
E & F &  & H \\
I & J & K & L \\
M & N & O & P\\};
\end{tikzpicture}
\end{document}

I would like to delete the top and left edges of the grid.

I have found solutions using nodes but much prefer this one with a matrix.

  • Off topic: You have a very nice reputation number :) – JouleV Mar 25 at 13:35
  • @JouleV Indeed, It won't survive any votes on this question. – Ethan Bolker Mar 25 at 13:36
4

We can use \foreach:

\documentclass[tikz]{standalone}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}
%\draw[step=0.5cm,color=gray] (-1,-1) grid (1,1);
\foreach \i in {-0.5,0,0.5,1} {
    \draw[gray] (-1,-\i)--(1,-\i);
    \draw[gray] (\i,-1)--(\i,1);
}
\matrix[matrix of nodes,nodes={inner sep=0pt,text width=.5cm,align=center,minimum height=.5cm}]{
A & B & C & D \\
E & F &  & H \\
I & J & K & L \\
M & N & O & P\\};
\end{tikzpicture}
\end{document}

enter image description here

Honestly I don't think nodes or matrices have any thing to do here.


This approach is based on marmot's creative way, which is nicer and more tricky:

\documentclass[tikz]{standalone}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}
\draw[step=0.5cm,color=gray] ({-1cm+0.2pt},-1) grid (1cm,{1cm-0.2pt});
\matrix[matrix of nodes,nodes={inner sep=0pt,text width=.5cm,align=center,minimum height=.5cm}]{
A & B & C & D \\
E & F &  & H \\
I & J & K & L \\
M & N & O & P\\};
\end{tikzpicture}
\end{document}

enter image description here

  • 1
    Thanks. There is a "matrix" in the code. Other answers to my original question used nodes. – Ethan Bolker Mar 25 at 13:46
  • @EthanBolker No problem. You are welcome ;) – JouleV Mar 25 at 13:47
  • Maybe mention also \draw[step=0.5cm,color=gray] (-0.99,-1) grid (1,0.99); which is shorter and gives (for all practical purposes) the same output. – marmot Mar 25 at 15:15
  • @marmot Ohh your way is wonderfully creative :)) I did not even think of that. However they are not mathematically correct. – JouleV Mar 25 at 15:17
  • @JouleV What do you mean by "not mathematically correct"? It is as correct as a truncated grid can be. – marmot Mar 25 at 15:18
3

Another solution. It draws the grid with a matrix of drawn nodes. After that, left and top border are deleted with a white supperposed line.

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}
\matrix[matrix of nodes,nodes={draw=gray, anchor=center, minimum size=.6cm}, column sep=-\pgflinewidth, row sep=-\pgflinewidth] (A) {
A & B & C & D \\
E & F &  & H \\
I & J & K & L \\
M & N & O & P\\};
\draw[white] ([xshift=.5\pgflinewidth]A-4-1.south west)|-([yshift=-.5\pgflinewidth]A-1-4.north east);
\end{tikzpicture}
\end{document}

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.