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

使用pandoc --reference-doc生成的docx文档字体无法修改求助

解决Pandoc生成Docx文档字体不生效的问题

问题核心

直接修改reference-doc文档的文本字体不会生效,因为Pandoc是基于Word的样式来渲染内容,而非直接继承文本格式。必须修改样式定义,才能让所有对应样式的内容统一应用字体设置。

高效解决方案

方案1:正确修改Reference Doc的样式(一次性配置,长期复用)

  • 打开custom-reference.docx,点击「开始」选项卡→「样式」组右下角的小箭头,打开样式窗格
  • 找到需要调整的样式(如「正文」「列表段落」「引用」等),右键样式名→修改
  • 在「修改样式」对话框中:
    • 设置目标字体(如宋体)和字号(10号)
    • 勾选「基于该模板的新文档」,确保修改永久保存到模板
  • 保存模板后,重新执行你的Pandoc命令:
    pandoc --reference-doc=custom-reference.docx -o docs/reader_filtering.docx docs/reader_filtering.md
    

方案2:用Lua过滤器批量指定样式(无需手动修改模板)

如果不想反复调整模板样式,可通过Pandoc的Lua过滤器直接在转换时设置字体:

  1. 创建脚本adjust-fonts.lua:
    -- 定义字体设置函数
    local function apply_font(elem, font_name, font_size)
      elem.attributes["font-family"] = font_name
      elem.attributes["font-size"] = font_size .. "pt"
      return elem
    end
    
    -- 给段落应用字体
    function Para(el)
      return apply_font(el, "宋体", 10)
    end
    
    -- 给无序列表应用字体
    function BulletList(el)
      for _, item in ipairs(el.content) do
        for _, block in ipairs(item) do
          block = apply_font(block, "宋体", 10)
        end
      end
      return el
    end
    
    -- 给有序列表应用字体
    function OrderedList(el)
      for _, item in ipairs(el.content) do
        for _, block in ipairs(item) do
          block = apply_font(block, "宋体", 10)
        end
      end
      return el
    end
    
  2. 执行Pandoc命令时加载过滤器:
    pandoc --reference-doc=custom-reference.docx --lua-filter=adjust-fonts.lua -o docs/reader_filtering.docx docs/reader_filtering.md
    

方案3:验证模板路径与生效性

  • 确保custom-reference.docx的路径正确,可尝试用绝对路径(如/Users/xxx/custom-reference.docx)避免路径问题
  • 检查模板样式:打开模板后,右键样式→修改,确认字体、字号已正确保存

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:57:20