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

如何移除pandoc转换LaTeX引文时自动添加的多余括号?

问题原因

pandoc解析LaTeX的\cite{}命令时,默认会将其识别为带括号的作者-年份引用格式,你在LaTeX代码中手动给\cite套了一层括号,转换后就会出现双重括号的问题。

解决方案1:调整LaTeX引用命令(无需额外配置)

你可以直接删除手动加的括号,将(\cite{McIntyre__2015})改为\cite{McIntyre__2015},pandoc自动生成的括号就能满足格式要求。如果坚持要手动控制括号,也可以将\cite替换为\citeauthor+\citeyear的组合,输出纯文本格式的作者和年份内容,不会自动加括号。

解决方案2:使用Lua过滤器修改引用属性

如果不想修改原有LaTeX内容,可以通过Lua过滤器强制关闭\cite的自动加括号逻辑,操作步骤如下:

  1. 新建一个Lua文件,命名为remove-cite-brackets.lua,写入以下代码:
function Cite(citeElem)
  -- 将所有引用的模式修改为行内文本模式,不自动加括号
  for _, citation in ipairs(citeElem.citations) do
    citation.mode = "AuthorInText"
  end
  return citeElem
end
  1. 修改你的pandoc转换命令,新增--lua-filter参数加载上述过滤器即可,修改后的命令如下:
pandoc ./main.tex -f latex -t odt --bibliography=./references.bib --csl ../apa.csl --lua-filter ./remove-cite-brackets.lua -o output.odt

实现逻辑

CSL引用规范内置两种基础输出模式:默认的NormalCitation模式会自动给引用内容包裹括号,AuthorInText模式仅输出纯文本格式的作者和年份、不加外层括号。上述过滤器就是将所有\cite命令对应的引用模式从默认的NormalCitation批量修改为AuthorInText,就不会出现自动加括号的问题,你手动添加的括号可以正常保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:06:05