代码信息的排版方法、电子设备及计算机存储介质与流程

文档序号:15604124发布日期:2018-10-09 17:14阅读:156来源:国知局

本发明涉及文档处理技术领域,具体涉及一种代码信息的排版方法、电子设备及计算机存储介质。



背景技术:

随着电子书的日益流行,越来越多的原始书籍材料被转换为电子书文档,以方便用户阅读。在转换过程中,需要针对原始书籍材料中包含的文字信息进行识别,并根据识别后的结果进行重新排版。

例如,以常见的版式排版的文档为例,由于版式排版的版面是固定的,阅读过程中始终以原始编辑版式显示,缩放后不会自动根据页宽进行重新排版。如利用扫描得到的初始图片制成的PDF文档,以及固定版式制作的PDF文档与纯文本文件等,而流式排版的文档包含的文字、数字、表格和图形图像进行特定的版排方式处理,保存后的内容是原始的编辑元素。通俗地来讲,版式排版的文档的排版不能更改,而流式排版的文档的排版可以更改,将版式排版的文档转换为流式排版的文档之后,能够保留版式排版的文档中的字符、图片等信息,但其文档的排版格式不会保留。

但发明人在实现本发明的过程中发现,上述排版方式至少存在下述缺陷:在对原始文档进行识别及转换之后,往往会更改原始文档的排版方式,使重新排版后的文档与排版前的文档在格式、和/或排版等方面存在不同。例如,对于文字信息而言,可能重新排版前的每行文字中包含50个字,而重新排版后的每行文字中则包含40个字,从而导致排版前后文字的总行数存在差异。文字内容改变排版方式后尚不会影响读者的阅读,但是,代码信息则不然:代码包含缩进、分隔符、和/或换行符等多种特殊格式,其中,通过缩进可以界定各代码块的范围,通过分隔符、换行符等可以提高代码的可阅读性。除此之外,代码中的注释一旦串行则会使整段代码变得不可读。由此可见,代码的排版方式一旦更改则会显著降低代码的可读性,严重的还会使该段代码完全无法阅读。然而,现有技术中的排版方式尚无法解决代码信息经重新排版后降低可读性的技术问题。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的代码信息的排版方法、电子设备以及计算机存储介质。

根据本发明的一个方面,提供了一种代码信息的排版方法,包括:识别文档中包含的代码区域;

分别获取所述代码区域中包含的每行代码信息,将该行代码信息存储为一段代码信息;

分别针对每段代码信息,确定该段代码信息中的首个字符在所述代码区域中的位置;

根据所述首个字符在所述代码区域中的位置对该段代码信息进行排版。

根据本发明的另一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;

所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行以下操作:

识别文档中包含的代码区域;

分别获取所述代码区域中包含的每行代码信息,将该行代码信息存储为一段代码信息;

分别针对每段代码信息,确定该段代码信息中的首个字符在所述代码区域中的位置;

根据所述首个字符在所述代码区域中的位置对该段代码信息进行排版。

根据本发明的另一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行以下操作:

识别文档中包含的代码区域;

分别获取所述代码区域中包含的每行代码信息,将该行代码信息存储为一段代码信息;

分别针对每段代码信息,确定该段代码信息中的首个字符在所述代码区域中的位置;

根据所述首个字符在所述代码区域中的位置对该段代码信息进行排版。

根据本发明的代码信息的排版方法、电子设备及计算机存储介质,通过识别文档中包含的代码区域;分别获取代码区域中包含的每行代码信息,将该行代码信息存储为一段代码信息;分别针对每段代码信息,确定该段代码信息中的首个字符在代码区域中的位置;根据首个字符在代码区域中的位置对该段代码信息进行排版。根据文档中代码的格式对从文档中提取出的代码进行排版,避免提取出的代码丧失其在文档中的格式,从而需要对从文档中提取的代码手动检查以及排版的问题,便于相关人员直接利用提取出的代码。该方式提升了排版后的代码的可读性,解决了排版后的代码串行的问题。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明实施例一的代码信息的排版方法的流程示意图;

