使用 ieeecolor 文档类“弹出空颜色页面堆栈 0”

使用 ieeecolor 文档类“弹出空颜色页面堆栈 0”

我仍在使用ieeecolor.cls- 从这里获取https://www.embs.org/tmi/authors-instructions/,即https://www.embs.org/wp-content/uploads/2020/04/TMI-Template-LaTeX-2020.zip

通过这个非常简短的 MWE,

\documentclass[print]{ieeecolor}
\usepackage{tmi}
\begin{document}
\begin{figure}
    \caption{X}
\end{figure}
\end{document}

我得到一个

pdfTeX warning: pdflatex: pop empty color page stack 0

可能是因为标题颜色问题。这个问题能修复吗?

答案1

这是 中的一个错误ieeecolor.cls。它误用了\color\hbox颜色范围\special“泄漏”。问题缩小到这个(看看world红色也是这样):

\documentclass{article}
\usepackage{color}
\begin{document}
\setbox0\hbox{\color{red}hello}
\box0 world
\end{document}

\color插入到 中\hbox,并且该框稍后被使用,但由于在使用 时没有进行分组\color(它在框被使用时起作用用过的,而不是在设置时),缺少“结束颜色”指令。如果你只使用\hbox{\color{red}hello}(即没有\setbox... \box),那么来自的隐式结束组将\hbox结束颜色,因为框正在被用过的

这是针对此问题的补丁。它插入\color@begingroup\color@endgroup围绕框的内容,以便\color正确结束:

\documentclass[print]{ieeecolor}
\usepackage{tmi}

% Fix ieeecolor's \caption
\usepackage{etoolbox}
\makeatletter
\@ifundefined{color@begingroup}%
  {\let\color@begingroup\relax
   \let\color@endgroup\relax}{}%
\def\fix@ieeecolor@hbox#1{%
  \hbox{\color@begingroup#1\color@endgroup}}
\patchcmd\@makecaption{\hbox}{\fix@ieeecolor@hbox}{}{\FAILED}
\patchcmd\@makecaption{\hbox}{\fix@ieeecolor@hbox}{}{\FAILED}
%

\begin{document}
\begin{figure}
    \caption{X}
\end{figure}
\end{document}

相关内容