異なるタイプの参照を区別するために、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}