图2示出了根据本发明实施例二的代码信息的排版方法的流程示意图;

图3示出了根据本发明一个实施例的电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

实施例一

本发明一个实施例提供了一种代码信息的排版方法。通常情况下,文档经过格式转换,得到的文档中的代码不具有原文档中代码的格式,或者文档中的代码经过直接拷贝,得到的代码不具有原文档中代码的格式,例如,将PDF文档转换为word文档,或者将PDF文档中的内容拷贝到word文档或者TXT文档中,对PDF文档中的包含的内容加以利用,但往往PDF文档经过转换或者PDF文档中的内容经过拷贝之后,word文档中的内容不具有其在PDF文档中的格式,TXT文档中的内容也不具有其在PDF文档中的格式,相比于PDF文档中的内容的格式,具体表现为字体以及行间距被改变、内容折行、间隔符被删除等。

将版式排版的文档进行格式转换之后,文档包含的代码丧失了其在版式排版的文档中的格式,包括语句单元的缩进、与操作符对应的分隔符、换行符等等,使得相关人员不能对该段代码直接加以利用,针对文档中的代码,每种编程语言都有开发社区建议的代码缩进规范,其一是为了有利于代码阅读,其二是为了界定各代码块的范围,例如Python语言根据每行代码中首个字符前的缩进识别代码块的范围,若转换之后的每行代码之前没有缩进,则代码无法正常运行,再如代码中以“//”开头的注释方式,注释内容为以“//”开始到本行结束之间的内容,若文档转换之后的每行代码之间丧失了换行符,则“//”之后并且与“//”位于同一行的原有的注释内容以及代码将会被确定为注释内容。

基于此,本实施例提供了一种对文档中的代码进行排版的方法。当然,本领域技术人员能够理解的是,本发明提供的方法不仅可以用于对版式排版的原始文件进行重新排版,还能够应用于对纸质的原始文件或流式排版的原始文件进行重新排版,且排版后的文件可能为各种格式或各种排版方式,本发明并不限定具体的应用场景。

图1示出了该实施例的代码信息的排版方法的流程示意图,如图1所示,该方法包括:

步骤S101,识别文档中包含的代码区域。

其中,可通过多种方式识别。例如,考虑到代码的语言、字体、行间距等均可能与常规文字不同,因此,可以根据文档的行间距特征、语言特征、和/或字体特征来识别文档中包含的代码区域。在本实施例中,通过识别文档中包含的代码区域的横向起始边界与横向结束边界来确定代码区域的范围。具体可通过识别代码的首个字符,提取代码的首个字符在文档中的坐标位置,以及识别代码的最后一个字符,提取代码的最后一个字符在文档中的坐标位置,根据上述坐标位置确定文档中包含的代码区域,当然,本发明识别代码区域的方法并不限于此。

步骤S102,分别获取代码区域中包含的每行代码信息,将该行代码信息存储为一段代码信息。

具体实施时,本实施例的方法可用于对文档中的代码进行拷贝的过程中,即对文档中的代码的复制操作之后,粘贴操作之前,也可用于对文档进行格式转换的过程中,当然,本发明对此不作限定。

由于代码所呈现的形式是一行一行的,为了更加便捷地对获取的代码进行排版,使获取的代码经过重新排版,与文档中的代码的格式一致,本实施例根据上述步骤确定了代码区域,获取代码区域中的每行代码信息,将每行代码信息提取出来作为一段代码信息,其中,每段代码信息所包含的字符与每行代码信息包含的字符一致,但每段代码信息的格式与每行代码信息的格式未必一致,因此可以根据每段代码信息分别对应的每行代码信息在文档中的格式,对每段代码信息进行排版,使得每段代码信息的格式分别与对应的每行代码信息在文档中的格式一致。

总之,通过将代码区域的每一行代码单独存储为一段代码,能够使每行代码所包含的字符的数量和内容不发生变化,从而维持代码本身的排版方式。

步骤S103,分别针对每段代码信息,确定该段代码信息中的首个字符在代码区域中的位置。

