hyperref パッケージの color.sty 依存対策

hyperref パッケージの color.sty 依存対策

- aminophen の投稿
返信数: 2
TeX Wiki の hyperref の項を読んでいて「hyperrefとgraphicxの組み合わせでエラー」という記述があったので調べていました。
原因は、colorlinks オプションを指定した場合に color パッケージを \RequirePackage するのですが、hyperref と graphicx に
共に dvipdfmx ドライバ指定していてもなお color が dvips.def を読もうとするからでした。

これは hyperref.sty (2012/11/06 v6.83m) のコードの2974行目以降

\DeclareVoidOption{dvipdfmx}{%
  \HyOpt@CheckDvi{dvipdfmx}{%
    \def\Hy@driver{hdvipdfm}%
  }%
}

を以下のように修正すると正常化します。

\DeclareVoidOption{dvipdfmx}{%
  \HyOpt@CheckDvi{dvipdfmx}{%
    \def\Hy@driver{hdvipdfm}%
    \PassOptionsToPackage{dvipdfmx}{color}%
  }%
}

問題無さそうならパッチを適用していただければと思います。

追記:最初の書き込みで
    \kvsetkeys{Hyp}{colorlinks}%
という行を書いていましたが、これは付けてはいけないので訂正しました。
aminophen への返信

Re: hyperref パッケージの color.sty 依存対策

- 匿 名 の投稿
単に拡張子を毎回書けばいいという問題では?
匿 名 への返信

Re: hyperref パッケージの color.sty 依存対策

- aminophen の投稿
うーん、私の感覚としては拡張子対策はどうでもよくて「利用したいパッケージが依存している
パッケージのせいで思いがけない衝突が起こる」のをなるべく減らしたいのです。

先日も TikZ と graphicx の共存時に xcolor のせいで図が取り込めないという件がありました。
おそらく今回の hyperref の場合も、colorlinks=true にすると color が dvips.def を呼ぶせいで
graphicx の dvipdfmx.def が上書きされて図の取り込みに失敗する(あるいは図の位置がずれる)はずです。
hyperref パッケージに関しては \usepackage[dvipdfmx,...]{hyperref} というドライバ指定のインタフェースが
整っているので、依存パッケージに \PassOptionsToPackage する処理が漏れているのは使いづらいかなと思ったのです。

colorlinks=true をデフォルトにしてある tex4ht ドライバには \PassOptionsToPackage してあるので、
単純に漏れているだけ(colorlinks=true にするユーザが少なくて気づくきっかけも少ない)ではないでしょうか。

Oberdiek さんに伝えるべきではないでしょうか。