AtEndOfPackage

名前: Likota
日時: 2002-01-18 13:45:35
IPアドレス: 150.59.4.*

今日は。LaTeXの\AtEndOfPackageに関することで悩んでて,投稿いたしました。 あるコマンド(以下の例では\foo)をあるパッケージ(以下の例ではgraphicx)の内容を 読み込んだ後に定義したいとします。 そしてさらに別のコマンド(以下の例では\rotatebox)が定義されているか否かで, 条件判断をさせたいとします。 以下の例は,2行目でgraphicxを読み込むか否かで文字列を回転させます。 1行目> \documentclass{jarticle} 2行目> \usepackage{graphicx} 3行目> \nofiles 4行目> 5行目> \def\test#1{#1} 6行目> %\def\test#1{\AtEndOfPackage{#1}} 7行目> %\def\test#1{\AtBeginDocument{#1}} 8行目> 9行目> \makeatletter 10行目> \test{% 11行目> \@ifundefined{rotatebox}% 12行目> {\def\foo{これはテストです}} 13行目> {\def\foo{\rotatebox{90}{これはテストです}}} 14行目> } 15行目> \makeatother 16行目> \begin{document} 17行目> \foo 18行目> \end{document} 先ず,5行目を生かして\testを定義すると,これは別に問題ありません。 次に6行目を生かして\testを定義すると,\fooの定義はgraphicxパッケージを読み込んでからですので 問題ないと思うのですが,(恐らく\rotateboxが定義されていないという旨の)エラーが出ます。 因みに,7行目を生かして\testを定義すれば問題ありませんが,実は\AtBeginDocumentを使えない状況で 遅らして\fooを定義したいのです。 この例では,\AtEndOfPackageと\AtBeginDocumentを用いた場合に差異はないと思うのですが。 ご教示いただければ幸いです。 宜しくお願いいたします。

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)