更改 Biblatex 中的页面和年份的顺序

更改 Biblatex 中的页面和年份的顺序

我发现更改 Biblatex 中地址和出版商的顺序

并尝试过:

\documentclass{report}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}

\renewbibmacro*{pages+year}{%
  \printlist{pages}%
  \iflistundef{year}
    {\setunit*{\addcomma\space}}
    {\setunit*{\addcolon\space}}%
  \printlist{year}
  \newunit}

\begin{document}
Bla \cite{aksin}
\printbibliography
\end{document}

但那没用。还有其他建议吗?

在此处输入图片描述 我得到了上述内容,但我想要类似以下内容的内容:

在此处输入图片描述

答案1

CTAN 上有几种自定义样式可以将日期移至末尾。biblatex-ieeestyle=ieeebiblatex-nature'style=naturebiblatex-phys'style=phys浮现在脑海中。也许其中一个已经接近你想要的了。


如果您想修改标准样式,您可以修改驱动程序或尝试绕过此操作。无论如何,重新定义宏都pages+year无济于事,因为这个宏不存在,这意味着它根本没用。

由于修改驱动程序通常需要更多代码,因此我将演示一种解决方法。但如果我要按照自己的风格编写,我可能会修改驱动程序。

首先,我们禁用正常的日期打印宏,然后在打印页码的宏中插入新的日期打印宏。不过,并非所有条目类型都有页面,因此您可能最终会删除一些日期。下面的代码有一个原始检查来避免这种情况。

\documentclass{article}
\usepackage[style=numeric]{biblatex}
\addbibresource{biblatex-examples.bib}

\newtoggle{bbx:datemissing}

\renewbibmacro*{date}{\toggletrue{bbx:datemissing}%
}

\renewbibmacro*{issue+date}{%
  \toggletrue{bbx:datemissing}%
  \iffieldundef{issue}
    {}
    {\printtext[parens]{%
       \printfield{issue}}}%
  \newunit}

\newbibmacro*{date:print}{%
  \togglefalse{bbx:datemissing}%
  \printdate}

\renewbibmacro*{chapter+pages}{%
  \printfield{chapter}%
  \setunit{\bibpagespunct}%
  \printfield{pages}%
  \newunit
  \usebibmacro{date:print}%
  \newunit}

\renewbibmacro*{note+pages}{%
  \printfield{note}%
  \setunit{\bibpagespunct}%
  \printfield{pages}%
  \newunit
  \usebibmacro{date:print}%
  \newunit}

\renewbibmacro*{addendum+pubstate}{%
  \iftoggle{bbx:datemissing}
    {\usebibmacro{date:print}}
    {}%
  \printfield{addendum}%
  \newunit\newblock
  \printfield{pubstate}}

\begin{document}
Bla \cite{aksin}
\printbibliography
\end{document}

Ozge Aksın 等人。“固定化对 Mizoroki-Heck 反应中饱和 Pd-N-杂环卡宾催化特性的影响”。刊于:J. Organomet. Chem. 691.13,第 3027-3036 页。2006 年。

答案2

moewe 的解决方案很棒,但它有一个(可能不是故意的)副作用,就是把 放在url前面date。这是我的替代解决方案,它不会这样做,即文章引用中的字段将按journal, pages, year,的顺序排列url

\renewbibmacro*{issue+date}{}%       %  Remove date

\renewbibmacro*{note+pages}{%        %  Add date after pages
  \printfield{note}%
  \setunit{\bibpagespunct}%
  \printfield{pages}%
  \setunit{\addcomma\addspace}%      %  NEW
  \usebibmacro{date}%                %  NEW
  \newunit}

本质上,我已经从宏中删除了日期issue+date(有点奇怪,但它仅由articleperiodical类使用,所以我不在乎),并将其添加到note+pages宏中(仅由使用article)。

相关内容