Re: \labelのスコープ

名前: .
日時: 2009-08-01 07:35:53
IPアドレス: 59.134.169.*

>>53468 まず,hyperref パッケージを用いるのであれば,\slabel というコマンドを ユーザ自身で定義するのはやめてください. 実際,\slabel は subeqnarray パッケージでも提供されるため, hyperref パッケージは,\begin{document} の時点で \slabel が定義されていたら, (それは subeqnarray パッケージによるものだとみなして)hyperref パッケージの 処理と整合性がとれるように \slabel を再定義します. 特に,次のような単純な例でも件のエラーが生じます. \documentclass{jarticle} \usepackage{hyperref} \def\slabel{\label} %%% \typeout{\meaning\slabel}%%% (*) \begin{document} %%% \typeout{\meaning\slabel}%%% (**) \begin{equation} PV = nRT \slabel{zzz} \end{equation} \end{document} %%% (*),(**) が何をしているのかがおわかりになる場合には, %%% 実際にそれらの処理を行わせてみると, %%% \slabel が再定義されてしまっていることを確認できます. 問題はその点のみのようなので,\slabel の名称を変更すれば済むでしょう. 例えば次のようにすればとりあえず処理はできるようです. # ただし,番号なしの \section を用いた場合への対処も追加したほうがよいでしょう. \documentclass{jarticle} \usepackage{hyperref} \def\mylabel#1{\label{\thesection.#1}} \def\myref#1{\ref{\thesection.#1}} \begin{document} \section{foo} \begin{equation}\textrm{equation 1.}\mylabel{hoge}\end{equation} 参照されるのは\myref{hoge} \section{bar} \begin{equation}\textrm{equation 2.}\mylabel{hoge}\end{equation} 参照されるのは\myref{hoge} \end{document}

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)