当脚注包含枚举环境时,fixfoot 包崩溃

当脚注包含枚举环境时,fixfoot 包崩溃

我正在尝试做这样的事情

\documentclass{article}
\usepackage{fixfoot}

\begin{document}

\DeclareFixedFootnote{\footone}
  {This works OK}
\DeclareFixedFootnote{\foottwo}
  {%
  \begin{enumerate}
  \item This crashes
  \end{enumerate}
  }

Some text\footone
Some text\foottwo

\end{document}

在 Windows 上的 TeXLive 中运行 xelatex 我得到

./test.tex:14: Undefined control sequence.
\enumerate ...ce \@enumdepth \@ne \edef \@enumctr 
                                                  {enum\romannumeral \the \@...
l.14   }

./test.tex:14: Undefined control sequence.
\enumerate ...dafter \list \csname label\@enumctr 
                                                  \endcsname {\usecounter \@...
l.14   }

./test.tex:14: Undefined control sequence.
\list ... \@listdepth \endcsname \def \@itemlabel 
                                                  {#1}\let \makelabel \@mkla...
l.14   }

./test.tex:14: Argument of \label has an extra }.
<inserted text> 
                \par 
l.14   }

Runaway argument?
./test.tex:14: Paragraph ended before \label was complete.
<to be read again> 
                   \par 
l.14   }

)
! Incomplete \iffalse; all text was ignored after line 14.
<inserted text> 
                \fi 
<*> test.tex

(第 14 行是 定义的结束\foottwo.

我想我需要\protect做点什么才能让它工作,但我不知道具体是什么。

答案1

fixfoot包使用该.aux文件来保存固定的脚注文本,因此这需要保护脆弱的命令。

您可以使用\unexpanded(或放在\protect每个脆弱命令之前,其中包括\begin\end\item)来解决您的问题。

\documentclass{article}
\usepackage{fixfoot}

\begin{document}

\DeclareFixedFootnote{\footone}
  {This works OK}
\DeclareFixedFootnote{\foottwo}
  {%
  \unexpanded{\begin{enumerate}
  \item This crashes
  \end{enumerate}}%
  }

Some text\footone
Some text\foottwo

\end{document}

另一个策略是定义

\newcommand{\XDeclareFixedFootnote}[2]{%
   \DeclareFixedFootnote{#1}{\unexpanded{#2}}%
}

并始终使用\XDeclareFixedFootnote

\documentclass{article}
\usepackage{fixfoot}

\newcommand{\XDeclareFixedFootnote}[2]{%
   \DeclareFixedFootnote{#1}{\unexpanded{#2}}%
}

\begin{document}

\XDeclareFixedFootnote{\footone}
  {This works OK}
\XDeclareFixedFootnote{\foottwo}
  {%
  \begin{enumerate}
  \item This crashes
  \end{enumerate}
  }

Some text\footone
Some text\foottwo

\end{document}

您可能还想看看包裹sepfootnotes

相关内容