我正在使用 Joseph Wright 的优秀biblatex-chem
套件来biblatex
模仿某些化学期刊的风格。特别是我正在使用
\usepackage[style=chem-angew,pageranges=false]{biblatex}
使用biblatex
版本 1.5a。问题是,这会产生输出,其中文章的页码前面有“p.”,即
JP Perdew、K. Burke、M. Ernzerhof、物理评论快报 1996,77,第 3865 页。
但这种行为与期刊的(应用化学) 标准,因为文章页面不应包含像“p”这样的前缀。(而且我的教授希望我去掉它)。当我在biblatex-chem
(chem-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-chem
pageranges=false
\mkpagefirst
\mkfirstpage
chem-angew.bbx
biblatex-chem
biblatex
chem-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
使用biblatex
1.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”。