我正在尝试\autocite
输出--
页面范围,就像 Biblatex 对参考书目条目所做的那样:
这是我的 MWE:
\documentclass{article}
\usepackage[
backend=biber,
style=authoryear-comp,
uniquename=mininit,
uniquelist=minyear,
firstinits=false,
backref=false,
hyperref=true,
useprefix=true]{biblatex}
\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},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Brushing teeth is expensive \autocite[883-890]{Bli74}.
\printbibliography
\end{document}
答案1
这有点作弊,但作为\mkcomprange
正常化范围,你可以尝试
\setcounter{mincompwidth}{100000}%something large
\DeclareFieldFormat{postnote}{\mkcomprange[{\mkpageprefix[pagination]}]{#1}}
答案2
按照功能请求https://github.com/plk/biblatex/issues/293这已在biblatex
3.11 中实现(https://github.com/plk/biblatex/pull/674,这花了三年多的时间,但我想,迟做总比不做好。
有一个新的命令\mknormrange
,其工作原理与 Ulrike 的答案类似,\mkcomprange
但有一个重要的区别,它只\mknormrange
规范范围,而不会以任何方式压缩它们。
\mknormrange
已添加到默认的 postnote 格式
\DeclareFieldFormat{postnote}{\mkpageprefix[pagination][\mknormrange]{#1}}
\DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination][\mknormrange]{#1}}
\DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination][\mknormrange]{#1}}
因此,问题中的 MWE 现在将给出一个短划线 ( \bibrangedash
),无需进一步修改
要恢复旧的非规范化行为,请添加
\DeclareFieldFormat{postnote}{\mkpageprefix[pagination]{#1}}
\DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination]{#1}}
\DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination]{#1}}
你的序言。
如果您现在想删除页面前缀“p。”/“pp。”,您可能需要考虑保留\mknormrange
\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\DeclareFieldFormat{volcitepages}{\mknormrange{#1}}
\DeclareFieldFormat{multipostnote}{\mknormrange{#1}}
而不仅仅是\DeclareFieldFormat{postnote}{#1}
。
请注意,该pages
格式不使用是\mknormrange
因为其内容已由 Biber 预先规范化。