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=0∑∞n!f(n)(a)(x−a)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!)(x−a)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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
