我是 Latex 新手。我在设置试卷时有要求。除了可以添加到每个问题右侧的分数或点数外,我还需要使用考试包将课程成果 (CO) 和布鲁姆分类法 (BT) 级别放置在每个问题上,这些级别应与右侧的分数/点数并行出现。
我需要这样的模板
\question[<M>,<BT>,<CO>] <question>
例如。,
\question[10,1,4] what is the area of the circle, if the radius is 5 cm,?
这样就会产生如下输出
- 如果半径为 5 厘米,则圆的面积是多少?(10)(1)(4)
还有其他包可以实现我的要求吗??试卷中的 CO PO。
假设某个科目有 4 名 CO,试卷最高分是 50 分,一名学生的得分是 45 分。
@Andrew,我发布的表格和问题基本上来自 MS Word 文档,它们是静态的。我们需要手动输入。我需要的是自动将我在试卷中为 CO 所做的输入相加,并生成一个包含每个 CO 最高分数(分母)的表格。所以我需要一个类似的命令\question[<M=10>,<BT=1,3>,<CO1=3,CO4=7>]
,它表示这个问题的最高分数是 10 分,它包含布鲁姆分类学级别 1、3,并且有两个 CO,其中 CO1 最高分 3 分,CO4 最高分 7 分。最后,表格应显示 CO1 到 CO4 元素,并且每个问题中每个 CO 的最高分数应相加。假设我有 5 个问题,其中 5 个问题中只有一个问题的 CO1 部分最高分是 3 分,那么在生成表格时,它应该包含一个 CO1 的条目,分母为 /3。
此外,如果在序言中有任何方法可以定义 CO 的数量(比如在我的情况下是 4),那就太好了。
我想这是一份相当困难的工作,但它会给我们带来很多好处。
我正在附加我需要的乳胶试卷模板。
答案1
编辑根据问题中的额外信息得出的新答案
我不使用考试类所以我不太了解它的内部工作原理,但是,根据手册,您可以使用来更改问题的格式\qformat
。
为了处理您想要合并的额外数据(BT、M 和 CO),我认为您需要定义一个新的宏来处理这些数据。下面的代码定义了一个\Question
宏,它接受三个参数:M
、BT
和CO
,并按照您想要的方式执行操作 - 您应该能够根据您的精确要求调整代码。
这个想法是\Question
定义宏\theM
,\theBRT
和,\theCO
并\qformat
通过“调用”使用这些宏来打印问题\question
。唯一复杂的部分是跟踪不同的课程结果。为此,\Question
假设CO
以逗号分隔的列表给出。通过循环遍历此列表的条目,它(隐式地)定义宏\COmax
,用于课程结果的数量(这是任意的),以及\CO1
,,\CO2
...,用于计算给定课程结果的使用次数。最后,有一个\printCourseOutcomes
宏可以生成每种类型的课程结果数量的表格。
以下是代码:
\documentclass{exam}
\usepackage{pgffor}
\usepackage{etoolbox}
\usepackage{booktabs}
% question format used by exams
\qformat{Question \thequestion \dotfill \theM\theBT\theCO}
\def\COmax{0}% number of course outcomes: will automatically track the number specified
\def\Question[#1,#2,#3]{
\def\theM{\textbf{M}:#1\space}
\def\theBT{\textbf{BT}:#2\space}
\def\theCO{\textbf{CO}:#3}
\foreach \co in {#3} {
\ifcsdef{CO\co}{\csxdef{CO\co}{\the\numexpr\csuse{CO\co}+1\relax}}% add 1 if exists
{\csxdef{CO\co}{1}}% set to 1 if does not exist
\ifnum\co>\COmax\xdef\COmax{\co}\fi% make sure \COmax is big enough for all specified COs
}
\question% start the question
}
\newcommand\printCourseOutcomes{%
\bigskip
\bgroup
\def\tableRow{\\\toprule Course outcome}
\foreach \co in {1,...,\COmax}{\xappto\tableRow{& CO\co}}
\appto\tableRow{\\\midrule}
\foreach \co in {1,...,\COmax}{\xappto\tableRow{& \csuse{CO\co}}}
\tabular{l*{\COmax}c}\tableRow\\\bottomrule\endtabular\egroup
}
\addpoints
\begin{document}
\gradetable[h][questions]
\begin{questions}
\Question[10,4,1,2] What is the area of the circle, if the radius is 5 cm?
\Question[2,3,2] When is a frog?
\end{questions}
\printCourseOutcomes
\end{document}
下面是它产生的输出:
\theM
通过修改、\theBT
和\theCO
命令的定义,可以轻松调整问题的格式以满足您的需求\qformat
。我不太清楚您想如何为每个问题分配分数,但我认为您确实想这样做,因为 OP 提到创建成绩表。
原始答案
如果您不需要考试课程来增加“考试”中的分数,那么您可以使用课程中现有的功能来解决这个问题:
\documentclass[]{exam}
\pointsinrightmargin
\begin{document}
\begin{questions}
\question[10)(4)(2] What is the area of the circle, if the radius is 5 cm?
\question[2)(3)(4] When is a frog?
\end{questions}
\end{document}
得出的结果为:
如果你想自动将每个问题的分数加起来,那么这种简单的方法是行不通的。