获取代码区域中包含的每行代码信息的过程中,可以获取到每行代码信息所包含的每一个字符,同时可以获取到每行代码信息中的各个字符在原始文档中对应的坐标位置,进一步根据代码区域的范围可以确定该段代码信息的首个字符在代码区域中的位置。具体实现时,可以根据代码区域建立坐标系,根据该坐标系确定代码区域包含的每一个字符的坐标位置,进一步确定该段代码信息中的首个字符在代码区域中的坐标位置。

步骤S104,根据首个字符在代码区域中的位置对该段代码信息进行排版。

其中,首个字符在代码区域中的位置能够反映该段代码在原始文档中的缩进情况,从而根据该缩进情况进行排版。

具体地,根据首个字符在代码区域中的坐标位置,计算首个字符距离代码区域的纵向边界的距离,得到该段代码信息的缩进距离,根据缩进距离对该段代码进行缩进,其中,代码区域的纵向起始边界可以是文档的纵向边界,也可以代码区域包含的代码中距离文档的纵向边界最近的字符所在的坐标位置上的纵向直线,作为代码区域的纵向起始边界,当然本发明对此不作限定。

本实施例以上述对文档进行格式转换以及拷贝文档中的代码对本发明方法进行解释,可以明白的是,上述两种场景仅仅是本发明的具体实施场景,本发明的方法并不限于上述两种实施场景。

根据本实施例的代码信息的排版方法,通过识别文档中包含的代码区域;分别获取代码区域中包含的每行代码信息,将该行代码信息存储为一段代码信息;分别针对每段代码信息,确定该段代码信息中的首个字符在代码区域中的位置;根据首个字符在代码区域中的位置对该段代码信息进行排版。通过根据文档中代码的格式对从文档中提取出的代码进行排版,避免提取出的代码的丧失其在文档中的格式,从而需要对从文档中提取的代码手动检查以及排版的问题,便于相关人员直接利用提取出的代码。该方式提升了排版后的代码的可读性,解决了排版后的代码串行的问题。

实施例二

图2示出了根据本发明实施例二的代码信息的排版方法的方法流程图,如图2所示,该方法包括:

步骤S201,根据预设的代码特征识别规则识别文档中包含的代码区域的横向起始边界以及横向结束边界。

其中,代码特征识别规则包括以下三种规则中的至少一个:第一种规则为:用于识别横向起始边界和/或横向结束边界的行间距识别规则、字体识别规则、语言识别规则。该规则通用于识别横向起始边界和纵向起始边界。

具体地,识别代码区域的横向起始边界以及横向结束边界,即识别代码区域的首行代码以及最后一行代码,具体可根据以下三种方式进行识别:

方式一:由于代码区域与非代码区域中字符的行间距会存在不同,因此可根据文档中每行字符之间的行间距识别代码区域,例如检测到文档中的一行字符与该行字符的上一行字符之间的行间距不同于该行字符与该行字符的下一行字符之间的行间距,并且包括该行字符以及该行字符之后的连续若干行字符之间的间距一致,则确定该行字符为代码的首行代码。同理,检测到文档中的一行字符与该行字符的上一行字符之间的行间距不同于该行字符与该行字符的下一行字符之间的行间距,并且包括该行字符以及该行字符之前的连续若干行字符之间的间距一致,则确定该行字符为代码的最后一行代码。

方式二:由于代码区域与非代码区域中的字符的字体和/或字号会存在不同,因此可根据文档中字符的字体和/或字号识别代码区域,例如,检测到文档中的一行字符为宋体的字符,并且字号为四号,该行字符之后的若干行字符为等宽字体的字符,并且字号为小四,则表明该行字符之后第一行字符为代码的首行代码。同理,若检测到文档中的一行字符为宋体的字符,并且字号为四号,该行字符之前的若干行字符为等宽的字符,并且字号为小四,则表明该行字符之前的最后一行字符为代码的最后一行代码。

方式三:通常情况下代码中的字符均为英文,因此可根据语言识别代码的首行代码以及最后一行代码,例如,检测到文档中的一行字符为英文,该行字符之前的最后一行字符为中文,并且该行字符之后的连续若干行字符为英文,则表明该行字符为代码的首行代码。同理,若检测到文档中的一行字符为英文,该行字符之前的若干行字符为英文,并且该行字符之后的第一行字符为中文,则表明该行字符为代码的最后一行代码。

