我和我的朋友正在写一篇大论文,我们使用了很多没有指定日期的在线资源。我们不断收到错误,经过很长时间我才找到问题所在。看起来 BibLaTeX 不知道当同一作者的两个条目(或更多)都没有日期时该怎么做。只有当这两个条目都在论文中被引用时才会出现错误。
当引用两个具有相同作者和相同年份的条目时,BibLaTeX 会为它们分配一个字母:
(One, 2017a) 和 (One, 2017b)。
按照 APA 格式,没有日期的多个条目也应该收到一个字母:
(One, nd-a) 和 (One, nd-b),
但 BibLaTeX 会失败并给出以下错误消息。
梅威瑟:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber,style=authoryear,citestyle=apa,sorting=nyt]{biblatex}
\addbibresource{sources.bib}
\begin{document}
Content. \parencite{something_one} More content \parencite{something-else_one} more content.
\printbibliography
\end{document}
sources.bib如下:
@online{something_one,
author = {Some One},
title = {Something},
year = {nodate},
url = {https://somesite.org/somepage},
urldate = {2017-12-19}
}
@online{something-else_one,
author = {Some One},
title = {Something else},
year = {nodate},
url = {https://somesite.org/someotherpage},
urldate = {2017-12-19}
}
编译此代码会出现以下错误:
未定义控制序列。
\apashortdash
\mknumalph {1}
l.8 内容。\parencite{something_one}
更多内容 \parencite{something-els...
如果您指定日期、更改作者或删除 sources.bib 文件中的某个条目,LaTeX 将正常工作。
有人知道我们应该做什么吗?
答案1
您只使用了 citestyle=apa —— 这有点不寻常 ——,因此缺少一些定义。您可以为缺少的命令提供定义:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber,bibstyle=authoryear,citestyle=apa,sorting=nyt]{biblatex}
\addbibresource{test.bib}
\providecommand{\apashortdash}{-}
\begin{document}
Content. \parencite{something_one} More content \parencite{something-else_one} more content.
\printbibliography
\end{document}
您可以在 biblatex-apa 跟踪器上报告该问题:https://github.com/plk/biblatex-apa/issues