# Temporarily disable superscript in citation

I use superscripted citation style by using \setcitestyle{super} in LaTeX preamble, which done the job as I wanted. However, there are several region, in which I need to temporarily disable the superscript. For example the sentence

This figure is reproduced from reference [1]

doesn't look right with [1] being superscripted.

How to achieve that? Any idea? Thanks.

-
– Claudio Fiandrino Jan 17 '13 at 8:54
I've just realized that my question is basically the same as this: tex.stackexchange.com/questions/50476/…, as well as tex.stackexchange.com/questions/36235/…. Sorry for not doing proper search before. – Indra Yudhistira Jan 21 '13 at 9:13

The following example changes \setcitestyle locally and puts it in macro \citen. \setcitestyle of package natbib (2010/09/13 8.31b) contains a space right at the beginning of the macro definition by an uncommented end of line, the trick with \romannumeral removes this space.

\documentclass{article}
\usepackage[square]{natbib}
\setcitestyle{super}

\newcommand*{\citen}[1]{%
\begingroup
\romannumeral-\x % remove space at the beginning of \setcitestyle
\setcitestyle{numbers}%
\cite{#1}%
\endgroup
}

\begin{document}
Package \textsf{accsupp}\cite{oberdiek:accsupp}.
This figure is reproduce from reference~\citen{oberdiek:zref}.
\bibliographystyle{plainnat}
\raggedright
\bibliography{oberdiek-bundle}
\end{document}


Inside moving arguments (e.g., \caption) macro \citen can be protected using \protect or by using \DeclareRobustCommand for the definition:

\newcommand*{\citen}{}% generate error, if \citen is already in use
\DeclareRobustCommand*{\citen}[1]{%
\begingroup
\romannumeral-\x % remove space at the beginning of \setcitestyle
\setcitestyle{numbers}%
\cite{#1}%
\endgroup
}

-
Cool! Thanks very much. If I got enough reputation, I'll definitely vote up this answer. – Indra Yudhistira Jan 17 '13 at 11:07
Ah, I just realized that there are errors if I try to put that inside a figure caption. The LaTEX error are "Argument of \@iforloop has an extra}.", "Paragraph ended before \@iforloop was complete." and "Extra \else.". Do you have any idea? Thanks. – Indra Yudhistira Jan 17 '13 at 11:51
@Indra Add \protect. Macro \citen is fragile because of fragile \setcitestyle. Or use \DeclareRobustCommand instead of \newcommand. – Heiko Oberdiek Jan 17 '13 at 11:54
That solves the problem! Thanks. – Indra Yudhistira Jan 17 '13 at 12:16