法语中,卷的编辑(用于会议论文集等)和文本的编辑(用于评论版)是有区别的。在第一种情况下,我想要获取以下类型的条目:
Doe, John, dir. (1968). My Proceedings.
My Proceedings. Sous la dir. de John Doe. 1968.
其次,我想要:
Doe, John, éd. (1968). My critical edition.
My critical edition. Éd. par John Doe. 1968.
为了区分这两种类型的编辑器,我修改了参考书目字符串editor
和byeditor
,并增加了一个条件检查,即测试条目中是否存在关键字,以确定是否应使用“éd.”或“dir.”。当条目是“主”条目时,此方法可以正常工作。但是,出于某种原因,当通过“相关”字段使用该条目时,测试系统性地失败。
有没有办法来解决这个问题 ?
以下是代码:
\documentclass{article}
\usepackage[french]{babel}
\usepackage[style=authoryear,sorting=none]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{biblio.bib}
@Book{Kavyadarsa_ed,
editor = "Shastri, V.P.R.R.",
year = "1970",
title = "Kāvyādarśa of Daṇḍin",
address = "Poona",
publisher = "Bhandarkar Oriental Research Institute",
keywords = "primary",
}
@Misc{Kavyadarsa,
title = "Kāvyādarśa",
related = "Kavyadarsa_ed",
keywords = "primary",
}
\end{filecontents*}
\addbibresource{biblio.bib}
\DefineBibliographyStrings{french}{
editor = \ifkeyword{primary}{éd.}{dir.},
byeditor = \ifkeyword{primary}{Éd. par}{Sous la dir. de},
}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
输出:
Shastri, V.P.R.R., éd. (1970). Kāvyādarśa of Daṇḍin. Poona : Bhandarkar
Oriental Research Institute.
Kāvyādarśa (p. d.). V.P.R.R. Shastri, dir. Kāvyādarśa of Daṇḍin. Poona :
Bhandarkar Oriental Research Institute, 1970.
第一个条目符合预期。第二个条目的预期输出:
Kāvyādarśa (p. d.). V.P.R.R. Shastri, éd. Kāvyādarśa of Daṇḍin. Poona :
Bhandarkar Oriental Research Institute, 1970.
答案1
使用该editortype
字段并定义一种新类型的编辑器scied
。
\documentclass{article}
\usepackage[french]{babel}
\usepackage{csquotes}
\usepackage[style=authoryear,sorting=none]{biblatex}
\usepackage{filecontents}
\NewBibliographyString{scied}
\NewBibliographyString{scieds}
\NewBibliographyString{byscied}
\DefineBibliographyStrings{french}{
scied = {éd\adddot},
scieds = {éd\adddot},
byscied = {éd\adddotspace par},
}
\begin{filecontents*}{\jobname.bib}
@book{Kavyadarsa_ed,
editor = {Shastri, V.P.R.R.},
editortype = {scied},
year = {1970},
title = {Kāvyādarśa of Daṇḍin},
address = {Poona},
publisher = {Bhandarkar Oriental Research Institute},
}
@misc{Kavyadarsa,
title = {Kāvyādarśa},
related = {Kavyadarsa_ed},
keywords = {primary},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
由于biblatex
的关键字处理存在意外行为,您原来的方法没有奏效。关键字不像普通条目数据那样处理。相反,每个已知条目都会keyword
被分配一个包含该关键字的条目列表。(通常,数据是条目的函数,这里条目是关键字的函数。这使得使用关键字过滤条目变得更容易,因为不必逐个查询条目来找出它们的关键字状态。)
related
条目的处理方式是将整个related
条目复制到一个临时(dataonly
)条目中(这意味着您的.bbl
文件有三个条目:Kavyadarsa
,以及一个带有随机字符串键Kavyadarsa_ed
的临时副本,该副本是,这意味着它不会出现在任何参考书目列表中 - 但其他条目可能会请求其数据)。Kavyadarsa_ed
dataonly
关键字处理的一个怪癖是dataonly
条目未添加到关键字列表中。这意味着相关条目的关键字测试结果不为阳性。
https://github.com/plk/biblatex/pull/802应该可以修复这个奇怪的行为并且不会破坏任何其他东西。