[Tex/LaTex] Reorder “Note” field at the end of the reference

biblatex

I would like to reorder fields in Biblatex printbibliography output. My purpose is to put the "note" field at the very end.

Right now, there is a possible confusion with the page. If the note refers to another edition, the reader can think the pages are for this other edition.

enter image description here

This is a different question than this one (the author was using "note" for "urldate"). It quite similar to this other question but the complicated solution is dated of 2012. There is maybe a simpler way to achieve this in recent biblatex versions

MWE:

\begin{filecontents}{\jobname.bib}
 @article{test,
   author =   {Author},
   title =    {Title},
   journaltitle = {Journal},
   year =     2015,
   number = 2,
   volume = 167,
   pages = {67--88},
   note = {Reprinted under the name "Title2"}}

 \end{filecontents}

\documentclass[12pt,twoside,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{filecontents}
\usepackage[style=authoryear-comp,backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}

\cite{test}

\printbibliography
\end{document}

Best Answer

The addendum field is normally displayed almost at the very end of an entry (in most cases it would be at the end), so that would be an obvious candidate for you if you don't want to mess with the style itself.

You can map note to addendum with sourcemaps so you don't even have to change your .bib file

\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{test,
  author =   {Author},
  title =    {Title},
  journaltitle = {Journal},
  year =     2015,
  number = 2,
  volume = 167,
  pages = {67--88},
  note = {Reprinted under the name \mkbibquote{Title2}},
}
\end{filecontents}

\documentclass[12pt,twoside,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{filecontents}
\usepackage[style=authoryear-comp,backend=biber]{biblatex}
\addbibresource{\jobname.bib}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite=false]{
      \step[fieldsource=note]
      \step[fieldset=addendum, origfieldval, final]
      \step[fieldset=note, null]
    }
  }
}

\begin{document}
\cite{test}
\printbibliography
\end{document}

enter image description here


If you really wanted to move the note for all entry types you would have to redefine or patch the bibliography drivers and the the macro note+pages. You can then re-insert the note field after addendum and pubstate (again, technically that is not really at the end, but it makes sense to put it there instead of putting it at the very end).

\usepackage{xpatch}
\newcommand*{\removenotefromdriver}[1]{%
  \xpatchbibdriver{#1}
    {\printfield{note}}
    {}
    {}{}}
\forcsvlist{\removenotefromdriver}
  {book,collection,proceedings,
   inbook,incollection,inproceedings,
   booklet,manual,misc,online,patent,
   periodical,report,thesis,unpublished}

\renewbibmacro*{note+pages}{%
  \setunit{\bibpagespunct}%
  \printfield{pages}%
  \newunit}

\renewbibmacro*{addendum+pubstate}{%
  \printfield{addendum}%
  \newunit\newblock
  \printfield{pubstate}%
  \newunit\newblock
  \printfield{note}}

If this really is about a reprint of an article, I wholeheartedly recommend looking into the related function of biblatex. You could try something like

@article{test,
  author       = {Author},
  title        = {Title},
  journaltitle = {Journal},
  year         = 2015,
  number       = 2,
  volume       = 167,
  pages        = {67--88},
  related      = {test2},
  relatedtype  = {reprintas},
}
@inbook{test2,
  author    = {Author},
  title     = {Title2},
  booktitle = {Collected Works},
}

which would give

enter image description here