王福贵,杨苗,李耀维,王建伟
(1.山西农业大学 文理学院,山西 太谷 030801;2.山西农业大学 现代教育技术学院,山西 太谷 030801)
LATEX中选择题模板设计及其应用
王福贵1,杨苗1,李耀维1,王建伟2
(1.山西农业大学 文理学院,山西 太谷 030801;2.山西农业大学 现代教育技术学院,山西 太谷 030801)
要把选择题排版的美观大方,录入人员通常得花费较多的时间。LATEX是一种可编程的科技排版软件,本文主要使用“ifthen”宏包中的“ifthenelse”选择分枝语句设计了LATEX环境中的一个选择题模板,本模板有以下主要特点:依据四个选项的最大长度来自动确定四个选项排一行、两行或四行;当一行中有两个或四个选项时能使选项按指定宽度均匀排列;可以排版单项选择和多项选择;自动生成选项序号ABCD等;自动生成小题编号;可以自动生成参考答案。使用本模板时试题录入人员能把注意力集中在试题的内容上,完全无需考虑选项排版问题。
LATEX;选择题模板;试题库
在各级各类学校中,教学评价一般是通过单元测验和最终考试环节来完成[1,2],而在大多数的书面考试当中,不管是中小学中的各门考试、大学中的各种结课考试还是社会上的各种等级考试与职称考试,试卷中一般都设有选择题型,包含多个小题,出题人在排版选择题的过程中,为了使每个选择题中的四个选项放置得美观合理,通常要花费很多时间和精力,特别是用Word或WPS进行排版过程中,当选项中含有数学公式或图形时,很难使不同小题当中的选项进行列对齐,使得试卷不美观大方。另一方面,为了提高学校的教学水平,好多学校逐步实施考教分离,这就必须建立试题库,对于大型的试题库,若由一个人进行试题的录入将使得建库时间较长,若由多人进行录入将出现格式不一致问题[3~5](如页面大小,页边距不一致,这时就出现了不同的人录入的试题放在一起不美观问题,从而还得再排版)。
文献 [6]中也给出了LAT EX中排版选择题的模板,但必须人工确定选项是分一行、两行还是四行进行放置,并且不能适应不同的页面宽度和字体大小。因此,我们重新设计了排版选择题的模板。
TEX系统是由美国Stanford大学教授Donald E.Knuth研制的计算机排版软件系统,它无私地把源代码向用户公开。T EX提供的排版命令功能强大,用户可以直接使用这些命令,也可以发挥创造性,利用已有的功能自行定义新的命令,以适合特定的需要。T EX提供了300多条基本命令,功能强大,但使用不够方便,因此许多人利用TEX的宏定义功能进行二次开发,产生了一些TEX系统的衍生版本,其中最著名的是由美国数学会 (AMS)组织人员编写的AMS-TEX和Leslie Lamport编写的LATEX。到目前为止,国内外公认的数学公式排得最好的排版软件仍是TEX系统。许多国际专业学会的期刊杂志都欢迎作者使用T EX系统投稿,现在国内许多期刊也接收TEX投稿,许多大学设计了本校的毕业论文TEX模板[7]。另外这些软件都是免费的,可以从网上自由下载,我们是从www.ctex.org下载的,这种环境下可以对中文进行处理。
模板调用了color和ifthen两个宏包。设计了十多条命令,用户使用的主要命令语法及功能如下:
showanswer显示答案,正确选项显示为兰色
otshowanswer不显示答案
setxxsep{长度值}设置两个选项之间的最小间隔
setxxindent{长度值}设置选项行的悬挂长度
xx{干扰选项内容}编辑干扰选项之一
zqxx{正确选项内容}编辑正确选项之一
xzA{选项1}{选项2}{选项3}{选项4}自动放置4个选项
xzB{题干}{选项 1}{选项 2}{选项3}{选项4}排版具有4个选项的选择题,显示试题编号,但编号与前一题编号相同
xzC{题干}{选项 1}{选项 2}{选项 3}{选项4}排版具有4个选项的选择题,显示试题编号,但编号比前一题编号大1
模板文件名为“xztmb.tex”,用户使用时只需在导言区加入input{xztmb.tex}即可。
文件“xztmb.tex”的内容如下,其中前面的数字表示行号,实际文件当中并没有行号。
1usepackage{color,ifthen}
2 ewboolean{showanswer}%当showanswer为真时,显示参考答案
3 ewcounter{xzno}%选择题编号计数器
4 ewcounter{xx}%选择题中的选项计数器
5 ewcounter{ctemp}%计数器临时变量
6 ewlength{xzwidth}%选项行的文字最大宽度,默认为页面宽度
7 ewlength{lengtha}%A选项的长度
8 ewlength{lengthb}%B选项的长度
9 ewlength{lengthc}%C选项的长度
10 ewlength{lengthd}%D选项的长度
11 ewlength{maxlength}%用来存储四个选项中的最大长度
12 ewlength{lengthtwo}%当一行中有两个选项时,每个选项的最大长度
13 ewlength{lengthfour}%当一行中有四个选项时,每个选项的最大长度
14 ewlength{xxjg}%两个选项之间的最小间隔
15 ewlength{xxxg}%选项行的悬挂长度
16 ewlength{lengthtemp}
17 ewcommand{showanswer}{setboolean{showanswer}{true}}%显示参考答案
18 ewcommand{ otshowanswer}{setboolean{showanswer}{false}}%不显示参考答案
19 ewcommand{setxxsep}[1]{setlength{xxjg}{#1}}%设置选项之间的最小间隔
20 ewcommand{setxxindent}[1]{setlength{xxxg}{#1}}%设置选项行的悬挂长度
21setlength{xzwidth}{ extwidth}
22 ewcommand{zqxxyc}{color{blue}}%正确选项所显示的颜色为兰色
23 ewcommand{xxyc}{color{black}}%一般选项所显示的颜色
24 ewcommand{xx}[1]{addtocounter{xx}{1}xxyc(Alph{xx})~#1}
25 ewcommand{zqxx}[1]{addtocounter{xx}{1}ifthenelse{oolean{showanswer}}{zqxxyc}{xxyc}(Alph{xx})~#1}
26 ewcommand{maxlen}[4]{%计算四个选项中的最大长度
27setcounter{ctemp}{arabic{xx}}%
28settowidth{lengtha}{#1}%
29settowidth{lengthb}{#2}%
30settowidth{lengthc}{#3}%
31settowidth{lengthd}{#4}%
32setlength{maxlength}{lengtha}%
33ifthenelse{lengthtest{lengthb>maxlength}}{setlength{maxlength}{lengthb}}{}%
34ifthenelse{lengthtest{lengthc>maxlength}}{setlength{maxlength}{lengthc}}{}%
35ifthenelse{lengthtest{lengthd>maxlength}}{setlength{maxlength}{lengthd}}{}%
36addtolength{maxlength}{xxjg}setcounter{xx}{arabic{ctemp}}}
37 ewcommand{xxind}{ ule{xxxg}{0pt}}%选项悬挂
38 ewcommand{xzA}[4]{%排版四个选项并且选项编号不清零
39maxlen{#1}{#2}{#3}{#4}%
40setlength{lengthtemp}{xzwidth}%
41addtolength{lengthtemp}{-xxxg}%
42setlength{lengthtwo}{0.5lengthtemp}%
43setlength{lengthfour}{0.25lengthtemp}%
44ifthenelse{lengthtest{maxlength>lengthtwo}}{xxind#1\xxind#2\xxind#3\xxind#4}%
45{ifthenelse{lengthtest{maxlength>lengthfour}}{xxindmakebox[lengthtwo][l]{#1}%
46makebox[lengthtwo][l]{#2}\xxindmakebox[lengthtwo][l]{#3}makebox{#4}}%
47{xxindmakebox[lengthfour][l]{#1}makebox[lengthfour][l]{#2}makebox[lengthfour][l]{#3}makebox{#4}}}}
48 ewcommand{xzB}[5]{%排版选择题,但试题编号不变
49xxycpararabic{xzno}.~#1\%
50setcounter{xx}{0}xzA{#2}{#3}{#4}{#5}}
51 ewcommand{xzC}[5]{%排版选择题,同时试题编号自增
52addtocounter{xzno}{1}xzB{#1}{#2}{#3}{#4}{#5}}
53 ewcommand{kh}{ olinebreak( olinebreakqquad olinebreak)}%括号()
例1首先将一道选择题内容存放在文件“xz1.tex”中,内容如下:
1xzC{波源的振动方程为$y=6cos{frac{pi}{5}t}$,cm,它所形成的波为~$2mathrm{ms}^{-1}$~的速度沿~$x$~轴正方向传播,则沿~$x$~轴正方向上距波源6m处一点的振动方程为kh}
2{xx$y=6cos{frac{pi}{5}(t+3)}$,cm}
3{zqxx $y=6cos{frac{pi}{5}(t-3)}$,cm}
4{xx$y=6cos{(frac{pi}{5}t+3)}$,cm}
5{xx$y=6cos{(frac{pi}{5}t-3)}$,cm}
再编写文件“ex1.tex”,该文件中我们使用3种不同的设置对同一道选择题进行排版,内容如下:
1documentclass[a4paper,11pt]{article}
2usepackage[top=2.54cm,bottom=2.54cm,left=3.8cm,right=3.8cm]{geometry}
3usepackage{CJK,amsmath,wasysym}
4input{xztmb.tex}
5egin{document}egin{CJK}{GBK}{song}
6 inyparindent=2emsetxxindent{2em}setxxsep{2mm}showanswer%设置1
7input{xz1.tex}
8 ormalsizeparindent=2emsetxxindent{0em} otshowanswer%设置2
9input{xz1.tex}
10setxxindent{2em}setxxsep{2cm}showanswer%设置3
11input{xz1.tex}
12end{CJK}end{document}
运行结果如图1所示的三种效果。
图1 同一题在3种不同设置下的自动排版效果Fig.1 The effects of a question automatically typeseted under three different settings
例2使用beamer制作幻灯片,编写源文件ex2.tex,内容如下:
1documentclass[CJK]{beamer}
2usepackage{CJK,amsmath,wasysym}
3input{xztmb}
4 ewcommand{xzt}[5]{ otshowanswer
5egin{frame}xzC{#1}{#2}{#3}{#4}{#5}end{frame}
6showansweregin{frame}xzB{#1}{#2}{#3}{#4}{#5}end{frame}}
7egin{document}
8egin{CJK}{GBK}{song}
9 enewcommand{aselinestretch}{1.5}
10parindent=2em ormalsize
11xzt{波源的振动方程为$y=6cos{frac{pi}{5}t}$,cm,它所形成的波为~$2mathrm{ms}^{-1}$~的速度沿~$x$~轴正方向传播,则沿~$x$~轴正方向上距波源6 m处一点的振动方程为kh}
12{xx $y=6cos{frac{pi}{5}(t+3)}$,cm}
13{zqxx $y=6cos{frac{pi}{5}(t-3)}$,cm}
14{xx $y=6cos{(frac{pi}{5}t+3)}$,cm}
15{xx $y=6cos{(frac{pi}{5}t-3)}$,cm}
16end{CJK}end{document}
运行结果得到如图2、图3所示的两张PDF类型的幻灯片,其中第一张显示一道选择题,第二张显示第一张中的试题答案。
图2 第一张幻灯片Fig.2 The first slide
图3 第二张幻灯片Fig.3 The second slide
使用该模板排版选择题时,无论选择什么字号字体,无论选项中是否有数学公式出现,是否有图形出现,可以根据页面宽度自动确定四个选项是按一行、两行还是四行摆放;同时可以根据需要使之显示或不显示答案;可以设置同一行中两个选项的最小间隔;可以设置选项行的悬挂长度;不需要输入小题编号和选项编号。
从以上这些特点来看,如果使用该模板建立选择题库,每道选择题存储成“{题干}{选项1}{选项2}{选项3}{选项 4}”格式的文本即可,不需考虑具体的页面设置情况以及所使用的字号的大小,这样建立起来的题库兼容性较好。
由于LATEX是一种可编程的、所想即所得的科技排版软件,用户需要具备一定的编程基础,国内用户主要集中在高等院校和科研院所,同时高等院校中许多自然科学类的课程中出现很多数学公式和图形,所以使用本文设计的模板建立这类课程的选择题库时优势更加突出,这使得在自动组卷后不需要对试卷中的选择题进行二次排版。
[1]王育坚,马小军,载琪.题库管理与试卷自动生成系统的设计[J].北京联合大学学报:自然科学版,2005,19(4):64-68.
[2]姜红花,林爱玲,张金政,等.基于WEB的通用考试管理系统的开发与应用[J].高等农业教育,2008(3):31-34.
[3]郭晓梅.高等数学标准化试题库设计 [J].科技信息,2008(30):256.
[4]王绍清,严光银.基于文本格式的题库与试卷自动生成系统研究 [J].电脑知识与技术,2008(18):1667-1669.
[5]郝立柱.高等学校题库建设系统[J].黑龙江大学自然科学学报,2001,18(1):39-42.
[6]林辉,杨昔阳.用LAT EX排版软件设计数学试卷 [J].中国西部科技,2006(25):29-30.
[7]陈志杰,赵书钦,李树钧,等.LAT EX入门与提高 [M].北京:高等教育出版社,2006(2):1-7.
Template-designing for Multiple Choice on the Basis of LATEX and its Application
WANGFu-gui1,YANG Miao1,LI Yao-wei1,WANGJian-wei2
(1.School of Arts and Sciences,Shanxi Agricultural University,Taigu Shanxi 030801,China;2.College of Modern Education in Technology,Shanxi Agricultural University,Taigu Shanxi 030801,China)
It is customary for test typists to spend much of their time working out a fine and attractive typeset.For this reason,based on the programmable typeset software LATEX,a template for multiple choice under the environment of LATEX is designed by using the command"ifthenelse"in the"ifthen"package.The designed template has the following six principal features:whether the four choices are typed in one line,or in two or four lines is automatically decided by the maximum length of the four choices;when there are two or four choices in a line the width between one another is evenly determined as designed;both single choice and multiple choice can be typeset;the sequence number A,B,C and D is automatically produced;the serial number to each question is automatically generated;the reference answers can be automatically produced.Thus,the template enables the test typist to put his or her heart into content of the test instead of keeping thinking about the typesetting.
LATEX;Template for multiple-choice;Test paper bank
TP311
A
1671-8151(2010)01-0052-04
2009-10-15
2009-11-20
王福贵 (1976-),男 (汉),山西洪洞人,讲师,硕士,主要从事人工智能方面的研究。
山西农业大学教学改革项目 (092007LX015)
(编辑:武英耀)