为什么 \ifnum\c@mpfootnote 在表格中不起作用?

为什么 \ifnum\c@mpfootnote 在表格中不起作用?

为什么\ifnum\c@mpfootnote在表格中不起作用?我不应该得到脚注规则吗?我感到很困惑!

\documentclass{article}
\begin{document}
\makeatletter
\long\def\@mpfootnotetext#1{%
 \ifnum\c@mpfootnote=\@ne\let\footnoterule\relax\fi
  \global\setbox\@mpfootins\vbox{%
    \unvbox\@mpfootins
    \reset@font\footnotesize
    \hsize\columnwidth
    \@parboxrestore
    \protected@edef\@currentlabel
         {\csname p@mpfootnote\endcsname\@thefnmark}%
    \color@begingroup
      \@makefntext{%
        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
    \color@endgroup}}
\makeatother
\noindent
\begin{minipage}{\textwidth}
\begin{tabular}{lp{.8\textwidth}}
1&2\footnote{1}\\
1&2\footnote{2}
\end{tabular}
\end{minipage}
\end{document}

一个更简化的例子:

\documentclass{article}
\begin{document}
\makeatletter
\long\def\@mpfootnotetext#1{%
 \ifnum\c@mpfootnote=\@ne\let\footnoterule\relax\fi
  \global\setbox\@mpfootins\vbox{%
    \unvbox\@mpfootins
    \reset@font\footnotesize
    \hsize\columnwidth
    \@parboxrestore
    \protected@edef\@currentlabel
         {\csname p@mpfootnote\endcsname\@thefnmark}%
    \color@begingroup
      \@makefntext{%
        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
    \color@endgroup}}
\makeatother
\noindent
\begin{minipage}{\textwidth}
\hbox{\footnote{1}}
\end{minipage}
\end{document}

答案1

我不确定代码的全部意图是什么,但每个表格单元格都是一个本地组,因此您的设置\footnoterule在使用之前就会丢失。

\global\let\footnoterule\relax

使规则得以实施。

相关内容