usepackage 명령에서 TeX 용량이 초과되었습니다.

usepackage 명령에서 TeX 용량이 초과되었습니다.

다음과 같은 오류 메시지가 표시되는데 그 이유를 알 수 없습니다.

! TeX capacity exceeded, sorry [parameter stack size=10000].
\@fileswithoptions #1->
                       \@ifnextchar [{\@fileswith@ptions #1}{\@fileswith@pti...
l.2 \usepackage{
                pgfplots}
If you really absolutely need more capacity,
you can ask a wizard to enlarge me.


Here is how much of TeX's memory you used:
 5 strings out of 493029
 170 string characters out of 6136233
 119745 words of memory out of 5000000
 3641 multiletter control sequences out of 15000+600000
 3640 words of font info for 14 fonts, out of 8000000 for 9000
 1141 hyphenation exceptions out of 8191

이상한 점은 다음 코드에서도 이런 일이 발생한다는 것입니다.

\documentclass[article]
\usepackage{pgfplots}

\begin{document}
\end{document}

어떤 아이디어가 있나요? 미리 감사드립니다!

답변1

댓글에서 언급했듯이 오류는 단순한 오타입니다. []대신에 {}오류가 발생하는 이유(그리고 TeX와 같은 매크로 언어에서 좋은 오류 메시지를 제공하기 어려운 이유)에 대해 언급하겠습니다.

의도된 용도는 다음과 같습니다.

\documentclass{article}

잘못된 입력으로

\documentclass[article]

이를 일종의 "잘못된 괄호" 구문 오류로 표시하면 좋았을 것입니다. 그러나 LaTeX는 현재 오류가 있다는 것을 알지 못합니다.

모든 매크로 인수와 마찬가지로 클래스 이름은 그렇지 않습니다.가지다명시적인 중괄호 안에 있으면 다음이 오류 없이 작동합니다.

\newcommand\zzz{article}
\documentclass[article]
\zzz
\usepackage{pgfplots}

\begin{document}
\end{document}

여기

 \documentclass[article]\zzz

와 같다

 \documentclass[article]{\zzz}

확장 \zzz되어 article다음과 같습니다.

 \documentclass[article]{article}

따라서 의도한 대로 실행되며 마지막에는 [article]사용되지 않는 옵션에 대한 경고만 표시됩니다.

LaTeX Warning: Unused global option(s):
    [article].

귀하의 경우는 비슷하지만

   \documentclass[article]{\zzz}

당신은 (효과적으로)

   \documentclass[article]{\usepackage}

그래서 TeX는 \usepackage전달할 파일 이름을 찾기 위해 확장 \documentclass하고 의도치 않은 끔찍한 확장으로 죽습니다. 실제로 내부 매크로 매개변수 처리 스택을 채울 때까지 무한 루프에 빠지게 됩니다.

가장 좋은 힌트는 오류 메시지의 줄바꿈입니다.

l.2 \usepackage{
                pgfplots}

이는 TeX가 인수를 읽었 \usepackage지만 인수는 읽지 않았음을 알려줍니다((그냥)이 \usepackage에 대한 인수로 사용되었기 때문입니다 \documentclass).

관련 정보