Biblatex 自定义年份字段的位置

Biblatex 自定义年份字段的位置

有没有方法biblatex可以更改输出中参考书目字段的顺序?我使用 样式是trad-abbrv因为缩写(natbib我也使用abbrvnat,因为我非常喜欢它)。我现在想打印期刊后的年份,然后打印出期刊、编号和页码。当前trad-abbrv按以下顺序打印:

  • 作者
  • 标题
  • 杂志
  • 体积
  • 数字

平均能量损失

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

答案1

要将年份移到期刊名称后面,您可以将其添加到journal+issuetitle宏的定义中,然后从宏中删除issue+date-parens。这两个宏的原始定义可以在 中找到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}

相关内容