\RequirePackage{epic} \def\clobberdiam{.8} \def\clobberO{\circle{\clobberdiam}} \def\clobberX{\circle*{\clobberdiam}} \newlength{\clobberlength} \newlength{\Clobberlength} \setlength{\clobberlength}{.2cm} % for inline \setlength{\Clobberlength}{.5cm} % for display \edef\next{\the\catcode`\@} % save the old catcode \catcode`\@=11 % now @ can be part of token names \countdef\@clobbercols=40 \countdef\@clobberrows=41 \countdef\@clobbercol=42 \countdef\@clobberrow=43 \def\@clobbersetdims#1{\@clobbercols=0 \@clobbercol=0 \@clobberrows=0 \@@clobbersetdims#1\end} \def\@@clobbersetdims#1{ \ifx#1\end \let\next=\relax \else \ifx#1\\ \ifnum\@clobbercols<\@clobbercol \@clobbercols=\@clobbercol\else\fi \@clobbercol=0 \advance\@clobberrows by1 \else\advance\@clobbercol by1 \fi \let\next=\@@clobbersetdims\fi \next} \def\@clobberprocess#1{\@clobberrow=\number\@clobberrows \@clobbercol=0 \@@clobberprocess#1\end} \def\@@clobberprocess#1{ \ifx#1\end \let\next=\relax \else % first adjust row, col \ifx#1\\ \advance\@clobberrow by-1 \@clobbercol=0 \else \advance\@clobbercol by1 \fi % determine if an X or O should be drawn \ifx#1X \put(-.5,-.5){\put(\number\@clobbercol,\number\@clobberrow){\clobberX}} \fi \ifx#1O \put(-.5,-.5){\put(\number\@clobbercol,\number\@clobberrow){\clobberO}} \fi % continue looping \let\next=\@@clobberprocess\fi \next} \def\@clobber#1{% \begin{picture}(\number\@clobbercols,\number\@clobberrows) \uppercase{\@clobberprocess{#1}} \end{picture}} \def\@Clobber#1{% \begin{picture}(\number\@clobbercols,\number\@clobberrows) {\advance\@clobbercols by1 \multiput(0,0)(1,0){\number\@clobbercols} {\drawline(0,0)(0,\number\@clobberrows)}} {\advance\@clobberrows by1 \multiput(0,0)(0,1){\number\@clobberrows} {\drawline(0,0)(\number\@clobbercols,0)}} \uppercase{\@clobberprocess{#1}} \end{picture}} \newbox{\clobberbox} \newlength{\@clobberlength} \def\settodepth#1#2{\setbox\tempbox\hbox{#2}#1\dp\tempbox\relax} \def\settoheight#1#2{\setbox\tempbox\hbox{#2}#1\ht\tempbox\relax} \def\clobber#1{\@clobbersetdims{#1} \setlength{\unitlength}{\clobberlength} \setlength{\@clobberlength}{.5\unitlength} \raisebox{.5ex}{\raisebox{-\number\@clobberrows\@clobberlength}{\@clobber{#1}}}} \def\Clobber#1{\@clobbersetdims{#1} \setlength{\unitlength}{\Clobberlength} \setlength{\@clobberlength}{.5\unitlength} \raisebox{.5ex}{\raisebox{-\number\@clobberrows\@clobberlength}{\@Clobber{#1}}}} \catcode`\@=\next % restore @ status