我使用 multibib 包来区分不同类型的参考文献。此外,\cite{}
我还定义了命令\citemine{}
。
引用完全没问题,但有时我想将两种类型的引用放在一个括号内。也就是说,\cite{RefA}\citemine{RefB}
我不想得到 [1][2],而是得到 [1,2]。
4 月 28 日更新:我找到了一个(糟糕的)解决方案,只是缺少一些小细节。我更新后的 MWE 确实导致 [1, 2],但我当然希望得到 [1, 2]。我很困惑,因为我不知道这个额外的空间可能来自哪里。任何帮助都非常感谢!
\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}
和相应的 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},
}
答案1
将我的评论变成答案......
多余的空格是由于 的实现\cite
在引用的左括号前出现了一个空格,因此引用看起来像my citation [1].
由于 OP 使用\cite
作为内部的参数\citeBoth
,所以需要一种方法来消除发出的空格,现在该空格出现在 的括号内\citeBoth
。
实现此目的的方法是重新定义,\citeleft
而不仅仅是将其重新定义为空宏{}
,而是将其重新定义为取消跳过先前发布的空间。因此,\renewcommand{\citeleft}{\unskip}
在定义中使用\citeBoth
应该可以解决问题。
\citeBoth
注意我还在as里面发出了 cite [#1,\,#2]
,以便在逗号后插入一个小空格。
\newcommand{\citeBoth}[2]{
\renewcommand{\citeleft}{\unskip}
\renewcommand{\citeright}{}
[#1,\,#2]
\renewcommand{\citeleft}{[}
\renewcommand{\citeright}{]}
}
我不太了解multibib
为什么\citemine
它不能正常工作(在我修复之前或之后它都不起作用);但是,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}