我有同一位作者的两篇文章,第二篇文章包含一个 origdate 字段,其中包含年份范围。如果我只打印第二篇文章,日期是正常的:1754--1755。但如果我打印两个条目,日期就会出现一个多余的句号:1754--1755。这是 MWE。
\documentclass[12pt]{article}
\usepackage[authordate,backend=biber]{biblatex-chicago}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{crusius1749,
author = {Christian August Crusius},
title = {Anleitung {\"u}ber nat{\"u}rliche Begebenheiten ordentlich
und vorsichtig nachzudencken},
publisher = {Gleditsch},
year = 1749,
address = {Leipzig}
}
@Book{crusius1754,
author = {Christian August Crusius},
title = {Gr{\"u}ndliche Belehrung vom Aberglauben zur Aufkl{\"a}rung
des Unterschiedes zwischen Religion und Aberglauben},
publisher = {Langenheim},
year = 1767,
address = {Leipzig},
translator = {Christian Friedrich Pezold},
options = {cmsdate=on},
origdate = {1754/1755}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{crusius1749}
\cite{crusius1754}
\printbibliography
\end{document}
注释掉第一个 \cite 以查看第二个条目的正确形式。
这是一个错误,还是我做错了什么?
答案1
这种行为确实似乎是一个错误。以下快速修复方法可能会对您有所帮助。
将以下代码添加到你的序言中。
\renewbibmacro*{origyear+endyear}{%
\printfield{origyear}%
\iffieldundef{origendyear}%
{}%
{\iffieldequalstr{origendyear}{}%
{\mbox{\bibdatedash}}%
{\bibdatedash\nopunct\printtext{\unspace}\printfield{origendyear}}}}
{origyear+endyear}
这部分代码是来自 的原始宏的修改版本chicago-authordate.bbx
。最后一行被修改为使下一个标点符号命令不打印任何内容(\nopunct
),然后隐式调用该标点符号命令,\printtext{\unspace}
此处实际上仅“打印”一个删除所有前面空格的命令(\unspace
)。因此句号以及\bibdatedash
和之间的空格都origendyear
消失了。
您的 MWE 成为
\documentclass[12pt]{article}
\usepackage[authordate,backend=biber]{biblatex-chicago}
\usepackage{filecontents}
\renewbibmacro*{origyear+endyear}{%
\printfield{origyear}%
\iffieldundef{origendyear}%
{}%
{\iffieldequalstr{origendyear}{}%
{\mbox{\bibdatedash}}%
{\bibdatedash\nopunct\printtext{\unspace}\printfield{origendyear}}}}
\begin{filecontents}{\jobname.bib}
@Book{crusius1749,
author = {Christian August Crusius},
title = {Anleitung {\"u}ber nat{\"u}rliche Begebenheiten ordentlich
und vorsichtig nachzudencken},
publisher = {Gleditsch},
year = 1749,
address = {Leipzig}
}
@Book{crusius1754,
author = {Christian August Crusius},
title = {Gr{\"u}ndliche Belehrung vom Aberglauben zur Aufkl{\"a}rung
des Unterschiedes zwischen Religion und Aberglauben},
publisher = {Langenheim},
year = 1767,
address = {Leipzig},
translator = {Christian Friedrich Pezold},
options = {cmsdate=on},
origdate = {1754/1755}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
并产生