第二种规则为:用于识别横向起始边界的起始边界规则,其中,起始边界规则根据预设的代码起始特征确定,且代码起始特征包括:程序语言中包含的特征语句、关键字、操作符、和/或程序起始标识。

具体地,根据程序语言中包含的特征语句识别代码的首行代码,特征语句例如while(i<j)、for(int j=1;j<=num;j++)等;根据程序语言中包含的关键字识别代码的首行代码,不同程序语言对应有不同的关键词,例如Java语言具有50个关键词,包括:abstract、boolean、break、byte、case等等;根据程序语言中包含的操作符识别代码的首行代码,程序语言中包含的操作符包括“==”、“/”、“%”以及“++”等;另外还可通过识别程序语言中程序起始标识进行识别,例如,Java代码通常以“package”开始,C语言代码通常以“#include”开始,Python代码以声明编码“#coding:utf-8”开始,因此根据上述方法可以确定代码的首行代码。

第三种规则为:用于识别横向结束边界的结束边界规则,其中,结束边界规则根据预设的代码结束特征确定,且代码结束特征至少包括:程序结束标识。例如,C语言代码以及Java代码中以“;”表示一行代码的结束,以“}”表示一个函数的结束等等,因此可以根据代码结束特征确定代码的最后一行代码。

将首行代码中的各个字符顶端所对应的横向水平线确定为代码的横向起始边界;将最后一行代码中的各个字符底端所对应的横向水平线确定为代码的横向结束边界。当然,本实施例中还可以通过其他方式确定横向起始边界和横向结束边界,本发明对此不做限定。

其中,文档中包含的代码区域是指:原始文档中通过版式排版方式进行排版的区域,也即无法对该代码区域中包括的字符的缩进、字符字体、字符字号、行间距以及更多的格式进行更改。相应地,通过该文档中包含的代码区域能够确定原始文档中代码的原始排版方式。

步骤S202,根据横向起始边界以及横向结束边界确定代码区域的范围。

根据上述步骤S201确定了代码的横向起始边界以及横向结束边界,横向起始边界以及横向结束边界所包含的区域的范围即为代码区域的范围,后续进一步对代码区域包含的代码进行处理。

步骤S203,分别获取代码区域中包含的每行代码信息,将该行代码信息存储为一段代码信息。

由于代码所呈现的形式是一行一行的,为了更加便捷地对获取的代码进行排版,使获取的代码经过重新排版,与文档中的代码的格式一致,本实施例根据上述步骤确定了代码区域,获取代码区域中的每行代码信息,将每行代码信息提取出来作为一段代码信息,其中,每段代码信息所包含的字符与每行代码信息包含的字符一致,但每段代码信息的格式与每行代码信息的格式未必一致,因此可以根据每段代码信息分别对应的每行代码信息在文档中的格式,对每段代码信息进行排版,使得每段代码信息的格式分别与对应的每行代码信息在文档中的格式一致。

步骤S204,分别针对每段代码信息,确定该段代码信息中的首个字符在代码区域中的位置。

根据上述内容所述的,代码中的缩进是非常必要的,本实施例的方法对获取的每段代码信息按照对应的每行代码在文档中的缩进方式对每段代码信息进行缩进处理,因此需要确定每段代码信息中的首个字符在代码区域中的位置。例如,可以在代码区域设置包含横向坐标轴和纵向坐标轴的坐标系,横向坐标轴与横向起始边界或纵向起始边界相互平行,通过横向坐标轴获取的横向坐标值能够反映字符在横向方向上的缩进情况。相应地,在本步骤中,获取该段代码信息中的首个字符所对应的横向坐标值,根据该横向坐标值确定该字符在代码区域中的位置。

步骤S205,确定代码区域的纵向起始边界。

