\newdimen\dun   \dun=0.4pt
\newdimen\med   \med=1pt
\newdimen\vet   \vet=1.8pt
\newdimen\hgt   
\newdimen\dpt
\newdimen\wdt
\newcommand{\vrd}{\vrule height\hgt depth\dpt width\dun\relax}
\newcommand{\vrm}{\vrule height\hgt depth\dpt width\med\relax}
\newcommand{\vrv}{\vrule height\hgt depth\dpt width\vet\relax}
\newcommand{\hrd}{\hrule height2\dun\relax}
\newcommand{\hrm}{\hrule height\med\relax}
\newcommand{\hrv}{\hrule height\vet\relax}

\def\setupsudoku#1{%
    #1  % #1 is het font dat voor sudoku's wordt gebruikt
    \setbox0=\hbox{(}
    \hgt=\ht0  \advance\hgt by 4pt
    \dpt=\dp0  \advance\dpt by 0pt 
    \wdt=\hgt  \advance\wdt by \dpt  \advance\wdt by 2\dun 
    \def\doos{\hbox to\wdt} 
    \tabskip0pt
    \offinterlineskip}

\newenvironment{babysudoku}[1][\sffamily]%
      {\vbox\bgroup 
          \setupsudoku{#1}
          \hrv
          \halign\bgroup \vrv\doos{\vrd\hss##\hss\vrd}&
                         \doos{\vrd\hss##\hss\vrd}\vrm&
                         \doos{\vrd\hss##\hss\vrd}&
                         \doos{\vrd\hss##\hss\vrd}\vrv\cr}
      {\crcr\egroup\hrv \egroup }

\newenvironment{sudoku}[1][\sffamily]%
      {\vbox\bgroup 
          \setupsudoku{#1}
          \hrv
          \halign\bgroup \vrv\doos{\vrd\hss##\hss\vrd}&
                         \doos{\vrd\hss##\hss\vrd}&
                         \doos{\vrd\hss##\hss\vrd}\vrm&
                         \doos{\vrd\hss##\hss\vrd}&
                         \doos{\vrd\hss##\hss\vrd}&
                         \doos{\vrd\hss##\hss\vrd}\vrm&
                         \doos{\vrd\hss##\hss\vrd}&
                         \doos{\vrd\hss##\hss\vrd}&
                         \doos{\vrd\hss##\hss\vrd}\vrv\cr}
      {\crcr\egroup\hrv \egroup }

\newcommand{\z}{%
\hbox{\color[named]{Gray}%
      \vrule width \wdt height \hgt depth \dpt}}
\newcommand{\y}{$\varnothing$}

\endinput