使用 biblatex 向分组参考书目条目添加附加文本(例如“修订版本出现在”)

使用 biblatex 向分组参考书目条目添加附加文本(例如“修订版本出现在”)

更新

自从我问了这个问题,已经过去了相当长一段时间,而且由于@PLK在评论中告诉我即将推出的版本biblatex(现在应该已经发布了)将为我的问题提供解决方案,所以我想寻求一个利用这种新功能的答案biblatex。我试图找出正确的方法,但我对的了解biblatex还不足以找到我所寻找的内容。如果可能的话,我希望得到一个语言敏感的解决方案(我必须编写德语和英语文档),它不包括以某种方式更改 .bib 文件的内容,从而阻止我将它们与bibtex样式一起使用。我能想到的一种可能性可能是创建一个新的命令,其工作方式与\defbibentryset命令类似,但需要额外的参数来告诉它如何将给定的条目相互关联,例如要添加什么文本以及将其添加到何处(附加或前置)。这是一个包含参考书目条目的 MWE:

\documentclass{article}

\usepackage{filecontents}

\begin{filecontents}{testbibfile.bib}
@article {Lieb_1983_Int.J.Quantum.Chem._24_p.243,
author = {Lieb, Elliott H.},
title = {Density Functionals for Coulomb Systems},
journal = {Int. J. Quantum Chem.},
volume = {24},
number = {3},
publisher = {John Wiley & Sons, Inc.},
issn = {1097-461X},
url = {http://dx.doi.org/10.1002/qua.560240302},
doi = {10.1002/qua.560240302},
pages = {243--277},
year = {1983}
}

@incollection{Lieb_1982_InBook_Physics.as.Natural.Philosophy_p.111,
author      = {Lieb, Elliott H.},
editor      = {Shimony, Abner and Feshbach, Herman},
booktitle   = {Physics as Natural Philosophy: Essays in Honor of Laszlo Tisza on His Seventy-Fifth Birthday},
title       = {Density Functionals for Coulomb Systems},
year        = {1982},
publisher   = {MIT Press},
address     = {Cambridge, MA},
pages       = {111--149}
}
\end{filecontents}

\usepackage[
backend=biber,
language=german,
style=chem-angew,
pageranges=false,
articletitle=true
]{biblatex}

\bibliography{testbibfile.bib}

\defbibentryset{Lieb_constrained_search}{Lieb_1982_InBook_Physics.as.Natural.Philosophy_p.111,Lieb_1983_Int.J.Quantum.Chem._24_p.243}

\begin{document}

Die ``constrained search'' Formulierung der Dichtefunktionaltheorie stammt von Levy und Lieb\cite{Lieb_constrained_search}.

\printbibliography

\end{document}

原始问题

在我的学士论文中,我有一些参考文献,它们由几个参考书目条目组成,这些条目通过biblatex命令分组\defbibentryset(使用biber作为后端)。现在我想知道是否可以在这些分组条目中添加一些文本,例如通过在条目后添加类似“(E)”的内容来指示勘误表论文:

[1] JP Perdew、K. Burke、M. Ernzerhof,物理评论快报 199677,3865;JP Perdew、K. Burke、M. Ernzerhof,物理评论快报 199778,1396(E)。

另一个示例是创建一个具有分组条目的引用,其形式应如下:

[2] EH Lieb,“库仑系统的密度泛函”,物理学作为自然哲学:纪念拉兹洛·蒂萨 75 岁诞辰的论文集(编:A. Shimony、H. Feshbach),麻省理工学院出版社,马萨诸塞州剑桥,1982,第 111–149 页;修订版见 EH Lieb,国际量子化学杂志。 198324,243。

在最后一个示例中,短语“修订版本出现在”是应该添加到 的biblatex标准输出中的部分。
我的问题是:这可以通过(或其他包)实现吗biblatex?还是我必须在*.bbl文件中手动进行这些更改。

答案1

使用集合并不是最好的方法。使用较新的“相关条目”功能,只需将这些字段添加到原始条目中:

related = {Lieb_1983_Int.J.Quantum.Chem._24_p.243},
relatedstring = {a revised version appeared in}

然后仅引用原始条目。

如果您想要特定语言的字符串,以便引入“相关条目”的字符串可以本地化,则应使用该RELATEDTYPE字段。要使关系双向,请将其放入条目中INCOLLECTION

related = {Lieb_1983_Int.J.Quantum.Chem._24_p.243},
relatedtype = {revisedas}

条目如下ARTICLE

related = {Lieb_1982_InBook_Physics.as.Natural.Philosophy_p.111},
relatedtype = {revisedfrom}

然后在序言中定义本地化字符串(通常样式会这样做):

\NewBibliographyString{revisedas}%
\NewBibliographyString{revisedfrom}%
\DefineBibliographyStrings{german}{%
  revisedas = {eine verwandte Version in},
  revisedfrom = {eine verwandte Version von}
}

通过此我得到(出于以下原因使用 authoryear 样式):

在此处输入图片描述

我使用 authoryear 样式作为示例,因为内置的 biblatex 样式能够检测相关条目循环(本示例具有此功能)。似乎样式chem-angew没有此功能,因此会出现 LaTeX 溢出。添加此功能应该很容易- 看看如何在使用宏chem-angew时在所有条目类型末尾调用相关宏,这就是循环检测的作用。standard.bbxrelated:init

还有一些宏可以控制相关字符串和数据的格式,请参阅 biblatex 手册第 3.4 节。Bibtex(程序)不应该关心这些新字段,并将忽略它们。

答案2

addendum在您的第一个示例中,只需使用相应 bibentry 的字段即可添加“(E)” 。对于您的第二个示例,我建议也使用该字段(在本例中为“Lieb 1982”bibentry 的字段),并通过在字段末尾addendum添加来删除结束分号。\nopunctaddendum

\documentclass{article}

\usepackage{biblatex}

\renewbibmacro{in:}{%
  \ifentrytype{article}{}{%
  \printtext{\bibstring{in}\intitlepunct}}}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@incollection{Lie82,
  author = {Lieb, E. H.},
  year = {1982},
  title = {Density Functionals for Coulomb Systems},
  booktitle = {Physics as Natural Philosophy: Essays in Honor of Laszlo Tisza on His 75th Birthday},
  editor = {Shimony, A., and Feshbach, H.},
  location = {Cambridge, \mkbibacro{MA}},
  publisher = {\mkbibacro{MIT} Press},
  pages = {111--149},
  addendum = {A revised version appeared in\nopunct},
}
@article{Lie83,
  author = {Lieb, E. H.},
  year = {1983},
  journaltitle = {Int. J. Quantum Chem.},
  volume = {24},
  pages = {243},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\defbibentryset{Lie}{Lie82,Lie83}

\begin{document}

\printbibliography

\end{document}

相关内容