Runaway argument のエラーは、TeX ソースそのものにブレースの閉じ忘れがなくても
*.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の役割を簡単でいいのでご教授頂けるでしょうか.調べてみたのですがどうも理解できず,今回の学びにさせていただきたいです.
>figure 環境中の \caption として 13 番目のものの引数(“\ignorespaces XXX”で
始まっているはず)をチェックして、fragile なコマンドがあれば
\protect を前置してみてください。
その上で、一旦 aux ファイルを削除し、タイプセットを 2 回(1回では不十分です)
繰り返してみてください。
13番目のキャプションは,ちょっとした数式を含んだただの文章でした.とりあえず\protectを前置し,仰せの通り行なったところ,症状が解決しました.ありがとうございます.
大変恐縮なのですが,『fragile なコマンド』とはどういうことのなのか,そして\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 が不都合を起こすケースも
稀にあるようですので、悩ましいところです。
以下、非常にざっくりとした説明になります。
※ 私自身のあやふやにしか理解できていないので…。
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 が不都合を起こすケースも
稀にあるようですので、悩ましいところです。