Tex 容量を超えました。申し訳ありませんが、入力スタックサイズ = 5000 です。

Tex 容量を超えました。申し訳ありませんが、入力スタックサイズ = 5000 です。

tex ファイルをビルドしようとしているときにこのエラーが発生します。パッケージをインクルードするとすぐにこのエラーが発生し、ファイルの太字部分にカーソルが移動してcleveref表示されます 。cleveref.sty

\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}%

このエラーの原因は何でしょうか?

コメントより:

\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}

答え1

svjour3 は texlive にはありませんが、Springer サイトからコピーを入手しました。バグがあるようで、ドキュメントが無限ループに入り、\cl@chapterそれ自体に展開するように定義されています。これで、その当面の問題は修正されます (または少なくとも回避されます)。

\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}

答え2

まず、本当に最小限の MWE (空白を除く) は次のようになります。

\documentclass{svjour3}
\usepackage{cleveref}
\begin{document}
    \section{}
\end{document}

David Carlisle の回答に追加します (ただし、コメント フィールドが短すぎます)。

問題\@addtoreset{theorem}{chapter}は にあると思いますsvjour3.cls。少なくとも、 とは関係なく、この MWE で問題を再現できますsvjour3

\documentclass{article} 
\makeatletter
\@addtoreset{theorem}{chapter}
\makeatother
\usepackage{cleveref} 
\begin{document} 
    \section{}
\end{document}

もちろん、article( と同じsvjour3) には はありません\chapter

\documentclass{svjour3}
\begin{document}
    \chapter{}
\end{document}

さて、\@addtoreset次のようになります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}

それが何をするのかはここでわかりやすく説明されています: https://www.tug.org/TUGboat/tb18-4/tb57work.pdf ただし、定義されていないセクション要素で使用しようとすると失敗するようです。そのため、リストに追加するために\cl@chapter再定義すると、の展開が失敗します。\cl@chapter\@elt {theorem}

したがって、1 つの解決策は、 を再定義するときにの存在を確認するように\@addtoreset/にパッチを当てることです。これはそれほど難しくありません。たとえば、次のようになります。\@cons\cl@<unit>\cl@<unit>

\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}

\@consそれでも、私よりも LaTeX に詳しい人が、あらゆる状況で期待どおりに動作するかどうか、またこのパッチが で意味をなすかどうかを確認すべきですlatex.ltxhttp://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/4427興味があればそれについて。

これが完了するまで(または完了しない場合)、次の回避策を提案します。

\makeatletter
\def\cl@chapter{}
\makeatother
\documentclass{svjour3}
\usepackage{cleveref} 
\begin{document} 
    \section{}
\end{document}

2 行目をコメント化することで、発生したエラーが再現される (コメントを解除すると修正される) かどうかを簡単に確認できます。

関連情報