AsciiMath Gem

DocBook 工具链对 STEM 处理有一定的支持,尽管这取决于您使用的 DocBook 管道以及启用的集成。但有一件事我们很确定。DocBook 工具链不理解 AsciiMath。这就是 AsciiMath gem 的用武之地。

AsciiMath 和 DocBook

AsciiMath gem 将 AsciiMath 表达式转换为 MathML,这是 DocBook 工具链能够处理的内容。当 AsciiMath gem 可用时,DocBook 转换器会使用它将用 AsciiMath 符号编写的 STEM 表达式转换为 MathML,并将 MathML 嵌入生成的 DocBook 中。将 MathML 处理成可显示格式的任务留给了 DocBook 工具链。

安装

要在转换为 DocBook 时启用 AsciiMath 到 MathML 的转换,您首先需要安装 asciimath gem

$ gem install asciimath

用法

显式 `require` asciimath gem 不是必需的。只要 AsciiMath gem 可用,DocBook 转换器就会自动加载并使用它将 AsciiMath 符号转换为 MathML。

如果 gem 不可用,并且文档中至少有一个 AsciiMath 表达式,则在转换为 DocBook 时会看到以下消息

asciidoctor: WARNING: optional gem 'asciimath' is not available. Functionality disabled.

此处引用的功能是从 AsciiMath 到 MathML 的转换。如果看到此消息,请参考 安装

假设您已安装它,让我们看一个示例。

首先,通过设置 stem 文档属性在 AsciiDoc 中激活 STEM 支持。此属性必须在文档头结束前设置。

示例 1. 通过设置 stem 文档属性激活 STEM 支持
= Document Title
:stem:

stem:[sqrt(4)] is the square root of 4, which is 2.

现在让我们使用 DocBook 转换器将此文档转换为 DocBook

$ asciidoctor -b docbook asciimath-sample.adoc

DocBook 转换器将在生成的文档中发出以下 XML

<inlineequation><mml:math xmlns:mml="https://w3org.cn/1998/Math/MathML"><mml:msqrt><mml:mn>4</mml:mn></mml:msqrt></mml:math></inlineequation>

现在取决于 DocBook 工具链将 DocBook 中嵌入的 MathML 转换为可显示格式。以下是您应该看到的结果

\$sqrt(4)\$ 是 4 的平方根,即 2。