![文章的页面总数 - Biblatex](https://linux22.com/image/281618/%E6%96%87%E7%AB%A0%E7%9A%84%E9%A1%B5%E9%9D%A2%E6%80%BB%E6%95%B0%20-%20Biblatex.png)
我想知道如何引用一篇文章并标明文章的总页数。我pagetotal
在.bib
文件中添加了该字段,并在序言中添加了以下代码:
\DeclareFieldFormat{pagetotal}{\mkpagetotal[bookpagination]{#1~pp.}}
但是,无论是否使用此代码,或使用Pagetotal
而不是的变体pagetotal
,都会失败。可以理解的是,该键bookpagination
可能只会影响此字段针对书籍的格式化方式。因此,任何指向正确方向的指针都会非常有帮助。
答案1
biblatex
所实现的默认样式standard.bbx
仅打印书籍类条目类型(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}