LaTeX源的语法检查器的数据结构



让我首先承认这是一个相当宽泛的问题,但我需要从某个地方开始,并稍微减少设计空间。

问题

Grammarly是一款在线应用程序,提供语法和拼写检查作为浏览器插件。目前,既不支持文本编辑器,也不支持乳胶源。Grammarly在被迫处理带注释的文本或格式化的文本(例如包含换行)时,显然经常感到困惑。我想很多人在写科学论文或任何其他LaTeX工具时都可以使用这个工具。我还认为,其他解决方案也存在,或者很快就会出现类似的解决方案。

解决方案

原则上,没有必要直接支持Grammarly,例如emacs。只要提供一个方便的界面来同时检查多个源文件就足够了。为此,一个简单的web应用程序可以遍历一个目录,读取所有.tex源代码,删除所有格式和标记,并将文件公开为HTML文档。用户可以打开该文档,运行Grammarly,并应用任何修复程序。该应用程序必须获取更正后的文本,并重新应用格式、标记等来保存现在固定的源文件。

问题

虽然创建这样的web应用程序相当简单,但还需要考虑其他要求:LaTeX解析(达到"标准"语法)和像HaTeX这样的库可以处理解析和解释。但编辑的过程需要一些思考。假设删除格式只能通过删除内容来实现,那么应该可以将更正作为diff,并将其重新应用于格式化文档。

在Haskell中,是否有一个用于文本编辑的数据结构支持此用例。也就是说,可以存储删除、查找差异、撤消删除并相应移动差异的文本表示?如果不在哈斯克尔,其他地方还会存在这样的东西吗?

额外的问题2:在Haskell中建立这样一个网络应用程序最简单的(如loc所需)网络框架是什么?它将提供一个HTML文档,并接受文本文件的更新版本。不需要数据库。

您可以将souce文本解析为带注释的标记流,而不是删除然后添加文本格式:

data AnnotatedChar = AC
{ char       :: Char
, formatting :: String
}

以下来源:

Is emph{good}.

将解析为:

[AC 'I' "", AC 's' "", AC ' ' "emph{", AC 'g' "", ...

然后,只从该列表中提取chars,将它们发送给Grammarly,然后返回结果。现在,将注释字符列表与从Grammarly获得的字符列表进行比较。这样,你只需要处理一个字符列表,但要保留注释。

最新更新