Kombinieren Sie verschiedene Arten von Zitierbefehlen mit den Paketen „cite“ und „multibib“ (Update vom 28. April)

Kombinieren Sie verschiedene Arten von Zitierbefehlen mit den Paketen „cite“ und „multibib“ (Update vom 28. April)

Ich verwende das Multibib-Paket, um zwischen verschiedenen Referenztypen zu unterscheiden. Zusätzlich \cite{}habe ich den Befehl definiert \citemine{}.

Das Zitieren funktioniert einwandfrei, aber manchmal möchte ich Referenzen beider Typen in einer Klammer haben. Das heißt, anstatt \cite{RefA}\citemine{RefB}[1][2] zu erhalten, möchte ich [1,2].

Update 28. April: Ich bin zu einer (hässlichen) Lösung gekommen, der nur ein kleines Detail fehlt. Mein aktualisiertes MWE ergibt zwar [ 1, 2], aber natürlich hätte ich gern [1, 2]. Ich bin ziemlich verwirrt, weil ich keine Ahnung habe, woher dieser zusätzliche Platz kommen könnte. Jede Hilfe ist willkommen!

\documentclass[]{scrbook}

% bibstlye

\usepackage{cite}
\usepackage{multibib}

\newcites{mine}{my stuff}

\newcommand{\citeBoth}[2]{
    \renewcommand{\citeleft}{}
    \renewcommand{\citeright}{}
    [#1,#2]
    \renewcommand{\citeleft}{[}
    \renewcommand{\citeright}{]}
    }


\begin{document}

Two cite examples:

\cite{foo}
\cite{foo2}
\citemine{bar}

\citeBoth{\cite{foo, foo2}}{\citemine{bar}}

\bibliographystylemine{plain}
\bibliographymine{bibfile}

\bibliographystyle{plain} 
\bibliography{bibfile}

\end{document}

und entsprechende Bibfile:

@Article{foo,
  author={foo},
  title={foo},
  journal={foo},
  year={200},
  volume={60},
  number={23},
  pages={6641--8},
}

@Article{bar,
    author={foo},
    title={foo},
    journal={foo},
    year={200},
    volume={60},
    number={23},
    pages={6641--8},
}

@Article{foo2,
    author={foo2},
    title={foo2},
    journal={foo2},
    year={200},
    volume={60},
    number={23},
    pages={6641--8},
}

Antwort1

Meinen Kommentar in eine Antwort umwandeln ...

Das überflüssige Leerzeichen entsteht, weil bei der Implementierung von \citeein Leerzeichen vor der linken Klammer des Zitats eingefügt wird, sodass ein Zitat als erscheint. my citation [1]. Da der OP \citeals Argument innerhalb von verwendet \citeBoth, muss dieses Leerzeichen, das jetzt innerhalb der Klammern von auftritt, entfernt werden \citeBoth.

Dies lässt sich erreichen, indem Sie es \citeleftnicht einfach als leeres Makro neu definieren {}, sondern so, dass das zuvor ausgegebene Leerzeichen nicht übersprungen wird. Die Verwendung von \renewcommand{\citeleft}{\unskip}in der Definition von \citeBothsollte das Problem also lösen.

Beachten Sie, dass ich das Zitat auch innerhalb von \citeBoth„as“ ausgegeben habe [#1,\,#2], um nach dem Komma ein kleines Leerzeichen einzufügen.

\newcommand{\citeBoth}[2]{
    \renewcommand{\citeleft}{\unskip}
    \renewcommand{\citeright}{}
    [#1,\,#2]
    \renewcommand{\citeleft}{[}
    \renewcommand{\citeright}{]}
    }

Ich weiß nicht genug darüber, multibibum zu wissen, warum \citeminees nicht richtig funktioniert (es hat vor oder nach meiner Korrektur nicht funktioniert); das vom OP genannte Abstandsproblem ist jedoch behoben.

\documentclass[]{scrbook}
\usepackage{filecontents}
\begin{filecontents}{bibfile.bib}
@Article{foo,
  author={foo},
  title={foo},
  journal={foo},
  year={200},
  volume={60},
  number={23},
  pages={6641--8},
}

@Article{bar,
    author={foo},
    title={foo},
    journal={foo},
    year={200},
    volume={60},
    number={23},
    pages={6641--8},
}

@Article{foo2,
    author={foo2},
    title={foo2},
    journal={foo2},
    year={200},
    volume={60},
    number={23},
    pages={6641--8},
}
\end{filecontents}
% bibstlye

\usepackage{cite}
\usepackage{multibib}

\newcites{mine}{my stuff}

\newcommand{\citeBoth}[2]{
    \renewcommand{\citeleft}{\unskip}
    \renewcommand{\citeright}{}
    [#1,\,#2]
    \renewcommand{\citeleft}{[}
    \renewcommand{\citeright}{]}
    }


\begin{document}

Two cite examples:
\cite{foo}
\cite{foo2}
\citemine{bar}

\citeBoth{\cite{foo, foo2}}{\citemine{bar}}

\bibliographystylemine{plain}
\bibliographymine{bibfile}

\bibliographystyle{plain} 
\bibliography{bibfile}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen