新しいバージョンのTeXで,hyperref が使えなくなった

新しいバージョンのTeXで,hyperref が使えなくなった

- 福島 邦彦 の投稿
返信数: 15

角藤さんの W32TeX を使わせていただいています.

ところが最近 W32TeX を新しいバージョンに入れ替えたところ,hyperref が dviout で使えなくなってしまいました.

例えば,
\documentclass[10pt]{jsarticle}
\usepackage[hypertex]{hyperref} % 古いバージョンでないと働かない
% \usepackage[dvipdfmx]{hyperref} % 新しいバージョンでないと誤動作
\begin{document}
\begin{thebibliography}{9}
\bibitem{test01}
Author: \href{RefTest.txt}{Title}, Publisher (2012).
\end{thebibliography}
\end{document}
のような tex file をコンパイルして,出来上がった dvi file を dviout で開いてリンクをクリックすると,dviout が固まってしまい,全く反応しなくなります.(RefTest.txt は任意のファイル)

W32TeX は,11月15日の時点での最新バージョンで,その中のhyperref.sty のバージョンは 2012/10/31 v6.83l になっています.
dviout は ver.3.18-4 です.

以前は問題がなかったので,古いバージョンの W32TeX のフォルダー
C:\w32tex\share\texmf\tex\latex\hyperref
をフォルダーごと
C:\w32tex\share\texmf-local\tex\latex\hyperref
にコピーしたところ,dviout でのリンクは正常に働くようになりました.
しかし今度は,[dvipdfmx]{hyperref} を指定して dvipdfmx 経由で作成した PDF file からのリンクがおかしくなりました.
なお古いバージョンの W32TeX に含まれている hyperref.sty のバージョンは
2010/01/25 v6.80d です.

新しいバージョンの W32TeX で,hyperref を dviout で使用するには,どのようにすれば良いのでしょうか.
お教えいただければ幸いです.

福島 邦彦 への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- 匿 名 の投稿
まず確認しておきたいのですが、
\usepackage[]{hyperref}
の[]内に与えるオプション引数の役割(意味といってもよいですが)をご存知でしょうか?
匿 名 への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- 福島 邦彦 の投稿
dviout を使用するときには [hypertex] を,
dvipdfmx を使用するときには [dvipdfm] を使用する
というのでは,間違いですか?
質問メールに書いたサンプルでは,
% \usepackage[dvipdfmx]{hyperref}
は,% を付けて,コメントアウトしてあります.
福島 邦彦 への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- 福島 邦彦 の投稿

email で送られてきた私の質問の文章を見ると,サンプルの .tex ファイルのコマンドが,画面表示では行の途中で改行されており,行末のコメントが,別のコマンドのように見えていました.皆様に誤解を与えないように,コメントをすべて消して,サンプルの .tex ファイルをもう一度以下に記載いたします.

\documentclass[10pt]{jsarticle}
\usepackage[hypertex]{hyperref}
\begin{document}
\begin{thebibliography}{9}
\bibitem{test01}
Author: \href{RefTest.txt}{Title}, Publisher (2012).
\end{thebibliography}
\end{document}

よろしくお願いいたします.

福島 邦彦 への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- 大石 勝 の投稿

dviout の時は,

\usepackage[dvips]{hyperref}

とするのでは,なかったですかね?

最近使い込んでいないので,違ったらごめんなさい。

大石 勝 への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- 福島 邦彦 の投稿

大石様

コメントありがとうございました.

\usepakage[dvips]{hyperref}

で試してみましたが,dvioutを起動すると,私の環境では,

