Multibib 包无法与 Overleaf 上的 elsarticle 类文件配合使用

Multibib 包无法与 Overleaf 上的 elsarticle 类文件配合使用

以下是 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行为,因此请小心尝试!

相关内容