如何为Rust文档编写数学公式?

时间:2017-09-29 18:36:16

标签: math rust documentation

我想在Rust文档中为我的箱子写一个数学公式。 看起来像LaTeX的基本支持至少power起作用:

/// $ 2^8 $

呈现为:

enter image description here

我想在我的公式中使用一个分数,但不幸的是,这不起作用:

/// $ \frac{x}y $

3 个答案:

答案 0 :(得分:6)

  

看起来有LaTeX的基本支持

不完全。支持 Markdown ,而非LaTeX。 Stack Overflow也支持Markdown,但风格各异。例如:a<sup>b</sup> =&gt; a ^ b,但是/// Hi /// /// $ 2^8 $ pub fn what() { } =&gt;一个 B'/ SUP>。 Markdown不支持任意LaTeX。的确,你的榜样:

$

生成仍包含{{1}}的内容:

enter image description here

下一个最好的事情可能是生成预渲染图像,然后将它们包含在您的文档中,但an open issue似乎表明目前不可能,除非您将图像托管在其他地方。 / p>

甚至有an issue to support MathJax in rustdoc,但已关闭。

答案 1 :(得分:2)

您可以使用MathJax和rustdoc的{​​{1}}来传递指向所需脚本标记的链接。这非常hacky,并且不适用于docs.rs,但如果您托管自己的文档,它可以工作。

答案 2 :(得分:2)

类似于Steve's answer,使用katex,您可以遵循以下方法:

您需要将html文件放在板条箱中的某个位置,其代码应包含在--html-in-header选项中。然后执行:

RUSTDOCFLAGS="--html-in-header path-to-your-header-file.html" cargo doc --no-deps

--no-deps并非绝对必要,但如果您不想将标头添加到另一个外部包装箱的文档中,则很方便。

要在http://docs.rs中使用,必须将其放在Cargo.toml上:

[package.metadata.docs.rs]
rustdoc-args = [ "--html-in-header", "path-to-your-header-file.html" ]

标头html文件的内容可能是(这是Kernfeld的解决方案):

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.0/dist/katex.min.css" integrity="sha384-9eLZqc9ds8eNjO3TmqPeYcDj8n+Qfa4nuSiGYa6DjLNcv9BtN69ZIulL9+8CqC9Y" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.0/dist/katex.min.js"                  integrity="sha384-K3vbOmF2BtaVai+Qk37uypf7VrgBubhQreNQe9aGsz9lB63dIFiQVlJbr92dw2Lx" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.0/dist/contrib/auto-render.min.js"    integrity="sha384-kmZOZB5ObwgQnS/DuDg6TScgOiWWBiVt0plIRkZCmE6rDZGrEOQeHM5PcHi+nyqe" crossorigin="anonymous"></script>
<script>
    document.addEventListener("DOMContentLoaded", function() {
        renderMathInElement(document.body, {
            delimiters: [
                {left: "$$", right: "$$", display: true},
                {left: "\\(", right: "\\)", display: false},
                {left: "$", right: "$", display: false},
                {left: "\\[", right: "\\]", display: true}
            ]
        });
    });
</script>

See pwnies是扩展doc html页面可能性的其他示例(没有LaTeX)。