区分科学编辑和 biblatex 中的文本编辑

区分科学编辑和 biblatex 中的文本编辑

法语中,卷的编辑(用于会议论文集等)和文本的编辑(用于评论版)是有区别的。在第一种情况下,我想要获取以下类型的条目:

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.

为了区分这两种类型的编辑器,我修改了参考书目字符串editorbyeditor,并增加了一个条件检查,即测试条目中是否存在关键字,以确定是否应使用“é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}

Shastri, VPRR, ed. (1970)。Daṇḍin 的 Kāvyādarśa。浦那:Bhandarkar 东方研究所。//Kāvyādarśa (pd)。VPRR Shastri, ed. Daṇḍin 的 Kāvyādarśa。浦那:Bhandarkar 东方研究所,1970 年。


由于biblatex的关键字处理存在意外行为,您原来的方法没有奏效。关键字不像普通条目数据那样处理。相反,每个已知条目都会keyword被分配一个包含该关键字的条目列表。(通常,数据是条目的函数,这里条目是关键字的函数。这使得使用关键字过滤条目变得更容易,因为不必逐个查询条目来找出它们的关键字状态。)

related条目的处理方式是将整个related条目复制到一个临时(dataonly)条目中(这意味着您的.bbl文件有三个条目:Kavyadarsa,以及一个带有随机字符串键Kavyadarsa_ed的临时副本,该副本是,这意味着它不会出现在任何参考书目列表中 - 但其他条目可能会请求其数据)。Kavyadarsa_eddataonly

关键字处理的一个怪癖是dataonly条目未添加到关键字列表中。这意味着相关条目的关键字测试结果不为阳性。

https://github.com/plk/biblatex/pull/802应该可以修复这个奇怪的行为并且不会破坏任何其他东西。

相关内容