extarticle
我使用了一个相当复杂的类,它建立在with选项之上twocolumn
。它加载了很多包。其中之一是floatrow
。
有时,我会收到一个非常烦人的错误,如下面的屏幕截图所示:
如您所见,两列严重偏移(左列向右,右列向左)。这种情况仅当环境中有图片(不一定在同一页上)时才会发生floatrow
。如果没有floatrow
,我永远不会遇到麻烦。
我没有成功制作出一个可以重现该问题的最小示例。所以我正在寻找一种方法来追踪该问题,也许可以使用一些\tracing...
命令。我应该怎么做?
答案1
我最终设法应用@egreg 和@David Carlisle 在评论中告诉我的内容。
好吧,我不知道为什么(我很想知道为什么……),但罪魁祸首似乎位于\flrow@restyle
(在floatrow.sty
)定义的第四行。注释掉\textwidth\columnwidth
似乎使问题消失。
\newcommand\flrow@restyle[1]{%
\@namedef{#1}{\killfloatstyle\def\@captype{#1}\FR@redefs
\flrow@setlist{{#1}}%
%\textwidth\columnwidth <- Error here
\edef\FBB@wd{\the\columnwidth}%
\FRifFBOX\@@setframe\relax\@@FStrue\@float{#1}}%
\@namedef{#1*}{\killfloatstyle\def\@captype{#1}\FR@redefs
\flrow@setlist{{#1}{widefloat}{wide#1}}%
\FRifFBOX\@@setframe\relax\@@FStrue\edef\FBB@wd{\the\textwidth}%
\let\@xdblfloat\@xfloat\relax
\FR@ifdoubleaswide
{\if@twocolumn\else\let\@dblfloat\@float\fi}\relax
\@dblfloat{#1}}%
\expandafter\let\csname end#1\endcsname\float@end
\expandafter\let\csname end#1*\endcsname\float@dblend
\@ifundefined{@rotfloat}{}{%
\@namedef{sideways#1}{\killfloatstyle\def\@captype{#1}\FR@redefs
\flrow@setlist{{#1}{rotfloat}{rot#1}}%
\columnwidth\textheight\edef\FBB@wd{\the\textheight}%
\FRifFBOX\@@setframe\relax\@@FStrue
\let\rotfloat@@makebox\float@makebox
\let\float@makebox\rotfloat@makebox
\@float{#1}}%
\@namedef{endsideways#1}{\FBbuildtrue\float@end}
\ifx\@rotdblfloat\undefined
\@namedef{sideways#1*}{%
\flrow@error{%
You need rotating version 2.10 or newer to do this}%
\@nameuse{sideways#1}}%
\else
\@namedef{sideways#1*}{\killfloatstyle\def\@captype{#1}\FR@redefs
\flrow@setlist{{#1}{rotfloat}{rot#1}{widerotfloat}{widerot#1}}%
\columnwidth\textheight\edef\FBB@wd{\the\textheight}%
\FRifFBOX\@@setframe\relax\@@FStrue
\let\@xdblfloat\@xfloat
\let\rotfloat@@makebox\float@makebox
\let\float@makebox\rotdblfloat@makebox
\@dblfloat{#1}}%
\fi
\@namedef{endsideways#1*}{\FBbuildtrue\float@dblend}}
\@ifundefined{wrapfloat}{}{%
\@ifundefined{flrow@WF@rapt}{\let\flrow@WF@rapt\WF@rapt
\def\WF@rapt[##1]##2{\FRifFBOX\@@setframe\relax\@@FStrue
\dimen@##2\relax
\ifdim\dimen@>\z@
\edef\FBB@wd{\the\dimen@}\FB@fs@wd\dimen@\FBo@wd
\fi
\flrow@WF@rapt[##1]{\dimen@}%
\the\FR@everyfloat\ignorespaces}%
}{}%
\@namedef{wrap#1}{\killfloatstyle\def\@captype{#1}%
\FR@redefs\FBc@wd\z@
\flrow@setlist{{#1}{wrapfloat}{wrap#1}}%
\def\WF@floatstyhook{\let\@currbox\WF@box
\ifFBbuild
\global\setbox\WF@box\flrow@FB{\wd\WF@box}%
\else
\global\let\flrow@typ@tmpset\undefined
\global\let\WF@box\@currbox
\fi}%
\@ifnextchar[\WF@wr{\WF@wr[]}}%]
\@namedef{endwrap#1}{\endwrapfloat
\@ifundefined{FloatHBarrier}{}\FloatHBarrier
}}
\@ifundefined{sf@@@subfloat}{}{\@ifundefined{c@sub#1}{\newsubfloat{#1}}{}}}