如何在Pandoc Markdown中使用latex公式环境?

26
在 Pandoc 的 Markdown 中,我可以使用“$$”来开始一个显示数学环境。然而,在 LaTeX 中,这些方程式没有编号,因此我希望改用 equation 环境,像这样:
\begin{equation}
x+1 = 2 \\
y+2 = 3 
\end{equation}

如果我将Markdown转换为LaTeX,那就没问题了。但是当我使用Mathjax将其转换为HTML时就不行了,因为Pandoc会将这些行视为原始的LaTeX,在HTML中忽略它们。

我尝试禁用raw_latex扩展。

pandoc -f markdown-raw_latex ...

这次两个方程式显示在同一行,因为Pandoc对反斜杠进行了转义,所以“\”无法正确产生换行符。

请注意,以下代码在转换为HTML时可以正常工作,但在latex中会产生编译错误。

$$    
\begin{equation}
    x+1 = 2 \\
    y+2 = 3 
\end{equation}
$$

有没有什么方法可以解决这个问题?

2个回答

20

尝试使用pandoc-eqnos过滤器。使用属性可以将标签附加到方程式上:

 $$ y = mx +b $$ {#eq:description}

...然后可以像这样引用:

@eq:description

对于tex/pdf输出,LaTeX的本地equation环境以及\label\ref宏被使用;对于其他所有内容,编号都是硬编码的。

在pandoc-eqnos页面上提供了安装和应用过滤器的说明。


pandoc-crossref 过滤器添加了相同的功能和语法。它还增加了交叉引用章节、表格、图像等的能力(例如,{tbl:label} ...然后像这样引用:@tbl:label)。 - Alex Trueman
pandoc-xnos 过滤器套件包含 pandoc-eqnos,可用于交叉引用章节、表格、图像等。 - tjd

3

虽然没有很好的本地支持适当的方程编号,但有一个解决方法。

> pandoc -s -o math.html --mathjax 
(@) $$y=5$$

A paragraph here explaining 

(@) $$y=6$$

输出

<body>
<ol style="list-style-type: example">
<li><span class="math">\[y=5\]</span></li>
</ol>
<p>A paragraph here explaining</p>
<ol start="2" style="list-style-type: example">
<li><span class="math">\[y=6\]</span></li>
</ol>
</body>

编号示例

显然,输出可以通过CSS样式进行调整以适合不同需求。但是,此方法的文本输出也将数字放置在左侧。你需要自己权衡选择哪种方案更适合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接