我引用了这个帖子:
要省略所有引用的页面前缀,请在序言中添加以下内容:
\DeclareFieldFormat{postnote}{#1} \DeclareFieldFormat{multipostnote}{#1}
我想做完全相同的事情,但只针对一本特定的书(因此对于所有其他书,“p.”都应该出现在引用中)。
同样的答案也说
要抑制单个引文的前缀,请在引文的可选参数中使用 \nopp(感谢 Gonzalo Medina 提供的提示):
\cite[\nopp 1]{A01}
结果正是我想要的,但我不想每次引用那本特定的书时都必须写命令,而是让操作自动化。
我怎样才能实现这个目标?
答案1
使用该pagination
字段并赋予其值none
以抑制页面前缀。
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
@book{elk,
author = {Anne Elk},
title = {A Theory on Brontosauruses},
year = {1972},
publisher = {Monthy \& Co.},
location = {London},
pagination = {none},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \autocite[380]{sigfridsson}
ipsum \autocite[12]{elk}
\printbibliography
\end{document}
如果你还需要删除逗号,那么你可以使用类似
\DeclareDelimFormat{postnotedelim}{%
\ifboolexpr{ test {\iffieldpages{postnote}}
and test {\iffieldequalstr{pagination}{none}}}
{\addspace}
{\addcomma\space}%
}