
Я хотел бы узнать, как цитировать статью, указав общее количество страниц в статье. Я добавил поле pagetotal
в .bib
файл и добавил следующий код в свою Преамбулу:
\DeclareFieldFormat{pagetotal}{\mkpagetotal[bookpagination]{#1~pp.}}
Однако, как с этим кодом, так и без него, или его варианты с Pagetotal
instead of pagetotal
all терпят неудачу. Понятно, что ключ bookpagination
может влиять только на то, как это поле форматируется для книг. Поэтому любой указатель в правильном направлении был бы очень полезен.
решение1
Стили по умолчанию biblatex
, реализованные с помощью standard.bbx
print 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}