检测我是否在 \footnote 中?

检测我是否在 \footnote 中?

我如何检测我是否处于某个\footnote环境中?

答案1

我只是\def\infootnoteTF。如果您需要在此基础上进行分支,您可以执行\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}

在此处输入图片描述

答案2

定义一个条件\iffootnote并重新定义\footnote,使其\iffootnote参数内部为真,外部为假。例如:

\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}

相关内容