Суть проблемы: создаю небольшой стилевой пакет для подготовки бланковых тестов.
Естественно, в каждом тесте может быть различное количество вопросов, поэтому для генерации бланка, в котором будут отмечаться ответы, написана команда showtbl.
Ниже приводится код ее определения
Код:
% временные счетчики
\newcount\cone
\newcount\ctwo
\newcount\cthree
\ctwo=41
% разделитель ячеек (необходимо для нормального функционирования)
\def\l@@n@{&}
% строка с номерами вопросов (с группировкой по 10 штук)
\def\l@n@{\ifnum\cone<\ctwo\gdef\c@ll{\number\cone}\else\gdef\c@ll{}\fi
\global\advance\cone by1\global\advance\cthree by1
\l@@n@\hbox to .5cm{\hfil\c@ll\hfil}
\ifnum\cthree<10 \let\next=\l@n@
\else\let\next=\relax\fi\next}
% четыре строки с вариантами ответов
\def\bl@nk{а)&&&&&&&&&&\\\hline б)&&&&&&&&&&\\\hline в)&&&&&&&&&&\\\hline г)&&&&&&&&&&\\\hline\hline}
% собственно цикл, формирующий таблицу
\def\@@tmp{\ifnum\cone<\ctwo
\global\cthree=0\l@n@\\\hline\bl@nk\let\nxt=\@@tmp
\else\let\nxt=\relax\fi\nxt}
% а это - единственная команда, которая и будет генерировать таблицу
\def\showtbl{\m@keh@ader\global\cone=0\@@tmp\m@kefoot@r}
% заголовок таблицы
\def\m@keh@ader{\begin{center}\begin{tabular}{||c|c|c|c|c|c|c|c|c|c|c||}\hline\hline
Вар.~ответа&\multicolumn{10}{|c||}{Номер вопроса}\\\hline}
% концовка таблицы
\def\m@kefoot@r{\end{tabular}\end{center}}
Сколько с ним ни бьюсь, в конце таблицы остается лишняя строка с пустой первой
ячейкой. Комментирование концов строк макросов не помогает. Удаление пробелов
между командами также не помогло.
Никак не могу понять, в чем же дело. Может, кто-нибудь сможет помочь?
P.S. Если интересует, как закончу, могу выложить весь код (каждый вопрос теста задается в отдельном окружении q, правильный ответ помечается командой \good, затем генерируется бланк ответов, а также автоматически генерируется эталон, в котором правильные ответы отмечены крестиками).