不兼容的颜色包和定义 xfloat 环境 -> “太多 }”

不兼容的颜色包和定义 xfloat 环境 -> “太多 }”

我正在准备一篇论文。除其他外,我正在使用基于UDO 论文由 Jose A. Flores 修改,2011 年 11 月。不幸的是,我找不到原始版本。包的一部分似乎重新定义了定义float,我将错误归结为以下代码。我创建了一个小样式文件:(killer.sty),其中包含:

\def\@xfloat#1[#2]{\ifhmode \@bsphack\@floatpenalty -\@Mii\else
   \@floatpenalty-\@Miii\fi\def\@captype{#1}\ifinner
      \@parmoderr\@floatpenalty\z@
   \else\@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname
       \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n
   \@tfor \@tempa :=#2\do
                    {\if\@tempa h\advance\@tempcnta \@ne\fi
                     \if\@tempa t\advance\@tempcnta \tw@\fi
                     \if\@tempa b\advance\@tempcnta 4\relax\fi
                     \if\@tempa p\advance\@tempcnta 8\relax\fi
     }\global\count\@currbox\@tempcnta}\@fltovf\fi
\global\setbox\@currbox\vbox\bgroup 
\def\baselinestretch{1}\@normalsize
\boxmaxdepth\z@
\hsize\columnwidth \@parboxrestore
}

实际上,我没有 TeX 编程经验,但从我的角度来看,括号和if-fi是可以的。在最简单的情况下,它可以编译(pdflatex)并且看起来没问题。color但是,如果我放入包,它会产生以下错误消息:

mini.tex(16): Error: Too many }'s.
mini.tex(16): Error: LaTeX Error: \begin{document} ended by \end{figure}.
mini.tex(16): Error: Extra \endgroup.

一个最小的非工作示例如下所示(放置您的 pdf 图):迷你特克斯

\documentclass[12pt,a4paper,twoside,openright]{report} % 
%====
\usepackage{graphicx}
\usepackage{killer}
\usepackage{color}%this works if this line is commented
%====
\begin{document}
    \begin{figure}[H]
        \centering\includegraphics[width=1\columnwidth]{your.pdf}
        \caption[]{Schematic representation}        
        \label{fig:yourFig}
    \end{figure}
\end{document}

为什么这与 不兼容color。我期望很多,但事实并非如此。

(Win7 64,SP1 上的 MikTex 2.9)

答案1

这个问题看起来与当我更改文档类别时 TikZ 出现问题

那里给出的解决方案也适用于您的设置:

\documentclass[12pt,a4paper,twoside,openright]{report} % 
%====
\usepackage{graphicx}

% save a copy of \@xfloat
\makeatletter\let\latex@xfloat\@xfloat\makeatother
\usepackage{killer}

% redefine \@xfloat to have the intended behavior
\usepackage{etoolbox}
\makeatletter
\let\@xfloat\latex@xfloat
\apptocmd{\@xfloat}{\linespread{1}\normalsize}{}{}
\makeatother

\usepackage{color}%this works if this line is commented
%====
\begin{document}
    \begin{figure}
        \centering\includegraphics[width=1\columnwidth]{your.pdf}
        \caption[]{Schematic representation}        
        \label{fig:yourFig}
    \end{figure}
\end{document}

(不要使用[H],如果你使用了你会后悔的。)

如果错误代码在类中(我称之为killer),则执行

% save a copy of \@xfloat
\makeatletter\let\latex@xfloat\@xfloat\makeatother

\documentclass{killer}

\usepackage{graphicx}

% redefine \@xfloat to have the intended behavior
\usepackage{etoolbox}
\makeatletter
\let\@xfloat\latex@xfloat
\apptocmd{\@xfloat}{\linespread{1}\normalsize}{}{}
\makeatother

\usepackage{color}%this works if this line is commented

\begin{document}
    \begin{figure}
        \centering\includegraphics[width=1\columnwidth]{your.pdf}
        \caption[]{Schematic representation}        
        \label{fig:yourFig}
    \end{figure}
\end{document}

相关内容