在 biblatex 下,如果 @incollection 条目没有 bookpagination 字段,则会将其理解为具有默认值“pages”,并且在必要时,页面范围前面会加上页或者页。然而,在 biblatex-chicago 中,情况不再如此:
这是一个标准的 biblatex 字段,它允许您自动将适当的字符串 bookpagination 添加到您在 pages 字段中提供的信息的前缀。如果您将其留空,则默认不打印任何标识字符串(相当于将其设置为 none),因为这是手册推荐的几乎所有页码的做法。
(摘自 biblatex-chicago 手册,第 24 页http://ctan.math.washington.edu/tex-archive/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/biblatex-chicago.pdf)
是否可以改变这一点,以便默认行为再次输入“p.”或“pp.”(即默认为“pages”而不是“none”)?我当然可以浏览我的(现在很长的)bib 文件并添加一个明确的行
bookpagination = "pages",
到每个 @incollection 项,但这样效率太低。有没有办法全局执行此操作?
答案1
如果没有指定,则标准biblatex
默认为。避免这种情况,并通过向字段格式添加测试来本质上恢复为。我们可以删除此测试并返回标准行为。bookpagination = {pages},
bookpagination
biblatex-chicago
bookpagination = {none},
MWE 保留了sbiblatex-chicago
的格式@article
,但是您也可以通过简单地删除块来获得“p。”/“pp。” \DeclareFieldFormat[article,periodical]{pages}
。
\documentclass[american]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[notes, backend=biber]{biblatex-chicago}
\addbibresource{biblatex-examples.bib}
\DeclareFieldFormat{pages}{%
\iftoggle{cms@comprange}%
{\mkcomprange[{\mkpageprefix[bookpagination]}]{#1}}%
{\mkpageprefix[bookpagination]{#1}}}
\DeclareFieldFormat[article,periodical]{pages}{%
\iftoggle{cms@comprange}%
{\iffieldundef{bookpagination}%
{\mkcomprange{#1}\isdot}%
{\mkcomprange[{\mkpageprefix[bookpagination]}]{#1}}}%
{\iffieldundef{bookpagination}%
{#1\isdot}%
{\mkpageprefix[bookpagination]{#1}}}}%
\begin{document}
\cite{sigfridsson,westfahl:space,gaonkar:in}
\printbibliography
\end{document}
如果你有兴趣在引用中获取页面前缀,你可能想要添加
\DeclareFieldFormat{postnote}{%
\iftoggle{cms@comprange}%
{\mkcomprange[{\mkpageprefix[pagination]}]{#1}}%
{\mkpageprefix[pagination]{#1}}}%