次のエラー メッセージが表示されますが、原因がわかりません。
! 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
)。