我正在寻找一个简单的答案,因为我不是程序员。我在网上找到的关于这个问题的所有内容对于我的知识水平来说都太深奥了。
我教微积分,每年考试中每道题的分数都会有一点不同。我们有多个教授,他们都贡献题目,所以每次的总分都会变化。我希望 LaTeX 能够自动计算,这样我们就可以在以后的考试中使用模板。
有没有办法可以为每个问题分配分数,并让 LaTeX 自动给出总分?这看起来应该是小菜一碟,但显然并非如此。(我不知道这是因为我要求的东西实际上非常困难,还是因为它太简单了,每个人都会自动知道。)
我不想使用一些外部程序(如果我要这样做,我可以手动计算),我只想在考试顶部显示总数。
这是我想象的结构:
Total = \calltotal points.
\begin{enumerate}
\item [5 points]\addtototal{5} Here is the first question.
\item [6 points]\addtototal{6} Here is the second.
\end{enumerate}
没有什么比这更棒的了!任何帮助都值得感激。
答案1
只要您处理的是整数点,就可以使用计数器来对它们求和。由于您想在实际添加之前包含总和,因此该包totcount
非常有用:
\documentclass{article}
\usepackage{totcount}
\newtotcounter{totalpoints}
\setcounter{totalpoints}{0}
\begin{document}
Total points are \the\numexpr\totvalue{totalpoints}
\begin{enumerate}
\item [5 points]\addtocounter{totalpoints}{5} Here is the first question.
\item [6 points]\addtocounter{totalpoints}{6} Here is the second.
\end{enumerate}
\end{document}
答案2
比 OP 要求的更花哨一点(Sam Carter 或 Torbjorn 的解决方案也不错):
我稍微改变了语法\item
,添加了第二个可选参数,<X>
其中X
是此任务信用点的占位符。省略<X>
表示0
信用点既不添加也不显示。
\documentclass{article}
\usepackage{totcount}
\usepackage{marginnote}
\usepackage{xparse}
\makeatletter
\let\latex@@item\item
\RenewDocumentCommand{\item}{od<>}{%
\IfValueTF{#1}{%
\latex@@item[#1]
}{%
\latex@@item%
}%
\IfValueT{#2}{%
\marginnote{\bfseries \raggedleft #2 P.}
\addtocounter{totalcredits}{#2}%
}%
}
\makeatother
\newtotcounter{totalcredits}
\begin{document}
There are \total{totalcredits} credits to gain here!
\begin{enumerate}
\item<17> Foo
\item<4> Bar
\item<1000> More foobar
\item[A)]<-3> Even more foobar
\end{enumerate}
\end{document}
答案3
有多个软件包和课程用于处理考试等事宜(请参阅https://www.ctan.org/topic/exam)。 其中一个包是exsheets
,它的功能与您想要的功能类似,尽管它更花哨一些。 您还可以轻松添加奖励积分。 请注意,需要两次编译才能打印总积分,就像交叉引用一样。
请注意,它exsheets
比下面这个非常简单的示例具有更多功能。例如,您可以编写解决方案,并将它们打印在编写的位置,或收集在文档中的其他地方,或者根本不打印。并且有很多自定义事物的方法。请查看手册,以及网站上的问题。
\documentclass{article}
\usepackage{exsheets}
\SetupExSheets[question]{type=exam}
\begin{document}
Total points are: \totalpoints
\begin{question}{5+3} % 5 points and 3 bonus points
...
\end{question}
\begin{question}{15}
...
\end{question}
\begin{question}{3}
...
\end{question}
\end{document}