multicolumn long table or enumeration

It's possible to trick supertabular to work inside a multicols environment by redefining \newpage to be \columnbreak in the first column and \newpage in the second. I also needed to stick a height 0, width \linewidth rule at the bottom of the first column. Strange things happen without it.

\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{xcolor,supertabular,multicol}
\newcount\n
\n=0
\def\tablebody{}
\makeatletter
\loop\ifnum\n<300
        \advance\n by1
        \protected@edef\tablebody{\tablebody
                \textbf{\number\n.}&
                \hfill T\hfill\hfill F\hfill\hskip0pt\endgraf
                \vskip.5\baselineskip
                \color@begingroup
                \color{black!20}
                \hrule height3ex
                \color@endgroup
                \tabularnewline
        }
\repeat
\makeatother
\pagestyle{empty}
\begin{document}
\begin{multicols*}{2}
\let\mcnewpage=\newpage
\makeatletter
\renewcommand\newpage{%
        \if@firstcolumn
                \hrule width\linewidth height0pt
                \columnbreak
        \else
                \mcnewpage
        \fi
}
\makeatother
\tablehead{Item \#&\\}
\begin{supertabular}{lp{1.5in}}
\tablebody
\end{supertabular}
\end{multicols*}
\end{document}

I'm not actually sure that this is the best way to generate the body, but it works. enter image description here


What follows is a very crude solution to your main problem (lining up the rows properly): Use a tabbing environment. IIRC, there's no easy way to center the contents of a tabbing "cell", but column/page breaks inside a tabbing environment are permitted. The trick is to use \\* to forbid breaks after certain rows.

\documentclass[12pt]{article}

\usepackage[margin=1in]{geometry}

\usepackage{multicol,xcolor}

\usepackage{ifthen}
\def\stnum{30} % number of items

\newcounter{mytabbing}

\begin{document}

\begin{multicols*}{2}
\setcounter{mytabbing}{0}
\begin{tabbing}
\rule{0.7in}{1pt} \= \rule{0.7in}{1pt} \= \rule{0.7in}{1pt} \kill
\whiledo{\value{mytabbing}<\stnum}{%
  \stepcounter{mytabbing}%
  \themytabbing  \> T \> F \\* % "\\" would produce an incorrect column break
  \> {\color{black!20}\rule{1.4in}{2.8ex}} \\
}
\end{tabbing}
\end{multicols*}

\end{document}