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

如何用Lua过滤器将Obsidian的**==blue==**转为LaTeX的\hlblue{blue}?

实现Obsidian 内容 到LaTeX \hlblue{内容}的转换

完全可以实现你的需求,核心就是把**== ==**这个组合结构当成独立语法来识别处理,下面给你具体的实现步骤:

  • 用Pandoc Lua过滤器自定义处理逻辑
    之前的过滤器只处理了加粗+高亮的组合渲染,但我们需要精准匹配**== ==**的结构,把它直接映射到LaTeX的\hlblue命令。写一个Lua脚本,遍历Pandoc的AST(抽象语法树),找到同时满足「加粗(Strong节点)」且「内部包含带highlight类的Span节点」的结构,然后提取里面的文本内容,替换成LaTeX的RawInline节点。

    示例Lua过滤器代码(保存为obsidian-blue-highlight.lua):

    function Strong(elem)
      -- 检查加粗节点内是否只有一个带highlight类的Span
      if #elem.content == 1 and elem.content[1].t == "Span" then
        local span = elem.content[1]
        if span.classes:includes("highlight") then
          -- 提取Span里的文本内容
          local text = pandoc.utils.stringify(span.content)
          -- 返回LaTeX的蓝色高亮命令
          return pandoc.RawInline("latex", "\\hlblue{" .. text .. "}")
        end
      end
      -- 不匹配的结构原样返回
      return elem
    end
    
  • 配置LaTeX环境支持\hlblue命令
    要让LaTeX正确渲染蓝色高亮,需要在你的.tex文件导言区添加以下代码:

    \usepackage{soul}
    \definecolor{hlblue}{RGB}{180, 220, 255} % 这里可以自定义蓝色的RGB值
    \newcommand{\hlblue}[1]{\sethlcolor{hlblue}\hl{#1}}
    
  • 使用过滤器转换文档
    用Pandoc命令转换时指定这个Lua过滤器即可:

    pandoc your-note.md -o your-note.tex --lua-filter=obsidian-blue-highlight.lua
    

这个方案会精准识别Obsidian里**内容**的格式,直接转换成LaTeX的蓝色高亮命令,不会和普通的加粗或普通高亮混淆。

内容的提问来源于stack exchange,提问作者ReaderGuy42

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:20:27