我需要引用选集中的一本未使用标准页码的书。
在参考书目中,应给出整部作品的页码。
在引文中,只应列出我所指的页码。通常使用选项 citepages=omit 来完成此操作。不幸的是,当“postnote”字段中的页面非标准时,此选项似乎不起作用。
以下是 MWE:
\documentclass{book}
\usepackage[backend=biber,
style=verbose-ibid,
citepages=omit,
ibidpage=true]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{pages.bib}
@bookinbook{a,
author = {An Author},
title = {A Book With Nonstandard Pages},
booktitle = {A Bigger Book},
pages = {123A--131D},
}
\end{filecontents}
\addbibresource{pages.bib}
\begin{document}
I want to cite this book with only the pages I am referring to.\footcite[130B]{a}
\end{document}
脚注中的当前结果如下:
1一位作者。一本页面不标准的书。 在:更大的书、123A–131D、130B。
期望的结果是
1一位作者。一本页面不标准的书。 在:更大的书,130B.
(事实上,它没有添加“pp”,这对我来说没问题。)
对于如何做到这一点有什么想法吗?
答案1
citepages=omit
仅在第三种情况下抑制pages
/pagetotal
[第三种情况是使用通过postnote
测试的调用 cite 时的情况\ifpages
]。如果没有,postnote
或者 不是postnote
数字或范围,它们仍会打印出来。
您可以\ifpages
在第 177 页(§4.6.2独立测试) 的biblatex
文档
所以你有两个选择
- 确信
biblatex
“A”、“B”、“C”和“D”实际上是有效的页码 - 始终抑制该
pages
场,无论其性质如何postnote
。
解决方案 1
您可以使用\DeclareNumChars{ABCD}
来将biblatex
包含这些字符的“数字”视为数字。因此,postnote
诸如 这样的113B
现在将通过\ifpages
测试。(另一个好处是,现在包含这些字符的pages
和pagetotal
字段也将添加“pp。”)。
阅读更多内容\DeclareNumChars
和相关命令,请参阅§4.6.4杂项命令,第 186 页biblatex
文档。
解决方案 2
或者你可以citepages=suppress
使用citepages=omit
(指南verbose-ibid
风格):
citepages=suppress
无条件地抑制引文中的pages
/pagetotal
字段,无论postnote
。
解决方案 1 的 MWE
\documentclass{article}
\usepackage[backend=biber,
style=verbose-ibid,
citepages=omit,
ibidpage=true]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@bookinbook{a,
author = {An Author},
title = {A Book With Nonstandard Pages},
booktitle = {A Bigger Book},
pages = {131A--123D},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\DeclareNumChars{ABCD}
\begin{document}
I want to cite this book with only the pages I am referring to.\footcite[1311B]{a}.
\printbibliography
\end{document}
答案2
我按如下方式解决了我的问题:
在序言中,我添加了以下内容以允许将字母视为“数字”:
\DeclareNumChars{ABCDE}
我在复杂条目之前添加了以下钩子:
\AtNextCitekey{\clearfield{pages}}
这将抑制pages
下一个引用的字段(并且只抑制那一个)。