読者です 読者をやめる 読者になる 読者になる

【#技術書典 宣伝】 LaTeX でハイフン入り URL が折り返されないときの対処法

今週の土曜日(2016/06/25)に,「技術書典」という いろんな技術にまつわる同人誌の即売会が開かれる.

私が筆頭の O'Creilly も,喜ばしいことに出展できる運びとなった.

これから宣伝も兼ねて,執筆中に得た知識を書いていきたい.

ことの経緯

飛ばすひとはこちら

月曜日の昼下りに一本の電話が入った. 普段電話などほとんど使わないので警戒していたのだが, スマホを見ると相手先の情報が載っている^google-call. 見てみると印刷を依頼した「日光企画」さんからだった.

先日,振り込む額を間違えてしまってメールがきたばかりだった^mailものだから, 内心またやらかしたのかと緊張していた.

電話の内容をまとめると,「文章がハミ出してるけど,今なら差し替えできますよ」^thx. 大ヘマをかましていた.火曜日の朝まで待ってくれるとのことだった.

何がハミ出していたのだろうか,手元の PDF を見てみることにしよう.

本題| hyperref の折り返し問題

実際にハミ出した部分を見てみよう.

https://gyazo.com/690442f94b560c482ce8d230e3c7ac2a

見事なまでのハミ出しっぷりである. しかし,ここ以外の URL でハミ出しは起きていない. 一体どういうことなのか.

今回の原稿では,脚注の URL にリンクを貼っている. Re:View だと,@<href>{https://example.com}に該当する.

これを LaTeX にすると,\url{https://example.com}になる. このときに,ハイフンが含まれていることが問題になる.

解決策はこちら.

この\url{}は, url パッケージに含まれているものである. url パッケージは,ハイフン部分で折り返すオプションが通常はオフになっている. \usepackage[hyphens]{url}と書くと,ハイフン部分でも折り返してくれる.

しかし, Re:View のデフォルトテンプレートでは, hyperref パッケージが呼ばれている.

hyperref パッケージは内部で url パッケージを呼んでいるため, \url{}が使えるのだが,オプションの書き換えができない. そこで,\PassOptionsToPackageでオプションだけを渡しておいてやればいい.

Re:View のテンプレートに合わせると,こうなる.

%% Bookmarkの文字化け対策(日本語向け)
\PassOptionsToPackage{hyphens}{url}
\usepackage[dvipdfmx,bookmarks=true,bookmarksnumbered=true,colorlinks=true,%
     pdftitle={<%= escape_latex(@config.name_of("booktitle")) %>},%
     pdfauthor={<%= escape_latex(@config.names_of("aut").join(I18n.t("names_splitter"))) %>}]{hyperref}

適応した結果がこちら.

https://gyazo.com/83313d293a2348995ee417ad4428d5cf

綺麗に折り返してくれた.

まとめ

  • URL が折り返されなかったら,ハイフンを疑え
  • ハイフン入り URL の折り返しはhyphensオプション
  • hyperref パッケージを使う場合は\PassOptionsToPackage
  • 日光企画さん,本当にありがとうございます

明日も執筆時のノウハウを書いていきますよ!

オクライリーのお蔵入り本もよろしくお願いします.