Необычное поведение multicols в enumerate при использовании forloop для указания количества элементов

Необычное поведение multicols в enumerate при использовании forloop для указания количества элементов

Я использую examкласс документа и заметил необычное поведение разрывов столбцов в среде перечисления при использовании a forloopдля указания количества элементов.

Когда я использую forloop для генерации пронумерованного списка строк ответа, я получаю следующее:введите описание изображения здесь

Однако когда я вручную генерирую пронумерованный список, я получаю следующее:введите описание изображения здесь

Вот мой MWE, который дал оба результата:

\documentclass[11pt,addpoints]{exam}

\usepackage[paperwidth=8.5in, paperheight=11in, hmargin={20mm,20mm}, vmargin={20mm,12mm}, includefoot, footskip=10mm]{geometry}
\usepackage{amsmath,amssymb} %math basics
\usepackage{titlesec} %for formatting section titles
\usepackage{multicol,tikz,cancel} %document basics
\usepackage{forloop} %for specifying number of questions on answer page

\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
        \node[shape=circle,draw,inner sep=2pt] (char) {#1};}}
\newcommand{\tikzcircle}[2][black,fill=black]{\tikz[baseline=-0.75ex]\draw[#1,radius=#2] (0,0) circle ;}

\titleformat{\section}[runin]{\normalfont\large\bfseries}{\hskip -24pt $\Box$ \hskip 6pt Part \thesection\ -- }{0pt}{}[\normalsize \qquad {[}Total Marks: \pointsinrange{\thesection}{]} \vspace{8pt} \\ \vspace{6pt}]

\renewcommand\thesection{\Alph{section}}

\pointsinrightmargin\bracketedpoints

\pagestyle{headandfoot}

\coverfirstpageheader{Semester \\ School Board \\ School \\ Location}{}{Teacher: Mr.\ Gartenburg \\ Number of Pages: \numpages \\ Total Marks: \pointsinrange{Total} \\ Duration: 2.0 hours}
\coverrunningheader{\footnotesize\textsc{MCV4U1-02: Calculus \& Vectors}}{\textsc{Formulae}}{\footnotesize\textsc{Final Examination -- Month 2016}}
\coverrunningheadrule
\coverextraheadheight[0.75in]{0in}

\headrule
\header{\footnotesize\textsc{MCV4U1-02: Calculus \& Vectors}}{}{\footnotesize\textsc{Final Examination}, Part 1 of 2 -- \textsc{Month 2016}}
\footer{}{\thepage\ of \numpages}{}

\setlength\parindent{0pt}

\begin{document}
\begin{coverpages} \null \vspace{1.25in}
\begin{center}
\textsc{\Large MCV4U1--01} \\ \vspace{2mm}
\textsc{\large Grade 12 University Calculus \& Vectors} \\ \vspace{8mm}
{\bfseries{\scshape{\Large Final Examination}}} \\ \vspace{3mm}
\textbf{-- \ Part 1 of 2 \ --} \\ \vspace{6mm}
\textsc{{\large \today}} \\ \vspace{1in}
\textsc{\large Name: \ \ \underline{\hspace{3.5in}}}
\end{center} \vspace{0.5in}

\underline{Instructions}:
\begin{itemize}
    \item Calculators or other electronic devices are permitted provided they do \textbf{not} have wireless connectivity, are \textbf{not} capable of any symbolic or graphical computations and/or representations, do \textbf{not} store or play any media or other document files, and are used in a way that is \textbf{not} distracting to others.
    \item Any formulae, equations, etc.\ that are provided are \emph{on the reverse of this page}.
    \item Clearly demonstrate your knowledge and understanding by
    \begin{itemize}
        \item reading all questions \textbf{carefully},
        \item answering all questions \textbf{fully}, and
        \item providing concluding statements with correct \textbf{units}, where appropriate.
    \end{itemize}
    \item Round all answers to one decimal place, unless otherwise specified.
    \item Answers to all \textbf{True/False} and \textbf{Multiple Choice} questions must be provided on the \emph{Multiple Choice Answer Sheet}, which may be removed and submitted separately for convenience.
    \item Solutions to all \textbf{Full Answer} questions must be provided on the exam paper in the space provided.  (You may use the blank side of each page for rough work, but this will \textbf{not} be marked.)
\end{itemize}
\newpage \null \vspace{1in}
$$\text{some formulae}$$
\end{coverpages}
\begin{questions}
\section{True/False}
\uplevel{\hspace{-18pt} Indicate if each statement is \textbf{True} or \textbf{False}.  Record your answers on the \emph{Multiple Choice Answer Sheet}.}
\begingradingrange{Total}
\begingradingrange{A}
    \question[1] a  \label{firstA}
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a \label{lastA}
\endgradingrange{A} \newpage
\section{Multiple Choice}
\uplevel{\hspace{-18pt} Indicate the \textbf{most appropriate} response.  Record your answers on the \emph{Multiple Choice Answer Sheet}.}
\begingradingrange{B}
    \question[1] a \label{firstB}
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a \label{lastB}
\endgradingrange{B} \newpage
\section{Full Answer} 
\uplevel{\hspace{-18pt} Provide \textbf{full solutions} in the space provided.}
\begingradingrange{C}
    \question[4] a \label{firstC}
    \question[4] a
    \question[8] a
    \question[3] a
    \question[5] a
    \question[3] a
    \question[8] a
    \question[3] a
    \question[4] a
    \question[3] a
    \question[7] a
\endgradingrange{C}
\endgradingrange{Total}
\end{questions}

\newpage

\null \vspace{0.125in}

\begin{centering}
{\LARGE Multiple Choice Answer Sheet} \vspace{0.625in} \\
\textsc{\large Name: \ \ \underline{\hspace{3.5in}}} \vspace{0.625in} \\
\end{centering} \label{answersheet}

\textsc{\large Instructions:} \vspace{2mm}

\quad Use a \textbf{solid dot} to ``block out'' your response to each question. \vspace{3mm}

\begin{tabular}{ll}
Correct: \hspace{4mm} T \hspace{10mm} \tikzcircle{7pt} & Incorrect: \hspace{4mm} T \hspace{10mm} \circled{F} \vspace{5mm} \\
Correct: \hspace{4mm} \tikzcircle{7pt} \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D \hspace{0.375in} & Incorrect:  \hspace{4mm} \xcancel{A} \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
\end{tabular}\vspace{0.5in}

\textbf{Part A -- True/False} \newcounter{j}

\begin{enumerate}
\begin{multicols}{4} \raggedcolumns
\forloop{j}{\ref{firstA}}{\value{j}<\ref{lastA}}{\item \hspace{4mm} T \hspace{10mm} F}
\item \hspace{4mm} T \hspace{10mm} F
\end{multicols}
\end{enumerate} \vspace{0.25in}

\textbf{Part B -- Multiple Choice}

\begin{enumerate}
\begin{multicols}{2} \setcounter{enumi}{\ref{lastA}} \raggedcolumns
\forloop{j}{\ref{firstB}}{\value{j}<\ref{lastB}}{\item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D}
\item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
\end{multicols}
\end{enumerate} \newpage \null \vspace{0.125in}

\begin{centering}
{\LARGE Multiple Choice Answer Sheet} \vspace{0.625in} \\
\textsc{\large Name: \ \ \underline{\hspace{3.5in}}} \vspace{0.625in} \\
\end{centering} \label{answersheet}

\textsc{\large Instructions:} \vspace{2mm}

\quad Use a \textbf{solid dot} to ``block out'' your response to each question. \vspace{3mm}

\begin{tabular}{ll}
Correct: \hspace{4mm} T \hspace{10mm} \tikzcircle{7pt} & Incorrect: \hspace{4mm} T \hspace{10mm} \circled{F} \vspace{5mm} \\
Correct: \hspace{4mm} \tikzcircle{7pt} \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D \hspace{0.375in} & Incorrect:  \hspace{4mm} \xcancel{A} \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
\end{tabular} \vspace{0.5in}

\textbf{Part A -- True/False}
\begin{enumerate}
\begin{multicols}{4} \raggedcolumns
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
\end{multicols}
\end{enumerate} \vspace{0.25in}

\textbf{Part B -- Multiple Choice}
\begin{enumerate}\setcounter{enumi}{25}
\begin{multicols}{2}
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
\end{multicols}
\end{enumerate}

\end{document}

Мы будем очень признательны за любые предложения или исправления.

решение1

«MWE» довольно трудно читать, но основные проблемы таковы:

  • \begin{enumerate}\begin{multicols}{4}выглядит неправильно → используйте наоборот
  • Инициализируется \forloopс помощью \ref{firstA}, который не расширяется или предоставляет что-то, не являющееся действительным (целым) числом. Этот цикл испорчен. Чтобы получить значение счетчика ссылок, используйте \getrefnumber{firstA}, загрузив пакет refcount, конечно, для этого Использование \ref{firstA}этого запутает команду, оставив мусор в списке перечисления и также \forloopзапутав .multicols
  • Начальное значение enumerateдолжно быть задано с помощью enumitemпакета и его start=опции enumerateвместо \setcounter{enumi}{...}(я этого здесь не делал!)

\documentclass[11pt,addpoints]{exam}

\usepackage[paperwidth=8.5in, paperheight=11in, hmargin={20mm,20mm}, vmargin={20mm,12mm}, includefoot, footskip=10mm]{geometry}
\usepackage{amsmath,amssymb} %math basics
\usepackage{titlesec} %for formatting section titles
\usepackage{multicol,tikz,cancel} %document basics
\usepackage{refcount}%
\usepackage{forloop} %for specifying number of questions on answer page

\newcounter{j}

\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
        \node[shape=circle,draw,inner sep=2pt] (char) {#1};}}
\newcommand{\tikzcircle}[2][black,fill=black]{\tikz[baseline=-0.75ex]\draw[#1,radius=#2] (0,0) circle ;}

\titleformat{\section}[runin]{\normalfont\large\bfseries}{\hskip -24pt $\Box$ \hskip 6pt Part \thesection\ -- }{0pt}{}[\normalsize \qquad {[}Total Marks: \pointsinrange{\thesection}{]} \vspace{8pt} \\ \vspace{6pt}]

\renewcommand\thesection{\Alph{section}}

\pointsinrightmargin\bracketedpoints

\pagestyle{headandfoot}

\coverfirstpageheader{Semester \\ School Board \\ School \\ Location}{}{Teacher: Mr.\ Gartenburg \\ Number of Pages: \numpages \\ Total Marks: \pointsinrange{Total} \\ Duration: 2.0 hours}
\coverrunningheader{\footnotesize\textsc{MCV4U1-02: Calculus \& Vectors}}{\textsc{Formulae}}{\footnotesize\textsc{Final Examination -- Month 2016}}
\coverrunningheadrule
\coverextraheadheight[0.75in]{0in}

\headrule
\header{\footnotesize\textsc{MCV4U1-02: Calculus \& Vectors}}{}{\footnotesize\textsc{Final Examination}, Part 1 of 2 -- \textsc{Month 2016}}
\footer{}{\thepage\ of \numpages}{}

\setlength\parindent{0pt}

\begin{document}
\begin{coverpages} \null \vspace{1.25in}
\begin{center}
\textsc{\Large MCV4U1--01} \\ \vspace{2mm}
\textsc{\large Grade 12 University Calculus \& Vectors} \\ \vspace{8mm}
{\bfseries{\scshape{\Large Final Examination}}} \\ \vspace{3mm}
\textbf{-- \ Part 1 of 2 \ --} \\ \vspace{6mm}
\textsc{{\large \today}} \\ \vspace{1in}
\textsc{\large Name: \ \ \underline{\hspace{3.5in}}}
\end{center} \vspace{0.5in}

\underline{Instructions}:
\begin{itemize}
    \item Calculators or other electronic devices are permitted provided they do \textbf{not} have wireless connectivity, are \textbf{not} capable of any symbolic or graphical computations and/or representations, do \textbf{not} store or play any media or other document files, and are used in a way that is \textbf{not} distracting to others.
    \item Any formulae, equations, etc.\ that are provided are \emph{on the reverse of this page}.
    \item Clearly demonstrate your knowledge and understanding by
    \begin{itemize}
        \item reading all questions \textbf{carefully},
        \item answering all questions \textbf{fully}, and
        \item providing concluding statements with correct \textbf{units}, where appropriate.
    \end{itemize}
    \item Round all answers to one decimal place, unless otherwise specified.
    \item Answers to all \textbf{True/False} and \textbf{Multiple Choice} questions must be provided on the \emph{Multiple Choice Answer Sheet}, which may be removed and submitted separately for convenience.
    \item Solutions to all \textbf{Full Answer} questions must be provided on the exam paper in the space provided.  (You may use the blank side of each page for rough work, but this will \textbf{not} be marked.)
\end{itemize}
\newpage \null \vspace{1in}
 %    $$\text{some formulae}$$
\end{coverpages}
\begin{questions}
\section{True/False}
\uplevel{\hspace{-18pt} Indicate if each statement is \textbf{True} or \textbf{False}.  Record your answers on the \emph{Multiple Choice Answer Sheet}.}
\begingradingrange{Total}
\begingradingrange{A}
    \question[1] a  \label{firstA}
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a \label{lastA}
\endgradingrange{A} \newpage
\section{Multiple Choice}
\uplevel{\hspace{-18pt} Indicate the \textbf{most appropriate} response.  Record your answers on the \emph{Multiple Choice Answer Sheet}.}
\begingradingrange{B}
    \question[1] a \label{firstB}
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a
    \question[1] a \label{lastB}
\endgradingrange{B} \newpage
\section{Full Answer} 
\uplevel{\hspace{-18pt} Provide \textbf{full solutions} in the space provided.}
\begingradingrange{C}
    \question[4] a \label{firstC}
    \question[4] a
    \question[8] a
    \question[3] a
    \question[5] a
    \question[3] a
    \question[8] a
    \question[3] a
    \question[4] a
    \question[3] a
    \question[7] a
\endgradingrange{C}
\endgradingrange{Total}
\end{questions}

\newpage

\null \vspace{0.125in}

\begin{centering}
{\LARGE Multiple Choice Answer Sheet} \vspace{0.625in} \\
\textsc{\large Name: \ \ \underline{\hspace{3.5in}}} \vspace{0.625in} \\
\end{centering} \label{answersheet}

\textsc{\large Instructions:} \vspace{2mm}

\quad Use a \textbf{solid dot} to ``block out'' your response to each question. \vspace{3mm}

\begin{tabular}{ll}
Correct: \hspace{4mm} T \hspace{10mm} \tikzcircle{7pt} & Incorrect: \hspace{4mm} T \hspace{10mm} \circled{F} \vspace{5mm} \\
Correct: \hspace{4mm} \tikzcircle{7pt} \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D \hspace{0.375in} & Incorrect:  \hspace{4mm} \xcancel{A} \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
\end{tabular}\vspace{0.5in}

\textbf{Part A -- True/False} 

\begin{multicols}{4} \raggedcolumns
\begin{enumerate}
  \forloop{j}{\getrefnumber{firstA}}{\value{j}<\getrefnumber{lastA}}{\item \hspace{4mm} T \hspace{10mm} F}
\item \hspace{4mm} T \hspace{10mm} F
\end{enumerate} 
\vspace{0.25in}
\end{multicols}

\textbf{Part B -- Multiple Choice}

\begin{multicols}{2} \setcounter{enumi}{\ref{lastA}} \raggedcolumns
\begin{enumerate}
\forloop{j}{\ref{firstB}}{\value{j}<\ref{lastB}}{\item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D}
\item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
\end{enumerate} \newpage \null \vspace{0.125in}
\end{multicols}

\begin{centering}
{\LARGE Multiple Choice Answer Sheet} \vspace{0.625in} \\
\textsc{\large Name: \ \ \underline{\hspace{3.5in}}} \vspace{0.625in} \\
\end{centering} \label{answersheet}

\textsc{\large Instructions:} \vspace{2mm}

\quad Use a \textbf{solid dot} to ``block out'' your response to each question. \vspace{3mm}

\begin{tabular}{ll}
Correct: \hspace{4mm} T \hspace{10mm} \tikzcircle{7pt} & Incorrect: \hspace{4mm} T \hspace{10mm} \circled{F} \vspace{5mm} \\
Correct: \hspace{4mm} \tikzcircle{7pt} \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D \hspace{0.375in} & Incorrect:  \hspace{4mm} \xcancel{A} \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
\end{tabular} \vspace{0.5in}

\textbf{Part A -- True/False}
\begin{multicols}{4} \raggedcolumns
\begin{enumerate}
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
    \item \hspace{4mm} T \hspace{10mm} F
\end{enumerate} \vspace{0.25in}
\end{multicols}

\textbf{Part B -- Multiple Choice}
\begin{multicols}{2}
\begin{enumerate}\setcounter{enumi}{25}
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
    \item \hspace{4mm} A \hspace{10mm} B \hspace{10mm} C \hspace{10mm} D
\end{enumerate}
\end{multicols}

\end{document}

Связанный контент