引用 2 个参数不起作用

引用 2 个参数不起作用

我想在引文前用括号括起文本,例如:“(eg, Brautigam & Bell, 1995)”。我必须使用 \cite 命令,因为它是一个具有严格规则的期刊模板,但在使用两个参数时无法正确呈现。我正在使用 bibtex,它似乎链接正确。

在我的乳胶文件中:

\cite [one][two]{brautigam1995crresele}

在pdf中:

在此处输入图片描述

在 Texshop 控制台中:

LaTeX Warning: Citation `[' undefined on input line 228.

仅一个参数似乎就没问题:

\cite [one]{brautigam1995crresele}

在pdf中:

在此处输入图片描述

但是我当然需要第二个参数来使“eg”出现在引用之前。在命令周围添加 { 和 } 没有帮助。有什么想法吗?

答案1

编辑

正如评论中提到的那样莫威,该natbib包提供了接受两个可选参数的命令\citep,例如\citep[one]{brautigam1995crresele}将给出的“正常”行为\cite\citep[one][]{brautigam1995crresele}将用作one预注而不用作后注,并将\citep[one][two]{brautigam1995crresele}用作one预注和two作为后注。

这个实现比下面原始答案中提出的实现更清晰。

原始答案

这里的问题是,我们不知道您的编辑器正在使用哪个类文件,也不知道它是否重新定义了命令\cite,允许使用两个可选参数。事实上,据我所知,该\cite命令只接受一个可选参数,并将书目条目的标签作为强制参数。

如果没有这些信息,一个解决方案(我承认有点过头了)是声明一个具有两个可选参数的新命令(需要使用xargs):

\documentclass{article}

\usepackage{xspace}
\usepackage{xargs}
\usepackage{xifthen}
\newcommandx{\mycite}[3][1 =, 2 =]{%
    \ifthenelse{
        \isempty{#1}{}
    }{
        \ifthenelse{
            \isempty{#2}{}
        }{
            \cite{#3}
        }{
            \cite[#2]{#3}
        }
    }{
        \ifthenelse{
            \isempty{#2}{}
        }{
            #1,\xspace\cite{#3}
        }{
            #1,\xspace\cite[#2]{#3}
        }
    }
}

\usepackage{filecontents}
\begin{filecontents}{biblio.bib}
@article{olfati2004consensus,
  title={Consensus problems in networks of agents with switching topology and time-delays},
  author={Olfati-Saber, Reza and Murray, Richard M},
  journal={IEEE Transactions on automatic control},
  volume={49},
  number={9},
  pages={1520--1533},
  year={2004}
}
\end{filecontents}

\begin{document}

\mycite[one][two]{olfati2004consensus}

\mycite[][two]{olfati2004consensus}

\mycite[one]{olfati2004consensus}

\mycite[one][]{olfati2004consensus}

\bibliographystyle{apalike}
\bibliography{biblio}

\end{document}

上述代码产生的结果:

<code>\mycite</code> 命令的结果

但是,如果您的编辑器对于定义新命令非常严格,那么您可能别无选择,只能在\cite命令前手写“eg”。

相关内容