当命令出现在列表本身中时,LaTeX 似乎对脚注中的列表的处理方式不同\footnote
。参见以下 MWE:
\documentclass{article}
\begin{document}
Text.\footnote{Text.
\begin{enumerate}
\item This is an item.
\end{enumerate}
}
\begin{enumerate}
\item This is an item.\footnote{Text.
\begin{enumerate}
\item This should be an item, but it looks like a subitem.
\end{enumerate}
}
\begin{enumerate}
\item This is a subitem.
\end{enumerate}
\end{enumerate}
\end{document}
一种解决方法是将列表中的脚注拆分为\footnotemark
如下
\footnotetext
内容:
\documentclass{article}
\begin{document}
Text.\footnote{Text.
\begin{enumerate}
\item This is an item.
\end{enumerate}
}
\begin{enumerate}
\item This is an item.\footnotemark
\begin{enumerate}
\item This is a subitem.
\end{enumerate}
\end{enumerate}
\footnotetext{Text.
\begin{enumerate}
\item This should be an item, and it is one.
\end{enumerate}
}
\end{document}
然而,这既繁琐又容易出错,特别是如果分页符位于 和 之间\footnotemark
,\footnotetext
会将脚注移动到错误的页面。
有没有更好的办法解决这个问题?
答案1
脚注在脚注位置的保存框内格式化,因此它们会继承当时的\@listdepth
和计数值。这将重新定义为将这些计数重置为零(无论是否使用它们)。甚至可以将此视为错误修复。\@enumdepth
\footnote
\documentclass{article}
\makeatletter
\let\oldfootnote=\footnote
\renewcommand{\footnote}[2][\empty]% #1 = number, optional, #2 = text
{\ifx\empty#1\relax \oldfootnote{\@listdepth=0 \@enumdepth=0 #2}%
\else \oldfootnote[#1]{\@listdepth=0 \@enumdepth=0 #2}%
\fi}
\makeatother
\begin{document}
Text.\footnote{Text.
\begin{enumerate}
\item This is an item.
\end{enumerate}
}
\begin{enumerate}
\item This is an item.\footnote{Text.
\begin{enumerate}
\item This should be an item, but it looks like a subitem.
\end{enumerate}
}
\begin{enumerate}
\item This is a subitem.
\end{enumerate}
\end{enumerate}
\end{document}