BibTeX natbib 和 super 不允许偶尔使用 \citet

BibTeX natbib 和 super 不允许偶尔使用 \citet

我使用natbib上标编号引用如下:

\usepackage[super,comma,sort&compress]{natbib} 

当我有案例时,它非常有用This is a reference~\cite{author1999}。我的参考资料显示为上标。

不过,我偶尔会想写类似这样的内容:As shown by \citet{author1999}我希望将引用写出来而不是上标。natbib在超级模式下使用时会插入上标\citet

有没有办法在超级模式下也能在常规模式下natbib使用\citet?是否可以暂时将模式更改为不具有超级模式,然后再重新打开?

答案1

假设你想要一个非上标编号引用,您可以定义一个新命令\citenst来模仿\citet但在本地禁用该选项的设置superscript

\documentclass{article}

\usepackage[super,comma,sort&compress]{natbib}

\makeatletter
\newcommand*{\citenst}[2][]{%
  \begingroup
  \let\NAT@mbox=\mbox
  \let\@cite\NAT@citenum
  \let\NAT@space\NAT@spacechar
  \let\NAT@super@kern\relax
  \renewcommand\NAT@open{[}%
  \renewcommand\NAT@close{]}%
  \citet[#1]{#2}%
  \endgroup
}
\makeatother

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@misc{A01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
}
\end{filecontents}

\begin{document}

This is a reference~\cite{A01}.

As shown by \citenst{A01}~\dots

As shown by \citet{A01}~\dots

\bibliographystyle{plainnat}
\bibliography{\jobname}

\end{document}

在此处输入图片描述

答案2

通常,您不能将作者年份类型的引文与数字引文混合使用。但natbib提供了\citeauthor\citeyear命令,因此您可以构建一个简单的版本以满足您的用途:

\newcommand{\textcite}[1]{\citeauthor{#1}~\citeyear{#1}}

然后使用\textcite{<key>}。如果你只需要作者,那么你可以\citeauthor直接使用。

答案3

@lockstep 的回答很有帮助,但我遇到了一个稍微不同的问题,我的搜索把我带到了这里。

我在 RevTeX 中使用上标参考样式,但我想在运行的文本中使用参考编号,例如“更多详细信息请参阅参考文献 7”。

于是我把lockstep的代码修改如下:

%citenumns provides the reference number for a citation, not superscripted or bracketed
\makeatletter
\newcommand*{\citenumns}[2][]{%
  \begingroup
  \let\NAT@mbox=\mbox
  \let\@cite\NAT@citenum
  \let\NAT@space\NAT@spacechar
  \let\NAT@super@kern\relax
  \renewcommand\NAT@open{}%
  \renewcommand\NAT@close{}%
  \cite[#1]{#2}%
  \endgroup
}
\makeatother

现在我们就可以...further details can be found in reference \citenumns{some_ref}得到我想要的效果了。

(之所以添加到这里,是因为这是最相关的问题,我本来可以重复它)

相关内容