hyperref pagebacklinks=true와 함께 doi 패키지 사용

hyperref pagebacklinks=true와 함께 doi 패키지 사용

내가 이해하는 바에 따르면 doi 패키지와 hyperref에 대한 pagebackref=true 설정을 모두 사용하려면 먼저 hyperref를 로드해야 합니다. 그렇지 않으면 doi가 이를 로드하고 이후에 \hypersetup에서 pagebackref=true를 설정할 수 없기 때문입니다. , 이 같은:

\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 및 일부 참고문헌 스타일의 도움을 받아 다음을 참조하세요.이 답변참고 문헌 항목 앞뒤에 \backrefparscanfalse및 명령을 자동으로 삽입하도록 참고 문헌 스타일을 변경하는 방법 .\backrefprint\backrefparscantrue

관련 정보