我正在尝试做这样的事情
\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
。