我想问一下是否可以使用命令更改特定引文的entrykey \DeclareSourcemap
。以下MWE对我来说不起作用。
\documentclass{article}
\usepackage[defernumbers=true,backend=biber,style=chem-acs,articletitle=true,doi=true]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{citea,
author = {McClane, John},
journal = {20th Century Fox},
pages = {1--10},
title = {{Die Hard}},
volume = {1},
year = {1988}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
\maps[datatype=bibtex, overwrite]{
\map{
\perdatasource{mwe.bib}
\step[fieldsource=entrykey, match=citea, replace=citeb]
}
}
}
\begin{document}
Yippee Ki Yay, motherf****r.\cite{citeb}
\printbibliography
\end{document}
更改 journal 字段是\step[fieldsource=journal, match=20th Century Fox, replace=The Walt Disney Company]
可行的,但是对于 entrykey 字段似乎不起作用。有什么建议吗?
答案1
这是一个使用 的可能选项entryclone
。然后我将其添加到dataonly
的选项中,citea
以确保它永远不会出现。(虽然我不清楚您的确切用例。)
请注意,您必须使用journaltitle
而不是journal
来完成这项工作。
你仍然需要\nocite{citea}
。但无论如何,你必须这样做才能使源地图正常工作。
平均能量损失
\documentclass{article}
\usepackage[defernumbers=true,backend=biber,style=chem-acs,articletitle=true,doi=true]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{citea,
author = {McClane, John},
journaltitle = {20th Century Fox},
pages = {1--10},
title = {{Die Hard}},
volume = {1},
date = {1988}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
\maps[datatype=bibtex, overwrite]{
\map{
\step[fieldsource=entrykey, match=citea, final]
\step[entryclone={citeb}]
\step[fieldset=options, fieldvalue={dataonly}]
}
}
}
\begin{document}
\nocite{citea}
Yippee Ki Yay, motherf****r.\cite{citeb}
\printbibliography
\end{document}