pagetotal для статей - Biblatex

pagetotal для статей - Biblatex

Я хотел бы узнать, как цитировать статью, указав общее количество страниц в статье. Я добавил поле pagetotalв .bibфайл и добавил следующий код в свою Преамбулу:

\DeclareFieldFormat{pagetotal}{\mkpagetotal[bookpagination]{#1~pp.}}

Однако, как с этим кодом, так и без него, или его варианты с Pagetotalinstead of pagetotalall терпят неудачу. Понятно, что ключ bookpaginationможет влиять только на то, как это поле форматируется для книг. Поэтому любой указатель в правильном направлении был бы очень полезен.

решение1

Стили по умолчанию biblatex, реализованные с помощью standard.bbxprint pagetotalполя только для типов записей типа книги, таких как @book, @collection, @bookletи @thesisт. д. Естественно, @articleне входит в число этих типов, поэтому по умолчанию игнорируется pagetotalтам. Учитывая тот факт, что статьи обычно поставляются с pagesполем, указывающим первую и последнюю страницу журнала, в котором они могут быть найдены, pagetotalполе действительно кажется излишним, поскольку (в общем случае) его информационная ценность может быть получена путем небольшого вычисления в pagesполе (некоторые онлайн-журналы не имеют страниц как таковых, в таких случаях это может быть полезно).

Чтобы включить pagetotalв вывод - несмотря на его избыточность, нам нужно включить команду \printfield{pagetotal}%в драйвер для @article. Для этого мы подключаемся к макросу note+pages, который используется только@article

\renewbibmacro*{note+pages}{%
  \printfield{note}%
  \setunit{\bibpagespunct}%
  \printfield{pages}%
  \setunit{\bibpagespunct}% this ...
  \printfield{pagetotal}% ... and this is new
  \newunit}

Мы также проверяем, правильно ли отформатировано поле (так как стандарт bookpaginationздесь не поможет).

\DeclareFieldFormat[article]{pagetotal}{\mkpagetotal[pagination]{#1}}

МВЭ

\documentclass{article}  
\usepackage[style=authoryear, backend=biber]{biblatex}
\usepackage{filecontents}
\usepackage{hyperref}
\begin{filecontents*}{\jobname.bib}
@article{BarPalNumEst,
  author    = {Hilary C. Barth and Annie M. Paladino},
  title     = {The development of numerical estimation},
  subtitle  = {Evidence against a representational shift},
  journal   = {Developmental Science},
  volume    = {14},
  number    = {1},
  pages     = {125-135},
  date      = {2011-01},
  doi       = {10.1111/j.1467-7687.2010.00962.x},
  gender    = {pf},
  pagetotal = {11},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\DeclareFieldFormat[article]{pagetotal}{\mkpagetotal[pagination]{#1}}
\renewbibmacro*{note+pages}{%
  \printfield{note}%
  \setunit{\bibpagespunct}%
  \printfield{pages}%
  \setunit{\bibpagespunct}%
  \printfield{pagetotal}%
  \newunit}

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

введите описание изображения здесь


Эту модификацию можно сделать pagetotalи для других типов записей, которых сейчас нет. Для @inbook, @incollectionи друзей модификацию можно сделать для chapter+pages. Но здесь эта модификация кажется особенно излишней, поскольку все эти записи должны содержать правильные физические номера страниц в своем pagesполе.

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

Связанный контент