Pandoc 完整芝加哥引文

Pandoc 完整芝加哥引文

同事,

我正在努力将我的书稿从 LaTeX 转换为 Word 文档,供我的出版商使用,使用芝加哥引文样式。特别是,他们要求使用完整/简短的芝加哥引文脚注样式。为了简单起见,我提供了一个最小的工作示例:


\usepackage[style=verbose]{biblatex-chicago}

\usepackage{filecontents}

\begin{filecontents}{testref.bib}
@article{Doe,
    author = {John Doe},
    journal = {Sample Journal},
    number = {1},
    pages = {1-20},
    title = {This is a sample title of the Pandoc reference},
    volume = {14},
    year = {2022}}
\end{filecontents}

% File is created and written to disk by the above package
\addbibresource{testref.bib}

\begin{document}

John Doe says ``This is a test of Pandoc output using Chicago style.''\footcite[2]{Doe} This is also a generic footnote for comparison.\footnote{A footnote appears here.}

\end{document}

所需的脚注引用为:

  1. John Doe,“这是 Pandoc 参考的示例标题,”样本期刊14,第1期(2022):2。

使用 Mac 终端,我输入了以下代码,

pandoc --citeproc Test.tex --bibliography=testref.bib --csl=chicago-fullnote-bibliography-short-title-subsequent.csl -o test.docx

不幸的是,这导致了以下错误,

资源路径中未找到文件 chicago-fullnote-bibliography-short-title-subsequent.csl

我从github.com/citation-style-language/styles并使用 TextEdit 保存到我的工作目录 ( cd ~/Desktop)。不幸的是,这仍然没有解决错误。

非常感谢您的任何建议!

答案1

因此,我发现了一个解决方案,它需要一个额外的 Lua 过滤器,只需用 Pandoc 调用即可。例如,

pandoc --citeproc Test.tex --lua-filter=remove-parentheses-from-cite.lua --bibliography=testref.bib --csl=chicago-fullnote-bibliography-short-title-subsequent.csl -o test.docx

Lua 过滤器如下(以.lua 扩展名保存在文本编辑器中):

  local lastInnermostElem = elemsList[#elemsList]
  if not lastInnermostElem.t == "Str" then
    getLastInnermostElem(lastInnermostElem)
  end
  return lastInnermostElem
end

local function getFirstInnermostElem(elemsList)
  local firstInnermostElem = elemsList[1]
  if not firstInnermostElem.t == "Str" then
    getFirstInnermostElem(firstInnermostElem)
  end
  return firstInnermostElem
end

local function removeTrailingSpace(formattedCitation)
  if formattedCitation[1].t == "Space" then
    formattedCitation:remove(1)
  end
end

local function removeParentheses(formattedCitation)
  local lastInnermostElem = getLastInnermostElem(formattedCitation)
  lastInnermostElem.text = string.gsub(lastInnermostElem.text, "%)$", "")
  local firstInnermostElem = getFirstInnermostElem(formattedCitation)
  firstInnermostElem.text = string.gsub(firstInnermostElem.text, "^%(", "")
end

local correct_citation = {
  Cite = function(cite)
    removeTrailingSpace(cite.content)
    removeParentheses(cite.content)
    return cite
  end
}

function Note(note)
  return pandoc.walk_inline(note, correct_citation)
end

请注意,我确实不是编写此过滤器,不能为此承担任何责任。Pandoc 论坛上的用户非常友好地提供了帮助,并允许我与其他可能遇到类似问题的人分享此过滤器,他们将 LaTeX 文件转换为带有芝加哥风格引文的 Word 文档。

我希望这对其他人有帮助!

答案2

更新:我从Zotero 样式库并成功生成了 Word 文档!一切看起来都很好,但我遇到了样式格式的新问题,这可能会有问题。特别是,使用该\autocite命令的脚注中的引用出现在括号中(尽管 LaTeX 输出看起来不错):

在此处输入图片描述

关于如何删除脚注中的括号,有什么建议吗?我是否必须手动编辑 csl 文件?或者,也许 Zotero 有其他可用的 csl 文件?

相关内容