计算机工程
Computer Engineering
1999年　第25卷　第9期　Vol.25 No.9  1999



网上教学中有关数学表达式输入问题解决途径的探讨
翁晓霞　张　骏　江　源
　　摘　要：对解决Web页面上缺少有效的方法来表示数学表达式符号的总是进行了探讨，现有3种解决方法：图片方式、MathML方式和插件方式．阐述了这3种方法的具体实现方式并进行了详细的比较，然后提出了一种比较好的实现方式．
　　关键词：网上教学；插件；数学标记语言；文件上载
Comparsion of Methods of Math Expressions on Web Pages
Weng Xiaoxia
(Computer Research Lab. of Post ＆ Telecommunication Training Center, Shanghai 200092)
Zhang Jun
(Network Lab. Dept. of Computer Science, Fudan University, Shanghai 200433)
Jiang Yuan
(C ＆ C Lab. Dept. of Computer Science, Fudan University, Shanghai 200433)
　　Abstract　The Web lacks an effective means for emb. mathematical expressions in Web pages. There are three methods to accomplish the task. They are picture upload, using MathML, and plug-in methods. Each has its advantages and shortcomings. This paper forcuses on the implementation and comparsion of the three methords, and proposes a feasible solution for the current Web-based teaching.
　　Key words　Web-based course; Plug-in; MathML; File upload
　　Web技术提供了一种崭新的教学方式。利用现有的Web技术，可以把传统的课堂教学"搬"到网上，同时发挥它信息资源丰富和不受时间和空间限制的优势。在我国，网上教学正处于起步阶段，一些教育工作者也开始尝试利用Web进行教学。许多大学都进行了网上教学的实验，一些有条件的中学也建立了小规模的网上教学系统。
1　一个棘手问题的提出－数学表达式的输入
　　首先看网上教学系统的基本模型(如图1)。该模型一般分为网上教学服务点、教学内容提供者(教师)和学生。学生可以访问多个网上教学服务点，而教师只对一个网上教学服务点负责管理。

