如果您需要在文档中包含科学、技术、工程和数学(STEM)表达式,AsciiDoc语言支持将数学模式宏从LaTeX和/或AsciiMath标记嵌入为块或行内元素。这些元素充当透传以保留所输入的表达式。然后将这些表达式传递给转换器,由STEM提供者(例如,MathJax)处理和渲染以供显示。
启动STEM支持
要激活方程和公式支持,请在文档的头部设置`stem`属性(或通过命令行或API传递该属性)。
Unresolved directive in index.adoc - include::example$stem.adoc[tag=base-co]
-
默认的标记值
asciimath
被隐式分配。
默认情况下,如果不明确指定,AsciiDoc的stem集成会假设所有的方程式都是AsciiMath。HTML转换器支持用https://docs.mathjax.org/en/latest/input/asciimath.html[AsciiMath]和https://docs.mathjax.org/en/latest/input/tex/index.html[TeX和LaTeX]数学符号编写的STEM内容。DocBook转换器只处理AsciiMath符号,将LaTeX的处理留给DocBook工具链中的一个单独工具。
如果你想默认使用LaTeX符号,请将`latexmath`赋值给stem属性。
Unresolved directive in index.adoc - include::example$stem.adoc[tag=base-alt]
Tip
|
您可以在同一份文档中使用这两种表示法。stem 属性的值只是设置了默认的公式表示法。要为特定的块或行内跨度明确设置表示法,只需按照 混合STEM符号 中的解释,用 asciimath 或 latexmath 替代 stem 即可。
|
干细胞内容可以与其他内容内联显示,或作为离散块显示。对干细胞宏或块内的内容不应用任何替代。
内联STEM内容
标记内联公式的最佳方式是使用 stem
宏。
Unresolved directive in index.adoc - include::example$stem.adoc[tag=in-co]
-
内联stem宏仅包含一个冒号(
:
)。 -
将表达式放置在宏的方括号(
[ ]
)内。
显示结果 内联STEM宏语法 如下。
Unresolved directive in index.adoc - include::example$stem.adoc[tag=in]
如果内联的stem方程包含一个右方括号,你必须使用反斜杠来转义这个字符。
Unresolved directive in index.adoc - include::example$stem.adoc[tag=in-sb]
结果显示在下面。
Unresolved directive in index.adoc - include::example$stem.adoc[tag=in-sb]
A stem macro是一个隐式的直通宏。这就是为什么,尽管x表达式符合属性引用的语法,你不必对其进行转义。
屏蔽STEM内容
块公式通过为限定的透传块分配 stem
样式来标记。
Unresolved directive in index.adoc - include::example$stem.adoc[tag=bl-co]
-
将 stem 样式分配给 passthrough 块。
-
穿透块由四个连续的加号(
++++
)行界定。
结果 分隔的茎块语法 在浏览器中得到了美观的渲染,这要归功于MathJax!
Unresolved directive in index.adoc - include::example$stem.adoc[tag=bl]
Tip
|
你不需要像https://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference[MathJax文档^]建议的那样在表达式周围添加特殊分隔符。AsciiDoc处理器会自动为你处理! |
AsciiMath块中的换行符
在AsciiMath块中的换行只有在特定情况下才会保留。下面的例子说明了如何处理换行。
单个换行不保留
x y
如果转义,则保留单个换行符
x\ y
如果转义,则保留连续的换行符
x\ \ y
段落间隔保留
x 为什么
段落间连续换行保持不变
x 为什么
第一个保留的换行符将表达式分割成两部分。随后的换行符将被转换成`<br>`元素。
LaTeX块中的新行
LaTeX块中的换行只在某些情况下会被保留。以下示例展示了换行是如何被处理的。
单个换行不保留
x y
如果转义,则保留单个换行符
x\\ y
如果以空字符为前缀并且转义,则顺序换行将被保留
x\ ~\ y
段落分隔未保留
x 为什么
段落间的换行如果通过空行分开则会保留原样
x \\[1em] y
第一个保留的换行符将表达式分割成两部分。随后的换行符将被转换成`<br>`元素。
混合STEM符号
你可以在同一文档中使用STEM内容的多种表示法,只需使用表示法的名称替代关键词`stem`。
例如,如果你想要使用LaTeX表示法编写内联方程式,请将宏命名为`latexmath`。
Unresolved directive in index.adoc - include::example$stem.adoc[tag=multi-l]
内联LaTeX数学宏语法的结果如下所示。
Unresolved directive in index.adoc - include::example$stem.adoc[tag=multi-l]
映射到您希望使用的符号的名称也可以应用于块STEM内容。
Unresolved directive in index.adoc - include::example$stem.adoc[tag=multi-a]
这个例子的主体将会这样展示:
Unresolved directive in index.adoc - include::example$stem.adoc[tag=multi-a-render]