问题:
当条目不包含标题时,我想替换 biblatex+biber 标题.bib
。例如,如果我有以下条目:
@article{key123,
author = {Name AA and Name BB},
title = {Article title name},
Year = {2016},
revjournal = {Journal Name},
}
我想更换
姓名 AA 和姓名 BB。“文章标题名称”。在:(2016 年)。
和
名称 AA 和名称 BB。“文章标题名称”。审核中:期刊名称(2016)。
我已尝试过:
我尝试使用以下内容revjournal
进行映射:usera
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=revjournal]
\step[fieldset=usera,origfieldval]
}
}
}
\DeclareFieldFormat{usera}{%
\iffieldundef{title}{%
\mkbibacro{Under review at}\addcolon\space#1%
}{}%
}
但这没有任何作用。也许有更好的方法来替换/覆盖 biblatex 字段?
梅威瑟:
\documentclass{article}
\usepackage{filecontents}
\usepackage[backend=biber,firstinits=true]{biblatex}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=revjournal]
\step[fieldset=usera,origfieldval]
}
}
}
\DeclareFieldFormat{usera}{%
\iffieldundef{title}{%
\mkbibacro{Under review at}\addcolon\space{#1}%
}{}%
}
\begin{filecontents}{./pubs.bib}
@article{key123,
author = {Name AA and Name BB},
title = {Article title name},
Year = {2016},
revjournal = {Journal Name},
}
\end{filecontents}
\bibliography{./pubs.bib}
\begin{document}
\fullcite{key123}
\end{document}
感谢您的帮助。
答案1
这是该问题的另一种解决方案。Biblatex 提供了pubstate
记录期刊文章出版状态的字段。
因此我建议保留标准journaltitle
(或 bibtexjournal
字段)并将pubstate= {under review}
信息添加到条目中。
因此 bibtex 条目看起来像
@article{key123,
author = {Name AA and Name BB},
title = {Article title name},
Year = {2016},
journal = {Journal Name},
pubstate = {under review},
}
然后,处理信息并以所需格式排版输出,使用:
\def\jmlarson@ur{under review}
\renewbibmacro{in:}{%
\ifentrytype{article}
{\iffieldequals{substate}{\jmlarson@ur}{\printtext{Under review at\intitlepunct}}{}\clearfield{pubstate}}
{\printtext{\bibstring{in}\intitlepunct}}%
}
诀窍是重新定义排版“In”的宏,为适当的条目放入正确的文本,并清除其中的信息pubstate
(这样就不会打印两次)。
使用提供的 MWE,结果如下:
答案2
由 @moewe 提供的更强大的结果是使用:
\iffieldequalstr{pubstate}{under review}
并且不声明任何宏。有关更多理由,请参见此处: