[Tex/LaTex] Biblatex customize position of year field

biblatexbibliographies

Is there a method in biblatex to change the order of the bibliography fields in the output? I'm using the trad-abbrv style because of the abbreviations (with natbib I also used abbrvnat, because I like it quite much). I now want to print the year after the journal, then print out the issue, the number and the pages. Currently trad-abbrv prints it in the order:

  • Authors
  • Title
  • Journal
  • Volume
  • Number
  • Year

MWE

\documentclass{article}
\usepackage[backend=biber, style = trad-abbrv, citestyle = numeric-comp]{biblatex}
\addbibresource{\jobname.bib}
\usepackage{filecontents}

% Name
\renewcommand{\labelnamepunct}{\addcolon\space}

% Title
\DeclareFieldFormat*{title}{\enquote{#1}\isdot}
\DeclareFieldFormat*{journaltitle}{\mkbibemph{#1},}

% Volume
\DeclareFieldFormat*{volume}{#1}

% Number
\DeclareFieldFormat*{number}{\mkbibparens{#1}}

% Pages
\DeclareFieldFormat*{pages}{\space#1\space}
\renewcommand*{\bibpagespunct}{\addspace}

% Year
\DeclareFieldFormat{date}{\textbf{#1}}

\begin{filecontents}{\jobname.bib}
@article{Yablokov2009,
    author  = {Yablokov, V Ya and Smel'tsova, I L and Zelyaev, I A and Mitrofanova, S V},
    doi     = {10.1134/S1070363209080209},
    issn    = {1070-3632},
    journal = {Russ. J. Gen. Chem.},
    number  = {8},
    pages   = {1704--1706},
    title   = {{Studies of the Rates of Thermal Decomposition of Glycine, Alanine, and Serine}},
    volume  = {79},
    year    = {2009}
}
\end{filecontents}

\begin{document}

\noindent\cite{Yablokov2009}

\printbibliography

\end{document}

Best Answer

To move the year after the journal name, you could add it to the definition of the journal+issuetitle macro and remove it from the issue+date-parens macro. The original definitions of these two macros can be found in trad-standard.bbx.

\documentclass{article}
\usepackage[backend=biber, style = trad-abbrv, citestyle = numeric-comp]{biblatex}
\addbibresource{\jobname.bib}
\usepackage{filecontents}

% Name
\renewcommand{\labelnamepunct}{\addcolon\space}

% Title
\DeclareFieldFormat*{title}{\enquote{#1}\isdot}
\DeclareFieldFormat*{journaltitle}{\mkbibemph{#1},}

% Volume
\DeclareFieldFormat*{volume}{#1}

% Number
\DeclareFieldFormat*{number}{\mkbibparens{#1}}

% Pages
\DeclareFieldFormat*{pages}{\space#1\space}
\renewcommand*{\bibpagespunct}{\addspace}

% Year
\DeclareFieldFormat{date}{\textbf{#1}}

\begin{filecontents}{\jobname.bib}
@article{Yablokov2009,
    author  = {Yablokov, V Ya and Smel'tsova, I L and Zelyaev, I A and Mitrofanova, S V},
    doi     = {10.1134/S1070363209080209},
    issn    = {1070-3632},
    journal = {Russ. J. Gen. Chem.},
    number  = {8},
    pages   = {1704--1706},
    title   = {{Studies of the Rates of Thermal Decomposition of Glycine, Alanine, and Serine}},
    volume  = {79},
    year    = {2009}
}
\end{filecontents}

\renewbibmacro*{journal+issuetitle}{%
  \usebibmacro{journal}%
  \usebibmacro{date}% NEW %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \newcommaunit*%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addcomma\space}}%
  \usebibmacro{volume+number+pages+eid}%
  \newcommaunit
  %\setunit{\addspace}%
  \usebibmacro{issue+date-parens}%
  \setunit*{\addcolon\space}%
  \usebibmacro{issue}%
  \newunit}

\renewbibmacro*{issue+date-parens}{%
  \iffieldundef{issue}%
    {%
%    \usebibmacro{date}
    }%
    {\printfield{issue}%
     \newcommaunit*%
%     \usebibmacro{date}
     }%
  \newunit}


\begin{document}

\noindent\cite{Yablokov2009}

\printbibliography

\end{document}