图1　教学系统基本模型
　　在已开发出的网上教学系统中，一般是由计算机专业技术人员按照教师的意图将开发出的优秀课件存储在数据库中，学生可以在任何时间，用浏览器访问服务点进行学习，并能通过BBS和E-mail向教师提问或相互之间进行学习讨论和交流。学生或教师对于一般文本的输入是不成问题的，然而对于一些在数学物理中常用的符号(如积分符号∫，圆周率符号π，角度符号θ)，甚至连分数，使用现有的HTML技术就无能为力了。因为HTML文件都是标准文本内容，对于图片只能引用。浏览器中显示的图片都是在浏览器解释<img src= picture URL>标记时，根据src 指定的URL(Unique Resource Location)通过HTTP协议把图片下载到本地机器并在浏览器中显示的。目前对于公式符号输入问题没有一个令人满意的解决方案。
2　3种解决途径的具体实现方式
2.1 图片方式
　　(1)图片制作　用图片表示是最直截了当的方法。图片的制作由教师和学生用现有的工具，如Word完成。Word中提供了数学表达式(Equation)的输入模型，其中包括了我们常用的积分符号、求和符号、希腊字母、各种括号等常用符号，可基本满足一般数学式子的表示。然而这些符号却不能像Word一样用OLE的方式直接插入Web页面中。
　　最常用的解决方法就是将Word中的符号转换成图片。有各种方法可以实现，比较简单的方法其操作过程简述如下：在Word中，利用Equation的输入模型完成数学式子的表示，把Word文档另存为HTML文件；然后再找到该图片，点击鼠标右键，把它存为图片即可。一般图片都保存为gif或jpg文件，把图片制作好后，然后就可以进行第二步的图片上载。
　　(2)图片上载　图片上载由客户程序和服务器端的程序合作完成。在客户端用HTML中的FILE Upload对象实现文件上载功能，它是一个FORM 对象。在上载前把Input标记中的Type指明为File。它提供一个Browse按钮和一个文本编辑框，通过Browse按钮查找到所要上载的文件，把文件名及其路径显示在文本编辑框中，也可手工输入文件名及其路径(URL)。在一个FORM中可以同时使用多个FileUpload元素上载多个文件，但一个FileUpload元素只能处理一个文件。由于上载的文件数据量大，因而在FORM的标记中，METHOD为POST，而不是GET。FORM的格式如下所写：
　　<FORM ACTION="picInput.htm" METHOD="POST" ENCTYPE="multipart/form-data" >
　　input file name : <input type=file name=myname>
　　</ FORM >
其中Action是服务器端的处理文件，可以是一个Server端的HTML文件，也可以是一个CGI程序。
　　FORM提交之后，Server端的程序分析提交上来的数据。首先分析出文件名，因为要防止文件重名，必须把文件按一定的命名规则重新命名，然后分析出文件的内容，以新的文件名把它存为文件。最后修改img标记中的src，使它指向图片在服务器上的URL。这样上载的过程就完成了。
2.2 数学标记语言
　　为了解决数学符号在浏览器上的显示, W3C在1998年4月7日发布了数学标记语言MathML 1.0(Mathematical Mark Language)的规范说明书。它的目标是使各种各样的数学表达式能够在WWW上传送、接收和处理。它对XML (Extended Marked Language)作了补充，用标记的形式来定义数学表达式。
　　MathML 有3种类型标记：①表达标记描述了数学符号结构，如<mrow> …</mrow>标记，表示其中的字符串是水平显示。②内容标记直接描述数学对象，如加号<plus/>。表达标记和内容标记都能分别表示数学表达式，它们的不同点在于表达标记是从数学表达式的显示形式来描述，而内容标记是从数学表达式本身的内在含义来进行描述。③界面标记<math>…</math>是最高层的标记，它的作用在于传递在<math …>中设置的参数给MathML 的处理程序，这些参数影响整个数学表达式的显示，并在MathML 的处理程序和浏览器之间传递信息提供了一种机制。
　　数学表达式具有递归性，即表达式是由子表达式构成。MathML利用了数学表达式的这个最大特点，设计了它的标记方式，使得两种标记类型，表达标记和内容标记也都体现了递归性。而且MathML的表达也可看成树状结构，每个节点表示了一个MathML的标记，每个树叶是数学表达式中的不可分的单元，如数字、标识符和如<mark_name/>类型的标记。
　　一个一元二次方程的求根公式 
用MathML的内容类型的标记表示为如下 。 
<reln>
　<eq/> <ci>x</ci>
　　<apply> <over/>
　　　<apply> <fn> <mo>&PlusMinus;</mo> </fn>
　　　　<apply> <minus/> <ci>b</ci> </apply>
　　　　<apply><root/>
　　　　　<apply> <minus/>
　　　　　<apply> <power/> <ci>b</ci> <cn>2</cn> </apply>
　　　　　　<apply> <times/>
　　　　　　　<apply> <times/> <cn>4</cn> <ci>a</ci></apply>
　　　　　　　　<ci>c</ci>
　　　　　　</apply>
　　　　</apply>
　　　</apply>
　　</apply>
　　<apply> <times/> <cn>2</cn> <ci>a</ci></apply>
　</apply>
</reln>
2.3　插件方式
　　(1)插件的定义 插件是一个个独立的代码库、动态模块， 集成在浏览器的环境中，用来扩展浏览器处理各种数据类型和文件格式的能力。这使得用户可以开发自己的插件来完成特定的应用。
　　当浏览器启动时,它搜索可用的插件,注册它们支持的MIME (Multi-purposes Internet Mail Extension protocol)类型。如果浏览器收到某一插件支持的MIME类型文件，它就加载此插件并将这个文件交给该插件处理，当离开该页面或关闭该浏览器窗口时，就结束该插件的运行。
　　在HTML中，EMBED 标记就是用来标明一个插件的，在高版本的浏览器中还可以用OBJECT 标记。它有以下主要属性值：
　　<EMBED SRC="location" TYPE="MIMEtype" HEIGHT="height" WIDTH="width" NAME="pluginName" >
　　　　</EMBED>
其中必须包含SRC或TYPE属性，SRC指明了要运行的文件，TYPE指明了MIME的数据类型，也可以是自己定义的类型。根据需要可以自己在EMBED 中定义其它属性值。
　　浏览器对EMBED 标记与IMG 标记的处理基本相同，唯一的不同在于EMBED 能响应用户事件如鼠标单击，而IMG标记却不能。这一特点也就决定了插件方式优于图片方式，即它能根据用户事件来改变数学表达式的显示，而图片不能做到这一点。
　　(2)用插件实现Web页面中数学表达式的表示方法 就是利用插件扩展浏览器，处理各种MIME数据类型的功能，使得浏览器遇到登记的表示数据公式的数据类型时，就调用处理数学表达式的插件程序，把文本形式的数学表达式在浏览器窗口中用图形的方式表示，因而就存在一个如何用语言形式文本表示数学表达式的问题。用类似MathML的复杂标记是不适合用插件来实现的，数学表达式的表示应当简单易懂。因而把数学符号用自然语言来表达，是最直观、简单易懂的方法。但必须对自然语言加以规范，使得它明确、易懂、简洁，并且不产生歧义，有一定的语法规则，易于计算机程序的实现。
　　在国外已经开发出了专门解决数学表达式的应用软件，如EzMath，一元二次方程的求根公式用EzMath的语法，在HTML文本中表示为：
　　<EMBED TYPE="text/ezmath" ALIGN=absmiddle WIDTH= 171 HEIGHT=63
　　　　ALT="x = {-b plus or minus sqrt {b＾2 - 4ac}}/2a">
　　</EMBED>
它的ALT是自己定义的属性，该属性传递数学表达式给处理EzMath 的插件，EzMath 的插件根据宽度值、高度值和其它属性值，把数学表达式显示在浏览器窗口中。
3　3种解决途径的优劣比较分析
3.1 图片方式
　　利用图片方式来解决数学表达式的显示，是一种比较原始、笨拙的方法，它的缺点是显而易见的。
　　首先，图片文件相对较大，一般都要近1kB。数学表达式很多是相同的，图片就有大量的冗余，这样就消耗了大量的服务器存储空间。其次，图片在浏览器上显示时，其下载速度相对文字要慢很多，占用更多的网络资源，较长时间的等待对用户有时是难以容忍的。而且对于用Modem 上网的学生来讲，下载速度慢意味更长地占用电话线，支付更多的电话费，这显然不利于网上教育的推广。再次，图片作为文件单独存储在服务器的文件系统中，而教学的其它文字内容存储在数据库中，在管理上存在不一致性，要同时管理文件和数据库。而且由于图片作为一个文件存储在服务器上，就产生了安全问题。如果上载的不是一个图片，而是一个恶意的程序，那么就有可能造成巨大的破坏和影响。另外，图片质量的好坏由制作者及其使用的工具来决定的。在Web 页面上显示时与背景和上下文很难溶为一体，欠美观。最后指出的是，在处理图片上载时比较烦琐，需要分两步。首先指明哪个地方存在数学表达式，用特殊的符号标记；然后分析输入的内容，有多少特殊的符号标记，就要生成多少个FileUpLoad控件，在各个FileUpLoad中输入图片的URL，再进行上载。
　　然而目前在Web页面上表示数学表达式的规范还没有得到广泛认可和推广前，这种解决符号输入问题的途径也不失为一种实用的方法。学生和老师不需要特殊的专业知识和专业制作工具，制作简单方便。其最大的优点在于不用开发软件，利用现有的工具即可完成。
3.2　标记语言
　　MathML 是为了计算机之间的通信而设计的一种描述数学表达式的低层格式。应用专门的工具编辑，而不是手工去编写。它标记的递归性和树状结构使得它在计算机程序的实现上更方便、简单，优于自然语言形式表达的插件方式。
　　它使用文本的形式，不存在使用图片方式的缺点。然而它的树状结构和完整标记的优点同时也是缺点，使得一个简单的数学表达式，显得冗长、复杂而难懂。而且现在使用MathML还不行，至少要等到Netscape和 IE 都支持它才能得以普遍推行。但从长远的角度看，MathML是解决数学表达式的最好方法。然而它只能解决公式的表示，当遇到数学图表或物理化学图表的表示时，就只能使用图片的方式了。
　　虽然MathML也能用插件方式实现，但不如使用HTML中本身就有的插件标记方便，最好的实现方式是结合在浏览器内部实现，成为HTML的一部分。
3.3　插件
　　目前使用插件是较好的解决途径。它简单易懂，并且由于使用文本的形式，也不存在使用图片方式的缺点，不必作为文件存储在服务器上，数据保存在数据库中，方便管理。但它也有不少的困难：
　　(1)必须在每个浏览器的Plug-in 目录下安装专门开发的插件，只有安装该插件的浏览器才能看到数学表达式，因而不利于网上教学的广泛推广和应用。
　　(2)开发这类插件是一件比较困难的任务，要费时费力地定义一套完整的无二义的数学表达式的表示语法。表示语法能否得到公认，成为规范，以便推广，也是一个短时间内不能解决的问题，如果各自开发各自的表示语法，不能相容，也不利于网上教学的推广和应用。
　　(3)插件只能解决公式的表示，当遇到数学图表或物理化学图表时，插件也无能为力，只能借助图片的方式。
　　(4)虽然它的表示简单易懂，但教师和学生使用时也必须要专门学习，掌握它的表示语法。
因而必须再开发专门的输入系统。
3.4　输入器－－图片方式与插件方式的组合
　　为了克服单纯的图片方式和单纯的插件方式的缺点，可以把两种方式合二为一，开发与网上教学系统配套的输入器。在输入公式时使用插件方式；图表的输入利用图片方式完成。由于图表应用的可能性和冗余要远远小于数学表达式，可大大减少资源的消耗。而数学表达式表示的语法定义可以借鉴国外已有的产品，并逐步完善它的语法定义。这样可发挥两种方式各自的优势，扬长避短。
　　目前，数学表达式输入器需要解决：(1)可视化界面；(2)方便地编辑任意的数学表达式；(3)自动地调整数学表达式的显示与上下内容的匹配，如大小，颜色等；(4)公式的表示对教师和学生透明，教师和学生不必了解HTML的语法或数学表达式的表示语法；(5)与浏览器的无缝连接。
4　结束语
　　要最终圆满地解决数学表达式显示问题，只能有待于HTML的进一步完善。推广MathML或插件方式的数学表达式表示语法的规范化，彻底改变使用图片进行数学表达式显示的方式。目前，我国网上教学所依赖的Web技术和网络基础设施亟待提高，网上教学系统的实现需要使用方便、快捷、高效的专业制作工具。网上教学作为辅助教学手段将为社会不同阶层的人员所接受，对我们传统的教学模式和教学观念将产生深远的影响。
作者简介：翁晓霞(1973～)，女，助理工程师，主研远程教学，远程教学系统开发及系统管理
作者单位：翁晓霞　上海邮电培训中心计算机科学与应用研究室，上海　200092
　　　　　张　骏　复旦大学计算机网络实验室，上海　200433
　　　　　江　源　复旦大学C＆C实验室，上海　200433
参考文献
1 Brown M.WWW Plug-in 技术开发指南.北京：机械工业出版 社，1996
2 刘锦楠，万云龙.WWW文件设计－HTML语言实务.北京：机械 工业出版社，1997
收稿日期：1998-12-02
