برای چاپ شماره سوال میتونید یک شمارنده تعریف کنید:
\newcounter{row}
\setcounter{row}{1}
\newcommand{\co}{\arabic{row}\stepcounter{row}}
در کد بالا، شمارندهای به اسم row
تعریف کردیم و بعد چون شماره سوالها از یک شروع میشه، با دستور \setcounter
مقدار پیشفرضش رو برابر ۱ قرار دادیم. همچنین چون توی هر ردیف، شماره سوالها یک واحد باید زیاد بشه، از دستور \stepcounter
استفاده کردیم. حالا فقط کافیه دستور \co
رو در جای مناسب قرار بدیم.
برای قرار دادن این شمارنده، من از محیط itemize
استفاده کردم. در واقع، تعریف دستور \generateTable
رو به صورت
\newcommand{\generateTable}[1]{%
\countRepeatntimes{#1}{%
\begin{itemize}
\item[\textbf{\co.}] \repeatntimes{4}{
\textcolor{lightgray}{\rule{0.9\baselineskip}{0.9\baselineskip}}}
\end{itemize}
}
}
تغییر دادم.
برای چندستونه کردن هم از بسته multicol
استفاده کردم و دستور \generateTable{\qCount}
رو داخل محیط multicols
گذاشتم.
کد کامل رو میتونید در پایین ببینید:
\documentclass[a4paper]{article}
\usepackage{multicol}
\usepackage{tikz}
\newcommand{\repeatntimes}[2]{
\newcount\i
\i=0
\newtoks\ans
\loop
\ans=\expandafter{\the\ans #2}
\advance\i by 1
\ifnum\i<#1\repeat
\the\ans
}
\newcommand{\countRepeatntimes}[2]{
\newcount\i
\i=0
\newtoks\ans
\loop
\advance\i by 1
\ans=\expandafter{\the\ans #2}
\ifnum\i<#1\repeat
\the\ans
}
\newcounter{row}
\setcounter{row}{1}
\newcommand{\co}{\arabic{row}\stepcounter{row}}
\newcommand{\generateTable}[1]{%
\countRepeatntimes{#1}{%
\begin{itemize}
\item[\textbf{\co.}] \repeatntimes{4}{
\textcolor{lightgray}{\rule{0.9\baselineskip}{0.9\baselineskip}}}
\end{itemize}
}
}
\begin{document}
\def\qCount{80}
\begin{multicols*}{3}% عدد ۳ رو برای تغییر دادن تعداد ستونها کم و زیاد کنید
\generateTable{\qCount}
\end{multicols*}
\end{document}
خروجی:
ویرایش:
در صورتی که میخواید ستونها متوازن باشه، علامت ستاره محیط multicols
رو بردارید. با این کار، انتهای ستونها در یک ردیف قرار خواهند گرفت.