纵向起始边界用于表示非缩进的代码的起始位置,具体根据代码区域中各行代码信息的首个字符的位置确定。在本步骤中,获取代码区域中未缩进的一行中首个字符所对应的横向坐标值,并据此确定纵向起始边界。

步骤S206,计算首个字符在代码区域中的位置与纵向起始边界之间的距离。

具体地,对于步骤S204中的一段代码而言,若该段代码未经缩进处理,则该段代码首个字符在代码区域中的位置与纵向起始边界之间的距离为零;若该段代码经过缩进处理,则该段代码首个字符在代码区域中的位置与纵向起始边界之间的距离能够反映缩进的倍数。

具体地,根据与该段代码信息对应的字符宽度确定单位缩进量;根据距离以及单位缩进量确定缩进倍数,根据缩进倍数对该段代码信息进行缩进处理。

根据上述不同的代码区域的纵向起始边界,首个字符在代码区域中的位置与纵向起始边界之间的距离可通过以下两种方式进行计算:

方式一:确定该段代码信息的首个字符在代码区域中的位置对应的横向坐标值为第一横向坐标值,确定文档的纵向边界上纵向坐标值与首个字符的纵向坐标值相同的位置,确定该位置所对应的横向坐标值为第二横向坐标值,计算第一横向坐标值与第二横向坐标值的差值,该差值即为该段代码信息的首个字符在代码区域中的位置与纵向起始边界之间的距离。

方式二:确定该段代码信息的首个字符在代码区域中的位置对应的横向坐标值为第一横向坐标值,确定代码区域中距离文档的边界距离最小的字符所在的位置对应的横向坐标值为第二横向坐标值,计算第一横向坐标值与第二横向坐标值的差值,该差值即为该段代码信息的首个字符在代码区域中的位置与纵向起始边界之间的距离。

步骤S207,根据距离对该段代码信息进行缩进处理,针对缩进处理后的该段代码信息进行排版。

本实施例通过流式排版方式,根据首个字符在代码区域中的位置对该段代码信息进行排版。即可以对该段代码信息的缩进、字符的字体、字符的字号,行间距以及更多的格式进行更改。

根据该段代码信息包含的字符对应在代码区域中的字符宽度确定第一单位缩进量,具体可确定第一单位缩进量为4倍字符宽度,相应地,根据该段代码信息中的字符的字符宽度确定第二单位缩进量,确定该段代码信息对应的第二单位缩进量也为4倍字符宽度,将首个字符在代码区域中的位置与纵向起始边界之间的距离与第一单位缩进量相除,得到缩进倍数,进一步根据缩进倍数以及第二单位缩进量对该段代码信息进行缩进处理。

针对缩进处理后的该段代码信息进行排版,具体地,当确定该段代码信息需要插入分隔符时,在该段代码信息中插入分隔符,需要说明的是,本发明在该段代码信息中插入分隔符的操作与对该段代码信息进行缩进处理的操作的顺序不进行限定。

其中,当确定该段代码信息需要插入分隔符时,在该段代码信息中插入分隔符可通过以下两种方式实现:

方式一:根据代码区域确定该段代码信息中包含的各个字符之间的间距,当相邻的两个字符之间的间距大于预设间距阈值时,在该相邻的两个字符之间插入分隔符。

根据该代码区域中包含的各个字符对应在代码区域中的坐标位置,可以确定代码区域该段代码信息中的各个字符之间的间距,具体可将代码区域中字符的字符宽度确定预设间距阈值,当代码区域中相邻的两个字符之间的间距大于预设间距阈值时,则确定需要该段代码信息中该两个字符之间需要插入分隔符,根据代码区域中该两个字符之间的间距除以代码区域中的字符的字符宽度的结果确定插入的分隔符的数量,在该段代码信息中该两个相邻的字符之间插入上述数量的分隔符。

方式二:分别确定该段代码信息中包含的各个语句单元;根据每个语句单元的语句类型,确定与该语句单元相对应的分隔符插入规则;根据分隔符插入规则,为该语句单元插入分隔符;其中,分隔符插入规则用于根据语句单元中包含的关键字和/或操作符确定分隔符的插入位置。

