2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

複数行になった\urlのハイパーリンク上手く飛べない問題

Last updated at Posted at 2023-12-17

複数行になった\urlのハイパーリンクが上手く飛べない

platexで文書を組版していて、urlコマンドから生成したURL文字列からのハイパーリンクがうまく行かない場合がありました。例えば以下のような場合です。

\documentclass{jsarticle}

\usepackage{url}

\begin{document}

\url{http://www.samplesamplesamplesample.com/sampletext/sampledownload/sample/sample/samplesamplesample.html}
\end{document}

上記のように、長くて改行がなされたURL文字列1は、クリックしても一列目部分しか使用されません。

解決法(platex版)

以下のような感じでhyperrefパッケージを使用しましょう2dvipdfmxを使用してpdf変換を行う場合は、オプション指定が必要です3

\documentclass{jsarticle}

\usepackage[
  hidelinks, % リンクに枠をつけない
  dvipdfmx   % dvipdfmx使用ならオプション指定必須
  ]{hyperref}

\begin{document}

\url{http://www.samplesamplesamplesample.com/sampletext/sampledownload/sample/sample/samplesamplesample.html}
\end{document}

ハイフンがある位置で改行を許可する場合は、urlパッケージhyphensオプションを指定して先に読み込みます4

\documentclass{jsarticle}
\usepackage[hyphens]{url} % 先にurlパッケージ読込
\usepackage[hidelinks,dvipdfmx]{hyperref}

\begin{document}
% ハイフン後で改行する
\url{http://www.samplesamplesamplesample.com/sampletext/sampledownload/sample/sample-samplesamplesample.html}

% スラッシュ後で改行する
\url{http://www.samplesamplesamplesample.com/sampletext/sampledownload/sample/sample/samplesamplesample.html}
\end{document}

改行を記号後位置以外でも許可したい場合は、xurlパッケージを指定して先に読み込みます。

\documentclass{jsarticle}
\usepackage[hyphens]{xurl} % ハイフン後改行優先
\usepackage[hidelinks,dvipdfmx]{hyperref}

\begin{document}
% ハイフン後で改行する
\url{http://www.samplesamplesamplesample.com/sampletext/sampledownload/sample/sample-samplesamplesample.html}

% ちょうどいい位置で改行する
\url{http://www.samplesamplesamplesample.com/sampletext/sampledownload/sample/sample/samplesamplesample.html}
\end{document}

解決法(uplatex版)

documentclassを合わせれば使用できます。

\documentclass[uplatex]{jsarticle}
% \documentclass{ujarticle} % jarticleのuplatex版

\usepackage[hyphens]{url} % 先にurl, xurlパッケージ読込
% \usepackage[hyphens]{xurl}
\usepackage[hidelinks,dvipdfmx]{hyperref}

\begin{document}
% ハイフン後で改行する
\url{http://www.samplesamplesamplesample.com/sampletext/sampledownload/sample/sample-samplesamplesample.html}

% スラッシュ後で改行する
\url{http://www.samplesamplesamplesample.com/sampletext/sampledownload/sample/sample/samplesamplesample.html}
\end{document}

まとめ

ハイパーリンクを正しく飛んで、皆さんも楽しいLaTeX生活を!

参考文献

  1. 実際には二段組文書作成中に経験しました。サンプルを簡略化するために誇張した長いURLを用いており、通常なら複数行になりにくいと思います。

  2. そもそもurlパッケージに「This package does not make hyper-links!」と記載されているので、ハイパーリンクについては考慮されていない気がする...

  3. ドライバー指定がない場合、pdfTEX等のTeXプロセッサ自動検出→driverfallbackオプションの設定値→\Hy@defaultdriverマクロの設定値の順に検索が行われます。hyperrefパッケージのデフォルトはhypertexが設定され、dvi modeの場合dvipsを設定するようです(hyperref マニュアル)。platexだとdviファイルを出力するのでdvipsがデフォルトで設定されそうなので、正常動作にはdvipdfmxオプションの指定が必須となります。海外の質問サイトだと、pdflatex等使うことでドライバー指定なしで動作するので中々気づけなかった...

  4. ネットでは、URLのハイフン後改行を許可するために、\usepackage[hyphenbreaks]{breakurl}をhyperrefの後ろに設定する方法も散見されます。しかし、breakurlパッケージはdvipsドライバーのみサポートするとIntroductionに明記されているので、urlパッケージを用いるしかないと思われます。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?