回忆录类和浮动包之间有冲突吗?

回忆录类和浮动包之间有冲突吗?

我正在尝试将表格浮点数放入使用该类的书籍手稿中memoir。这在几天前我使用 TexLive 实用程序运行更新之前一直运行良好。(我认为该类memoir最近已更新。)我现在收到以下令人困惑的错误消息:

! LaTeX Error: Unknown float option `\'.

即使我正在加载float没有任何选项的包。

以下是 MWE:

\documentclass{memoir}
\usepackage{float}

\begin{document}

\begin{table}[htp]
\centering
\caption{This is a caption}
\begin{tabular}{ccc}
cell1 & cell2 & cell3 \\
\end{tabular}
\end{table}

\end{document}

memoir如果我用article或替换该类,示例代码就可以很好地编译book

答案1

通用cmd/xxx/after钩子相当脆弱。它们是否有效很大程度上取决于命令的实际定义\xxx。由于 float 重新定义,因此\@xfloat只要声明钩子(即使它是空的),它就会中断。

\@floatboxreset如果回忆录将其代码放入而不是修补,可能会更安全\@xfloat

\documentclass{memoir}
\usepackage{float}
\makeatletter
\DisableGenericHook{cmd/@xfloat/after} %disable the \@xfloat hook alltogether

\AddToHook{cmd/@floatboxreset/after}{% reinstate the memoir code
 \def\baselinestretch{\m@m@float@spacing}%
    \normalsize%
    \@nameuse{\@captype adjustment}}
\makeatother
\begin{document}

\begin{table}[htp]
\centering
\caption{This is a caption}
\begin{tabular}{ccc}
cell1 & cell2 & cell3 \\
\end{tabular}
\end{table}

\end{document}

相关内容