pandoc 中将 asciimath 公式转换为 latex 公式

文章目录

  • 问题
  • 解决方法

问题

本人觉得 asciimath 的公式语法比 latex 的公式语法要简洁一下, 也对 asciimath 公式语法比较熟悉. 但是, pandoc markdown 文档中, 只能嵌入 latex 公式语法, 比如使用 latex 语法:

$$\displaystyle f{{\left({x}\right)}}={\sum_{{{n}={0}}}^{\infty}}\frac{{{{f}^{{{\left({n}\right)}}}{\left({a}\right)}}}}{{{n}!}}{\left({x}-{a}\right)}^{n}$$

会转换为

f ( x ) = ∑ n = 0 ∞ f ( n ) ( a ) n ! ( x − a ) n \displaystyle f{{\left({x}\right)}}={\sum_{{{n}={0}}}^{\infty}}\frac{{{{f}^{{{\left({n}\right)}}}{\left({a}\right)}}}}{{{n}!}}{\left({x}-{a}\right)}^{n} f(x)=n=0n!f(n)(a)(xa)n

如果使用 asciimath 语法:

$$f(x)=sum_(n=0)^oo(f^((n))(a))/(n!)(x-a)^n$$

会原样显示为

f ( x ) = s u m ( n = 0 ) o o ( f ( ( n ) ) ( a ) ) / ( n ! ) ( x − a ) n f(x)=sum_(n=0)^oo(f^((n))(a))/(n!)(x-a)^n f(x)=sum(n=0)oo(f((n))(a))/(n!)(xa)n

解决方法

可以编写一个过滤器, 将 asciimath 公式格式转换为 latex 公式格式. 这里用到了 python 编写的工具 belerico /py_asciimath , 由它完成真正的 asciimath 到 latex 的转换.

下面是使用 lua 编写的 pandoc 过滤器:

-- 过滤器
function asciimath2latex(m)local ot = io.popen("py_asciimath \'" ..  m.text .. "\' from asciimath to latex", "r")local line = ot:read("*a")local latex = string.gsub(line, "%$", "", 2)-- print(latex)return pandoc.Math(m.mathtype, latex)
end-- 导出函数
return {{Math = asciimath2latex},
}

假如有 asciimath 格式公式

x/x={(1,if x!=0),(text{undefined},if x=0):}

执行 pandoc --lua-filter=asciimath2latex.lua ... 后在目标文档中会生成公式

x x = { 1 if x ≠ 0 undefined if x = 0 \displaystyle\frac{x}{{x}}={\left\lbrace\begin{matrix}{1}&{\quad\text{if}\quad}{x}\ne{0}\\\text{undefined}&{\quad\text{if}\quad}{x}={0}\end{matrix}\right.} xx={1undefinedifx=0ifx=0


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部