一种计算机制作表格的方法 本发明涉及在计算机中制作表格的方法。
现有计算机制作表格方法之一是通过逐个输入制表符的国标区位码或ASCII码,或特定的输入编码(专利申请号89103695.4)构造表格,这些方法每次只能输入一个制表符,速度很慢;而且制表符的区位码和ASCII码难以记忆。
第二种方法在一些编辑、排版软件中用到,通过输入多个指令,在数据存贮区中定义表格四角的座标,表格内部各表格线的交叉点座标,以及各表格线的线型,由软件自动生成表格。这种方法可以快速生成大型表格,其缺点是不直观,一般要预先画好草图,确定座标,比较麻烦,而且不适合制作结构复杂的表格。
第三种方法是通过输入多个指令,在数据存贮区中分别定义一条表格线首、尾座标,以及其线型,由计算机自动生成表格线,这种方法的缺点是操作比较麻烦,制作一条表格线要分别输入三次指令。
第四种方法是使用鼠标,通过按住鼠标的一个键在屏幕上直接划线,这种方法的缺点是所画出表格线的长度不好掌握,而且受计算机屏幕的限制,不适合制作较长的表格线。
本发明专利的目的是,提出一种通过输入编码来构造表格的方法,较逐个输入制表符快速,比定义座标的方法更直观,可以很方便、精确地制作任意规模和复杂程度的表格。
本发明技术方案说明如下:
一种计算机制作表格的方法,表格是由若干条具有一定长度和线型的横、竖方向表格线相互联接构成。计算机中,表格线又是由一定数量地制表符在数据存贮区中按一定的行、列位置排列构成;在计算机中制作表格线,须通过输入指令,确定构成该表格线的制表符的数目,以及表格线在数据存贮区中的存放位置,并根据指令,以及每一制表符存放位置与周围位置的表格线应有的联接关系,选择合适的制表符输入数据存贮区,构成表格线,本发明将表格线的结构分为方向、线型、长度三类特征,选择计算机键盘所能输入的字符组合构成表征该三类特征的表格线输入编码,在数据存贮区中默认一个存放表格线的起始位置,以输入表格线输入编码作为一条表格线的制作指令,由计算机选择所需制表符输入数据存贮区,构成表格线,通过逐个输入表格线制作指令,构成多条表格线,实现计算机表格的制作。
所述方向是指表格线的横向和竖向,横线还可细分为从左向右、从右向左两种方向,竖线可分为从上向下、从下向上两种。
所述线型对于《GB-2312(80)字符集》中的制表符,有粗、细两种线型;《ASCII字符集》中的制表符有单、双线型;其它的字符集可能还有不同的线型。
所述长度可以用构成表格线的制表符数目表示。
在输入表格线输入编码后,计算机根据以下算法在数据存贮区中构造表格线。
一.默认数据存贮区中X行、Y列为存贮表格线的起点位置,例如在编辑、排版软件中应用本制表方法,可以默认光标位置为起点。
二.设输入编码中“长度”特征所指示制表符的数目为n个,制表符的存放位置区分为以下四种情况:
1.向右制作横线,选择n个制表符输入数据存贮区的第X行,从第Y列开始的后续列。
2.向左制作横线,选择n个制表符输入数据存贮区的第X行,从第Y列开始的前续列。
3.向下制作竖线,选择n个制表符输入数据存贮区的第Y列,从第X行开始的后续行。
4.向上制作竖线,选择n个制表符输入数据存贮区的第Y列,从第X行开始的前续行。
三.由于所构造的表格线有可能与其它的线交叉、相联,如图1所示,需要选择特定的制表符输入,如以实现表格线之间的联接。所以在连续输入制表符的过程中,对于每一个制表符,都须根据表格线输入编码,以及存放该制表符的当前位置与周围位置的表格线应有的联接关系,选择合适的制表符输入,构成表格线的联接。
下面以《GB-2312(80)字符集》为例,阐述如何适当选择制表符,实现表格线之间的联接。
存贮在数据存贮区中的制表符可以用行、列定位。如图2所示,设中间横线是数据存贮区中存放当前要输入的制表符的位置,简称“当前位置”,1、2、3、4分别表示当前位置四周上、右、下、左的相邻位置。
为了实现表格线之间的联接,需要判断在当前位置的相邻1、2、3、4号位置上是否有需要联接的制表符。
为了便于判断制表符是否需要被联接,以及应以何种线型联接,将所有制表符按“被联接特征”分类。所谓“被联接特征”,即当该制表符处在当前位置的相邻位置时,具有与当前位置的制表符以某种线型联接,以构成一个封闭表格交角或联接点的特征。
“被联接特征”分为被联接方向、线型两部分,当一个制表符处于当前位置的某一方向的相邻位置,且需以某种线型联接时,称为具有该方向该线型的被联接特征。同一个制表符在不同的位置时,具有不同的被联接特征。
例如:当制表符(区位0936)处在当前位置的左邻位置,当前位置的制表符应与其右边的细线联接,以构成封闭的交角,该制表符即具有“左联细线”的被联接特征;当处于当前位置的上邻位置时,则具有“上联粗线”特征。
《GB-3212(80)字符集》的制表符,其“被联接特征”可分为八类:上联细线、上联粗线、下联细线、下联粗线、左联细线、左联粗线、右联细线和右联粗线。
GB-2312(80)制表符“被联接特征”分类表如图3所示。
其它字符集的制表符可能有不同的线型,其被联接特征也有相应的线型。
根据表格线输入编码,以及当前位置的相邻位置上制表符的被联接特征,构造一个“联接特征码”,输入到当前位置的制表符即可由“联接特征码”唯一确定。
仅有两种线型变化的制表符,其联接特征编码采用一个八位的二进制数,如图4所示。第1、2、3、4位分别表示当前位置的上、右、下、左方向是否需要联线,要联线则置该位为1,否则置0;第5、6、7、8位分别表示当前位置的上、右、下、左方向联线的线型,粗线联接,该位置1,细线置0。
有更多线型变化的制表符,其联接特征码需要更多的二进制位。例如四种线型,每一方向的线型需二位表示,加联线编码总共要十二位;八种线型需十六位。
构造“联接特征码”分为两步:
注:以下将当前制作的表格线简称为表线。
第一步:根据表格线输入编码中“方向”、“线型”和“长度”三个特征,区分以下四种情况,强置“联接特征编码”的某些位。
1.表线长度大于1,开首第一个制表符。
因为可以确定表线制作方向上将会有需要联接的制表符,且联接线型与表线线型相同。强置代表该方向联线位为1。联接线型根据表线线型判断,是粗线,置该方向联接线型位为1,细线置0。例如:从左向右制横细线,第一个制表符的“联接特征码”的第2位置1,第6位置0。
2.表线长度大于1,最后一个制表符。
可以确定与表线制作方向相反的方向需要联线,且联接线型与表线线型相同。强置该方向联线位为1。联接线型根据表线线型判断,是粗线,置该方向联接线型位为1细线置0。例如:从左向右制一条粗线,长度为10个制表符。则第10个制表符的“联接特征编码”的第4位强置为1,第8位置1。
3.表线长度大于1,且是中间位置的制表符。
可以确定表线的制作方向及其相反方向需要联线,且联接线型与表线线型相同。强置这两个方向的联线位为1。联接线型根据输入编码判断,是粗线,置这两个方向联接线型位为1细线置0。
4.表线长度等于1。
“联接特征码”没有强置位。
第二步:除第一步已经强置的二进制位外,其余位的值根据以下规则判断。
分别判断当前位置的上、下、左、右相邻位置是否有制表符;如果没有,置联接特征码中该方向的联线位、联接线型位为0;如果有,则根据该制表符的“被联接特征”,判断该方向是否需要联接,以及联接的线型。如果需要联线,置联接特征码中该方向的联线位为1,否则置0。所需联接的线型为粗线,置该方向的联接线型位为1,否则置0。
例如:当前位置的上邻位置有制表符(区位0936),由计算机通过自动查询“被联接特征分类表”,可知其具有“上联粗线”特征,说明当前位置需要以粗线与上方联接,其“联接特征码”的第1、5位要置1。
根据以上构造的联接特征码,查询图5、图6、图7所示的《联接特征总表》,其中图5的查询要区分以下不同情况,当前输入的制表符处于表格线左端、右端、上端、下端、中间,查询图5所示相应的栏目,即可唯一确定一个制表符,输入到数据存贮区。
《GB-2132(80)字符集》制表符的联接特征码总表见图5、图6、图7。
本发明可以快速、直观、方便地制作各种表格。
根据上述方法构造的编码,可以融入任一汉字编码输入方案中,或作为一种独立的输入方案,通过汉字输入提示行输入;也可以单独设置一个制表编码输入状态,在该状态中输入制表编码。
根据上述表格线输入编码方法,在使用具有粗、细、单、双四种线型制表符制作表格时,例如《GB-2312(80)》字符集和《ASCII字符集》的制表符,可有如下实施例:
表格线输入编码的第一种方案:
采用标准英文键盘上“h、s”键(汉字“横、竖”的拼音首字母)表示表格线横、竖向特征,制表符的存放位置约定从起点开始,横线向右,竖线向下。
取“c、x、d、s”键(汉字“粗、细、单、双”的拼音首字母)分别代表表格线的粗、细、单、双四种线型特征。
如果另外还有不同的线型,可再选择其它的键表示。
长度特征用两位编码表示,码元用“0”至“9”十个数字键,表示连续输入制表符的数目。
组合以上“方向、线型和长度”三类特征编码构成表格线输入编码,例如:输入编码“hc18”表示横向制作一条18个字符长度的粗线表格线。
通过定义某种线型为默认线型,在制作该种线型的表格线时,可以省略代表线型的编码,构成一个表格线输入简码。
综合以上所述可有如图8所示的表格线输入编码。
表格线输入编码的第二种方案:
横向表格线可分为向右、向左两种制作方向,竖线也可分为向下、向上两种方向,采用标准英文键盘上“s、x、z、y”键(汉字“上、下、左、右”的拼音首字母)分别代表表格线的向上、向下、向左、向右四个方向特征。
线型、长度特征编码与第一种方案相同。
组合以上“方向、线型和长度”三类特征编码构成表格线输入编码,例如:输入编码“yc18”表示向右制作一条18个字符长度的粗横表格线。
通过定义某种线型为默认线型,在制作该种线型的表格线时,可以省略代表线型的编码,构成一个表格线输入简码。例如定义细线为默认线型,输入编码“x20”表示向下制作一条20个制表符长的细线。
综合以上所述可有如图9所示的表格线输入编码。
一个矩形表格方框是由上下两条横线和左右两条竖线构成,制作一个表格方框就相当于制作四条表格线,其四条表格线的线型一般相同,而且两条横线长度相等,两条竖线的长度也相等,根据表格线输入编码的构成方式,用一组编码表示矩形表格方框四条表格线的线型,用两组长度特征编码分别表示上、下两条横线和左、右两条竖线的长度,每组长度编码用两个码元,顺序组合以上三个编码,构成一个表格方框的输入编码。例如:表格方框输入编码“c2015”,表示一个宽20、高15的粗线表格方框。
当定义默认线型后,还可省略表征默认线型的编码,仅用两个长度特征编码(四位数字),构成一个表格方框的输入简码。例如:定义粗线为默认线型,输入编码1025表示一个宽10、高25个制表符的粗线表格方框。
综合以上所述可有如图10所示的表格方框输入编码。附图说明:
图1.表格线交叉相联示意图
图2.存放制表符的当前位置示意图
图3.《GB-2312(80)字符集》制表符“被联接特征”分类表
图4.《GB-2312(80)字符集》制表符联接特征编码结构
图5.《GB-2132(80)字符集》制表符的《联接特征码总表》之一
图6.《GB-2132(80)字符集》制表符的《联接特征码总表》之二
图7.《GB-2132(80)字符集》制表符的《联接特征码总表》之三
图8.第一种方案的表格线输入编码
图9.第二种方案表格线输入编码
图10.表格方框输入编码
注:附图中,“N”代表“0”至“9”十个数字,H结尾表
示是十六进制数,B结尾表示二进制数,其余为十进
制数;其中图5、图6、图7中制表符旁的四位数
是该制表符的国标区位码。