如何解决如何使用markdown语法在Hugo中编写数学运算?
我是Hugo或任何Web开发的新手。我想建立一个个人网站来分享我的数学笔记,这些笔记是用markdown编写的。确切地说,我使用模板hugo-book。但是我发现它不支持Markdown的数学模式,即如果我在$$
之间编写方程式,它将不起作用。我确实找到了一些写数学方程的方法,例如,我可以使用{{< katex >}}
,但这并不方便每次更改降价笔记时使用。因此,有没有办法我可以使用$$
在此模板中编写数学方程式?
谢谢!
解决方法
对于 Mathjax 3,请将其放在页面源代码中的某处。我把它放在 layouts/partials/head-additions.html
中,但也许这是特定于 ananke 主题的:
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
现在你可以把它放在你的页面上并让它呈现:
Raw Mathjax block:
$$a_4 \ne b_4$$
如您所料。
请记住,根据 commonmark
spec(Hugo 遵循的
因为它在内部使用 goldmark),你
需要在(
和[
等标点符号前加两个反斜杠。所以:
This shows as Mathjax \\(a \ne b\\),but this doesn't \(a \ne b\)
Likewise,this shows as Mathjax
\\[a \ne b\\]
but this doesn't:
\[a \ne b\]
当然,您可以通过使用 $$ TeX Source $$
来避免这种情况。
你可以停在这里。
但我更进一步,因为我不喜欢 Mathjax 如何为您提供无样式内容 (FOUC) 的闪光,如 issue 131 中所述。我修改了该问题中建议的方法。将其放在页面源代码中,而不是上面两个简单的 <script>
标记:
{{- if or (.HasShortcode "mathjax/block") (.HasShortcode "mathjax/inline") -}}
<style>
.has-mathjax {
visibility: hidden;
}
</style>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script>
window.MathJax = {
startup: {
pageReady: () => {
return MathJax.startup.defaultPageReady().then(() => {
for (let element of document.getElementsByClassName("has-mathjax")) {
element.style.visibility = "visible"
}
});
}
}
};
</script>
{{- end -}}
把它放在layouts/shortcodes/mathjax/block.html
中:
<div class="has-mathjax">
{{ .Inner }}
</div>
这在 layouts/shortcodes/mathjax/inline.html
中:
<span class="has-mathjax">{{ .Inner }}</span>
现在你可以把它放在你的页面源中:
Mathjax block:
{{< mathjax/block >}}
\[a \ne 0\]
{{< /mathjax/block >}}
Inline shortcode {{< mathjax/inline >}}\(a \ne 0\){{< /mathjax/inline >}} with
Mathjax.
如您所见,使用短代码还可以解决需要在标点符号(例如 (
和 [
)前添加两个反斜杠的问题。
(完全披露:此方法也出现在 an article on my blog)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。