Estou recebendo este erro ao tentar construir meu arquivo tex. Assim que incluo o cleveref
pacote, recebo este erro e ele aparece
cleveref.sty
com o cursor na parte em negrito do arquivo.
\def\make@df@tag@@@#1{%
\gdef\df@tag{\tagform@{#1}%
\toks@\@xp{\p@equation{#1}}%
\edef\@currentlabel{\the\toks@}%
\edef\cref@currentlabel{[equation][2147483647][]\the\toks@}}}
**}{}% end of \@ifpackageloaded{amsmath}**
\@ifpackageloaded{IEEEtrantools}{%
\PackageInfo{cleveref}{`IEEEtrantools' support loaded}
\let\cref@orig@@IEEEeqnarray\@@IEEEeqnarray
\def\@@IEEEeqnarray[#1]#2{%
\refstepcounter{equation}%
Qual poderia ser o motivo desse erro?
dos comentários:
\begin{filecontents*}{example.eps}
gsave newpath 20 20 moveto 20 220 lineto 220 220 lineto 220 20 lineto
closepath 2 setlinewidth gsave .4 setgray fill grestore stroke grestore
\end{filecontents*}
\RequirePackage{fix-cm}
\documentclass[smallextended]{svjour3}
\smartqed \let\proof\relax \let\endproof\relax \usepackage{cleveref}
\begin{document}
\title{Title} \author{First Author} \date{Received: date / Accepted: date}
\maketitle
\begin{abstract} \end{abstract}
\maketitle
\section{Introduction}
\end{document}
Responder1
svjour3 não está no texlive, mas recebi uma cópia do site springer. Parece haver um bug e seu documento entra em um loop infinito \cl@chapter
definido para se expandir para si mesmo. Isso corrige (ou pelo menos evita) esse problema imediato.
\begin{filecontents*}{example.eps}
gsave newpath 20 20 moveto 20 220 lineto 220 220 lineto 220 20 lineto closepath 2 setlinewidth gsave .4 setgray fill grestore stroke grestore \end{filecontents*}
\RequirePackage{fix-cm}
\documentclass[smallextended]{svjour3}
\smartqed \let\proof\relax \let\endproof\relax
\makeatletter
%\def\cl@chapter{\cl@chapter \@elt {theorem}}%bug in class
\def\cl@chapter{\@elt {theorem}}
\makeatother
\usepackage{cleveref}
\begin{document}
\title{Title} \author{First Author} \date{Received: date / Accepted: date}
\maketitle
\begin{abstract} \end{abstract}
\section{Introduction}
\end{document}
Responder2
Primeiro, seu MWE verdadeiramente mínimo (exceto espaços em branco) seria este:
\documentclass{svjour3}
\usepackage{cleveref}
\begin{document}
\section{}
\end{document}
Agora adicionando à resposta de David Carlisle (mas o campo de comentários é muito curto):
Acho que o problema é o \@addtoreset{theorem}{chapter}
in svjour3.cls
. Pelo menos posso reproduzir o problema neste MWE independente de svjour3
:
\documentclass{article}
\makeatletter
\@addtoreset{theorem}{chapter}
\makeatother
\usepackage{cleveref}
\begin{document}
\section{}
\end{document}
Claro, article
(o mesmo que svjour3
) não tem \chapter
:
\documentclass{svjour3}
\begin{document}
\chapter{}
\end{document}
Agora, \@addtoreset
fica assim em latex.ltx
:
\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}}
\def\@cons#1#2{\begingroup\let\@elt\relax\xdef#1{#1\@elt #2}\endgroup}
O que ele faz é bem explicado aqui:
https://www.tug.org/TUGboat/tb18-4/tb57work.pdf
Parece falhar, porém, ao tentar usá-lo em um elemento de seccionamento que não está definido; portanto, a expansão \cl@chapter
falha ao redefinir \cl@chapter
para adicionar \@elt {theorem}
à lista.
Portanto, uma solução seria corrigir \@addtoreset
/ \@cons
verificar a existência de \cl@<unit>
ao redefinir \cl@<unit>
. Isso não deve ser muito difícil, por exemplo:
\makeatletter
%\def\@cons#1#2{\begingroup\let\@elt\relax\xdef#1{#1\@elt #2}\endgroup}
\def\@cons#1#2{\begingroup\let\@elt\relax\xdef#1{\ifx#1\relax\else#1\fi\@elt #2}\endgroup}
\makeatother
\documentclass{svjour3}
\usepackage{cleveref}
\begin{document}
\section{}
\end{document}
Alguém que conhece o látex melhor do que eu ainda deve garantir se \@cons
ainda faz o que deve fazer em todas as circunstâncias e se esse patch faria sentido em latex.ltx
. Seguirhttp://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/4427sobre isso, se estiver interessado.
Até (ou se não) isso for feito, proponho a seguinte solução alternativa:
\makeatletter
\def\cl@chapter{}
\makeatother
\documentclass{svjour3}
\usepackage{cleveref}
\begin{document}
\section{}
\end{document}
Você pode facilmente verificar comentando a segunda linha se isso reproduz (e corrige, descomentando) o erro visto.