我正在使用考试包创建考试。但有时学生很多,所以我需要创建不同的“版本” -Group A
和Group 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>
为1
或2
)将选择使用第一个还是第二个参数。
以下是一个用例示例:
\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}
如果你想要两个以上的变体,你可以例如\SetVariations{3}
在序言中发出将导致\vary
有三个参数的信号。<num>
现在\variant{<num>}
可以是1
,2
或3
。
答案3
也许你的问题可以通过(全新)解决外层封装? 可以为问题分配类别,并且您可以选择要显示的类别……
答案4
使用 LuaTeX 进行编译并定义一个宏,该宏返回变体 A 或变体 B 的文本。这样您就可以就地编辑变体。语法与\vary
exsheets 相同。不过,您必须手动在变体之间切换并编译两次。
% !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}