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}

따라서 한 가지 해결책은 재정의할 때 \@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.ltx. 따르다http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/4427관심이 있다면 그것에 대해.

이 작업이 완료될 때까지(또는 완료되지 않은 경우) 다음 해결 방법을 제안합니다.

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

표시된 오류를 재현(주석 해제하여 수정)하는 두 번째 줄에 주석을 달면 쉽게 확인할 수 있습니다.

관련 정보