Cómo generar una hoja de respuestas de burbujas dinámica para un examen de opción múltiple

Cómo generar una hoja de respuestas de burbujas dinámica para un examen de opción múltiple

Quiero producir una hoja de respuestas de burbujas donde \qCount muestra el número de preguntas. Siempre está por debajo de 100. ¿Es posible producirlo dinámicamente? No puedo imprimir los números de las preguntas antes de cada fila y no puedo mostrar burbujas dentro de las celdas.

salida deseada:Muestra

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}

Respuesta1

Imprimí un contador escalonado en el bucle para el número del problema (y otro contador para la etiqueta de la burbuja) y cambié el cuadrado \rulea un "0" rotado, escalado y estirado apropiadamente. Puede cambiar el tamaño mediante los argumentos numéricos a \scalebox{1.4}[1.5]{}. También lo hice en dos columnas.

EDITADO para proporcionar un bloque lleno de muestra.

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

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí


SUPLEMENTO

Un comentario solicitó una versión con opciones 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}

ingrese la descripción de la imagen aquí

información relacionada