名前: 本田 日時: 2001-07-09 01:23:07 IPアドレス: 210.130.109.*
目次の順序が変ってしまうという件ですが 一言で言うと,タイミングの問題です. 一回目のコンパイルを考えます まずauxファイルにはpl.aux,algo.aux,config.auxを読み込むように記述されます これは\includeによって\clearpageが呼ばれた"直後"にauxファイルにかかれます また\includeは指定されたファイルを読み込んで処理したあと また更に\clearpageを実行します 次に\appendix,\addcontentslineが実行されますが \addcontentslineはページが確定するまでauxへの書き出しはません (正確にはページを実際にdviファイルに出力する\shipoutという命令と連動しています) ここでまず一度保留されるのです 直前で\includeによる\clearpageが実行されていることに注意してください そして,次に\includeが実行されます まず\clearpageが実行されるのですが, この例では直前の\includeの最後で行われる\clearpageと 今回の\includeの最初で行われる\clearpageの間に 組版されるべき要素(ページの材料)が一切存在していません. (\appendixと\addcontentslineのみが存在) ですので\clearpageをしても実際にページは出力されず(\shipoutは実行されず) まだ\addcontentslineでauxに吐き出したいものは保留されています. ところが,\include{appendix1}によってauxに吐き出される "appendix1.auxを読み込め"という命令(\@input{appendix1.aux})は ページ確定なんぞを待たずにすぐその場でauxに吐き出されます ところが,\addcontentsline{toc}{chapter}{Appendix} はページ確定を待っているので,まだauxには出力されていないのです よってここで順番の入れ替わりが発生します. さて,appendix1.texを処理していく過程で,最初のページが出来上がり dviに出力されたとすると,ここでやっと保留されていた \addcontentslineが動き出すわけです. そして,あとは普通に処理されていって, 最後に\end{document}によって,auxが読み込まれ, auxに記述された命令にしたがって,tocが生成され 結果,順番がくるったままになっているというわけなのです. 回避策としては, \hbox{}\addcontentsline{toc}{chapter}{Appendix} などとして,組版要素をいれてしまうことも考えられます 実際は\appendix用の扉を作ることに相当します.
この書き込みへの返事: