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 \cite
ein Leerzeichen vor der linken Klammer des Zitats eingefügt wird, sodass ein Zitat als erscheint. my citation [1].
Da der OP \cite
als 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 \citeleft
nicht 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 \citeBoth
sollte 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, multibib
um zu wissen, warum \citemine
es 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}