以下是 Overleaf 上的一个最小工作示例。以下代码按预期工作,并给出正确的输出:
\documentclass[8pt]{article}
%\documentclass[final,5p,times,twocolumn,number,sort&compress]{elsarticle}
\usepackage[utf8]{inputenc}
\usepackage[labeled,resetlabels]{multibib}
\newcites{G}{Good references}
\newcites{B}{Bad references}
\begin{document}
These are normal references \cite{johnjane}.
The special references are \citeG{goodbook} and \citeB{badbook}.
\bibliographystyle{plain}
\bibliography{normalref.bib}
\bibliographystyleG{plain}
\bibliographyG{goodref.bib}
\bibliographystyleB{plain}
\bibliographyB{badref.bib}
\begin{filecontents}{normalref.bib}
@inproceedings{
johnjane,
title={Cinderella},
author={Doe, John and Doe, Jane},
booktitle={Bedtime stories},
pages={200},
year={2020}
}
\end{filecontents}
\begin{filecontents}{goodref.bib}
@inproceedings{
goodbook,
title={How to hack?},
author = {Monkey Luffy},
booktitle={Ethical hacking},
pages={36--40},
year={2015}
}
\end{filecontents}
\begin{filecontents}{badref.bib}
@inproceedings{
badbook,
title={How to hack?},
author={Blackbeard},
booktitle={Unethical hacking},
pages={36--40},
year={2015}
}
\end{filecontents}
\end{document}
使用以下方式可获得正确的输出multibib
:
当我使用elsarticle
类而不是类时article
,即当我注释掉上述代码中的第一行并取消注释第二行时,输出并不像预期的那样。
elsarticle
使用类文件(显然是由 Overleaf 提供的)时输出错误:
有人能帮我在使用类文件时获得正确的输出吗elsarticle
?如上所述,我的代码在 Overleaf 上。
答案1
elsarticle
用途natbib
;所以看到带前缀标签的 Natbib-Multibib 问题。
由于您使用的是 Overleaf,因此该问题的可接受答案可能不适用于您,因为您将无法编辑 .aux 文件。您可以尝试使用https://tex.stackexchange.com/a/471427/226,但您必须将\citeO
,替换\oldCiteO
为\citeG
,\citeB
,\oldciteG
以\oldciteB
满足您自己的目的。
\usepackage{xparse}
\let\oriCiteG\citeG
\let\oriCiteB\citeB
%% The O{} in this re-definition means "an optional argument
%% with an empty default value"; m is a mandatory argument.
\RenewDocumentCommand{\citeG}{O{} O{} m}{%
\renewcommand{\citenumfont}[1]{G##1}%
\oriCiteG[#1][#2]{#3}%
\renewcommand{\citenumfont}[1]{##1}%
}
\RenewDocumentCommand{\citeB}{O{} O{} m}{%
\renewcommand{\citenumfont}[1]{B##1}%
\oriCiteB[#1][#2]{#3}%
\renewcommand{\citenumfont}[1]{##1}%
}
相同的免责声明适用:我不完全确定这是否会破坏任何其他natbib
行为,因此请小心尝试!