Ich verwende das Paket {natbib} für den Bibliografiestil und das Paket {splitbib}, um meine Bibliografie am Ende meiner Dokumente in Kategorien zu unterteilen, zum Beispiel: alle Artikel in einer Gruppe, alle Bücher in einer anderen Gruppe.
Der Autor von {splitbib} hat empfohlen, bei der Verwendung des {natbib}-Pakets das Argument [export] zu verwenden.
Alles funktioniert, mein endgültiges Dokument ist so, wie ich es wollte, aber das Problem ist, dass ich eine Fehlermeldung von LaTeX bekomme: „Undefinierte Steuersequenz \begin{thebibliography}“
Wenn ich das Paket {natbib} nicht verwende, tritt kein Fehler auf. Wenn ich das Paket {natbib} ohne das Argument [export] verwende, funktioniert es. Wenn ich das Paket {natbib} mit dem Argument [export] verwende, funktioniert es, aber mit einer Fehlermeldung.
Wie kann ich das lösen?
Danke
Hier ist ein Beispiel :
\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}
Antwort1
Der undefinierte Befehl ist nicht \begin{bibliography}, sondern \SBlongestlabel
:
! Undefined control sequence.
\thebibliography ...\expandafter {\SBlongestlabel
} \immediate \write \NMSB@...
l.1 \begin{thebibliography}{2}
Es handelt sich eindeutig um einen Fehler im Paket, die Absicht des Autors ist jedoch nicht ganz klar.
Der folgende Patch könnte funktionieren:
\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}