が,なぜこんなことになるのかはやはり気になります.ネットの海を泳ぐと,コードの書き方を工夫したら治ったと言った声もあることから,かなり繊細な問題なのでしょうか.専門的な知識は皆無なので,原因が分かったとしても自分が理解できるのかは不明ですが...
というのは、「引数逃げ出しちゃってます?」という意味で、引数
を囲む対のブレースの閉じ側を書き忘れたり、誤って削除してしま
ったりした場合に出るものです。
> 私もこのエラーについて調べたところ,.auxファイルの削除でコ
> ンパイルできるようになるとの情報を得て,実際に試したところ
> 確かに上手くいきました.
とのことですが、それは、「Runaway argument?」に対する一般的な
対処法ではないと思います。今回はたまたま、
> {\contentsline {figure}{\numberline {13}{\ignorespaces XXX\ETC.
となっていることから、.lof への書き込みに絡む部分(\caption
でしょうか?)でのミスだと思われるので、それで、.aux ファイル
の削除で一時的にうまくいってしまっているように見えます。
というわけで、(根本的な)「改善策」は、「Runaway argument」
を引き起こしている、ブレースの閉じ忘れ箇所を探し出して、閉じ
ブレースを追加することだと思われます。
*.aux 中では起こりえると思います。
今回の場合、\caption の引数に fragile なコマンドが入っている可能性が
高いかと。
figure 環境中の \caption として 13 番目のものの引数(“\ignorespaces XXX”で
始まっているはず)をチェックして、fragile なコマンドがあれば
\protect を前置してみてください。
その上で、一旦 aux ファイルを削除し、タイプセットを 2 回(1回では不十分です)
繰り返してみてください。
>figure 環境中の \caption として 13 番目のものの引数(“\ignorespaces XXX”で
始まっているはず)をチェックして、fragile なコマンドがあれば
\protect を前置してみてください。
その上で、一旦 aux ファイルを削除し、タイプセットを 2 回(1回では不十分です)
繰り返してみてください。
13番目のキャプションは,ちょっとした数式を含んだただの文章でした.とりあえず\protectを前置し,仰せの通り行なったところ,症状が解決しました.ありがとうございます.
大変恐縮なのですが,『fragile なコマンド』とはどういうことのなのか,そして\protectの役割を簡単でいいのでご教授頂けるでしょうか.調べてみたのですがどうも理解できず,今回の学びにさせていただきたいです.
以下、非常にざっくりとした説明になります。
※ 私自身のあやふやにしか理解できていないので…。
LaTeX のコマンドの引き数には「動く引き数(moving argument)」と呼ばれる
種類のものがあり、動く引き数の中で記述することにより不都合を生じるような
コマンドのことを「fragile な(脆弱な)コマンド」と呼んでいます。
※ ちなみに、fragile でないコマンドは「robust な(堅牢な)コマンド」と
呼ばれます。
動く引き数というのは、コマンドが記述されたのとは異なる場所に出力される
可能性のある引き数のことで、\chapter、\section 等のセクショニング・コマンドや
\caption の引き数(オプション引き数を指定した場合はオプション引き数の方)が
これに該当する主なものです。つまり、セクショニングそのものの見出しや
キャプションとして出力される以外に、ページ・ヘッダや目次にも出力されると
いうことが「動く」と形容されるのです。
※ ということで、特定の引き数が動く引き数に該当するかどうかは、そのコマンドの
基本的な使い方を把握していれば概ね判別できるでしょう。実際のところは、
セクショニング・コマンドと \caption に注意しておけばそこそこ大丈夫。
さて、「動く引き数」は、多くの場合、一旦補助ファイル(大概の場合は *.aux)に
書き出されたうえで、特定の場所でその補助ファイルが LaTeX によって
読込まれることで、「動き」ます。そして TeX は、コントロール・シーケンスを
外部ファイルに書き出す場合、原則として展開可能な限り展開しきってから
書き出します。fragile なコマンドは、この「展開可能な限り展開しきる」と
いうのが問題となって、エラーを引き起こすのです。\protect というのは、
「補助ファイルに書き出すにあたって、後続のコマンドを展開するな」という
意味のある種の目印として働きます。
ただ、特定のコマンドについて、fragile か robust かを見分ける簡便な方法は
残念ながらありません。
※ LaTeX のフォーマット・レベルで定義されている文書著作者向けの(つまり
マクロ作者向け以外の)コマンドについては、ランポート本(「文書処理システム
LaTeX2e」――原著は“LaTeX: A Document Preparation System System LaTeX2e”
だったでしょうか)にはすべて書かれているので、覚えしまうことは可能でしょう。
※ 同書(少なくとも日本語版)はとうに絶版になっているようですが、
古書としては入手可能でしょう。
パッケージ類で定義されているコマンドについては、ドキュメントに明記されている
ものもあれば、そうでないものもあります。
あまり深く考えずに「動く引き数中のコマンドには常に \protect を前置する」という
方針をとる人もいるようですが、不必要な \protect が不都合を起こすケースも
稀にあるようですので、悩ましいところです。
私の経験上の話でちゃんとした説明ではないかもしれませんが,既にお書きのようにエラーが出たときにそこで処理を終了してしまうと不完全な作業ファイル(エラーメッセージからおそらく {
に対する }
がないまま中途半端に出力されてしまった作業ファイル)が残ってしまう場合があって,これを読み込んだときにまたエラーが出ることになります.このエラーが出たときにそこでまた処理を終了してしまうと,不完全な作業ファイルが更新されずそのままなので何度やってもエラーが出続けます.エラーが出る箇所が \begin{document}
なのは,ちょうどそこで作業ファイルを読み込むからだと思います.
楽な対処法ですが,
l.19 \begin{document}
?
の最後で ?
が出ているのは入力待ちのプロンプトで,とりあえずここに何度か Enter を打ち込むとこのエラーを無視して最後まで処理してくれることがあります.一度最後まで処理されれば完全な作業ファイルが出力されるので問題が解決します.
追記:上に帯田さんが根本的な対処法を書いてくださったので,まずはそちらを試した方がよさそうです.
エンターキーの打ち込みなどしなくても、 エラー修正が終わったら、 通常「⌘T (command+T) 」でタイプセットを行うところを、 「⌥⌘T (command+option+T) 」とすると「作業ファイルの削除」後、 通常のタイプセット作業が行われるようですね。
TeXShop/使い方 を参考にしてみてください。
私がよく遭遇する問題は fragile は関係ないようで,単に長い文章を書いていると何かのタイミングで中途半端に .aux ファイルに flush してしまうということのようです.
MWEを作ってみました(もしかしたら環境依存あり?).
\documentclass{article}
\begin{document}
\newcount\cnt
\loop\paragraph{\the\cnt}\advance\cnt1\ifnum\cnt<65\repeat
\mistake% おっと,間違ってしまった!!
\end{document}
最後の \mistake
で Undefined control sequence が出るので,そこで処理を強制終了すると,.aux の末尾が
\@writefile{toc}{\contentsline {paragraph}{53}{3}{}\protected@file@percent }
\@writefile{toc}
のように中途半端に終わった状態になるので,再度処理しようとすると件のエラーが出ます.どうしようもないでしょうか.