doi パッケージを hyperref pagebacklinks=true で使用する

doi パッケージを hyperref pagebacklinks=true で使用する

私の理解では、doi パッケージと hyperref の pagebackref=true 設定の両方を使用する場合は、最初に hyperref をロードする必要があります (そうしないと、doi がそれをロードし、pagebackref=true を \hypersetup でその後設定できなくなるため)。次のようになります。

\usepackage[pagebackref=true]{hyperref}
\usepackage{doi}

ただし、これを行うと、doi パッケージは一部の文字をエスケープできなくなります。たとえば、次の最小限の例の「COLI_a_00057」の二重アンダースコアなどです。

\documentclass{article}
% Remove the {hyperref} line below to get this to compile
\usepackage[pagebackref=true]{hyperref}
\usepackage{doi}
\begin{document}

\cite{fort:cl11}

\begin{thebibliography}{1}

\bibitem[{Fort et~al.(2011)Fort, Adda, and Cohen}]{fort:cl11}
Fort, Karën; Gilles Adda; and K.~Bretonnel Cohen (2011).
\newblock {Amazon Mechanical Turk}: Gold mine or coal mine?
\newblock \emph{Computational Linguistics}, 37(2):413--420.
\newblock \doi{10.1162/COLI_a_00057}.

\end{thebibliography}

\end{document}

この行\usepackage[pagebackref=true]{hyperref}を含めると

次のようなエラー出力が表示されます (ページ 1 へのバックリンクは有効です)。

! Missing $ inserted.
<inserted text> 
            $
l.15 

? 
! Double subscript.
<argument> \Hy@safe@activesfalse 10.1162/COLI_a_
                                            00057
l.15 

? 
! Missing $ inserted.
<inserted text> 
            $
l.15 

これを削除すると、10.1162/COLI_a_00057 への DOI リンクを含む実用的な参考文献エントリが得られますが、(当然ですが) バックリンクはありません。

pagebacklinks=true で doi と hyperref の両方を使用できますか?

答え1

backrefオプションに使用されるパッケージは、参考pagebackref文献内の catcode を変更して、参考文献エントリの終わりを見つけます。これにより、URL、逐語的テキスト、DOI などの特定の catcode に依存するすべてのものが壊れます。マニュアルで説明されているように、backrefcatcode の変更は で一時停止できます\backrefparscanfalseが、その場合、参考文献エントリの終わりを知らせるのはユーザーの責任となりbackref、ページ リストを書き込むことができます。次のコードは、DOI を変更せずに機能します。

\documentclass{article}

\usepackage[pagebackref=true]{hyperref}
\usepackage{doi}
\begin{document}

\cite{fort:cl11}

\begin{thebibliography}{1}

\backrefparscanfalse
\bibitem[{Fort et~al.(2011)Fort, Adda, and Cohen}]{fort:cl11}
Fort, Karën; Gilles Adda; and K.~Bretonnel Cohen (2011).
\newblock {Amazon Mechanical Turk}: Gold mine or coal mine?
\newblock \emph{Computational Linguistics}, 37(2):413--420.
\newblock \doi{10.1162/COLI_a_00057}.
\backrefprint\backrefparscantrue

\end{thebibliography}
\end{document}

thebibliography手動で環境を設定するのではなく、BibTeXと参考文献スタイルの助けを借りて設定する場合は、以下を参照してください。この答え参考文献のスタイルを変更して、参考文献項目の前後に\backrefparscanfalseandコマンドを自動的に挿入する方法。\backrefprint\backrefparscantrue

関連情報