![使用 biblatex 向分组参考书目条目添加附加文本(例如“修订版本出现在”)](https://linux22.com/image/239357/%E4%BD%BF%E7%94%A8%20biblatex%20%E5%90%91%E5%88%86%E7%BB%84%E5%8F%82%E8%80%83%E4%B9%A6%E7%9B%AE%E6%9D%A1%E7%9B%AE%E6%B7%BB%E5%8A%A0%E9%99%84%E5%8A%A0%E6%96%87%E6%9C%AC%EF%BC%88%E4%BE%8B%E5%A6%82%E2%80%9C%E4%BF%AE%E8%AE%A2%E7%89%88%E6%9C%AC%E5%87%BA%E7%8E%B0%E5%9C%A8%E2%80%9D%EF%BC%89.png)
更新
自从我问了这个问题,已经过去了相当长一段时间,而且由于@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,物理评论快报 1996,77,3865;JP Perdew、K. Burke、M. Ernzerhof,物理评论快报 1997,78,1396(E)。
另一个示例是创建一个具有分组条目的引用,其形式应如下:
[2] EH Lieb,“库仑系统的密度泛函”,物理学作为自然哲学:纪念拉兹洛·蒂萨 75 岁诞辰的论文集(编:A. Shimony、H. Feshbach),麻省理工学院出版社,马萨诸塞州剑桥,1982,第 111–149 页;修订版见 EH Lieb,国际量子化学杂志。 1983,24,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.bbx
related:init
还有一些宏可以控制相关字符串和数据的格式,请参阅 biblatex 手册第 3.4 节。Bibtex(程序)不应该关心这些新字段,并将忽略它们。
答案2
addendum
在您的第一个示例中,只需使用相应 bibentry 的字段即可添加“(E)” 。对于您的第二个示例,我建议也使用该字段(在本例中为“Lieb 1982”bibentry 的字段),并通过在字段末尾addendum
添加来删除结束分号。\nopunct
addendum
\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}