是否可以创建一个纯 LaTeX(无纯 TeX、无 TeX 原语)解析器,而无需使用任何支持完全 LaTeX 的 TeX 引擎?我知道一个用于创建和排版 LaTeX 的 iOS 应用程序,但我认为他们没有使用 TeX 引擎。有这样的解析器吗?
答案1
如果您编写了解析器,则可以定义您支持的乳胶子集。 (实际上没有“没有原语的纯 LaTeX”的有用定义。)
例如,MathJax 有一个用 JavaScript 编写的 LaTeX 数学标记子集解析器,而 LaTeXML 有一个用 perl 编写的几乎完整的 TeX 解析器,其中不包含任何 TeX 执行。据我了解,LaTeXML 的解析器可能最接近您所问的问题。https://github.com/brucemiller/LaTeXML
下面是一个仅使用核心 latex 中定义的命令的示例。(该shortvrb
包是基本 LaTeX2e 版本的一部分,因此它与在相同基本版本文件中的类\section
中定义的say 一样,是 latex 的基本组成部分。)article
\documentclass{article}
\usepackage{shortvrb}
\begin{document}
\MakeShortVerb\*
{\bfseries *}{* some text}
\DeleteShortVerb\*
{\bfseries *}{* some text}
\end{document}
请注意,在第一种情况下,不可能静态分配任何标记化,*}{*
它会生成两个字符标记;}{
在第二种情况下,它会生成两个字符标记**
(第一个为粗体)。
为不包含这种构造的语言子集生成一个 LaTeX 解析器是合理的,但是您需要定义子集,仅仅说“不是普通的 TeX 或原语”是不够的,存在可以轻松解析的普通构造,并且存在如果不访问完整的 tex 排版系统则通常无法解析的 LaTeX 构造。
答案2
我认为这已经发生在文档转换软件中,例如潘多克以及互联网上的其他内容。一般来说,这些转换器仅解析命令的子集。此外,正则表达式可用于提取某些感兴趣的标签。