普通脚注既接受段落也接受列表:
\documentclass{article}
%
\newcommand{\alist}{%
\begin{itemize}
\item Foo.
\end{itemize}
}
\newcommand{\twopar}{%
Foo\par
Foo.%
}
%
\begin{document}
Bar\footnote{\alist}.
Baz\footnote{\twopar}.
\end{document}
但fixfoot
的固定脚注不接受:
段落均未提及:
\documentclass{article} \usepackage{fixfoot} % \newcommand{\twopar}{% Foo\par Foo.% } % \DeclareFixedFootnote{\reptwopar}{\twopar} % \begin{document} Bar% \reptwopar. \end{document}
一旦
% \reptwopar
取消注释就会失败(因此至少\DeclareFixedFootnote
接受段落)。也不列出:
\documentclass{article} \usepackage{fixfoot} % \newcommand{\alist}{% \begin{itemize} \item Foo. \end{itemize} } % % \DeclareFixedFootnote{\repalist}{\alist} % \begin{document} Bar% \repalist. \end{document}
一旦
% \DeclareFixedFootnote{\repalist}{\alist}
取消注释就会失败(因此\DeclareFixedFootnote
其本身不接受列表)。
为什么要对固定脚注进行这样的限制?有没有办法绕过这些限制?
答案1
fixfoot 在存放时会扩展主体(使用\protected@edef
)。
这意味着您可以/应该保护脆弱的命令:
\documentclass{article}
\usepackage{fixfoot}
%
\newcommand{\alist}{%
\begin{itemize}
\item Foo.
\end{itemize}
}
\DeclareFixedFootnote{\repalist}{\protect\alist \protect\begin{itemize}\protect\item a \protect\end{itemize}}
\begin{document}
Bar \repalist.
\end{document}
您可以\par
使用\endgraf
以下方法来避免问题:
\documentclass{article}
\usepackage{fixfoot}
%
\DeclareFixedFootnote{\reptwopar}{foo\endgraf foo}
%
\begin{document}
Bar \reptwopar.
\end{document}