.bib 文件中条目的字段顺序对于打印参考书目是否重要?

.bib 文件中条目的字段顺序对于打印参考书目是否重要?

这个例子

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

请注意translatorintroductioncommentator字段是同一个人。

问:改变给定条目中字段的顺序是否会影响参考书目的打印,或者打印是否通过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>

请注意,到目前为止,并非所有(组合)可能的组合角色都是默认定义的,如果您需要这些角色,则必须定义字符串并调整相关的宏以将新的字符串考虑在内。

相关内容