为什么使用 hyperref 和 lineno 时长 URL 会有一个额外的链接框?

为什么使用 hyperref 和 lineno 时长 URL 会有一个额外的链接框?

请考虑这个MWE:

\documentclass{article}
\usepackage{lineno}
\usepackage{hyperref}
% \linenumbers
\begin{document}
\url{https://www.this-is-a-very-long-url.com/this-is-a-very-long-url/this-is-a-very-long-url/this-is-a-very-long-url.html}
\end{document}

使用pdflatex,结果为:没有行号

如果我们取消注释该\linenumbers行,则会在 URL 前绘制一个额外的(小)彩色框:带有行号

使用xelatex,在行号周围绘制一个框:使用 xelatex

这个额外的框是什么原因造成的?有办法避免吗?

答案1

行号位于建立链接时放置的框中,因此它也是链接的。

使用当前的 texsystem (texlive 2021),您可以避免这种情况。但这需要修补 lineno 的内部命令,因为停用代码必须位于正确的框级别:

\documentclass{article}
\usepackage{lineno}


\usepackage{hyperref}

\usepackage{iftex,etoolbox}
\ifxetex
\newcommand\runninglinkoff{\special{pdf: nolink}}
\newcommand\runninglinkon {\special{pdf:  link}}
\fi
\ifpdftex
\newcommand\runninglinkoff{\pdfrunninglinkoff}
\newcommand\runninglinkon {\pdfrunninglinkon}
\fi
\ifluatex
\protected\def\runninglinkoff{\pdfextension linkstate 1 }
\protected\def\runninglinkon {\pdfextension linkstate 0 }
\fi

\makeatletter
\patchcmd\@LN@depthbox{\box\@tempboxa}{\runninglinkoff\box\@tempboxa \runninglinkon}{}{\fail}
\makeatother   
\begin{document}
\linenumbers 
\url{https://www.this-is-a-very-long-url.com/this-is-a-very-long-url/this-is-a-very-long-url/this-is-a-very-long-url.html}
\end{document}

在此处输入图片描述

相关内容