我需要revtex4-1
为我的文章使用该类,但该包似乎hyperref
无法正确处理该类。我的大多数引文都包含一个doi
字段,但没有url
字段。我想为引文创建超链接,该hyperref
包应该可以做到这一点。但是,似乎选项传递不正确,因为我试图摆脱链接周围的框。请注意,使用revtex4-1
,natbib
因此不能使用 BibTeX。
那么,在这个 MWE 中,我怎样才能摆脱围绕链接的框呢?
\documentclass[aps,showpacs,twocolumn,prl,amsmath,amssymb,superscriptaddress,intlimits]{revtex4-1}
\usepackage{lipsum}
\usepackage[hidelinks]{hyperref}
\usepackage{filecontents}
\begin{filecontents}{main.bib}
@article{einstein,
author = "Albert Einstein",
title = "{Zur Elektrodynamik bewegter K{\"o}rper}. ({German})
[{On} the electrodynamics of moving bodies]",
journal = "Annalen der Physik",
volume = "322",
number = "10",
pages = "891--921",
year = "1905",
doi = "10.1002/andp.19053221004"
}
\end{filecontents}
\bibliographystyle{unsrtnat} % Natbib is loaded with revtex
\begin{document}
Let us cite \cite{einstein}.
\lipsum[1]
\bibliography{main}
\end{document}
答案1
此 URL 样式链接由插入natbib
加载者revtex4-1
。你可以使用以下技巧来避免这种情况:
\let\oldbibitem\bibitem
\renewcommand{\bibitem}{%
\renewcommand{\doi}[1]{doi: ##1}% Override \doi
\let\bibitem\oldbibitem% Restore \bibitem
\oldbibitem% Call old \bibitem
}
这将更新(第一次使用)\bibitem
以覆盖如何\doi{<doi>}
打印其参数。它不会像 URL 那样打印它,而是只打印带有前缀的 DOI doi:
。第一次使用后,将完全恢复\bibitem
原始定义。\bibitem
\documentclass{revtex4-1}
\usepackage{lipsum}
\usepackage[hidelinks]{hyperref}
\let\oldbibitem\bibitem
\renewcommand{\bibitem}{%
\renewcommand{\doi}[1]{doi: ##1}% Override \doi
\let\bibitem\oldbibitem% Restore \bibitem
\oldbibitem% Call old \bibitem
}
\begin{filecontents}[overwrite]{main.bib}
@article{
einstein,
author = "Albert Einstein",
title = "{Zur Elektrodynamik bewegter K{\"o}rper}. ({German})
[{On} the electrodynamics of moving bodies]",
journal = "Annalen der Physik",
volume = "322",
number = "10",
pages = "891--921",
year = "1905",
doi = "10.1002/andp.19053221004"
}
\end{filecontents}
\bibliographystyle{unsrtnat} % Natbib is loaded with revtex
\begin{document}
Let us cite \cite{einstein}.
\lipsum[1]
\bibliography{main}
\end{document}