CN113033152B - 一种LaTeX公式显示方法及装置 - Google Patents
一种LaTeX公式显示方法及装置 Download PDFInfo
- Publication number
- CN113033152B CN113033152B CN202110357160.1A CN202110357160A CN113033152B CN 113033152 B CN113033152 B CN 113033152B CN 202110357160 A CN202110357160 A CN 202110357160A CN 113033152 B CN113033152 B CN 113033152B
- Authority
- CN
- China
- Prior art keywords
- latex
- box model
- command
- displayed
- way tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 239000004816 latex Substances 0.000 title claims abstract description 229
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000012545 processing Methods 0.000 claims description 20
- 238000004458 analytical method Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 13
- 239000000203 mixture Substances 0.000 claims description 6
- 238000009472 formulation Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 9
- 239000000126 substance Substances 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 239000003086 colorant Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明实施例提供了一种LaTeX公式显示方法及装置,涉及显示技术领域。该方法包括:将待显示LaTeX公式解析为至少一个LaTeX命令;采用递归下降法将各LaTeX命令解析为对应的元素,生成待显示LaTeX公式对应的元素多叉树;根据元素多叉树生成待显示LaTeX公式对应的盒模型多叉树;盒模型多叉树中的盒模型用于表征对应的字符的绘制规则;绘制盒模型多叉树中各盒模型对应的字符,生成包含待显示LaTeX公式的位图;显示包含待显示LaTeX公式的位图。本发明实施例用于提供一种可以跨平台使用的LaTeX公式显示方式。
Description
技术领域
本发明涉及显示技术领域,尤其涉及一种LaTeX公式显示方法及装置。
背景技术
LaTeX(音译:拉泰赫)是一种基于ΤeX的排版系统。相比于其它语言,LaTeX表达数学公式更加灵活丰富,因此目前对于公式符号的输入,多数以基于LaTeX的公式编辑器为主。
随着信息化技术的发展,在线教育已成为学生学习的重要方式之一。在教育软件相关产品中,题目信息是学生学习和练习最重要的组成部分,题目信息的显示效果会直接影响学生的阅读效率和理解程度,尤其是对于数学公式、化学方程式、物理公式等文字难以描述的内容的显示,因此LaTeX公式在终端设备上的解析和渲染十分重要。现有技术中一种LaTeX公式显示的方式为:针对平台构建库,基于构建的库对LaTeX公式进行显示。例如针对iOS平台构建的iosMath。这种方式虽然性能良好,但是不能够跨平台使用,并且对LaTeX的支持严重不足。因此本领域亟需一种可以跨平台使用的LaTeX公式显示方式。
发明内容
有鉴于此,本发明提供了一种LaTeX公式显示方法及装置,用于提供一种可以跨平台使用的LaTeX公式显示方式。
为了实现上述目的,本发明实施例提供技术方案如下:
第一方面,本发明的实施例提供了一种LaTeX公式显示方法,包括:
将待显示LaTeX公式解析为至少一个LaTeX命令;
采用递归下降法将各LaTeX命令解析为对应的元素,生成所述待显示LaTeX公式对应的元素多叉树;
根据所述元素多叉树生成所述待显示LaTeX公式对应的盒模型多叉树;所述盒模型多叉树中的盒模型用于表征对应的字符的绘制规则;
绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图;
显示包含所述待显示LaTeX公式的位图。
作为本发明实施例一种可选的实施方式,所述将待显示LaTeX公式解析为至少一个LaTeX命令,包括:
将所述待显示LaTeX公式的字符串中每一个起始字符为预设字符的字符串划分为一个命令字符串;
将各命令字符串分别解析为一个LaTeX命令。
作为本发明实施例一种可选的实施方式,所述将各命令字符串分别解析为一个LaTeX命令,包括:
根据预设解析规则确定各命令字符串对应的LaTeX命令的名称;
根据各命令字符串对应的LaTeX命令的名称确定各命令字符串对应的解析规则;
根据各命令字符串对应的解析规则解析各命令字符串,获取各命令字符串对应的LaTeX命令。
作为本发明实施例一种可选的实施方式,所述根据所述元素多叉树生成所述待显示LaTeX公式对应的盒模型多叉树,包括:
生成所述元素多叉树中各元素对应的盒模型;
根据盒模型组合规则组合所述元素多叉树中各元素对应的盒模型,生成所述待显示LaTeX公式对应的盒模型多叉树。
作为本发明实施例一种可选的实施方式,所述绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图,包括:
确定所述盒模型多叉树中各盒模型在位图中的位置信息;
根据各盒模型在位图中的位置信息,在各盒模型对应的位置绘制各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图。
作为本发明实施例一种可选的实施方式,所述绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图,包括:
通过绘图接口绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图;
其中,所述绘图接口包括Graphic2D接口、路径接口、字体接口以及颜色接口中的至少一个。
作为本发明实施例一种可选的实施方式,在通过绘图接口绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图之前,所述方法还包括:
在目标平台中配置所述绘图接口;
其中,所述目标平台为显示包含所述待显示LaTeX公式的位图的平台。
第二方面,本发明实施例提供一种LaTeX公式显示装置,包括:
解析单元,用于将待显示LaTeX公式解析为至少一个LaTeX命令;
处理单元,用于采用递归下降法将各LaTeX命令解析为对应的元素,生成所述待显示LaTeX公式对应的元素多叉树;
所述处理单元,还用于根据所述元素多叉树生成所述待显示LaTeX公式对应的盒模型多叉树;所述盒模型多叉树中的盒模型用于表征对应的字符的绘制规则;
绘制单元,用于绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图;
显示单元,用于显示包含所述待显示LaTeX公式的位图。
作为本发明实施例一种可选的实施方式,所述解析单元,具体用于将所述待显示LaTeX公式的字符串中每一个起始字符为预设字符的字符串划分为一个命令字符串,以及将各命令字符串分别解析为一个LaTeX命令。
作为本发明实施例一种可选的实施方式,所述解析单元,具体用于根据预设解析规则确定各命令字符串对应的LaTeX命令的名称;根据各命令字符串对应的LaTeX命令的名称确定各命令字符串对应的解析规则;根据各命令字符串对应的解析规则解析各命令字符串,获取各命令字符串对应的LaTeX命令。
作为本发明实施例一种可选的实施方式,所述处理单元,具体用于生成所述元素多叉树中各元素对应的盒模型;根据盒模型组合规则组合所述元素多叉树中各元素对应的盒模型,生成所述待显示LaTeX公式对应的盒模型多叉树。
作为本发明实施例一种可选的实施方式,所述绘制单元,具体用于包括:确定所述盒模型多叉树中各盒模型在位图中的位置信息;根据各盒模型在位图中的位置信息,在各盒模型对应的位置绘制各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图。
作为本发明实施例一种可选的实施方式,所述绘制单元,具体用于通过绘图接口绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图;
其中,所述绘图接口包括Graphic2D接口、路径接口、字体接口以及颜色接口中的至少一个。
作为本发明实施例一种可选的实施方式,所述绘制单元,还用于在目标平台中配置所述绘图接口;
其中,所述目标平台为显示包含所述待显示LaTeX公式的位图的平台。
第三方面,本发明实施例提供一种电子设备,包括:存储器和处理器,存储器用于存储计算机程序;处理器用于在调用计算机程序时执行第一方面或第一方面任一种可选的实施方式所述的LaTeX公式显示方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现第一方面或第一方面任一种可选的实施方式所述的LaTeX公式显示方法。
本发明实施例提供的LaTeX公式显示方法首先将待显示LaTeX公式解析为至少一个LaTeX命令,然后采用递归下降法将各LaTeX命令解析为对应的元素,生成所述待显示LaTeX公式对应的元素多叉树,再根据所述元素多叉树生成所述待显示LaTeX公式对应的盒模型多叉树,最后绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图,并显示包含所述待显示LaTeX公式的位图。由于本发明实施例提供的LaTeX公式显示方法是通过生成待显示LaTeX公式对应的盒模型多叉树,并绘制所述盒模型多叉树中各盒模型对应的字符来生成包含所述待显示LaTeX公式的位图的,因此本发明实施例提供的LaTeX公式显示方法可以被嵌入到任意包含绘制盒模型对应的字符的接口的平台中使用,因此本发明实施例提供了一种可以跨平台使用的LaTeX公式显示方式。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的显示LaTeX公式显示方法的架构图;
图2为本发明实施例提供的LaTeX公式显示方法的流程图;
图3为本发明实施例提供的命令的继承体系示意图;
图4为本发明实施例提供的元素多叉树的示意图;
图5为本发明实施例提供的盒模型属性的示意图;
图6为本发明实施例提供的盒模型多叉树的示意图;
图7为本发明实施例提供的LaTeX公式显示装置的结构示意图;
图8为本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面将对本发明的方案进行进一步描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但本发明还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本发明的一部分实施例,而不是全部的实施例。
在本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。此外,在本发明实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
以下首先对实现本发明实施例提供的LaTeX公式显示方法的整体架构进行说明。示例性的,参照图1所示,实现本发明实施例提供的LaTeX公式显示方法的架构包括:输入模块101、解析器102、命令(Commands)103、字符(SymbolAtom)104、宏命令(NewCommandMacro)105、元素多叉树106、盒模型多叉树107、绘图接口108、位图109以及相关平台110。其中,解析器102包括一个主解析器(TeX解析器)和多个辅解析器(图2中以包括两个辅解析器,且两个辅解析器分别为化学公式解析器和物理公式解析器示出)。TeX解析器用于通过循环和栈来递归下降的解析LaTeX公式,并保存解析结果。辅解析器和主解析器共享一些相同的命令,也具有一些特有规则,例如:化学环境中箭头、上角标、下角标与一般解析规则差异较大。因此辅解析器继承自主解析器,但必须重新写入解析方法,重塑解析规则。
基于图1所示架构,本发明实施例提供的LaTeX公式显示方法的实现原理为:将LaTeX公式解析成矢量坐标点后,将矢量坐标点传递给平台的渲染引擎,最后由平台的渲染引擎将矢量坐标点渲染成位图后显示。主要现实步骤包括:步骤1、相关平台110预先实现绘图接口108;步骤2、解析器102接收输入模块101输出的LaTeX公式的字符串,并根据解析规则将LaTeX公式的字符串解析为LaTeX命令。步骤3、解析器102将解析的LaTeX命令交给命令处理模块(Commands)103、字符处理模块(SymbolAtom)104和宏命令处理模块(NewCommandMacro)105进行处理得到相应的元素。步骤4、解析器102根据各LaTeX命令对应的元素递归下降生成元素多叉树106;步骤5、根据元素多叉树106生成对应的盒模型(BOX)多叉树107;步骤6、盒模型多叉树107根据各盒模型的坐标位置,使用绘图接口108进行绘制包含LaTeX公式的位图109。
其中,元素(Atom)是指LaTeX公式中的字符、运算符、角标、特殊符号、矩阵等公式的因子。元素多叉树是指节点类型为元素的多叉树,对LaTeX公式中的各LaTeX命令对应的元素进行递归下降,则可生成LaTeX公式对应的元素多叉树。盒模型多叉树是指节点类型为盒模型的多叉树,将元素多叉树中的各个元素均替换为对应的盒模型,并根据相应规则将各个元素对应的盒模型粘合到一起,则可生成LaTeX公式对应的盒模型多叉树。绘图接口是指用于绘制LaTeX公式中的字符、用于几何图形、用于加载字符的字体、用于加载字符和线条的颜色等功能模块。
基于上述架构和实现原理,本发明实施例提供了一种LaTeX公式显示方法,参照图2所示,本发明实施例提供的LaTeX公式显示方法包括如下步骤:
S101、将待显示LaTeX公式解析为至少一个LaTeX命令。
可选的,将待显示LaTeX公式解析为至少一个LaTeX命令,包括:
将所述待显示LaTeX公式的字符串中每一个起始字符为预设字符的字符串划分为一个命令字符串;
将各命令字符串分别解析为一个LaTeX命令。
可选的,预设字符可以为“\”。即,将对于LaTeX公式中每一个以“\”开头的字符串,引擎会划分为1个命令字符串,并进一步将其解析对应的LaTeX命令。例如:对于LaTeX公式中的字符串“\sqrt[3]{(x-y)^3}”,引擎会将其划分为1个命令字符串,并将其解析为一个LaTeX命令“CammandSqrt”。
进一步可选的,将各命令字符串分别解析为一个LaTeX命令的实现方式可以包括如下步骤a至步骤c:
步骤a、根据预设解析规则确定各命令字符串对应的LaTeX命令的名称。
示例性的,解析规则可以包括命令字符串与LaTeX命令的名称的对应关系,根据预设解析规则确定各命令字符串对应的LaTeX命令的名称包括:根据预设解析规则确定与各命令字符串匹配的LaTeX命令的名称。
步骤b、根据各命令字符串对应的LaTeX命令的名称确定各命令字符串对应的解析规则。
具体的,每个LaTeX命令都有自己的解析规则,各LaTeX命令的解析规则可以根据各LaTeX命令在命令继承体系中继承的命令的解析规则以及各LaTeX命令的特有解析规则确定。
示例性的,部分命令组成的命令继承体系如图3所示。在图3所示LaTeX命令继承体系中:
1、基类命令继承了抽象接口AtomConsumer。其中,抽象接口AtomConsumer抽象了一系列用于实现基类命令与解析器之间通信的接口。
2、部分命令是根据命令所需的参数的数量命名的。例如:命令2A表示该命令所需的参数的数量为2。再例如:命令5A表示该命令所需的参数的数量为5,再例如:命令101A表示该命令所需的参数的数量为1或2。此类命令不会用来直接生成对象,而是作为基类来被继承。
3、部分命令直接继承自基类命令,例如:向左命令(CommandLeft),矩阵命令(CommandMatrix);部分命令则继承自基类命令的扩展类,例如:开根命令(CommandSqrt)继承自基类命令的扩展类命令101A。
4、部分特殊命令承担的不再是一个简单的命令功能,此类特殊命令会直接将处理流程带到了一个对应的学科环境中,通过对应学科的解析器来处理,直到环境结束。例如:化学命令(CommandCE)会直接将处理流程带到了一个化学环境中,并通过专门的化学解析器(MhchemParser)来处理,直到环境结束。此外,若需要支持处理一门新的学科的命令,则可以采用类似方式,生成对应的解析器,并通过集成体系中命令的基类将处理流程带入该学科对应的环境中,通过该学科对应的解析器进行处理。
步骤c、根据各命令字符串对应的解析规则解析各命令字符串,获取各命令字符串对应的LaTeX命令。
例如:矩阵命令对应的字符串:
根据预设解析规则可以确定该命令字符串对应的LaTeX命令的名称为CommandMatrix,根据CommandMatrix可以确定解析该命令字符串的解析规则,最后再根据该命令字符串的解析规则对该命令进行解析,以获取一个矩阵命令。
S102、采用递归下降法将各LaTeX命令解析为对应的元素,生成所述待显示LaTeX公式对应的元素多叉树。
LaTeX命令最终会解析为一个或多个元素。元素可以是所有逻辑数学构造公式TeXFormula的一部分,所有的子类都必须实现虚函数createBox。每个元素必须定义自己的类型,用以确定在相邻元素之间粘合方式。例如:继承自Command2A的CommandFrac最后会生成一个继承自Atom的NthRoot,NthRoot包含两个成员变量:base和root,它们的类型都是Atom,可以是任意Atom的子类。
示例性的,当LaTeX公式的字符串为:\sqrt[3]{(x-y)^3}=x-y时,生成的元素多叉树如图4所示。由于首先LaTeX公式由一个开方命令和字符“=”、“x”、“-”、“y”组成,因此生成根节点“RowAtom”,并将开方命令对应的元素“NthAtom”和字符“=”、“x”、“-”、“y”对应的元素分别作为根节点“RowAtom”的子节点,又因为开方命令对应的元素“NthAtom”包括两个参数,一个参数为字符“3”,另一个参数为“(x-y)3”,因此首先将字符“3”对应的元素作为元素“NthAtom”的一个子节点,而参数“(x-y)3”由字符串“(x-y)”与一个角标组成,因此生成字符串“(x-y)3”对应的元素“RowAtom”,并将“(”、“x”、“-”、“y”以及角标对应的命令“ScriptsAtom”作为该“RowAtom”的子节点,最后“ScriptsAtom”的参数也包括两个,一个为“)”、另一个为上角标“3”,且没有对应的下角标,因此将字符“)”和“3”对应的元素以及表征无下角标的元素“nullptr”作为“ScriptsAtom”的子节点。
由于LaTeX命令的解析过程采用的是递归下降法,若LaTeX命令或者LaTeX命令的参数中存在嵌套的LaTeX命令,则会递归下降,因此最后会生成一个节点类型为LaTeX命令的多叉树,再将节点类型为LaTeX命令的多叉树中的各LaTeX命令处理为对应的元素,则会生成待显示LaTeX公式对应的元素多叉树,且元素多叉树中每一个节点的类型均为元素。
S103、根据所述元素多叉树生成所述待显示LaTeX公式对应的盒模型多叉树。
其中,所述盒模型多叉树中的盒模型用于表征对应的字符的绘制规则。
作为本发明实施例一种可选的实施方式,上述步骤S103(根据所述元素多叉树生成所述待显示LaTeX公式对应的盒模型多叉树),包括如下步骤a和步骤b:
步骤a、生成所述元素多叉树中各元素对应的盒模型。
具体的,元素多叉树每个元素都会生成对应的盒模型,在元素的基类中会看到一个虚函数:virtual std::shared_ptr<Box>createBox(const std::shared_ptr<TeXEnvironment>&env)=0,可以调用该虚函数生成元素对应的盒模型。
步骤b、根据盒模型组合规则组合所述元素多叉树中各元素对应的盒模型,生成所述待显示LaTeX公式对应的盒模型多叉树。
由于步骤S102中生了待显示LaTeX字符对应的元素多叉树,元素多叉树中每一个节点的类型均为元素,而每一个元素可以生成对应的盒模型,因此生成盒模型多叉树的过程也是一个递归下降过程:由元素多叉树中的么一个元素各自生成对应的盒模型,并在当前节点中按照规则进行组合。盒模型与盒模型之间会根据LaTeX规则,基于基准线(baseline)粘合到一起,最后也会形成一棵节点类型为盒模型的盒模型多叉树。
本发明实施例中的盒模型(Box)代表着LaTeX字符的绘制规则,具有几个比较重要的属性:
示例性的,参照图5所示,图5中以下以字符P为例对盒模型的属性进行说明。如图5所示,字符P的基准线为50,基于基准线,字符P的宽度为a、高度为b、深度为c。
承上示例所述,由于LaTeX命令\sqrt[3]{(x-y)^3}=x-y对应的元素多叉树如图4所示,因此LaTeX命令对应的盒模型多叉树可以图6所示。其中,元素多叉树中的元素分别在盒模型多叉树中对应一个盒模型,图6中任一盒模型后括号内的元素为改盒模型对应的元素。例如盒模型多叉树中的元素“StrutBox”对应盒模型多叉树中的盒模型“CharAtom#3”。
S104、绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图。
由于盒模型多叉树中的盒模型用于表征对应的字符的绘制规则,且盒模型多叉树中包括LaTeX公式中每一个字符对应的元素生成的盒模型,因此可以通过绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图。
作为本发明实施例一种可选的实施方式,所述绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图,包括:
确定所述盒模型多叉树中各盒模型在位图中的位置信息;
根据各盒模型在位图中的位置信息,在各盒模型对应的位置绘制各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图。
具体的,确定所述盒模型多叉树中各盒模型在位图中的位置信息的方式可以为:根据盒模型多叉树中各盒模型的尺寸和位图中待显示LaTeX公式的显示规则,确定盒模型多叉树中各盒模型的位置信息。
例如:待显示LaTeX公式的显示规则为靠右显示,且缩进2个字符,则确定第一个盒模型的起始位置为第3个字符所在位置,第二个盒模型的起始位置为第3+n字符所在位置,n为第一盒模型所占用的字符数,第m个盒模型的起始为第m-1个盒模型的起始位置与第m-1个盒模型占用的字符数的和。
作为本发明实施例一种可选的实施方式,所述绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图,包括:
通过绘图接口绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图。
其中,所述绘图接口包括Graphic2D接口、路径接口、字体接口以及颜色接口中的至少一个。
Graphic2D接口(Graphics2DInterface),用于绘制待显示LaTeX公式中的字符、字符串、直线、矩形等。
路径接口(Path)用于绘制待显示LaTeX公式中的贝塞尔曲线。
字体接口(Font)用来加载LaTeX公式中的字符的字体。
颜色接口(Color)用于加载LaTeX公式中的字符和线条的颜色。
进一步的,在通过绘图接口绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图之前,本发明实施例提供的方法还包括:
在目标平台中配置所述绘图接口;
其中,所述目标平台为显示包含所述待显示LaTeX公式的位图的平台。
为了增强代码通用性,上述实施例对平台中的绘制接口进行了抽象,然而绘制接口的实现在每个平台上都是不同的,因此为了能够通过在目标平台上实现通过绘图接口绘制所述盒模型多叉树中各盒模型对应的字符,还需要在目标平台上配置绘图接口。
示例性的,当目标平台为苹果移动端操作系统(iPhone Operation System,iOS)平台时,由于OC语言是一种基于C语言的语言,能够支持与C/C++混编,因此可以通过OC与C++混编的方式实现在iOS平台上配置绘图接口。
示例性的,当目标平台为安卓(Android)平台时,由于安卓所使用的Java语言无法与C/C++混编,在安卓平台上无法通过混编的方式在安卓平台上配置绘图接口,因此对于安卓平台,可以通过Java本地接口(Java Native Interface,JNI)的方式实现在目标平台上配置绘图接口。即,在安卓平台绘图接口的实现包括3层,其分别为:科特林(Kotlin)层的应用程序接口(Application Programming Interface,API)、JNI通信层以及C/C++的接口层。通过JNI通信层实现科特林层的API与C/C++的接口层通信,进而实现在安卓平台上配置绘图接口。
S105、显示包含所述待显示LaTeX公式的位图。
本发明实施例提供的LaTeX公式显示方法首先将待显示LaTeX公式解析为至少一个LaTeX命令,然后采用递归下降法将各LaTeX命令解析为对应的元素,生成所述待显示LaTeX公式对应的元素多叉树,再根据所述元素多叉树生成所述待显示LaTeX公式对应的盒模型多叉树,最后绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图,并显示包含所述待显示LaTeX公式的位图。由于本发明实施例提供的LaTeX公式显示方法是通过生成待显示LaTeX公式对应的盒模型多叉树,并绘制所述盒模型多叉树中各盒模型对应的字符来生成包含所述待显示LaTeX公式的位图的,因此本发明实施例提供的LaTeX公式显示方法可以被嵌入到任意包含绘制盒模型对应的字符的接口的平台中使用,因此本发明实施例提供了一种可以跨平台使用的LaTeX公式显示方式。
基于同一发明构思,作为对上述方法的实现,本发明实施例还提供了一种LaTeX公式显示装置,该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的LaTeX公式显示装置能够对应实现前述方法实施例中的全部内容。
图7为本发明实施例提供的LaTeX公式显示装置的结构示意图,如图7所示,本实施例提供的LaTeX公式显示装置700包括:
解析单元71,用于将待显示LaTeX公式解析为至少一个LaTeX命令;
处理单元72,用于采用递归下降法将各LaTeX命令解析为对应的元素,生成所述待显示LaTeX公式对应的元素多叉树;
所述处理单元72,还用于根据所述元素多叉树生成所述待显示LaTeX公式对应的盒模型多叉树;所述盒模型多叉树中的盒模型用于表征对应的字符的绘制规则;
绘制单元73,用于绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图;
显示单元74,用于显示包含所述待显示LaTeX公式的位图。
作为本发明实施例一种可选的实施方式,所述解析单元71,具体用于将所述待显示LaTeX公式的字符串中每一个起始字符为预设字符的字符串解析为一个LaTeX命令。
作为本发明实施例一种可选的实施方式,所述处理单元72,具体用于根据各LaTeX命令的解析规则确定各LaTeX命令在命令继承体系中对应的命令;根据各LaTeX命令在命令继承体系中对应的命令将各LaTeX命令处理为对应的元素。
作为本发明实施例一种可选的实施方式,所述处理单元72,具体用于生成所述元素多叉树中各元素对应的盒模型;根据盒模型组合规则组合所述元素多叉树中各元素对应的盒模型,生成所述待显示LaTeX公式对应的盒模型多叉树。
作为本发明实施例一种可选的实施方式,所述绘制单元73,具体用于包括:确定所述盒模型多叉树中各盒模型在位图中的位置信息;根据各盒模型在位图中的位置信息,在各盒模型对应的位置绘制各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图。
作为本发明实施例一种可选的实施方式,所述绘制单元73,具体用于通过绘图接口绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图;
其中,所述绘图接口包括Graphic2D接口、路径接口、字体接口以及颜色接口中的至少一个。
作为本发明实施例一种可选的实施方式,所述绘制单元73,还用于在目标平台中配置所述绘图接口;
其中,所述目标平台为显示包含所述待显示LaTeX公式的位图的平台。
上述实施例装置实施例提供的LaTeX公式显示装置可以执行上述实施例提供的LaTeX公式显示方式,其实现原理与技术效果类似,此处不再赘述。
基于同一发明构思,本发明实施例还提供了一种电子设备。图8为本发明实施例提供的电子设备的结构示意图,如图8所示,本实施例提供的电子设备包括:存储器81和处理器82,存储器81用于存储计算机程序;处理器82用于在调用计算机程序时执行上述实施例提供的LaTeX公式显示方法的步骤。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述实施例提供的LaTeX公式显示方法的步骤。
本领域技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
处理器可以是中央处理单元(CentralProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储,信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。根据本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (9)
1.一种LaTeX公式显示方法,其特征在于,包括:
将待显示LaTeX公式解析为至少一个LaTeX命令;
采用递归下降法将各LaTeX命令解析为对应的元素,生成所述待显示LaTeX公式对应的元素多叉树;
根据所述元素多叉树生成所述待显示LaTeX公式对应的盒模型多叉树;所述盒模型多叉树中的盒模型用于表征对应的字符的绘制规则,所述盒模型包括:基准线以及基于所述基准线字符的宽度、高度、深度中的至少一个;
绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图;
显示包含所述待显示LaTeX公式的位图;
所述根据所述元素多叉树生成所述待显示LaTeX公式对应的盒模型多叉树,包括:
生成所述元素多叉树中各元素对应的盒模型;
将所述元素多叉树中各元素对应的盒模型基于基准线粘合到一起,以获取所述待显示LaTeX公式对应的盒模型多叉树。
2.根据权利要求1所述的方法,其特征在于,所述将待显示LaTeX公式解析为至少一个LaTeX命令,包括:
将所述待显示LaTeX公式的字符串中每一个起始字符为预设字符的字符串划分为一个命令字符串;
将各命令字符串分别解析为一个LaTeX命令。
3.根据权利要求1所述的方法,其特征在于,所述将各命令字符串分别解析为一个LaTeX命令,包括:
根据预设解析规则确定各命令字符串对应的LaTeX命令的名称;
根据各命令字符串对应的LaTeX命令的名称确定各命令字符串对应的解析规则;
根据各命令字符串对应的解析规则解析各命令字符串,获取各命令字符串对应的LaTeX命令。
4.根据权利要求1所述的方法,其特征在于,所述绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图,包括:
确定所述盒模型多叉树中各盒模型在位图中的位置信息;
根据各盒模型在位图中的位置信息,在各盒模型对应的位置绘制各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图。
5.根据权利要求1所述的方法,其特征在于,所述绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图,包括:
通过绘图接口绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图;
其中,所述绘图接口包括Graphic2D接口、路径接口、字体接口以及颜色接口中的至少一个。
6.根据权利要求5所述的方法,其特征在于,在通过绘图接口绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图之前,所述方法还包括:
在目标平台中配置所述绘图接口;
其中,所述目标平台为显示包含所述待显示LaTeX公式的位图的平台。
7.一种LaTeX公式显示装置,其特征在于,包括:
解析单元,用于将待显示LaTeX公式解析为至少一个LaTeX命令;
处理单元,用于采用递归下降法将各LaTeX命令解析为对应的元素,生成所述待显示LaTeX公式对应的元素多叉树;
所述处理单元,还用于根据所述元素多叉树生成所述待显示LaTeX公式对应的盒模型多叉树;所述盒模型多叉树中的盒模型用于表征对应的字符的绘制规则,所述盒模型包括:基准线以及基于所述基准线字符的宽度、高度、深度中的至少一个;
绘制单元,用于绘制所述盒模型多叉树中各盒模型对应的字符,生成包含所述待显示LaTeX公式的位图;
显示单元,用于显示包含所述待显示LaTeX公式的位图;
所述处理单元,具体用于生成所述元素多叉树中各元素对应的盒模型;将所述元素多叉树中各元素对应的盒模型基于基准线粘合到一起,以获取所述待显示LaTeX公式对应的盒模型多叉树。
8.一种电子设备,其特征在于,包括:存储器和处理器,存储器用于存储计算机程序;处理器用于在调用计算机程序时执行权利要求1-6任一项所述的LaTeX公式显示方法。
9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,计算机程序被处理器执行时实现权利要求1-6任一项所述的LaTeX公式显示方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110357160.1A CN113033152B (zh) | 2021-04-01 | 2021-04-01 | 一种LaTeX公式显示方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110357160.1A CN113033152B (zh) | 2021-04-01 | 2021-04-01 | 一种LaTeX公式显示方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113033152A CN113033152A (zh) | 2021-06-25 |
CN113033152B true CN113033152B (zh) | 2024-05-28 |
Family
ID=76454070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110357160.1A Active CN113033152B (zh) | 2021-04-01 | 2021-04-01 | 一种LaTeX公式显示方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113033152B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663126A (zh) * | 2012-04-23 | 2012-09-12 | 奇智软件(北京)有限公司 | 一种在移动终端中显示网页的方法及装置 |
CN104991905A (zh) * | 2015-06-17 | 2015-10-21 | 河北大学 | 一种基于层次索引的数学表达式检索方法 |
CN109376351A (zh) * | 2018-09-11 | 2019-02-22 | 宁波思骏科技有限公司 | 一种在平板设备上对教学内容自适应排版的方法 |
CN110751137A (zh) * | 2019-09-04 | 2020-02-04 | 中山大学 | 一种自动求解数学题的方法和系统 |
CN110765743A (zh) * | 2019-09-25 | 2020-02-07 | 青岛励图高科信息技术有限公司 | 用于数学公式在HTML中编辑显示和导出到Word文档中的系统 |
CN110795526A (zh) * | 2019-10-29 | 2020-02-14 | 北京林业大学 | 一种用于检索系统的数学公式索引创建方法与系统 |
CN111241788A (zh) * | 2019-12-26 | 2020-06-05 | 平安国际智慧城市科技股份有限公司 | 基于线性模型的文档转换方法、装置、设备及存储介质 |
-
2021
- 2021-04-01 CN CN202110357160.1A patent/CN113033152B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663126A (zh) * | 2012-04-23 | 2012-09-12 | 奇智软件(北京)有限公司 | 一种在移动终端中显示网页的方法及装置 |
CN104991905A (zh) * | 2015-06-17 | 2015-10-21 | 河北大学 | 一种基于层次索引的数学表达式检索方法 |
CN109376351A (zh) * | 2018-09-11 | 2019-02-22 | 宁波思骏科技有限公司 | 一种在平板设备上对教学内容自适应排版的方法 |
CN110751137A (zh) * | 2019-09-04 | 2020-02-04 | 中山大学 | 一种自动求解数学题的方法和系统 |
CN110765743A (zh) * | 2019-09-25 | 2020-02-07 | 青岛励图高科信息技术有限公司 | 用于数学公式在HTML中编辑显示和导出到Word文档中的系统 |
CN110795526A (zh) * | 2019-10-29 | 2020-02-14 | 北京林业大学 | 一种用于检索系统的数学公式索引创建方法与系统 |
CN111241788A (zh) * | 2019-12-26 | 2020-06-05 | 平安国际智慧城市科技股份有限公司 | 基于线性模型的文档转换方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113033152A (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112099792B (zh) | 一种可视化ui样式设计方法及系统 | |
CN111475163A (zh) | 视图模板的代码文件生成方法、装置、设备及存储介质 | |
US10572129B2 (en) | Declarative user interface representation conversion via hierarchical templates | |
CN108920133A (zh) | 跨语言编程方法、装置、电子设备及存储介质 | |
US20170192877A1 (en) | Mobile application development and deployment | |
CN112631580B (zh) | 数据处理方法、装置及计算设备 | |
CN105511843A (zh) | 一种生成应用程序界面的方法和装置 | |
CN106991096A (zh) | 动态页面渲染方法及装置 | |
CN112306486B (zh) | 一种界面生成方法、装置、服务器及存储介质 | |
WO2022204345A1 (en) | Enabling custom software development by domain experts | |
CN113033152B (zh) | 一种LaTeX公式显示方法及装置 | |
CN112732252A (zh) | 一种动态生成ui的方法、装置和电子设备 | |
CN115291857A (zh) | 一种可视化的业务规则编排方法及配置器 | |
CN110866379B (zh) | 数据可视化图表库系统 | |
CN111240676A (zh) | 一种生成骨架屏的代码的方法及装置 | |
Roberts et al. | Programming Abstractions in C++ | |
CN112181418A (zh) | 一种核反应堆计算软件图形界面的快速构建方法及系统 | |
US20230195424A1 (en) | Method and apparatus for generating applications | |
CN114328467A (zh) | 数据库交互方法、装置设备及存储介质 | |
CN118245143A (zh) | 一种应用程序执行方法及计算设备 | |
Schrauwen et al. | Bachelor’s Thesis Computing Science | |
Schöttle et al. | On the difficulties of raising the level of abstraction and facilitating reuse in software modelling: the case for signature extension | |
Gagniuc | Classic and Modern Variables | |
CN114115845A (zh) | 一种项目生成方法、装置、电子设备和可读介质 | |
Streib et al. | Input/Output, Variables, and Arithmetic |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |