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)。

関連情報