这是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 的答案可能是更好的方法。