我如何检测我是否处于某个\footnote
环境中?
答案1
我只是\def\infootnote
想T
或F
。如果您需要在此基础上进行分支,您可以执行\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}