我想为我的学生创建一个测验,其中我添加的问题部分越多,分数就越高。对于每个额外的部分,我希望它能增加 3 分。在以下示例中,我希望它显示“谜题 1(12 分)”
我尝试了很多方法,但我认为有两个问题我不知道如何解决:1. 第一次运行时,\ref{last} 是 ??,直到第二次运行才变为 4。给 \MULTIPLY 非数字参数可能会有问题。2. 即使 \ref{last} 应该扩展,但似乎仍然存在问题。我不知道为什么。我收到错误“非法测量单位(插入 pt)”。
\documentclass{article}
\usepackage{calculator}
\begin{document}
\MULTIPLY{3}{\ref{last}}{\mypoints}
\section{Puzzle 1 (\mypoints~points)}
\begin{enumerate}
\item Part 1...
\item Part 2...
\item Part 3...
\item \label{last} Part 4...
\end{enumerate}
\end{document}
答案1
您需要一种\ref
在 LaTeX 术语中为“可扩展”的形式。该软件包提供了执行此操作的refcount
宏。此方法可能需要 2 次编译器传递。\getrefnumber{<label>}
\documentclass{article}
\usepackage{refcount}
\usepackage{calculator}
\begin{document}
\MULTIPLY{3}{\getrefnumber{last}}{\mypoints}
\section{Puzzle 1 (\mypoints~points)}
\begin{enumerate}
\item Part 1...
\item Part 2...
\item Part 3...
\item \label{last} Part 4...
\end{enumerate}
\end{document}
答案2
类exam
在这里可能会有所帮助,特别是如果您不总是希望各部分具有相同的分值。分数的外观和问题的格式是相当可定制的,并且它会为您跟踪分数。
\documentclass[addpoints]{exam}
\begin{document}
\qformat{Puzzle \thequestion:\ (\totalpoints\ points)\hfill}
\begin{questions}
\question
Question text
\begin{parts}
\part[3]
Part 1 \dots
\part[3]
Part 2 \dots
\part[2]
Part 3 \dots
\part[2]
Part 4 \dots
\end{parts}
\end{questions}
\end{document}
该类exam
也非常可定制。对于类似于您原始问题的布局,您可以执行以下操作。
\documentclass[addpoints]{exam}
\renewcommand{\thepartno}{\arabic{partno}}
\renewcommand{\partlabel}{\thepartno.}
\pointformat{}
\renewcommand{\questionshook}{%
\setlength{\leftmargin}{0pt}%
\setlength{\labelwidth}{-\labelsep}%
}
\qformat{\large\bfseries\thequestion\hspace{1em} Puzzle \thequestion\ (\totalpoints\ points)\hfill}
\begin{document}
\begin{questions}
\question
\begin{parts}
\part[3]
Part 1 \dots
\part[3]
Part 2 \dots
\part[3]
Part 3 \dots
\part[3]
Part 4 \dots
\end{parts}
\end{questions}
\end{document}