名前: Th\'or 日時: 2006-03-21 02:12:24 IPアドレス: 210.225.229.*
hyperref に関しての質問があります.以下のファイルを 試すと分かるのですが,\ref 直後の 和文との間の \xkanjiskip (俗に言う四分空き)があちらの世界に旅立ってしまいます. hyperref を使わない場合は通常通りの空きになります. %#!platex hoge; dvipdfmx hoge; open hoge.pdf \documentclass{jarticle} \usepackage[dvipdfm]{hyperref} \begin{document} \section{test}\label{test} ほげほげについては\ref{test}節を参照.\par hoge \ref{test}.\ref{test}. \ref{test} hoge \end{document} なぜかと少しコードを眺めてみると,\@setref の定義の中に \null が入っており, これがあっちの世界の道先案内人かと思いました. \makeatletter \@ifpackageloaded{hyperref}{% \AtBeginDocument{\def\@setref#1#2#3{% \ifx #1\relax \protect\G@refundefinedtrue \nfss@text {\reset@font\bfseries ??}% \@latex@warning {Reference `#3' on page \thepage \space undefined}\else \hyper@@link{\expandafter \@fifthoffive #1}% {\expandafter \@fourthoffive #1\@empty \@empty }% % {\expandafter #2#1\@empty \@empty \null}\fi % del \null {\expandafter #2#1\@empty \@empty}\fi }}}{} \makeatother とりあえず,\null を取ってしまえば四分空きが回復される訳ですが, 何かしらの合併症や副作用が心配なのですが,大丈夫でしょうか? お知恵を貸していただければと思います.番兵さんの \@empty が いるのに,それに加えて \null を挿入した意図が良く分かりません. 以下は pTeX のウェブページとソースファイルからの転載です. \null を単に \relax に変えれば良いという浅い問題なのでしょうか? > ここで、「漢字と英字」、「英字と漢字」というのは、マクロが > 展開された時点での状態です。したがって、マクロが展開された > ときに\kernや\hbox{}のようなプリミティブやボックスが挿入さ > れた場合は、和欧文間スペースは入りません。ただし、イタリック > 補正を挿入するコマンド(\/)は、この限りではありません。 > また、\refや\pagerefコマンドによって挿入された英字と、それ > らのコマンドに続く漢字との間に四分アキが入らなかいというバグ > も報告されていますが、これはLaTeXのマクロによる影響です。こ > のバグについても、pLaTeX2eでは修正してあります(1995/08/25)。 \def\@setref#1#2#3{% \ifx#1\relax \protect\G@refundefinedtrue \nfss@text{\reset@font\bfseries ??}% \@latex@warning{Reference ‘#3’ on page \thepage \space undefined}% \else \expandafter#2#1\relax% change \null to \relax \fi} Th\'or
この書き込みへの返事: