为什么Java有Eclipse和NetBeans,而TeX却没有?

为什么Java有Eclipse和NetBeans,而TeX却没有?

当我寻找智能的 Windows TeX 编辑器时,我遇到了这些问题:

特别地,在第二个问题中,在所选答案中,已经声称编写这样的编辑器意味着后台运行的编辑器!如果令人惊讶的是,Java 和 TeX 之间有什么内在区别导致了这种区别?


注意:在 Eclipse 之类的程序中,您可以在编写时实时看到编译错误。

答案1

主要的区别在于 Java 是一种具有固定语法和与执行分离的编译器的语言。

TeX 没有上述任何东西,没有固定的语法,甚至词汇分析和标记化也依赖于运行时行为。

因此,Java 编辑器可以使用 Java 编译器,或者(更有可能)使用其自身内置的 Java 语法实现并报告错误,但这在 TeX 中是不可能的。

编辑器可以(并且通常会)报告一些简单的事情,比如括号不匹配,但即使这样也会导致错误的报告

$(1,2]$ 

完全合法

\catcode`?=2
\mbox{aaa?

对于括号匹配,简单检查可能经常是正确的,所以值得做,但如果你尝试做更多,那么你会更频繁地得到语法错误的错误报告,所以它没有帮助。

您可以做的(有些系统也会这么做)是在后台运行 tex,并在有结果需要预览时更新预览。

答案2

这是有可能的,事实上,搜索几秒钟就会出现一个例子. 免责声明:我没有使用过该插件。


首先要问的是:Eclipse 到底是什么?它提供了什么?

Eclipse 是一个 IDE。它提供了可通过在 IDE 中运行的插件利用的框架。它最出名的是 Java IDE,而 Java 插件是 Eclipse 最古老、最成熟的插件之一。但您可以在 Eclipse 中做任何事情:如果您愿意,甚至可以实现数据库、照片编辑器或视频游戏。事实上,Eclipse 有一个完整的RCP 框架用于构建任意(甚至非开发)应用程序。


什么是Eclipse Java 插件 (JDT)做?

JDT 包含两个与此问题相关的组件:Java 编辑器和 Java 编译器。两者协同工作以提供那些红色波浪线(它们的真名是“错误标记”,但我更喜欢波浪线)。在后台,当您编辑 Java 源代码时,JDT 编译器正在构建 AST(抽象语法树)基本上是一个表示内存中部分编译代码的数据结构。在这种情况下,它的目的是识别区域代码:变量、方法名称、类声明等。这就是 JDT 告诉您“缺失}”的方式:AST 已损坏,它需要}但您没有提供。这也是如果您选择方法引用,您可以按 F3 转到其定义的方式。


Eclipse 中的 LaTeX 编辑器如何工作?

现在我们来谈谈你问题的核心。显然,LaTeX 编辑器会不是与 Java 编辑器的工作方式相同,因为 LaTeX 没有“编译器”。Java 和 LaTeX 只是不同而已。但是有没有什么方法可以将它们关联起来呢?

您需要类似于 JDT 中的后台编译器的东西,但不是编译器。一些在您编辑文档时运行的过程,用于检查错误。正如 David Carlisle 提到的那样,这更加困难,因为 LaTeX 的语法更复杂。Java(和大多数编程语言)的语法易于解析,这使得编译器更容易编写,同时使语言对程序员更加友好。

LaTeX 的历史要悠久得多,它的发展方式与编程语言不同,其语法的设计方式也与编程语言的语法不同。但显然它可以被解析,因为我们有使用 LaTeX 的程序。


特别地,在第二个问题中,在所选答案中,已经声称编写这样的编辑器意味着后台运行的编辑器!如果令人惊讶的是,Java 和 TeX 之间有什么内在区别导致了这种区别?

我希望我上面的解释能够说明没有区别。JDT 有一个“后台编辑器”(实际上是一个编辑器和一个后台编译器一起工作)。“智能”LaTeX 编辑器需要一个编辑器……和一个后台语法检查器。但在编辑器的上下文中,JDT 编译器基本上执行完全相同的角色。

答案3

特克斯利普斯在 Eclipse 中可以识别一些语法。但它在处理大型文件时会遇到困难……对于超过 2000 行的文件,速度非常慢。

相关内容