複数行になった\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パッケージを使用しましょう2。dvipdfmx
を使用して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生活を!
参考文献
- stackoveflow: URL latex linebreak
- LaTeX.org: Line breaks in URLs
- 数学の景色: 【LaTeX】hyperrefパッケージによるハイパーリンク
- TeX Wiki: hyperref
-
実際には二段組文書作成中に経験しました。サンプルを簡略化するために誇張した長いURLを用いており、通常なら複数行になりにくいと思います。 ↩
-
そもそもurlパッケージに「This package does not make hyper-links!」と記載されているので、ハイパーリンクについては考慮されていない気がする... ↩
-
ドライバー指定がない場合、pdfTEX等のTeXプロセッサ自動検出→
driverfallback
オプションの設定値→\Hy@defaultdriver
マクロの設定値の順に検索が行われます。hyperrefパッケージのデフォルトはhypertex
が設定され、dvi modeの場合dvips
を設定するようです(hyperref マニュアル)。platexだとdviファイルを出力するのでdvips
がデフォルトで設定されそうなので、正常動作にはdvipdfmx
オプションの指定が必須となります。海外の質問サイトだと、pdflatex等使うことでドライバー指定なしで動作するので中々気づけなかった... ↩ -
ネットでは、URLのハイフン後改行を許可するために、
\usepackage[hyphenbreaks]{breakurl}
をhyperrefの後ろに設定する方法も散見されます。しかし、breakurlパッケージはdvips
ドライバーのみサポートするとIntroductionに明記されているので、urlパッケージを用いるしかないと思われます。 ↩