Warum zwischen \cite und \cites unterscheiden?

Warum zwischen \cite und \cites unterscheiden?

\citesGibt es einen besonderen Grund, warum man für mehr als eine Verwendung bibtex-keyanstelle von verwenden muss \cite?

Unter Berücksichtigung des folgenden MWE:

\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\let\cite\cites
\begin{document}
\cite[12]{westfahl:space}[e.g.][23]{angenendt}

\cites[12]{westfahl:space}[e.g.][23]{angenendt}
\printbibliography
\end{document}

Mit \let\cite\citeshabe ich kein Problem damit, bibtex-keydem \cite-Befehl ein weiteres hinzuzufügen, daher macht es nichts, wenn ich das sin \citesfür mehrere vergesse bibtex-keys.

Wenn dies sicher ist, könnte es sich dann nicht um ein Standardverhalten von handeln biblatex?

Antwort1

Natürlich ist das eine Designentscheidung und wir können den ursprünglichen Betreuer des Pakets nicht fragen, da er nicht mehr aktiv ist. Soweit ich das beurteilen kann, ist die Trennung zwischen dem normalen Cite-Befehl und dem Multicite-Befehl (mits) war von Anfang an dabei.

Das Verhalten des \citeBefehls biblatexstimmt weitgehend mit dem Verhalten dieses Befehls in anderen Paketen überein. Die Multicite-Versionen bieten jedoch zusätzliche Funktionen, die nicht viele (keine?) andere Pakete bieten.

Die Syntax der Multicite-Befehle ist vollständig abwärtskompatibel mit der der Standard-Cite-Befehle. \let\cite\citesEs treten also nicht mehr Probleme auf, als wenn Sie \citesausschließlich verwenden und sich nie erlauben würden, zu verwenden \cite. (Denken Sie daran, \letalle Befehle auf ihre Multicite-Gegenstücke zu übertragen, Sie möchten keine Inkonsistenzen.)

Ich würde jedoch dringend davon abraten, Multicite zur Norm zu machen. Das Verhalten der Cite- und Multicite-Befehle in Biblatex ist so bekannt und etabliert, dass es nicht geändert werden sollte. Schließlich sind die Multicite-Befehle aufgrund ihrer Argumentstruktur viel ausgefeilter und komplizierter, sodass es besser ist, sie nur bei Bedarf und nicht als Standard zu verwenden.

Die für den Multi-Cite-Befehl erforderliche Einrichtung ist offensichtlich etwas komplizierter als bei den Standardbefehlen. Deshalb definieren wir zuerst die Standardbefehle und dann die Multi-Cite-Befehle mit

\DeclareMultiCiteCommand{\cites}{\cite}{\multicitedelim}

Ich gehe davon aus, dass einer der Gründe, warum die Trennung beibehalten wurde, darin besteht, dass man zunächst einen einfachen Cite-Befehl definieren und diesen dann mit einer komplizierten Multicite-Struktur ergänzen kann. Dies ermöglicht einen mehrschichtigen Ansatz.

Der zwingendste Grund für die Trennung zwischen beiden ist jedoch, dass der Multicite-Befehl viel komplizierter und anfälliger ist. Die Natur des Multicite-Befehls bedingt, dass er die Anzahl der Argumente nicht im Voraus kennt. Er muss also im Voraus nach Dingen suchen, die wie Argumente aussehen. Obwohl dies recht robust ist, gibt es Situationen, in denen ein stabilerer Befehl, der die Anzahl seiner Argumente kennt, vorzuziehen ist.

Zum Beispiel

\cite[pre][post]{key} ["this"]

funktioniert, weil der \citebereits alle seine Argumente gelesen hat und daher weiß, dass dies ["this"]nicht sein Argument sein kann. Aber in

\cites[pre][post]{key} ["this"]

\citesweiß nicht, dass dies nicht eines seiner Argumente ist. Sie müssen ein oder ["this"]einfügen, um ihm mitzuteilen, dass das Scannen beendet werden soll: .\relax\\cites[pre][post]{key}\ ["this"]

verwandte Informationen