我的目标是让半个点以逗号作为小数符号打印(例如 2,5 个点)。因此,我使用了一种变通方法,将所有点乘以 10,然后使用 etoolbox 中的 patchmd 命令以及 fp 和 numprint 包中的 FPDiv 和 numprint 命令分别除以 10 并打印带有正确小数符号的数字(请参阅考试包小数点)。但是,我还想在标题处打印点数\titledquestion
。为此,我使用命令\qformat{\Large \textbf{Aufgabe \thequestion: \thequestiontitle~(\totalpoints~Punkte)} \hfill}
。这里的问题是我不知道如何正确修补命令\totalpoints
。查看 exam.cls 源代码后,我看到定义为\pointsofquestion{\arabic{question}}
。我尝试修补它们两个,但第一次编译总是失败。只有当我第二次编译它时,当第一次编译时注释掉 patch 命令时,它才会起作用。我将不胜感激任何帮助。
这是一个展示我的问题的最小工作示例:
\documentclass[addpoints, 10pt, answers]{exam}
\usepackage{etoolbox}
\usepackage{fp}
\usepackage{numprint}
\npdecimalsign{,}
\nprounddigits{1}
% Only works on 2nd compile
\patchcmd{\totalpoints}{\pointsofquestion{\arabic{question}}}{\FPdiv\pointdiv{\pointsofquestion{\arabic{question}}}{10}\numprint{\pointdiv}}{}{}
\qformat{\Large \textbf{Task \thequestion: \thequestiontitle~(\totalpoints~Points)} \hfill}
\begin{document}
\newpage
\begin{questions}
\titledquestion{Question 1}
\begin{parts}
\part[20] Subtask 1
\part[15] Subtask 2
\end{parts}
\end{questions}
\end{document}
答案1
作为一种快速解决方法,你可以修改定义以\pointsofquestion
输出 -10(如果尚未计算点)(即,在第一次运行),而不是??这让人困惑\FPdiv
。
\documentclass[addpoints]{exam}
\usepackage{etoolbox}
\usepackage{fp}
\usepackage{numprint}
\npdecimalsign{,}
\nprounddigits{1}
\patchcmd{\pointsofquestion}{\mbox{\normalfont\bfseries ??}}{-10}{}{}
\patchcmd{\totalpoints}{\pointsofquestion{\arabic{question}}}{\FPdiv\pointdiv{\pointsofquestion{\arabic{question}}}{10}\numprint{\pointdiv}}{}{}
\qformat{\Large \textbf{Task \thequestion: \thequestiontitle~(\totalpoints~Points)} \hfill}
\begin{document}
Points of question 1: \pointsofquestion{1}
\begin{questions}
\titledquestion{Question 1}
\begin{parts}
\part[20] Subtask 1
\part[15] Subtask 2
\end{parts}
\end{questions}
\end{document}
第一次编译:
第二次编译: