使用 cite 和 multibib 套件組合不同類型的 cite 指令(4 月 28 日更新)

使用 cite 和 multibib 套件組合不同類型的 cite 指令(4 月 28 日更新)

我使用 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}

在此輸入影像描述

相關內容