Usando o pacote doi com hyperref pagebacklinks=true

Usando o pacote doi com hyperref pagebacklinks=true

Pelo que entendi, se eu quiser usar o pacote doi e a configuração pagebackref=true para hyperref, preciso carregar o hyperref primeiro (caso contrário, doi irá carregá-lo e pagebackref=true não poderá ser definido posteriormente por \hypersetup) , algo assim:

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

Porém, quando faço isso, o pacote doi não consegue mais escapar de alguns caracteres, por exemplo, o sublinhado duplo em "COLI_a_00057" no exemplo mínimo a seguir:

\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}

Se eu incluir esta linha \usepackage[pagebackref=true]{hyperref}

Recebo uma saída de erro como esta (com um backlink funcional para a página 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 

Se eu removê-lo, recebo uma entrada bibliográfica funcional com link DOI para 10.1162/COLI_a_00057, mas (obviamente) nenhum backlink.

Posso usar doi e hyperref com pagebacklinks=true ?

Responder1

O backrefpacote usado para a pagebackrefopção altera os códigos de gato na bibliografia para encontrar o final das entradas da bibliografia. Isso quebra todas as coisas que dependem de determinados catcodes, como URLs, texto literal e DOIs. Conforme explicado no backrefmanual, as alterações do catcode podem ser suspensas com \backrefparscanfalse, mas é sua responsabilidade informar backrefonde terminam as entradas da bibliografia e a lista de páginas pode ser escrita. O seguinte funciona sem alterar o 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}

No caso provável de você não configurar seu thebibliographyambiente manualmente, mas com a ajuda do BibTeX e algum estilo de bibliografia, consulteesta respostacomo alterar o estilo da bibliografia para inserir automaticamente o comando \backrefparscanfalsee \backrefprint\backrefparscantrueantes e depois dos itens da bibliografia.

informação relacionada