这是一个不符合我要求的 MWE:
\documentclass{article}
\usepackage[colorlinks=true,citecolor=magenta,urlcolor=cyan]{hyperref}
\begin{document}
Let's quote \emph{Einstein} \cite{Einstein:1905a}.
\newpage
\begin{thebibliography}{W00}
\bibitem[\href{https://einsteinpapers.press.princeton.edu/vol2-doc/311}{E05}]{Einstein:1905a}
Albert Einstein,
\newblock Zur {E}lektrodynamik bewegter {K}\"orper.
\newblock \emph{Ann. Physik. (4)} \textbf{17} (1905) 891--921.
\end{thebibliography}
\end{document}
期望的行为:在文本(第 1 页)标签 E05 是指向参考书目条目的内部(洋红色)超链接。而在参考书目条目本身(第 2 页)是指向 princeton.edu 的外部(青色)超链接。
获得的行为:两者都是 princeton.edu 的外部(青色)链接。(当徘徊Skim.app 中的第一个链接我仍然看到它想要指向第二个,但是点击它将我发送到 princeton.edu。)
问题:我怎样才能获得期望的行为?
注意:我非常清楚如何使用 biblatex 获得所需的行为。我的问题是,我的合著者坚持使用手动 bbl。(此外,期刊不喜欢 biblatex。)
答案1
不要\href
在 的可选参数中使用\bibitem
。可选参数应仅包含引文标签。如果使用,hyperref
引文标签将自动链接到参考书目条目。
您可以通过将整个参考书目条目包装起来来链接它\href{<link>}{...}
。
\documentclass{article}
\usepackage[colorlinks=true,citecolor=magenta,urlcolor=cyan]{hyperref}
\begin{document}
Let's quote \emph{Einstein} \cite{Einstein:1905a}.
\newpage
\begin{thebibliography}{W00}
\bibitem[E05]{Einstein:1905a}\href{https://einsteinpapers.press.princeton.edu/vol2-doc/311}{%
Albert Einstein,
\newblock Zur {E}lektrodynamik bewegter {K}\"orper.
\newblock \emph{Ann. Physik.~(4)} \textbf{17} (1905) 891--921.}
\end{thebibliography}
\end{document}
这是另一种解决方案,它仅链接参考书目中的 biblabel。我们引入了一个\linkedbibitem
工作方式类似的\bibitem
,但对 URL 有一个额外的强制参数(如果没有 URL,可以将其留空,但必须始终给出,以使定义更简单)。
我们\linkedbibitem
只需保存 URL。然后我们重新定义\@BIBLABEL
(hyperref
的版本),以便在给出链接时\@biblabel
应用。\href
我们可以使用hyperref
's\hyper@normalise
来使\linkedbibitem
接受其他特殊字符,如$
、_
甚至%
和 而#
不会产生任何抱怨。
\documentclass{article}
\usepackage[colorlinks=true,citecolor=magenta,urlcolor=cyan]{hyperref}
\usepackage{etoolbox}
\makeatletter
\newcommand*{\@linkedbibitem}[1]{%
\def\this@biblink{#1}%
\bibitem}
\newcommand*{\linkedbibitem}{\hyper@normalise\@linkedbibitem}
\renewcommand*{\@BIBLABEL}[1]{%
\ifdefvoid\this@biblink
{[#1]}
{\expandafter\href\expandafter{\this@biblink}%
{[#1]}}}
\makeatother
\begin{document}
Let's quote \emph{Einstein} \cite{Einstein:1905a}.
\newpage
\begin{thebibliography}{W00}
\linkedbibitem{https://einsteinpapers.press.princeton.edu/vol2-doc/311#a}[E05]{Einstein:1905a}
Albert Einstein,
\newblock Zur {E}lektrodynamik bewegter {K}\"orper.
\newblock \emph{Ann. Physik.~(4)} \textbf{17} (1905) 891--921.
\end{thebibliography}
\end{document}