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

时间:2017-10-20 08:40:18

标签: haskell web-applications latex spell-checking

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

问题

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

解决方案

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

问题

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

在Haskell中,是否有支持此用例的文本编辑数据结构。也就是说,文本的表示可以存储删除,查找差异,撤消删除,并相应地移动差异?如果不是在Haskell中,那么在其他地方是否存在这样的事情?

奖金问题2:在Haskell中设置这样一个Web应用程序的最简单的(在loc中需要的)Web框架是什么?它将提供一个HTML文档并接受文本文件的更新版本。不需要数据库。

1 个答案:

答案 0 :(得分:0)

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

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

以下来源:

Is \emph{good}.

将被解析为:

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

然后,仅从此列表中提取char,将它们发送到Grammarly,然后返回结果。现在,使用从Grammarly获得的字符列表来区分带注释的字符列表。这样,你只需处理一个字符列表,但保留注释。

相关问题