Estoy usando el paquete multibib para diferenciar entre diferentes tipos de referencias. Además, \cite{}
he definido el comando \citemine{}
.
Citar funciona perfectamente bien, pero a veces me gustaría tener referencias de ambos tipos dentro de un paréntesis. Es decir, en lugar de \cite{RefA}\citemine{RefB}
dar como resultado [1][2], me gustaría tener [1,2].
Actualización del 28 de abril: Llegué a una solución (desagradable) a la que solo le faltan algunos detalles menores. Mi MWE actualizado da como resultado [1, 2], pero, por supuesto, me gusta tener [1, 2]. Estoy bastante confundido porque no tengo idea de dónde podría provenir este espacio adicional. ¡Cualquier ayuda es apreciada!
\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}
y el bibfile correspondiente:
@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},
}
Respuesta1
Convirtiendo mi comentario en una respuesta...
El espacio superfluo se debe a que la implementación de \cite
emite un espacio antes del corchete izquierdo de la cita, de modo que una cita aparece como my citation [1].
Dado que el OP usa \cite
como argumento dentro de \citeBoth
, se necesita un medio para eliminar ese espacio emitido, que ahora ocurre dentro los corchetes de \citeBoth
.
La forma de lograr esto es redefinirla \citeleft
no simplemente como una macro vacía {}
, sino redefinirla para que no omita el espacio previamente asignado. Por lo tanto, emplear \renewcommand{\citeleft}{\unskip}
en la definición de \citeBoth
debería resolver el problema.
Tenga en cuenta que también publiqué la cita dentro de \citeBoth
as [#1,\,#2]
para insertar un pequeño espacio después de la coma.
\newcommand{\citeBoth}[2]{
\renewcommand{\citeleft}{\unskip}
\renewcommand{\citeright}{}
[#1,\,#2]
\renewcommand{\citeleft}{[}
\renewcommand{\citeright}{]}
}
No sé lo suficiente como multibib
para saber por qué \citemine
no funciona correctamente (no funcionó antes ni después de mi solución); sin embargo, se resuelve el problema de espaciado citado por el OP.
\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}