Biblatex:当 VOLUME 字段中的字符串不以数字开头时,不要打印“Vol”

Biblatex:当 VOLUME 字段中的字符串不以数字开头时,不要打印“Vol”

这是biblatex 的 PART 和 VOLUME 字段中的字符串那里提供的答案涵盖了我所要求的大部分内容,但它遗漏了以下规范“开始”:

“当字段volume不是以数字开头时,按原样打印该字段(无字Vol.)”。

建议的解决方案是在序言中添加以下内容:

\DeclareFieldFormat{volume}{\ifnumerals{#1}{\bibstring{volume}\addspace#1}{#1}}

Vol.但是,如果字段volume以数字开头,然后包含非数字字符,则不会打印单词。我希望它能做到这一点。下面是 MWE:

\documentclass{article}
\usepackage{filecontents}
\usepackage[style=authoryear]{biblatex}
\DeclareFieldFormat{volume}{\ifnumerals{#1}{\bibstring{volume}\addspace#1}{#1}}
\begin{filecontents}{\jobname.bib}
@BOOK{hogg1992,
    AUTHOR = "Richard M. Hogg",
    TITLE = "A grammar of Old English",
    YEAR = "1992",
    LOCATION = "Oxford",
    PUBLISHER = "Blackwell",
    VOLUME = "1: Phonology"}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{hogg1992}
\printbibliography
\end{document}

在此处输入图片描述

答案1

volume我宁愿使用标准方式来引用多卷著作中的各卷,而不是修改字段格式:在title 字段中放入“音系学”,在字段中放入“古英语语法” maintitle

\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{hogg1992,
    AUTHOR = "Richard M. Hogg",
    MAINTITLE = "A grammar of Old English",
    YEAR = "1992",
    LOCATION = "Oxford",
    PUBLISHER = "Blackwell",
    VOLUME = "1",
    TITLE = "Phonology"}
\end{filecontents}
\addbibresource{\jobname.bib}
\nocite{*}
\begin{document}
\printbibliography
\end{document}

在此处输入图片描述

答案2

\DeclareFieldFormat{volume}{\def\tmp##1##2{\ifinteger{##1}{\bibstring{volume}\addspace##1##2}{##1##2}}\expandafter\tmp#1}

应可产生所需结果。请注意使用\ifinteger而不是\ifnumerals,因为使用后者,“卷音位学”中的字母 V 将被解释为罗马数字而不是字符。

编辑:lockstep 的答案可能是更好的方法。

相关内容