我使用 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}
和相應的書目文件:
@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}