考试形式

考试形式

我正在使用考试包创建考试。但有时学生很多,所以我需要创建不同的“版本” -Group AGroup B

主要的区别只是问题中的数字,所以问题的文字是相似的。现在我做以下事情:

  • 创建一个名为的命令\finalexam,其中包含带有宏的问题(\question[5] What is the result of $\a\cdot\b$
  • 创建宏(\def\a{10}\def\b{20}
  • 称呼\finalexam
  • 更改宏 ( \def\a{20}, def\b{30})
  • 称呼\finalexam

还有其他(更好的)解决方案或现成的软件包吗?

编辑:一个简单的例子

\documentclass{exam}
\usepackage[magyar]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{t1enc}
\usepackage{nicefrac}
\usepackage{siunitx}
\usepackage{multicol}
\pagestyle{empty}
\addpoints
\pointname{ pont}
\pointsinrightmargin
\marginpointname{ pont}
\begin{document}
\newcommand{\doga}{
\centerline{\large V. exam -- \group\ group}
\begin{questions}
    \question[5]What is the result of $\a\cdot\b$?
\end{questions}}
%
\newcommand{\group}{A}
\renewcommand{\a}{5}
\renewcommand{\b}{10}
\doga
%
\renewcommand{\group}{B}
\renewcommand{\a}{10}
\renewcommand{\b}{20}
\doga
\end{document}

答案1

使用mailmerge并声明一些字段(\mailfields),定义重复(\mailrepeat)并定义不同的参数集(\mailentry)。

请参阅文档以获取有说服力的示例。

编辑: 以下是您的示例mailmerge

\documentclass{exam}
\usepackage[magyar]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{t1enc}
\usepackage{nicefrac}
\usepackage{siunitx}
\usepackage{multicol}
\usepackage{mailmerge}
\pagestyle{empty}
\addpoints
\pointname{ pont}
\pointsinrightmargin
\marginpointname{ pont}
\begin{document}
\mailfields{group,a,b}
\mailrepeat{
\centerline{\large V. exam -- \field{group} group}
\begin{questions}
    \question[5]What is the result of $\field{a}\cdot\field{b}$?
\end{questions}\clearpage}
\mailentry{A,5,10}
\mailentry{B,10,20}
\end{document}

答案2

这个问题是»变化«功能的原因exsheets在 v0.6 中引入。提供的命令\vary在默认设置中有两个参数。命令\variant{<num>}(其中<num>12)将选择使用第一个还是第二个参数。

以下是一个用例示例:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[magyar]{babel}

\usepackage[load-headings]{exsheets}
\SetupExSheets{
  headings = runin-nr ,
  headings-format = \normalfont ,
  points/name = pont/ok % this is what translate.google.com tells me...
}

\begin{document}

% \variant{1} % default
\centerline{\large V. exam -- \vary{A}{B} group}
\bigskip

\begin{question}{5}
 What is the result of $\vary{5}{10}\cdot\vary{10}{20}$?
\end{question}

\bigskip
\variant{2}
\centerline{\large V. exam -- \vary{A}{B} group}
\bigskip

\begin{question}{5}
 What is the result of $\vary{5}{10}\cdot\vary{10}{20}$?
\end{question}

\end{document}

enter image description here

如果你想要两个以上的变体,你可以例如\SetVariations{3}在序言中发出将导致\vary有三个参数的信号。<num>现在\variant{<num>}可以是123

答案3

也许你的问题可以通过(全新)解决外层封装? 可以为问题分配类别,并且您可以选择要显示的类别……

答案4

使用 LuaTeX 进行编译并定义一个宏,该宏返回变体 A 或变体 B 的文本。这样您就可以就地编辑变体。语法与\varyexsheets 相同。不过,您必须手动在变体之间切换并编译两次。

% !TEX TS-program = lualatex
% !TEX encoding = UTF-8 Unicode
\documentclass [11pt]{exam}
\usepackage{luacode}
\usepackage[a4paper, total={16cm, 26cm}]{geometry}
\usepackage{fontspec}

% defines a command for the variations
% change to variation B by replacing '#1' with '#2'
\newcommand{\var}[2]{\luadirect{tex.sprint('#1')}}

\begin{document}
\begin{questions}
\question Boris throws two six-sided dices.
\begin{parts}
\part[2] Compute the Probability that \var{both dices display 6}{the results of both diced add up to 12}.
\vspace{3cm}
\part[3] Compute the probability that at least one of the dices shows a \var{1}{2}.
\end{parts}
\end{questions}
\end{document}

相关内容