使用Pandoc转Markdown到HTML时MathML公式垂直对齐异常求助
问题
我尝试通过以下Markdown文件创建包含数学公式的HTML:
// myFile.md This is a formula: $f(x) = y$
执行命令:
$ pandoc --mathml myFile.md -o -
生成的HTML中MathML代码渲染后公式垂直对齐异常。手动移除f后的<mrow>标签或设置stretchy属性为false可临时修复,但需要Pandoc直接生成正确输出,请问操作是否有误?该如何解决?
解决方案
你的操作本身没有错误,这是Pandoc生成MathML时的常见问题。可以通过以下几种方式让Pandoc直接输出正确的MathML:
指定TeX引擎生成规范MathML
使用XeLaTeX或LuaLaTeX作为PDF引擎,让Pandoc生成更标准的MathML代码,避免多余的<mrow>标签导致对齐异常。执行命令:pandoc --mathml --pdf-engine=xelatex myFile.md -o -使用Lua过滤器修正MathML
编写简单的Lua过滤器,在生成过程中自动移除多余的<mrow>标签或调整stretchy属性。创建fix-mathml.lua文件:function MathML(mml) -- 移除函数名后多余的mrow标签 local fixed = string.gsub(mml, '<mi>f</mi><mrow>(.*?)</mrow>', '<mi>f</mi>%1') -- 同时调整stretchy属性 fixed = string.gsub(fixed, 'stretchy="true"', 'stretchy="false"') return fixed end加载过滤器执行转换:
pandoc --mathml --lua-filter=fix-mathml.lua myFile.md -o -升级Pandoc到最新版本
部分旧版Pandoc存在MathML渲染的对齐bug,升级到官方最新稳定版后,该问题可能已被修复。
内容的提问来源于stack exchange,提问作者sgmonda
相关产品推荐
相关产品推荐

