# Is the order of fields in an entry in a .bib file important for printing the bibliography?

This example

@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}
}


Observe that the translator, introduction and commentator fields are the same person.

Q: Does changing the order of the fields in a given entry affect the printing of the bibliography, or is printing passed through lbx localisation ie: bytranslatoranin (biblatex) and cbytranslatoranin (biblatex-chicago)?

• The order in the .bib file does not matter. The 'combined' string is 'calculated' by biblatex macros that don't know about the order in the .bib file: They will always choose the same hard-coded order. (I don't have time to check the details of the hard-coded order now, but I can write an answer with more details later.) Jan 26 at 11:42
• @moewe Thanks a lot for the explanation. I performed a change of order and nothing happened, indeed. I just wanted to be sure in case that was a particular case! Jan 26 at 11:45

Generally, the order in which you give fields in the .bib entry do not matter. (With BibTeX the order in which you give entire entries in the .bib file matters if you use the crossref feature: entries that are crossrefed must come after entries that crossref it.) It is no different in this case, the order in which you give the names in the .bib entry does not matter. The 'combined' string is 'calculated' by biblatex macros that don't know about the order in the .bib file at all: They get the info from the .bbl file, which knows nothing about the order in the .bib file and will always choose the same hard-coded order.

The relevant macros from biblatex.def are

\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}}}

\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}}}

\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}}}

\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}}


and they will always choose the same hard-coded order

• 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>

Note that by far not all (combinatorically) possible combined roles are defined by default, if you need those you will have to define the strings and tweak the relevant macros to take the new strings into account.

• I didn't know that crossrefed must come after entries that crossref it. Is this documented in biblatex.pdf? I intend to use crossref Jan 26 at 17:07
• @Mafsi The order of crossrefed and crossrefing entry is only important if you use BibTeX (and is documented in the BibTeX manual mirrors.ctan.org/biblio/bibtex/base/btxdoc.pdf, p. 3). If you use biblatex with Biber you don't need to worry about that, so this is not mentioned in the biblatex docs (since the biblatex docs assume you use Biber). Jan 26 at 20:15