DocBook工具链对STEM处理有一些支持,尽管这取决于你使用的DocBook管道以及你启用了哪些集成。但有一点我们可以确定。DocBook工具链不理解AsciiMath。这就是{url-rubygems}/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

使用方法

不必显式地要求 asciimath 宝石。只要AsciiMath宝石可用,DocBook转换器就会自动加载并使用它将AsciiMath符号翻译成MathML。

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

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

此处提及的功能是将AsciiMath转换为MathML。如果你看到这条消息,请回头查看[安装]

假设你已经安装好了,让我们来看一个例子。

首先,通过设置`stem`文档属性来在AsciiDoc中激活STEM支持。这个属性必须在文档头部的末尾设置。

通过设置stem文档属性来激活STEM支持
= 文件标题
茎

$$\sqrt{4}$$ 是4的平方根,是2。

现在让我们使用DocBook转换器将这个文档转换为DocBook格式:

$ asciidoctor -b docbook asciimath-sample.adoc

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

<inlineequation><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"><mml:msqrt><mml:mn>4</mml:mn></mml:msqrt></mml:math></inlineequation>

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

\sqrt{4} 是4的平方根,是2。