Unknown special:! systemdict /pdfmark known{userdict ......

というwarningが出て,リンクは正しく作成されませんでした.

dvioutで表示せずに,dviファイルからdvipsとAcrobatDistiller経由で

作成したPDFファイルでは,正しくリンクが働くのですが,

dvioutでは表示ができませんでした.

福島 邦彦 への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- Akira Kakuto の投稿
dviout がサポートするのは hypertex special であり
\usepackage[hypertex]{hyperref}
が正しいと思います。
新しい hyperref では、 hypertex special を逸脱する何かが
紛れ込んでいるのかもしれませんが、わかりません。

福島 邦彦 への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- 福島 邦彦 の投稿

この件に関して,少しテストをしてみました.

以下の内容のTEXファイル
\documentclass{jsarticle}
\usepackage[hypertex]{hyperref}
\begin{document}
\href{hoge.txt}{TestHref}
\end{document}
を新バージョンのhyperref.styとhypertex.defを使用して
コンパイルして出来上がったDVIファイルをdvioutで開いて,
TestHrefにマウスのカーソルを持って行くと,リンク先が
hoge.txt
と表示されます.そこをクリックすると,dvioutはジャンプできずに
動作を停止してしまいます.

旧バージョンのhyperref.styとhypertex.defを使用した場合は,
リンク先は
file:hoge.txt
と表示され,そこをクリックすればhoge.txtに正しくジャンプします.

そこで,TEXファイルの中の
\href{hoge.txt}{TestHref}
を書き換えて,
\href{file:hoge.txt}{TestHref}
とすると,新バージョンのhyperref.styとhypertex.defを使用した場合でも
正しくジャンプできます.

また,dvioutのフォルダーの中にある
C:\dviout\HYPERTEX\myhyper.sty
を用いて,
\usepackage[hypertex]{hyperref}
の代わりに,
\usepackage{myhyper}
とした場合もテストしてみました.
この場合も,新バージョンのhyperref.styとhypertex.defを使用した場合
と同様に,dvioutに表示されるリンク先は
hoge.txt
となって,(文字列"file:"が欠けていて)正しいジャンプができません.

私のコンピューターには古いバージョンのw32texは入っていないので
テストが出来ませんが,おそらくmyhyper.styも,古いバージョンのw32texでは
正しく動作していたのではないかと想像しています.

私は,TeXに関しては全くの素人でよくわかりませんが,
以上を考え合わせると,hrefが働かなくなった原因は,
新しいw32texでDVIファイルを作成するプロセスが変更になったために,
新バージョンのhyperref.styとhypertex.defや,myhyper.styとの
相性が悪くなり,どこかの過程で文字列"file:"が消えてしまうために,
hrefが使用できなくなったのではないかと想像しています.

どなたか対応策がおわかりになりましたら,お教えいただきたく,
お願いいたします.

福島 邦彦 への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- Akira Kakuto の投稿
> 以上を考え合わせると,hrefが働かなくなった原因は,
> 新しいw32texでDVIファイルを作成するプロセスが変更になったために,

古い hyperref で ok で、新しい hyperref で駄目になった場合、
通常はマクロのほうが変化したと考えます。
myhyper.sty のサンプル hyperdvi.tex が動作することを確かめて下さい。
myhyper.sty の場合、 \href でファイルを指定する場合、サンプルによると
\href{file:filename}{Foo} のように file: はユーザが指定するようです。

Akira Kakuto への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- 福島 邦彦 の投稿

角藤様

早速のご教示,ありがとうございました.

hyperdvi.texは,新しいw32texでも正常に動作いたしました.
hyperdvi.texをみると,「同じドライブにある dvi ファイルへの
相対ジャンプではfile: をユーザーが指定する」,
と書いてありますね.気がつきませんでした.
ジャンプ先にすべてfile: を付け書き直せば,myhyper.styでも,
新しいhyperrefの場合でもdvioutで正しくジャンプできることは,
確認いたしました.

しかし私のTEXファイルの中のジャンプ先にすべてfile: を付けて
書き直すことには抵抗を感じております.
同じファイルで
\usepackage[dvipdfmx]{hyperref}
だけを指定し直した場合に,今度はPDFファイルからのジャンプが
出来なくなるからです.

そこで当面の応急処置として,myhyper.styの中の
\def\@href#1{\special{html:<a href="#1">}\endgroup \@@href}
の行を
\def\@href#1{\special{html:<a href="file:#1">}\endgroup \@@href}
のように書き直した上で,
\usepackage{myhyper}
を指定して使用することにします.
私のTEXファイルの中では,現在のところhrefは,同じドライブ
にあるファイルへの相対ジャンプだけにしか使用しておらず,
URLへのジャンプなどは使用していないために,これでも当面は,
何とか使用できそうです.

将来の新しいバージョンのw32texで,
\usepackage[hypertex]{hyperref}
が,古いバージョンの場合と同様に使用できるようになることを
期待しつつ,当面は上記のような応急処置で対応することにいたします.

福島 邦彦 への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- 坂崎 晃生 の投稿
類似の質問をさせていただきます.

以下の事情ではDVIファイルはリンクがされるのですがPDFファイル
はリンクが無効になります.

\RequirePackage[dvipdfm,hypertex]{hyperref}
\def\ps@myheadings{%
\def\@oddhead{%
\null\quad\textcolor{ForestGreen}{\thepage}}%
\let\@evenhead\@oddhead
\def\@oddfoot{\null\hfil\rlap{%
\space\hyperlink{@contents}{\textcolor{red}{\redcross}}}}%
\let\@evenfoot\@oddfoot}
\def\redcross{%
\rule[4pt]{12pt}{4pt}\kern-8pt
\rule{4pt}{12pt}}
\def\tableofcontents{%
\@schapter{\hypertarget{@contents}{\contentsname}}%
\@mkboth{}{}%
\@starttoc{toc}}

メッセージに,

** WARNING ** Interpreting special command (html:) failed.
** WARNING ** >> at page="3" position="71.3618, 763.55)"" (in PDF)

PDFファイルにリンク機能を持たせたいのですが何か方法はない
でしょうか.
坂崎 晃生 への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- 匿 名 の投稿

> \RequirePackage[dvipdfm,hypertex]{hyperref}

という部分がおかしいと思います。

hyperref パッケージでドライバオプションを複数指定するのは誤りというのは、広く知られているものと思っていました。

2012 年 11 月 のスレッドに対して、2015 年 1 月の現在、ご質問を追加されたわけですが、このスレッドをお読みになり、ご理解されているとしましたら、今回のようなご質問自体生じないと思われます。

また、

> 以下の事情では

の 「事情」 という表現で坂崎さんが意味されているのは、「パッケージ」 ということなのでしょうか? (\usepackage ではなく \RequirePackage が使われていることから)

ひと月前の、

> 出力ルーチンのお薦め
> 2014年 12月 10日(水曜日) 18:16 - 坂崎 晃生 の投稿
> https://okumuralab.org/tex/mod/forum/discuss.php?d=1453

というスレッドで、TeXブック、マクロ&クラスプログラミング実践解説、LaTeX Companion 等々に言及されてらして、

> 多段組をmulticolパッケージを使用しないで出力ルーチンにより実現したいと思っています.

とおっしゃっていたので、既に相当高い TeX/LaTeX の知識をお持ちでらっしゃるのかと思っていたのですが、実際のところは、いかがなのでしょうか・・・?


匿 名 への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- KUROKI Yusuke の投稿
公開の場で(個人の能力について)ダメ出ししないほうがよい,と私は思います.
KUROKI Yusuke への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- 匿 名 の投稿
# 質問者を横に置いて KUROKI Yusuke さんと言い争いになっても仕方ないとは思いつつも…。

質問者自身が,少し前に,TeXブックやら実践解説やらを引き合いに出して,「アウトプットルーチンに手を入れたい」だなんてすごいことを言っていたのに,その一ヶ月後に,ご自分で書いたものとも思われない,hyperref でドライバを複数指定している変なソースを,その解決法が書かれているスレッドにぶら下げているのに対して,「それっておかしくありませんか?」「どの程度の知識をお持ちなのですか?」と尋ねたのに対して,

> 公開の場で(個人の能力について)ダメ出ししないほうがよい

だなんてメインストリームの方から言われてしまっては,回答する側の立つ瀬がないように思われるのですが。

匿 名 への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- KUROKI Yusuke の投稿
TeX Wiki:回答の仕方#回答技術 にある,「質問者の面子をむやみに潰さない。」が大事だということです(難しいですが).

「どの程度の知識をお持ちなのですか?」は反語的に,「あんまり知識がなさそうですね」と言っているように捉えられます.そんなにダメ押ししてメンツをつぶさなくてもよいでしょう,ということです.○○を読みましょう,などの具体策をアドバイスをすれば,「あんまり知識がなさそうですね」と評価するよりも建設的です.

きちんとユーザ登録をして書いてくれている人は,それでどのくらいの知識をもっていて,どんな質問や回答のしかたをするかを晒しているわけです(メーリングリストも同様です).それによって,回答する側がレベルを合わせてあげられることがありますよね.回答者が思う「万遍のない知識」がなかったとしても,それで非難すべきでない,ということです.
KUROKI Yusuke への返信

Re: 新しいバージョンのTeXで,hyperref が使えなくなった

- 坂崎 晃生 の投稿
私が原因でこのような争いが起きましたことをお詫びいたします.

>回答者が思う「万遍のない知識」がなかった

その通りでございます.
\redcrossというのは赤十字マークの意で, 医療ソフト(フリー
ソフトウェア)の開発を孤軍奮闘で行っております. ネット環境
になく, マクロの勉強を独学で私淑していたため知識に欠陥が
ございました. 今後なるべく人任せにしないよう努めさせてい
ただきます.