模板名称: 暨南大学试卷 LaTeX 模板 模板作者: 吕 荐 瑞
所在单位: 暨南大学数学系
更新日期: 2021 年 12 月 9 日
简单介绍
本文档介绍jnuexam文档类。这个文档类提供暨南大学考试 试卷的LaTeX 模板。
这个模板将格式和内容分开,而且可以从一份 tex 文件编译 出四份试卷(A 卷 / B 卷/ A 卷答案/ B 卷答案),使用方便。
这个模板的最新版本可以在下面地址下载:
https://lvjr.bitbucket.io/jnuexam.html
编译方式
这个文档类要求所有 tex 文件都使用 UTF8 编码,若使用 GBK 编码则无法得到正确结果。
如果对文件编码不熟悉,可以直接复制例子文件,然后在其中 修改,即可正常编译。
这个文档类同时支持 XeLaTeX 和 PDFLaTeX 方式编译。为 得到最好的中文显示效果,推荐用较先进的XeLaTeX 编译。
试卷结构
下面是jnuexam 试卷文档的基本结构:
\documentclass{jnuexam}
% 导言区
\begin{document}
% 正文区
\end{document}
导言区用于设定装订线和草稿纸等等选项。
正文区用于填写试卷表头和输入试卷内容。
装订草稿
在文档的导言区可以设定装订线和草稿纸。比如:
\setexam{
binding = 2, % 装订线 scratch = 1, % 草稿纸 }
其中 binding取 0 表示没有装订线,取 1 表示仅空白试卷 有,取2 表示空白试卷和试卷答案都有。
而scratch的取值表示草稿纸数量,以 A3大小双面印刷计 算。草稿纸仅在空白试卷中出现,试卷答案里不会带草稿纸。
试卷正文
\documentclass{jnuexam}
\begin{document}
...
\makehead % 生成试卷表头 ...
\makepart{填空题}{题数分值}
...
\makepart{单选题}{题数分值}
...
\makepart{计算题}{题数分值}
...
\makepart{证明题}{题数分值}
...
\makedata{可能用到的数据} % 附录数据 ...
\end{document}
试卷表头
\renewcommand{\niandu}{2010--2011}
\renewcommand{\xueqi}{2}
\renewcommand{\kecheng}{大学数学}
\renewcommand{\zhuanye}{理工 4 学分}
\renewcommand{\jiaoshi}{某某某}
\renewcommand{\shijian}{2011 年 07 月 08 日}
\renewcommand{\bixiu}{1} % 1 为必修,0 为选修
\renewcommand{\bijuan}{1} % 1 为闭卷,0 为开卷
\renewcommand{\shijuan}{A} % A/B/C 卷
\renewcommand{\neizhao}{1} % 1 打勾,0 不勾
\renewcommand{\waizhao}{0} % 1 打勾,0 不勾
\makehead % 生成试卷表头
其中 \zhuanye 和\shijian 命令的内容可以为空。
判断题目
\makepart{判断题}{题数分值}
\begin{problem}
第一道判断题描述。\tickout{t}
\end{problem}
\begin{problem}
第二道判断题描述。\tickout{f}
\end{problem}
其中\tickout{t}和\tickout{f}分别表示打勾(Ø)和 打叉(
×
)。还可用大写的\tickout{T}和 \tickout{F},分别表示输出T 和 F。
答案必须放在 \tickout 命令里;这样才能在生成空白试卷 时隐藏它。
填空题目
\makepart{填空题}{题数分值}
\begin{problem}
第一道填空题描述\fillout{答案}。
\end{problem}
\begin{problem}
第二道填空题描述\fillout{答案}。
\end{problem}
\fillout 命令将用下划线填满整行。另有个 \fillin 命 令,只留下最小宽度的下划线。
答案必须放在 \fillout 或 \fillin命令里面;这样才能 在生成空白试卷时隐藏它。
选择题目
\makepart{单选题}{题数分值}
\begin{problem}
第一道单选题描述\pickout{答案}。
\end{problem}
\begin{problem}
第二道单选题描述\pickout{答案}。
\end{problem}
\pickout 命令将把选择圆括号放在本行最右边。另外有个
\pickin命令,将选择圆括号放在当前位置。
答案必须放在 \pickout 或 \pickin命令里面;这样才能 在生成空白试卷时隐藏它。
选项排版
选择题的四个选项可以用 abcd 环境来排版。比如:
\begin{abcd}
\item 第一个选项
\item 第二个选项
\item 第三个选项
\item 第四个选项
\end{abcd}
此时 abcd 环境将根据各选项长度自动将四个选项分为一行、
两行或四行排版,非常方便。
答题表格
在填空题和选择题前面,还可以用\answertable命令生成 空白答题栏。比如:
\answertable[3em]{6}{3}
其中 \answertable命令的三个参数含义如下:
É 第一个可选参数表示空白单元格的高度,默认是1em。
É 第二个必选参数表示总共有多少个题目。
É 第三个必选参数表示每行排版几个题目。
计算题目
\makepart{计算题}{题数分值}
\begin{problem}
第一道计算题描述。
\end{problem}
\begin{solution}
第一道计算题答案。
\end{solution}
\begin{problem}
第二道计算题描述。
\end{problem}
\begin{solution}
第二道计算题答案。
\end{solution}
证明题目
\makepart{证明题}{题数分值}
\begin{problem}
第一道证明题描述。
\end{problem}
\begin{solution}
第一道证明题答案。
\end{solution}
\begin{problem}
第二道证明题描述。
\end{problem}
\begin{solution}
第二道证明题答案。
\end{solution}
解答名称
通过重新定义\solutionname 命令,可以改变 solution 环境的名称。比如下面例子将“解答”二字改为“证明”:
\renewcommand{\solutionname}{证明}
评分命令
计算题和证明题等主观题的排版方法是完全一样的。在编写 这些主观题的解答时,可以用 \points 命令给出各步骤得 分。比如:
\begin{solution}
$1+1=2$ \points{4}
$2+2=4$ \points{8}
\end{solution}
评分命令 \points 也可在 align* 等数学环境中使用,此 时评分显示在公式编号位置。
对齐命令
此文档类提供几个对齐命令,用于在不同行之间对齐。比如 我们有 (+b)2= (+ b)(+b)
=2+2b+b2 · · · · 2 分
我们有 $(a+b)^2 \? = (a+b)(a+b)$ \\
\+$= a^2+2ab+b^2$ \points{2}
第一个公式内部的 \?保存当前水平位置,而第二个公式前面 的 \+表示跳到之前保存的位置。
这两个对齐命令\? 和\+需要编译两次才能生效。
对齐命令
此文档类提供几个对齐命令,用于在不同行的对齐。比如 我们有 (+b)2= (+ b)(+b)
=2+2b+b2 · · · · 2 分
我们有 \? $(a+b)^2 = (a+b)(a+b)$ \\
\< $= a^2+2ab+b^2$ \points{2}
第一行公式前面的 \?保存当前水平位置,而第二行公式前面 的\<表示跳到之前保存位置的左侧(左移一个等号的宽度)。 这两个对齐命令\? 和\<需要编译两次才能生效。
其它题型
除了上述四种题型之外,其它题型可以用下面方式编写:
\makepart{某题型}{题数分值}
\begin{problem}
第一题描述。\answer{第一题答案}
\end{problem}
\begin{problem}
第二题描述。\answer{第二题答案}
\end{problem}
其中题目答案必须放在\answer命令里面;这样才能在生成 空白试卷时隐藏它。
附录数据
在试卷最后,可以用下面命令增加附录数据部分:
\makedata{可能用到的数据} % 附录数据 ...
附录数据必须放在 \makedata 命令后面;否则在从 A 卷生 成 B 卷时会出问题。
空白试卷
假设exam-a-answer.tex是含答案的试卷。新建一个包含 以下内容的 exam-a-empty.tex 文档,编译后将得到不含 答案的空白试卷。
\PassOptionsToClass{noanswer}{jnuexam}
\input{exam-a-answer}
也就是说,给 jnuexam 文档类加上 noanswer 选项后,编 译时将会自动隐藏试卷答案。
逆序出题
假设 exam-a-answer.tex 是含答案的 A 卷。新建一个包 含以下内容的exam-b-answer.tex文档,编译后将得到逆 序出题的B 卷。
\PassOptionsToClass{reverse}{jnuexam}
\input{exam-a-answer}
也就是说,给jnuexam文档类加上 reverse选项后,编译 时将会逆序排列各题型的小题。
竖直空白
在试卷的各个小题后面,可以留下一些竖直空白。本文档类 支持下列这些竖直空白命令:
\smallskip 竖直小空白
\medskip 竖直中空白
\bigskip 竖直大空白
\vfill 竖直填充
当然,竖直空白命令可以连续使用多个,以得到所需的空白。
分页命令
分页命令 \newpage 同样可以使用。由于 A 卷和 B 卷的小 题顺序相反,其中的分页位置通常也不同。因此这里另外提 供\newpagea 和\newpageb 命令,分别只对A 卷和 B卷 有效。
\newpage 分页,对A 卷和 B 卷均有效
\newpagea 分页,仅对A 卷有效
\newpageb 分页,仅对B 卷有效
在试卷中不要使用其他分页命令,比如 \clearpage等。
分页例子
关于分页命令的使用,可以看下面的典型例子:
\makepart{某题型}{题型分值}
\newpageb
\begin{problem} 第一题\end{problem}\vfill
\begin{problem} 第二题\end{problem}\vfill
\newpage
\begin{problem} 第三题\end{problem}\vfill
\begin{problem} 第四题\end{problem}\vfill
\newpagea
这样编译得到的A 卷就是这样的顺序:
第一题 第二题 分页 第三题 第四题 分页 而编译得到的B 卷就是这样的顺序:
第四题 第三题 分页 第二题 第一题 分页
双栏试卷
假设exam-a-empty.tex 是原来试卷的TeX 文件。新建一 个包含以下内容的文档,编译后将得到的A3 纸张的试卷。
\PassOptionsToClass{a3paper}{jnuexam}
\input{exam-a-empty}
也就是说,给jnuexam文档类加上 a3paper选项后,编译 时将会按照A3 纸张排版出双栏试卷。
双栏试卷
假设exam-a-empty.pdf是原来试卷的PDF文件。新建一 个包含以下内容的文档,编译后将得到的A3 纸张的试卷。
\documentclass[a3input]{jnuexam}
\begin{document}
\includepdf[pages=-,nup=2x1]{exam-a-empty}
\end{document}
这种用法直接读入 A4试卷的 PDF文件,生成双栏的 A3试 卷,适合没有TeX 文件时使用。