设置

设置

我使用 citation 命令\cite[00X1]{stacksproject}。这会产生结果[p. 00X1, SP],但应该是[00X1, SP]可选参数是标签而不是页码。

我必须使用哪个 biblatex 参数来禁用在开头自动添加这个“p。”?

设置

我的 biblatex 设置是

\usepackage{csquotes}
\usepackage[
    backend=bibtex,
    style=alphabetic,
    citestyle=alphabetic
]{biblatex}

备注/尝试

我可以全局禁用它。\cite[p.~3]{...}当我确实需要页码时,我很乐意使用它。

我尝试添加以下命令,但我认为这不是我想要的。

\DeclareFieldFormat{pages}{\mkpageprefix[...][...]{#1}}

使用时\printbibliography,它仍应自动打印页面范围,类似pp. 312-345

如果这个问题已经得到解答,我很抱歉,但我在这里和 biblatex 的文档,如果能提供一个参考链接就更好了。

答案1

biblatex有一个启发式方法来检查postnote参数是否是页面(范围),00X1通过该测试,因为biblatex尝试允许阿拉伯数字和罗马数字,并且00X1只包含罗马和阿拉伯数字中允许的字符。

如果您写了00Y1,那么您将不会在输出中看到“p.”,因为Y不能是罗马数字或阿拉伯数字的一部分。

您可以提供帮助biblatex,并使用命令明确地告诉它后记不是页面范围\nopp

Lorem \autocite[\nopp 00X1]{sigfridsson}

这将抑制任何“p。”/“pp。”前缀。

如果某部作品的引用没有提及页码范围,您可以通过向具有值的条目biblatex添加字段来告知这一点。pagination.bibnone

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[
    backend=bibtex,
    style=alphabetic,
]{biblatex}

\begin{filecontents}{\jobname.bib}
@article{sigfridsson,
  author       = {Sigfridsson, Emma and Ryde, Ulf},
  title        = {Comparison of methods for deriving atomic charges from the
                  electrostatic potential and moments},
  journal      = {Journal of Computational Chemistry},
  date         = 1998,
  volume       = 19,
  number       = 4,
  pages        = {377-395},
  doi          = {10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P},
}
@book{nussbaum,
  author       = {Nussbaum, Martha},
  title        = {Aristotle's \mkbibquote{De Motu Animalium}},
  date         = 1978,
  publisher    = {Princeton University Press},
  location     = {Princeton},
  pagination   = {none},
}
\end{filecontents}
\addbibresource{\jobname.bib}


\begin{document}
Lorem \autocite[\nopp 00X1]{sigfridsson} % suppress page prefix

Lorem \autocite[00X1]{sigfridsson} % passes "pages test"

Lorem \autocite[00Y1]{sigfridsson} % doesn't pass "pages test"

Lorem \autocite[00X1]{nussbaum} % pagination=none

Lorem \autocite[00Y1]{nussbaum} % pagination=none
\end{document}

Lorem [SR98,00X1]//Lorem [SR98,第 153 页] 00X1]//Lorem [SR98, 00Y1]//Lorem [Nus78, 00X1]//Lorem [Nus78, 00Y1]

如果要全局删除所有条目的所有引用中的 pages 前缀,请使用

\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\DeclareFieldFormat{volcitepages}{\mknormrange{#1}}
\DeclareFieldFormat{multipostnote}{\mknormrange{#1}}

如果你仍想biblatex解析和格式化数字范围,或者

\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{volcitepages}{#1}
\DeclareFieldFormat{multipostnote}{#1}

如果根本不应该进行这样的解析和格式化。

无论如何,您都可以手动添加“p.”或“pp. \pno\ppno

\autocite[\pno~380]{sigfridsson}
\autocite[\ppno~380-382]{sigfridsson}

如果你愿意的话。


这在 §3.14.3 中有记录引文中的页码(v3.14 中的第 146-147 页)和 §2.3.12分页(第 3.14 版第 41 页)biblatex手动的。但是,如果您已经知道答案,那么在文档中找到相关页面会更加容易。

相关内容