与选项 pageranges=false 一起使用时,biblatex-chem 包出现问题

与选项 pageranges=false 一起使用时,biblatex-chem 包出现问题

我正在使用 Joseph Wright 的优秀biblatex-chem套件来biblatex模仿某些化学期刊的风格。特别是我正在使用

\usepackage[style=chem-angew,pageranges=false]{biblatex}

使用biblatex版本 1.5a。问题是,这会产生输出,其中文章的页码前面有“p.”,即

JP Perdew、K. Burke、M. Ernzerhof、物理评论快报 199677,第 3865 页。

但这种行为与期刊的(应用化学) 标准,因为文章页面不应包含像“p”这样的前缀。(而且我的教授希望我去掉它)。当我在biblatex-chemchem-angew.bbx)的相应样式文件中搜索以查看哪个命令与包选项相关时pageranges=false,我发现它是\mkpagefirst。相关行chem-angew.bbx

\DeclareFieldFormat[article]{pages}{%
\ifbool{bbx:pageranges}{#1}{\mkpagefirst{#1}}%
}

接下来,我尝试查找此命令的原始定义,以便biblatex.sty将其用作renewcommand符合我需求的重新定义的模板。但由于它\mkpagefirst是通过一系列命令定义的,我无法弄清楚如何做到这一点。所以任何帮助都将不胜感激。

(我不确定这是否可以被视为biblatex-chem软件包中的一个错误,我应该向 Joseph Wright 报告,因为他可能打算让它以这种方式工作。)

答案1

现在我已将我的更新到版本 1.6,我发现如果在文件中替换为,biblatex新引入的命令会修复包选项的\mkfirstpage行为。但正如 Marco 的回答评论中指出的那样,的当前版本 (1.0e)与 1.6 不兼容。在发布软件包的官方更新之前,我通过对文件应用以下更改来修复此不兼容性: 我删除了以下行biblatex-chempageranges=false\mkpagefirst\mkfirstpagechem-angew.bbxbiblatex-chembiblatexchem-angew.bbx

\renewcommand*{\thebibitem}{\item}
\renewcommand*{\thelositem}{\item}

此外我改变了

\renewenvironment*{thebibliography}
 {\list
    {\printfield[labelnumberwidth]{labelnumber}}
    {\setlength{\labelwidth}{\labelnumberwidth}%
    \setlength{\leftmargin}{\labelwidth}%
    \setlength{\labelsep}{\biblabelsep}%
    \addtolength{\leftmargin}{\labelsep}%
    \setlength{\itemsep}{\bibitemsep}%
    \setlength{\parsep}{\bibparsep}}%
    \renewcommand*{\makelabel}[1]{\hss##1}}
  {\endlist}    

\defbibenvironment{bibliography}
  {\list
     {\printtext[labelnumberwidth]{%
      \printfield{prefixnumber}%
      \printfield{labelnumber}}}
     {\setlength{\labelwidth}{\labelnumberwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{\hss##1}}
  {\endlist}
  {\item}

\renewenvironment*{theshorthands}
  {\list
     {\printfield[shorthandwidth]{shorthand}}
     {\setlength{\labelwidth}{\shorthandwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}%
      \renewcommand*{\makelabel}[1]{\hss##1}}}
  {\endlist}

\defbibenvironment{shorthands}
  {\list
     {\printfield[shorthandwidth]{shorthand}}
     {\setlength{\labelwidth}{\shorthandwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}%
      \renewcommand*{\makelabel}[1]{\hss##1}}}
  {\endlist}
  {\item}

到目前为止,这解决了我的问题。我猜想可能需要对相应的样式文件进行类似的更改才能使用biblatex-chem包中包含的其他样式。

答案2

使用biblatex1.6 版本时,该软件包biblatex-chem会产生一些错误。我构建了一个最小示例:

\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage{csquotes}
\providecommand*\thebibitem{}
\providecommand*\thelositem{}
\providecommand*\theshorthands{}
\usepackage[style=chem-angew,pageranges=false]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{entry1,
author="J. P. Perdew and K. Burke and M. Ernzerhof",
journaltitle="Phys. Rev. Lett.",
volume="77",
year="1996",
pages="3865"
}
\end{filecontents}
\bibliography{\jobname}
\begin{document}
\cite{entry1}
\printbibliography
\end{document}

但我没有得到“p. 3865”。

相关内容