Como gerar uma folha de respostas dinâmica em formato de bolha para exame de múltipla escolha

Como gerar uma folha de respostas dinâmica em formato de bolha para exame de múltipla escolha

Quero produzir uma folha de respostas em forma de bolha onde o número de perguntas seja mostrado por \qCount. Está sempre abaixo de 100. É possível produzi-lo dinamicamente? Não consigo imprimir os números das perguntas antes de cada linha e não consigo mostrar bolhas dentro das células.

saída desejada:Amostra

MWE:

\documentclass[a4paper]{article}

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

\newcommand{\generateTable}[1]{%
\countRepeatntimes{#1}{\indent
\repeatntimes{4}{\textcolor{lightgray}{\rule{0.9\baselineskip}{0.9\baselineskip}} }\par
}
}

\begin{document}
\def\qCount{80}
\generateTable{\qCount}
\end{document}

Responder1

Imprimi um contador escalonado no loop para o número do problema (e outro contador para o rótulo da bolha) e mudei o quadrado \rulepara um "0" girado, dimensionado e esticado adequadamente. Você pode alterar o tamanho através dos argumentos numéricos para \scalebox{1.4}[1.5]{}. Eu também fiz duas colunas.

EDITADO para fornecer bloco preenchido com amostra.

\documentclass[a4paper,twocolumn]{article}

\usepackage{tikz,graphicx}
\usepackage[usestackEOL]{stackengine}

\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{problem}
\newcounter{choice}
\newcommand{\generateTable}[1]{%
\countRepeatntimes{#1}{\stepcounter{problem}\makebox[2ex][r]{\theproblem.}%\indent
\setcounter{choice}{0}%
\repeatntimes{4}{\stepcounter{choice}\textcolor{black!35}{%
  \raisebox{-1.5pt}{\scalebox{1.5}[1.8]{\stackinset{c}{}{c}{}{%
    \scalebox{.6}{\tiny \Alph{choice}}}{\rotatebox{90}{0}}}}} }\par
}
}

\def\sampleblock{%
  \makebox[5.1ex]{}
  \stepcounter{choice}\textcolor{black!35}{%
   \raisebox{-1.5pt}{\scalebox{1.5}[1.8]{\stackinset{c}{}{c}{}{%
    \scalebox{.6}{\tiny \Alph{choice}}}{\rotatebox{90}{0}}}}}
  \stepcounter{choice}\textcolor{black!35}{%
   \raisebox{-1.5pt}{\scalebox{1.5}[1.8]{\stackinset{c}{}{c}{}{%
    \scalebox{.6}{\tiny \Alph{choice}}}{\rotatebox{90}{0}}}}}
  \stepcounter{choice}\textcolor{black!35}{%
   \smash{\raisebox{-1.5pt}{\scalebox{1.5}[1.8]{\stackinset{c}{}{c}{-1pt}{%
    \scalebox{6}[3.5]{\color{black}$\cdot$}}{\rotatebox{90}{0}}}}}}
  \stepcounter{choice}\textcolor{black!35}{%
   \raisebox{-1.5pt}{\scalebox{1.5}[1.8]{\stackinset{c}{}{c}{}{%
    \scalebox{.6}{\tiny \Alph{choice}}}{\rotatebox{90}{0}}}}}
\par}
\voffset=\dimexpr\voffset+.5in
\textheight=\dimexpr\textheight-.5in

\begin{document}

\smash{\Shortstack[l]{%
  Name \underline{\hspace{2.4in}} Class\underline{\hspace{1.2in}}
    Date\underline{\hspace{1.2in}}\\
  \textcolor{black!50}{\rule{5.9in}{2ex}}\\
  \rule[2ex]{10ex}{2ex}\sffamily\itshape\Huge Bubble Answer Sheet\\
  \strut\\
  \sampleblock\\
  \rule{0ex}{4pt}\\}%
}\vspace{-\baselineskip}\par
\def\qCount{80}
\generateTable{\qCount}
\end{document}

insira a descrição da imagem aqui

insira a descrição da imagem aqui


SUPLEMENTO

Um comentário solicitou uma versão com opções circulares:

\documentclass[a4paper,twocolumn]{article}

\usepackage{tikz,graphicx}
\usepackage[usestackEOL]{stackengine}

\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{problem}
\newcounter{choice}
\newcommand{\generateTable}[1]{%
\countRepeatntimes{#1}{\stepcounter{problem}\makebox[2ex][r]{\theproblem.}%\indent
\setcounter{choice}{0}%
\repeatntimes{4}{\stepcounter{choice}\textcolor{black!35}{%
  \raisebox{0.5pt}{\scalebox{1.0}{\stackinset{c}{}{c}{}{%
    \scalebox{.6}{\footnotesize \Alph{choice}}}{$\bigcirc$}}}} }\par
}
}

\def\sampleblock{%
  \makebox[5.1ex]{}
  \stepcounter{choice}\textcolor{black!35}{%
   \raisebox{-1.5pt}{\scalebox{1.0}{\stackinset{c}{}{c}{}{%
    \scalebox{.6}{\footnotesize \Alph{choice}}}{$\bigcirc$}}}}
  \stepcounter{choice}\textcolor{black!35}{%
   \raisebox{-1.5pt}{\scalebox{1.0}{\stackinset{c}{}{c}{}{%
    \scalebox{.6}{\footnotesize \Alph{choice}}}{$\bigcirc$}}}}
  \stepcounter{choice}\textcolor{black!35}{%
   \smash{\raisebox{-1.5pt}{\scalebox{1.0}{\stackinset{c}{}{c}{-2.5pt}{%
    \scalebox{8}{\color{black}$\cdot$}}{$\bigcirc$}}}}}
  \stepcounter{choice}\textcolor{black!35}{%
   \raisebox{-1.5pt}{\scalebox{1.0}{\stackinset{c}{}{c}{}{%
    \scalebox{.6}{\footnotesize \Alph{choice}}}{$\bigcirc$}}}}
\par}
\voffset=\dimexpr\voffset+.5in
\textheight=\dimexpr\textheight-.5in

\begin{document}

\smash{\Shortstack[l]{%
  Name \underline{\hspace{2.4in}} Class\underline{\hspace{1.2in}}
    Date\underline{\hspace{1.2in}}\\
  \textcolor{black!50}{\rule{5.9in}{2ex}}\\
  \rule[2ex]{10ex}{2ex}\sffamily\itshape\Huge Bubble Answer Sheet\\
  \strut\\
  \sampleblock\\
  \rule{0ex}{4pt}\\}%
}\vspace{-\baselineskip}\par
\def\qCount{80}
\generateTable{\qCount}
\end{document}

insira a descrição da imagem aqui

informação relacionada