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.
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}