如何修补星号环境

如何修补星号环境

我想翻译我的方法将所有figure环境集中到figure*环境中。如何做?

\documentclass[peerreview]{ieeetran}
\usepackage{xpatch}
% \def\figure{\def\@floatboxreset{\reset@font\normalsize\@setminipage\@IEEEfiguretopskipspace}\@float{figure}}
\patchcmd{\figure}{\normalsize}{\normalsize\centering}{}{error}
% \@namedef{figure*}{\def\@floatboxreset{\reset@font\normalsize\@setminipage\@IEEEfiguretopskipspace}\@dblfloat{figure}}
% \patchcmd{\figure*}{\normalsize}{\normalsize\centering}{}{error}
\begin{document}
    \begin{figure}[t]
        centered!
    \end{figure}
    \begin{figure*}[t]
        not centered!
    \end{figure*}
\end{document}

上面的直接方法不起作用,可能是因为使用了\@namedef而不是\def

答案1

为了修补环境,figure*你可以这样做

\expandafter\patchcmd\csname figure*\endcsname{....}{...}{}{}

这种方法对于诸如 之类的命令无效\section*,因为它们是以完全不同的方式定义的。

另一方面,如果您只想添加\centering到所有浮点数,您只需添加\centering\@floatboxreset

\makeatletter
\appto{\@floatboxreset}{\centering}
\makeatother

但这也会影响table其他浮点数。

相关内容