我想在引文前用括号括起文本,例如:“(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}
上述代码产生的结果:
但是,如果您的编辑器对于定义新命令非常严格,那么您可能别无选择,只能在\cite
命令前手写“eg”。