考试包小数点

考试包小数点

考试包允许使用和定义 \half,例如考虑 .5。但是,如果我想让某个部分或问题具有该值,我还没有看到任何实现 .75 和 .25 的方法。

有可能吗?如果可以,您能给我举个例子,告诉我如何才能得到每个问题的正确分数总和吗?

编辑:包括 MWE

\documentclass[11pt, addpoints, twoside, a4paper]{exam}

\begin{document}

\begin{questions}

\renewcommand*\half{.5}
\question[0\half]
This question is 0.5 points

\renewcommand*\half{.25}
\question[1\half]
This question is 1.25 points

\renewcommand*\half{.5}
\question[1\half]
This question is 1.5 points

\end{questions}

Total points with addpoints: \numpoints~(3.5)

Total points real count: 3.25

I don't know how to define quarters, etc. so I can easily define the points in my questions without having to renew \texttt{half} command, and also having the final sum properly done.

\end{document}

答案1

该类exam将分数作为计数器实现,根据定义,分数具有整数值。一种可能的解决方案是将分数作为整数值提供,并在输出中只除以它们,例如,为问题分配 125 分并将其打印为 1.25。

FPdiv使用包中的除法 (相对) 容易fp。可以使用numprint包中的四舍五入到小数点后两位。可以使用包中的exam类进行修改。patchcmdetoolbox

主要问题是识别exam负责打印点的类中的所有代码实例。类代码非常易读,包含有益的注释,但相当长(超过 8000 行)。

下面的 MWE 包含部分解决方案,对类代码进行了一些修改。但是,对于大多数用例,需要应用一些额外的补丁。

代码:

\documentclass[addpoints]{exam}
\usepackage{fp}
\usepackage{numprint}
\npdecimalsign{.}
\nprounddigits{2}
\usepackage{etoolbox}
\makeatletter
% points printed at each question
\patchcmd{\point@block}{\@points}{\FPdiv\pointdiv{\@points}{100}\numprint{\pointdiv}}{}{}
% points printed for each question in grade table
\patchcmd{\do@oneline@v}{\pointsof@index{pq@index}}{\FPdiv\pointsdiv{\pointsof@index{pq@index}}{100}\numprint{\pointsdiv}}{}{}
% total number of points in grade table
\patchcmd{\prt@tablepoints}{\prt@hlfcntr{tbl@points}}{\FPdiv\pointsdiv{\prt@hlfcntr{tbl@points}}{100}\numprint{\pointsdiv}}{}{}
% patching needed in many other places
\makeatother
\begin{document}

\begin{questions}
\question[50]
Why is there air?
\question[125]
How much wood would a woodchuck chuck if a woodchuck could chuck
wood?
\question[150] Compute $\displaystyle\int_0^1 x^2 \, dx$.
\end{questions}
\gradetable
\end{document}

结果:

在此处输入图片描述

答案2

免责声明:这是一种解决方法,而不是完整的解决方案,但也许对某些人仍然有用。

你可以手动将所有点数乘以 4,如下所示:

0.25 pt → 1 pt
0.5 pt  → 2 pt
0.75 pt → 3 pt
1 pt    → 4 pt
1.25 pt → 5 pt
etc.

这样,考试中就只有整数分,小数分的问题就消失了。评分时,分数粒度仍然相同。只需记住,这些新分数中的一个实际上是四分之一分。不要进一步细分,否则你会再次遇到同样的问题。;-)

当然,只有当你完全控制考试的分数并且不受外部因素的限制时,它才会有效。

相关内容