biblatex 有articleno
字段或等效项吗?此外,我可以在页码范围中使用文章编号吗?问题中的问题文章有以下内容:
pages = {19:1--19:39},
articleno = {19},
答案1
更新答案
标准数据模型中,此类作业的字段biblatex
称为eid
。(该字段的版本 3.14 及以上版本biblatex
仅适用于@article
s,但从 v3.15 开始,所有有意义的类型都将支持该字段,请参阅https://github.com/plk/biblatex/pull/1000)。
如果您不喜欢默认输出,您可以修改它以显示“Art. No.”。
\documentclass{article}
\usepackage[backend=biber, style=authoryear]{biblatex}
\NewBibliographyString{artno}
\DefineBibliographyStrings{english}{artno = {Art\adddotspace No\adddot}}
\DeclareFieldFormat[article,periodical]{eid}{\bibstring{artno}\addabbrvspace #1}
\begin{filecontents*}{\jobname.bib}
@article{mooney,
author = {Mooney, Carl H. and Roddick, John F.},
title = {Sequential Pattern Mining -- Approaches and Algorithms},
journal = {ACM Comput. Surv.},
volume = {45},
number = {2},
date = {2013-03},
pages = {19:1--19:39},
eid = {19},
pagetotal = {39},
doi = {10.1145/2431211.2431218},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\cite{mooney}
\printbibliography
\end{document}
旧答案
如果出于某种原因您不想使用,eid
您可以定义一个新字段。这可以在名为的articleno
单独文件中完成(在 MWE 中,它是通过创建的).dbx
articleno.dbx
filecontents
\ProvidesFile{articleno.dbx}
\DeclareDatamodelFields[type=field,datatype=integer]{articleno}
\DeclareDatamodelEntryfields[article]{articleno}
我们还可以定义一个新的 bistring 打印在文章编号之前
\NewBibliographyString{artno}
\DefineBibliographyStrings{english}{artno = {Art\adddotspace No\adddot}}
该articleno
字段由此新字符串引入
\DeclareFieldFormat{articleno}{\bibstring{artno}\addabbrvspace #1}
然后我们重新定义note+pages
宏来打印该articleno
字段
\renewbibmacro*{note+pages}{%
\printfield{note}%
\setunit{\bibpagespunct}%
\printfield{articleno}
\setunit{\bibpagespunct}%
\printfield{pages}%
\newunit}
平均能量损失
\documentclass{article}
\usepackage[backend=biber,style=authoryear,datamodel=articleno]{biblatex}
\begin{filecontents*}{\jobname.bib}
@article{mooney,
author = {Mooney, Carl H. and Roddick, John F.},
title = {Sequential Pattern Mining -- Approaches and Algorithms},
journal = {ACM Comput. Surv.},
volume = {45},
number = {2},
date = {2013-03},
pages = {19:1--19:39},
articleno = {19},
pagetotal = {39},
doi = {10.1145/2431211.2431218},
}
\end{filecontents*}
\begin{filecontents*}{articleno.dbx}
\ProvidesFile{articleno.dbx}
\DeclareDatamodelFields[type=field,datatype=integer]{articleno}
\DeclareDatamodelEntryfields[article]{articleno}
\end{filecontents*}
\NewBibliographyString{artno}
\DefineBibliographyStrings{english}{artno = {Art\adddotspace No\adddot}}
\DeclareFieldFormat{articleno}{\bibstring{artno}\addabbrvspace #1}
\renewbibmacro*{note+pages}{%
\printfield{note}%
\setunit{\bibpagespunct}%
\printfield{articleno}
\setunit{\bibpagespunct}%
\printfield{pages}%
\newunit}
\addbibresource{\jobname.bib}
\begin{document}
\cite{mooney}
\printbibliography
\end{document}