Ошибка splitbib и natbib: неопределенная последовательность управления

Ошибка splitbib и natbib: неопределенная последовательность управления

Я использую пакет {natbib} для стиля библиографии и пакет {splitbib} для разделения моей библиографии по категориям в конце моих документов, например: все статьи в одной группе, все книги в другой группе.

Автор {splitbib} посоветовал использовать аргумент [export] при использовании пакета {natbib}.

Все работает, у меня есть окончательный документ, как я и хотел, но проблема в том, что я получаю сообщение об ошибке от LaTeX: «Неопределенная управляющая последовательность \begin{thebibliography}»

Если я не использую пакет {natbib}, у меня нет никаких ошибок. Если я использую пакет {natbib} без аргумента [export], то он стоит. Если я использую пакет {natbib} с аргументом [export], то он работает, но с сообщением об ошибке.

Как мне решить эту проблему?

Спасибо

Вот пример:

\documentclass[a4paper,12pt]{book}

\usepackage[comma,longnamesfirst]{natbib}
\bibliographystyle{plainnat}
\usepackage[export]{splitbib}

\begin{category}{Articles}
\SBentries{Article1,Article2}
\end{category}
\begin{category}{Books}
\SBentries{Book1,Book2}
\end{category}

\usepackage{filecontents}

\begin{filecontents}{bibliography.bib}

@article{Article1,
author={Jhon Doe},
title={Blabla},
journal={Blabla},
year={2019},
volume={145},
number={4},
pages={1-25}
}
@book{Book2,
author={Fabrice Doe},
title={Blabla4},
journal={Blabla4},
year={2016},
volume={142},
pages={4-22}
}
\end{filecontents}

\begin{document}

I want to cite Article1~\cite{Article1} and then Book2~\cite{Book2}.

\bibliography{bibliography}

\end{document}

решение1

Неопределенная команда — это не \begin{bibliography}, а \SBlongestlabel:

! Undefined control sequence.
\thebibliography ...\expandafter {\SBlongestlabel 
                                                  } \immediate \write \NMSB@...
l.1 \begin{thebibliography}{2}

Это явно ошибка в пакете, но не совсем понятно, что имел в виду автор.

Следующий патч может подойти:

\documentclass[a4paper,12pt]{book}

\usepackage[comma,longnamesfirst]{natbib}
\bibliographystyle{plainnat}
\usepackage[export]{splitbib}

\begin{category}{Articles}
\SBentries{Article1,Article2}
\end{category}
\begin{category}{Books}
\SBentries{Book1,Book2}
\end{category}

\usepackage{filecontents}

\begin{filecontents}{bibliography.bib}

@article{Article1,
author={Jhon Doe},
title={Blabla},
journal={Blabla},
year={2019},
volume={145},
number={4},
pages={1-25}
}
@book{Book2,
author={Fabrice Doe},
title={Blabla4},
journal={Blabla4},
year={2016},
volume={142},
pages={4-22}
}
\end{filecontents}
\makeatletter
\usepackage{xpatch}
\xpatchcmd\thebibliography
 {\expandafter\NMSB@tok\expandafter{\SBlongestlabel}}
 {\@ifundefined{SBlongestlabel}{\NMSB@tok{}}{\expandafter\NMSB@tok\expandafter{\SBlongestlabel}}}
 {}{\fail}
\makeatother
\begin{document}

I want to cite Article1~\cite{Article1} and then Book2~\cite{Book2}.


\bibliography{bibliography}

\end{document}

Связанный контент