![Pandoc citeproc 无法识别 pnfmt{}](https://linux22.com/image/433342/Pandoc%20citeproc%20%E6%97%A0%E6%B3%95%E8%AF%86%E5%88%AB%20pnfmt%7B%7D.png)
情况:
- 我正在使用 pandoc 将 .tex 转换为 .docx(出于协作目的...)。
- 因为我使用了很多带有“强调”的引文(使用 authordate),所以我
pnfmt{}
只将字段格式应用于页码。这在 texse 上有解释这里。
因此,我的许多引用看起来是这样的:
First citation \autocite[382]{sigfridsson1999}
Second citation \autocite[\pnfmt{382}]{sigfridsson1999}
Third citation \autocite[\pnfmt{382}, emphasis added]{sigfridsson1999}
使用 pandoc,
pandoc --bibliography=references.bib --citeproc -o out.docx main.tex
我在第一次引用时获得了正确的输出,但没有在第二次和第三次引用时获得正确的输出:
第一次引用(Sigfridsson,1999,第 382 页)
第二次引用(Sigfridsson,1999)
第三次引用(Sigfridsson,1999,重点补充)
有什么方法可以让 pandoc 识别\pnfmt{}
并打印第二和第三个引用的页码?
答案1
Pandoc 可以解析您自己的定义,在您的文档中的某个地方添加虚拟定义\renewcommand\pnfmt[1]{#1}
(您可以添加包含带有选项的行的文件--include-in-header=FILE
)就可以了。
答案2
可能有更好的方法,但一个简单的解决方法可能是\pnfmt
在文档本身中(重新)定义,让 Pandoc/citeproc 使用该定义。当然,这意味着您无法获得\pnfmt
处理所有不同情况的常规处理,但对于与合作者共享文档,只要您使用 LaTeX 生成最终结果(在这种情况下,您需要再次删除重新定义),这可能不是什么大问题。
梅威瑟:
\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=authoryear-ibid, ibidpage]{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
\def\pnfmt#1{, pg. #1}
First citation \autocite[382]{sigfridsson}
Second citation \autocite[\pnfmt{382}]{sigfridsson}
Third citation \autocite[\pnfmt{382}, emphasis added]{sigfridsson}
\printbibliography
\end{document}
结果: