这个例子
@book{schleiermacher:hermeneutica,
author = {Schleiermacher, Friedrich Daniel Ernst},
year = {2001},
title = {Hermeneutica},
publisher = {Polirom},
isbn = {973-683-617-7},
location = {Iași},
translator = {Râmbu, Nicolae},
introduction = {Râmbu, Nicolae},
commentator = {Râmbu, Nicolae},
series = {Collegium}
}
请注意translator
,introduction
和commentator
字段是同一个人。
问:改变给定条目中字段的顺序是否会影响参考书目的打印,或者打印是否通过lbx
本地化进行,即:bytranslatoranin
(biblatex)和cbytranslatoranin
(biblatex-chicago)?
答案1
通常,您在.bib
条目中给出字段的顺序并不重要。(使用 BibTeX 时,.bib
如果您使用该crossref
功能,则在文件中给出整个条目的顺序很重要:编辑的条目crossref
必须出现在后条目就是crossref
这样。)在这种情况下没有什么不同,您在.bib
条目中给出名称的顺序并不重要。“组合”字符串是由biblatex
完全不知道.bib
文件中顺序的宏“计算”的:它们从文件中获取信息.bbl
,而文件对文件中的顺序一无所知.bib
,并且始终会选择相同的硬编码顺序。
相关宏biblatex.def
来自
\newbibmacro*{editor+othersstrg}{%
\iffieldundef{editortype}
{\ifboolexpr{
test {\ifnumgreater{\value{editor}}{1}}
or
test {\ifandothers{editor}}
}
{\def\abx@tempa{editors}}
{\def\abx@tempa{editor}}}
{\ifboolexpr{
test {\ifnumgreater{\value{editor}}{1}}
or
test {\ifandothers{editor}}
}
{\edef\abx@tempa{\thefield{editortype}s}}
{\edef\abx@tempa{\thefield{editortype}}}}%
\let\abx@tempb=\empty
\ifnamesequal{editor}{translator}
{\appto\abx@tempa{tr}%
\appto\abx@tempb{\clearname{translator}}}
{}%
\ifnamesequal{editor}{commentator}
{\appto\abx@tempa{co}%
\appto\abx@tempb{\clearname{commentator}}}
{\ifnamesequal{editor}{annotator}
{\appto\abx@tempa{an}%
\appto\abx@tempb{\clearname{annotator}}}
{}}%
\ifnamesequal{editor}{introduction}
{\appto\abx@tempa{in}%
\appto\abx@tempb{\clearname{introduction}}}
{\ifnamesequal{editor}{foreword}
{\appto\abx@tempa{fo}%
\appto\abx@tempb{\clearname{foreword}}}
{\ifnamesequal{editor}{afterword}
{\appto\abx@tempa{af}%
\appto\abx@tempb{\clearname{afterword}}}
{}}}%
\ifbibxstring{\abx@tempa}
{\printtext[editortype]{\bibstring{\abx@tempa}}\abx@tempb}
{\usebibmacro{editorstrg}}}
\newbibmacro*{translator+othersstrg}{%
\ifboolexpr{
test {\ifnumgreater{\value{translator}}{1}}
or
test {\ifandothers{translator}}
}
{\def\abx@tempa{translators}}
{\def\abx@tempa{translator}}%
\ifnamesequal{translator}{commentator}
{\appto\abx@tempa{co}%
\clearname{commentator}}
{\ifnamesequal{translator}{annotator}
{\appto\abx@tempa{an}%
\clearname{annotator}}
{}}%
\ifnamesequal{translator}{introduction}
{\appto\abx@tempa{in}%
\clearname{introduction}}
{\ifnamesequal{translator}{foreword}
{\appto\abx@tempa{fo}%
\clearname{foreword}}
{\ifnamesequal{translator}{afterword}
{\appto\abx@tempa{af}%
\clearname{afterword}}
{}}}%
\printtext[translatortype]{\bibstring{\abx@tempa}}}
\newbibmacro*{byeditor+othersstrg}{%
\iffieldundef{editortype}
{\def\abx@tempa{byeditor}}
{\edef\abx@tempa{by\thefield{editortype}}}%
\let\abx@tempb=\empty
\ifnamesequal{editor}{translator}
{\appto\abx@tempa{tr}%
\appto\abx@tempb{\clearname{translator}}}
{}%
\ifnamesequal{editor}{commentator}
{\appto\abx@tempa{co}%
\appto\abx@tempb{\clearname{commentator}}}
{\ifnamesequal{editor}{annotator}
{\appto\abx@tempa{an}%
\appto\abx@tempb{\clearname{annotator}}}
{}}%
\ifnamesequal{editor}{introduction}
{\appto\abx@tempa{in}%
\appto\abx@tempb{\clearname{introduction}}}
{\ifnamesequal{editor}{foreword}
{\appto\abx@tempa{fo}%
\appto\abx@tempb{\clearname{foreword}}}
{\ifnamesequal{editor}{afterword}
{\appto\abx@tempa{af}%
\appto\abx@tempb{\clearname{afterword}}}
{}}}%
\ifbibxstring{\abx@tempa}
{\printtext{\bibstring{\abx@tempa}}\abx@tempb}
{\usebibmacro{bytypestrg}{editor}{editor}}}
\newbibmacro*{bytranslator+othersstrg}{%
\def\abx@tempa{bytranslator}%
\ifnamesequal{translator}{commentator}
{\appto\abx@tempa{co}%
\clearname{commentator}}
{\ifnamesequal{translator}{annotator}
{\appto\abx@tempa{an}%
\clearname{annotator}}
{}}%
\ifnamesequal{translator}{introduction}
{\appto\abx@tempa{in}%
\clearname{introduction}}
{\ifnamesequal{translator}{foreword}
{\appto\abx@tempa{fo}%
\clearname{foreword}}
{\ifnamesequal{translator}{afterword}
{\appto\abx@tempa{af}%
\clearname{afterword}}
{}}}%
\bibstring{\abx@tempa}}
他们将始终选择相同的硬编码顺序
editor(s)<tr><co|an><in|fo|af>
translator(s)<co|an><in|fo|af>
byeditor(s)<tr><co|an><in|fo|af>
bytranslator(s)<co|an><in|fo|af>
请注意,到目前为止,并非所有(组合)可能的组合角色都是默认定义的,如果您需要这些角色,则必须定义字符串并调整相关的宏以将新的字符串考虑在内。