根据程序语言规则,同时为了提高代码的可阅读性,通常在代码的字符之间插入分隔符,其中对于根据语言程序规则插入的分隔符是必不可少的,否则会造成代码运行出错,因此可根据语句单元的语句类型,确定语句单元相对应的分隔符插入操作规则插入分隔符,例如该段代码信息为“vari=5”,识别出“var”为对应为变量声明关键字,而“=”为赋值操作符,因此根据程序语言规则确定关键字“var”与“i”之间需要插入分隔符,而在操作符“=”前后插入分隔符以供提高代码的可阅读性,通过该步骤之后该段代码信息为“var i=5”,相关人员可对该段经过排版的代码信息直接进行利用。

根据本实施例提供的代码信息的排版方法,通过根据预设的代码特征识别规则识别文档中包含的代码区域的横向起始边界以及横向结束边界;根据横向起始边界以及横向结束边界确定代码区域的范围;分别获取代码区域中包含的每行代码信息,将该行代码信息存储为一段代码信息;分别针对每段代码信息,确定该段代码信息中的首个字符在代码区域中的位置;确定代码区域的纵向起始边界;计算首个字符在代码区域中的位置与纵向起始边界之间的距离;根据距离对该段代码信息进行缩进处理,针对缩进处理后的该段代码信息进行排版。根据一段代码信息中的首个字符在代码区域中的位置以及代码区域的纵向起始边界确定该段代码信息的缩进距离,从而对该段代码信息进行缩进处理;另外根据一段代码信息包含的各个字符在代码区域中的间距和/或根据该段代码信息的语句单元判断该段代码信息是否需要插入分隔符,从而根据判断结果在该段代码信息中插入分隔符,本发明通过对每段代码信息进行缩进处理以及插入分隔符处理,能够根据文档中代码的格式对从文档中提取出的代码进行排版,避免提取出的代码丧失其在文档中的格式,从而需要对从文档中提取的代码手动检查以及排版的问题,便于相关人员直接利用提取出的代码。该方式提升了排版后的代码的可读性,解决了排版后的代码串行的问题。

本申请实施例三提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的代码信息的排版方法。

可执行指令具体可以用于使得处理器执行以下操作:

识别文档中包含的代码区域;

分别获取代码区域中包含的每行代码信息,将该行代码信息存储为一段代码信息;

分别针对每段代码信息,确定该段代码信息中的首个字符在代码区域中的位置;

根据首个字符在代码区域中的位置对该段代码信息进行排版。

可执行指令具体还可以用于使得处理器执行以下操作:

根据预设的代码特征识别规则识别文档中包含的代码区域的横向起始边界以及横向结束边界;

根据横向起始边界以及横向结束边界确定代码区域的范围。

可执行指令具体还可以用于使得处理器执行以下操作:

用于识别横向起始边界和/或横向结束边界的行间距识别规则、字体识别规则、语言识别规则;

用于识别横向起始边界的起始边界规则,其中,起始边界规则根据预设的代码起始特征确定,且代码起始特征包括:程序语言中包含的特征语句、关键字、操作符、和/或程序起始标识;

用于识别横向结束边界的结束边界规则,其中,结束边界规则根据预设的代码结束特征确定,且代码结束特征至少包括:程序结束标识。

可执行指令具体还可以用于使得处理器执行以下操作:

确定代码区域的纵向起始边界;

计算首个字符在代码区域中的位置与纵向起始边界之间的距离;

根据距离对该段代码信息进行缩进处理,针对缩进处理后的该段代码信息进行排版。

可执行指令具体还可以用于使得处理器执行以下操作:

根据与该段代码信息对应的字符宽度确定单位缩进量;

根据距离以及单位缩进量确定缩进倍数,根据缩进倍数对该段代码信息进行缩进处理。

可执行指令具体还可以用于使得处理器执行以下操作:

当确定该段代码信息需要插入分隔符时,在该段代码信息中插入分隔符。

可执行指令具体还可以用于使得处理器执行以下操作:

根据代码区域确定该段代码信息中包含的各个字符之间的间距,当相邻的两个字符之间的间距大于预设间距阈值时,在该相邻的两个字符之间插入分隔符。

