2020-03-24

LaTeX で DOI などのリンクの埋め込み方 (Springer LNCS)

今、LaTeX で Springer の Lecture Notes in Computer Science のスタイルで原稿を書いているところですが、DOI などのハイパーリンクの埋め込みに際し、いくつかトラブルに遭い、調べて解決したので、解決方法の一例を紹介します。
(下記には技術的な誤りがあるかもしれません。ご指摘いただければ幸いです。参考資料の例示は申し訳ありませんが時間の都合上省略させていただきます。)

参考文献は bibtex で読み込ませていますが、LNCS の bibtex のスタイル (splncs04.bst) によると、doi のフィールドは自動的に "https://doi.org/..." の形式に書き換えられます。
しかし、使ってみると不具合が見つかりました。
doiがアンダーラインを含んでいると bibtex -> (pdf)latex でタイプセットする際にエラーが出る。
これに対しては、splncs04.bst で
"\providecommand{\doi}[1]{https://doi.org/#1}"
となっていた行を
"\renewcommand{\doi}[1]{\url{https://doi.org/#1}}"
と書き換えた上で、本体の.texファイルで
\usepackage{url}
としてURLパッケージを使うことにしました。

次のエラーは
URLパッケージを使った際、プリアンブル内で \url を使うとエラーが出る
ことです。(例えば \author{ ... \thanks{... \url{...} ...} ...} のような場合
これに対しては、
\usepackage[allowmove]{url}
というオプションを入れることで解決しました。

3番目のエラーは
doiが変換されたURIが途中で改行されていると、埋め込まれたハイパーリンクのURIが改行前の文字列で止まってしまう
ことです。 例えば、
\url{http://hoge.fuga}
の入力に対し、タイプセットの結果が
http://hoge. 
fuga
のようになった場合、埋め込まれるハイパーリンクは
http://hoge.
となり、正しいサイトに飛べません。
これに対しては、urlパッケージにhyphensオプションを加えた上でhyperrefパッケージも併用し
\usepackage[hyphens,allowmove]{url}
\usepackage{hyperref}
とすることで、正しいハイパーリンクが埋め込まれるようになります。
ついでに、私はcrevrefパッケージも使っていますが、crevrefパッケージはhyperrefパッケージの後で読み込むように言われます。ですので
\usepackage[hyphens,allowmove]{url}
\usepackage{hyperref}
\usepackage{cleveref}
として、当初の目的が達成されました。

0 件のコメント: