You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandoc将LaTeX转换为Markdown时,如何保留指定LaTeX命令(如\ref)?

Pandoc将LaTeX转换为Markdown时,如何保留指定LaTeX命令(如\ref)?

嗨,我来帮你搞定这个问题!要在Pandoc转换LaTeX到Markdown时保留\ref{...}这类原始命令(同时让其他命令比如\textbf正常转成Markdown格式),有两种实用方案,你可以根据需求选:


方案一:用Lua过滤器精准拦截(推荐)

这是最灵活的方式,能针对性保留你想要的LaTeX命令,不影响其他内容的正常转换。

  1. 新建一个Lua脚本,比如命名为keep-refs.lua,内容如下:
function RawInline(el)
  -- 匹配\ref{...}格式的命令,你可以扩展正则来包含更多命令(比如\eqref)
  if el.format == "tex" and string.match(el.text, "^\\ref{.*}$") then
    return el  -- 原样保留这个LaTeX命令
  end
end

如果需要保留\eqref这类类似命令,只需要修改正则部分:

string.match(el.text, "^\\(ref|eqref){.*}$")
  1. 转换时调用这个过滤器:
pandoc minimal.tex --lua-filter=keep-refs.lua -o minimal.md

这样处理后,你的示例输入就会输出你想要的结果:

Refer to example \ref{example1}, blabla


方案二:用内置参数保留所有未解析的LaTeX命令

如果你想保留更多Pandoc无法自动解析的LaTeX命令,可以直接用Pandoc的内置参数:

pandoc minimal.tex --from latex+raw_tex -o minimal.md

这个参数会让Pandoc把它识别不了的LaTeX命令原样保留,但要注意,它可能会保留一些你本来希望转换的内容,所以适合需要保留大量原始LaTeX的场景。


为什么默认转换会把\ref转成链接?因为Pandoc会自动解析LaTeX的交叉引用,把它转换成Markdown的链接格式。上面的方法就是要拦截这个解析行为,让指定命令保持原始状态,方便你后续用自定义过滤器处理这些引用。

备注:内容来源于stack exchange,提问作者Ute

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:54:31