组合“fixltx2e”和“preview”包时出现“额外 },或被遗忘的 \endgroup”

组合“fixltx2e”和“preview”包时出现“额外 },或被遗忘的 \endgroup”

figure*在带有浮点数的两列文档中,该preview包设置为预览浮点数,如果fixltx2e加载该包,则编译似乎会失败:

\documentclass[twocolumn]{article}

\usepackage{fixltx2e}
\usepackage[active,floats]{preview}

\begin{document}
  \begin{figure*}Test\end{figure*}
\end{document}

看到的第一条错误消息是:

! Extra }, or forgotten \endgroup.
\@endfloatbox ...pagefalse \outer@nobreak \egroup 
                                                  \color@endbox 
l.7   \begin{figure*}Test\end{figure*}

? 

fixltx2e如果未加载或figure使用该环境,则错误消失。

我的目标是“预览”两列文档中的所有图形,以便\linewidth在环境中正确设置。我做错了什么?有没有办法在保留的同时“修复”这个问题fixltx2e?在最近的 LaTeX 安装中是否需要这个包?

答案1

\pr@\end@dblfloat执行时发生错误,使用\end@dblfloat

\end@dblfloat让我们比较一下内核中和中的定义fixltx2e

latex.ltx

\def\end@dblfloat{%
\if@twocolumn
  \@endfloatbox
  \ifnum\@floatpenalty <\z@
    \@largefloatcheck
    \@cons\@dbldeferlist\@currbox
  \fi
    \ifnum \@floatpenalty =-\@Mii \@Esphack\fi
\else
  \end@float
\fi
}

fixltx2e.sty

\def\end@dblfloat{%
\if@twocolumn
  \@endfloatbox
  \ifnum\@floatpenalty <\z@
    \@largefloatcheck
    \global\dp\@currbox1sp %
     \expandafter\@gobble\end@float
  \fi
\else
  \end@float
\fi
}

如您所见,该\@largefloatcheck命令后面跟着两个完全不同的路径,这会造成preview.sty对内核定义的依赖。

我看不出有任何办法解决这个问题,除非更新以考虑加载preview.sty时的情况。fixltx2e

相关内容