pandoc转换如何带上参考文献?

遇到的问题

我想做的事情是,让 Markdown 文档直接可以导出为带有参考文献的 docx 文档。比如[@ChenTaoFaZhiGuoJingChaGuoJiaYuLingXiuMinZhuZhiXiOuXianDaiGuoJiaGouJianDeSanTiaoXianSuo2020]这样一个引注,在 docx 文档里应该表现为一个参考文献格式——在文中有引注(陈涛,2020),文末有参考文献。为此,我找到了以下代码。csl文件是APA格式时,可以成功,但其他格式不行,想请教一下大家,看看是什么问题。

预期的效果

本质需求是md导出为docx时,带上参考文献。例如

已尝试的解决方案

APA格式可以

pandoc “D:\study\obsidian\brain\study\obsidian学习\pandoc.md” --bibliography “D:\study\obsidian\brain\我的文库.bib” --citeproc --csl “D:\study\zotero\styles\apa.csl” -o “D:\study\obsidian\brain\study\obsidian学习\pandoc.docx”

测试了国标和《社会学研究》的csl文件,都不行

pandoc “D:\study\obsidian\brain\study\obsidian学习\pandoc.md” --bibliography “D:\study\obsidian\brain\我的文库.bib” --citeproc --csl “D:\study\zotero\styles\209sociological-studies.csl” -o “D:\study\obsidian\brain\study\obsidian学习\pandoc.docx”

pandoc “D:\study\obsidian\brain\study\obsidian学习\pandoc.md” --bibliography “D:\study\obsidian\brain\我的文库.bib” --citeproc --csl “D:\study\zotero\styles\china-national-standard-gb-t-7714-2015-numeric-aulower-bilan.csl” -o “D:\study\obsidian\brain\study\obsidian学习\pandoc.docx”

报错截图为

报错提示为

Multiple layout elements present in citation

已经求助的渠道

在参阅obsidian基本问题、检索pkmer社区和obsidian中文论坛、查看腾讯文档后,依然没有找到解决的思路。于是我在pkmerQQ群等群聊进行求助,但没有完全解决问题。现在把帖子发在了obsidian中文论坛和本论坛,希望有朋友能指出疏漏,谢谢!

我参考的代码来源

[@tombenMarkdownXieZuo2021] Markdown 写作,Pandoc 转换:我的纯文本学术写作流程 - 少数派
[@ryoooJiYuZotero2022] 基于 Zotero 与 Obsidian 的个人知识管理系统:从输入到输出 - 经验分享 - Obsidian 中文论坛
特别感谢一位大佬对我代码的指点,让我至少能导出带有APA格式参考文献的docx文档。

我不太懂这些, 看起来也许跟 Pandoc 不支持 CSL-M 有关, 见 CiteprocParseError: Multiple layout elements present in bibliography · quarto-dev/quarto-cli · Discussion #4598

这问题链接不是讨论 pandoc 的, 但它提到, 如果 csl 里存在复数个 <layout> , 拿 pandoc 转换时就不支持


查了下


  • 如果把第二个 209sociological-studies.csl 的重复 layout, 手动编辑掉, 然后发现报错变化了, 那说明也许可以顺着再调查
  • 如果没啥用, 那再说别的办法, 希望有熟悉的朋友能给提点建议
1 个赞

谢谢大佬,我过阵子再探索一下。