Detect whether I'm in a \footnote?

How do I detect whether I'm in a \footnote environment or not?

-
Do you use any special footnote packages? Please provide a minimal working example (MWE) that shows your use-case. –  Werner Apr 15 '14 at 17:31
I think this may be rather difficult to do. Biblatex does it, but it involves many lines of code patching various footnote commands (which vary depending on class and package loaded). You could, if you feel strong, borrow/steal that code. It's around lines 134-197 of biblatex2.sty. Or, if you load biblatex anyway you could piggy-back on its commands. –  Paul Stanley Apr 15 '14 at 17:40
Stricly speaking, \footnote is just a macro, not an environment. –  Jubobs Apr 15 '14 at 17:55
–  egreg Apr 15 '14 at 17:57

I just \def\infootnote to T or F. If you needed to branch on that basis, you could perform \if T\infootnote TRUE code\else FALSE code\fi.

\documentclass{article}
\let\svfootnote\footnote
\renewcommand\footnote[2][\thefootnote]{%
\stepcounter{footnote}%
\gdef\infootnote{T}%
\svfootnote[#1]{#2\gdef\infootnote{F}}%
}
\gdef\infootnote{F}
\textheight 1in
\begin{document}
Footnote status: \infootnote.  Now entering a footnote%
\footnote{The status now: \infootnote.  Done.}
Continuing with status: \infootnote.  Again.
\footnote{The status now: \infootnote.  Done.}
\end{document}


-

Define a conditional \iffootnote and redefine \footnote so that it makes \iffootnote come out true inside its parameter, but false outside. For example:

\documentclass{article}
\newif\iffootnote
\let\Footnote\footnote
\renewcommand\footnote[1]{\begingroup\footnotetrue\Footnote{#1}\endgroup}
\begin{document}

foo\footnote{a\iffootnote yes\else no\fi}

bar \iffootnote yes\else no\fi
\end{document}

-
The \footnote macro defined by the LaTeX kernel also accepts an optional argument. –  Jubobs Apr 15 '14 at 17:56
This is just the idea. –  nicolai.rostov Apr 15 '14 at 17:58