可执行指令具体还可以用于使得处理器执行以下操作:

分别确定该段代码信息中包含的各个语句单元;

根据每个语句单元的语句类型,确定与该语句单元相对应的分隔符插入规则;

根据分隔符插入规则,为该语句单元插入分隔符;

其中,分隔符插入规则用于根据语句单元中包含的关键字和/或操作符确定分隔符的插入位置。

可执行指令具体还可以用于使得处理器执行以下操作:

文档中包含的代码区域为通过版式排版方式进行排版的区域。

可执行指令具体还可以用于使得处理器执行以下操作:

通过流式排版方式,根据首个字符在代码区域中的位置对该段代码信息进行排版。

图3示出了根据本发明一个实施例的电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。

如图3所示,该电子设备可以包括:处理器(processor)302、通信接口(Communications Interface)304、存储器(memory)306、以及通信总线308。

其中:

处理器302、通信接口304、以及存储器306通过通信总线308完成相互间的通信。

通信接口304,用于与其它设备比如客户端或其它服务器等的网元通信。

处理器302,用于执行程序310,具体可以执行上述基于封面分析的电子书籍配色方法实施例中的相关步骤。

具体地,程序310可以包括程序代码,该程序代码包括计算机操作指令。

处理器302可能是中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。

存储器306,用于存放程序310。存储器306可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

程序310具体可以用于使得处理器302执行以下操作:

识别文档中包含的代码区域;

分别获取代码区域中包含的每行代码信息,将该行代码信息存储为一段代码信息;

分别针对每段代码信息,确定该段代码信息中的首个字符在代码区域中的位置;

根据首个字符在代码区域中的位置对该段代码信息进行排版。

程序310具体还可以用于使得处理器302执行以下操作:

根据预设的代码特征识别规则识别文档中包含的代码区域的横向起始边界以及横向结束边界;

根据横向起始边界以及横向结束边界确定代码区域的范围。

程序310具体还可以用于使得处理器302执行以下操作:

用于识别横向起始边界和/或横向结束边界的行间距识别规则、字体识别规则、语言识别规则;

用于识别横向起始边界的起始边界规则,其中,起始边界规则根据预设的代码起始特征确定,且代码起始特征包括:程序语言中包含的特征语句、关键字、操作符、和/或程序起始标识;

用于识别横向结束边界的结束边界规则,其中,结束边界规则根据预设的代码结束特征确定,且代码结束特征至少包括:程序结束标识。

程序310具体还可以用于使得处理器302执行以下操作:

确定代码区域的纵向起始边界;

计算首个字符在代码区域中的位置与纵向起始边界之间的距离;

根据距离对该段代码信息进行缩进处理,针对缩进处理后的该段代码信息进行排版。

程序310具体还可以用于使得处理器302执行以下操作:

根据与该段代码信息对应的字符宽度确定单位缩进量;

根据距离以及单位缩进量确定缩进倍数,根据缩进倍数对该段代码信息进行缩进处理。

程序310具体还可以用于使得处理器302执行以下操作:

当确定该段代码信息需要插入分隔符时,在该段代码信息中插入分隔符。

程序310具体还可以用于使得处理器302执行以下操作:

根据代码区域确定该段代码信息中包含的各个字符之间的间距,当相邻的两个字符之间的间距大于预设间距阈值时,在该相邻的两个字符之间插入分隔符。

程序310具体还可以用于使得处理器302执行以下操作:

分别确定该段代码信息中包含的各个语句单元;

根据每个语句单元的语句类型,确定与该语句单元相对应的分隔符插入规则;

根据分隔符插入规则,为该语句单元插入分隔符;

其中,分隔符插入规则用于根据语句单元中包含的关键字和/或操作符确定分隔符的插入位置。

程序310具体还可以用于使得处理器302执行以下操作:

文档中包含的代码区域为通过版式排版方式进行排版的区域。

程序310具体还可以用于使得处理器302执行以下操作:

通过流式排版方式,根据首个字符在代码区域中的位置对该段代码信息进行排版。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1