Biblatex 文章条目:卷(年份)、编号 n 像 bibtex amsplain 一样?

Biblatex 文章条目:卷(年份)、编号 n 像 bibtex amsplain 一样?

biblatex想模仿amsplain参考书目中文章条目的样式。具体来说,我仍然需要使卷、号和年份部分出现在以下形式中

速度(年份),编号 n

— “数字”字段位于(括号内的)年份之后 — 如下amsplain例所示:

采用 amsplain 参考书目样式的文章条目

以下是我目前为止所取得的进展biblatex。来源是:

\documentclass[12pt]{memoir}

\usepackage[style=numeric,backend=bibtex]{biblatex}

\begin{filecontents}{ref.bib}
@article{EulerE1776,
    Author = {Euler, Leonhard},Title = {All about E},
    Journal = {Math.\ Psychol.},
    Year = {1776},Volume = {4},number={1},
    pages={1--2718}
}
\end{filecontents}

\addbibresource{ref.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document} 

我的biblatex.cfg是:

% BIBLATEX.CFG
% mimic amsplain
%
\ProvidesFile{biblatex.cfg}
%
\renewcommand*{\newunitpunct}{\addcomma\space}
%
\DeclareNameAlias{sortname}{last-first}
%
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{\mkbibemph{#1}}% no quote marks
  \DeclareFieldFormat{journaltitle}{#1}
  %
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {volume}{\mkbibbold{#1}}  
\DeclareFieldFormat{pages}{#1}% no prefix for the `pages` field in the bibliography
%
\renewbibmacro{in:}{%
  \ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}}

该配置的输出biblatex是:

Biblatex 文章条目

我认为我必须至少修改\DeclareBibliographyDriver{article}一些 bibmacro 的定义,甚至修改一些,但我无法深入了解文档来了解如何做到这一点。

笔记:由于其他原因,我必须使用biblatex而不是仅仅amsplain使用带有的样式bibtex

答案1

journal+issuetitle我们只需要修改中的宏standard.bbx。为了方便起见,我将 的定义分散到volume+number+eid各处journal+issuetitle,而不是将其保留为单独的宏。

\DeclareFieldFormat[article,periodical]{number}{\bibstring{number}~#1}% number of a journal

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

我们基本上将宏分为volume+number+eid体积和数字部分,并将日期打印移到两者之间。

相关内容