我必须引用没有页码的文章,但书籍章节应该有页码。我使用以下代码来避免在页码前使用“pp”。
\DefineBibliographyStrings{ngerman}{pages={}}
显然,这会省略所有引用的页码。有没有办法只显示没有页码的文章?
答案1
您必须更改处理pages
参考书目中文章、合集等页面范围的字段的格式。(还有一个pagetotal
字段用于处理书籍等的总页数。)可选参数\DeclareFieldFormat
采用逗号分隔的条目类型列表,新/更改的格式应适用于这些条目类型。
更改文内引用的格式需要摆弄字段postnote
;biblatex
有关详细信息,请参阅手册第 3.11.3 节。
\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\DeclareFieldFormat[article]{pages}{#1}%
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{Bli74,
author = {Blinder, Alan S.},
year = {1974},
title = {The economics of brushing teeth},
journaltitle = {Journal of Political Economy},
volume = {82},
number = {4},
pages = {887--891},
}
@incollection{Fis00,
author = {Fischel, William A.},
year = {2000},
title = {Zoning and land use regulation},
maintitle = {Encyclopedia of law and economics},
volume = {2},
booktitle = {Civil law and economics},
editor = {Boudewijn, Bouckaert and de Geest, Gerrit},
location = {Cheltenham},
publisher = {Elgar},
pages = {403--442},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Some text \autocites[887]{Bli74}[403]{Fis00}.
\printbibliography
\end{document}
编辑:iennisei 的回答让我认为我可能误解了你的问题:如果你不仅想删除文章页面范围的前缀,而且想完全省略它们,请使用以下代码(这使得上述格式重新定义变得多余):
\AtEveryBibitem{%
\ifentrytype{article}{%
\clearfield{pages}%
}{%
}%
}
答案2
您使用的技术会在整个参考书目中替换“页面”的语言字符串,并且还假定您不会在文章的条目中写任何页面引用(但如果您需要另一篇论文并使用另一种引用样式,该怎么办?)。@lockstep 的回答更有针对性,但(除非我弄错了)还假定您在文件中省略了页码.bib
。
为了完全防止打印页码,可以这样做:
\renewbibmacro*{note+pages}{%
\printfield{note}%
%\setunit{\bibpagespunct}%
%\printfield{pages}%
\newunit}
此宏由显示文章页码的文件note+pages
使用。它是用于格式化参考书目的文件。standard.bbx
authoryear