cite および multibib パッケージを使用して、さまざまな種類の cite コマンドを組み合わせる (4 月 28 日更新)

cite および multibib パッケージを使用して、さまざまな種類の cite コマンドを組み合わせる (4 月 28 日更新)

異なるタイプの参照を区別するために、multibib パッケージを使用しています。さらに、\cite{}コマンドを定義しました\citemine{}

引用は完全に正常に機能しますが、場合によっては、両方のタイプの参照を 1 つの括弧内に含めたい場合があります。つまり、\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、問題は解決するはずです。

また、カンマの後に小さなスペースを挿入するために、cite を の中にも発行した\citeBothことに注意してください。[#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}

ここに画像の説明を入力してください

関連情報