Hyperref 为列表添加垂直空间

Hyperref 为列表添加垂直空间

\lstinputlisting当我从包中输入列表时listings,我会获得额外的垂直空间,当我将其与包结合使用时hyperref。如图所示,列表中添加了一定量的空间。

输出为: 在此处输入图片描述

其代码如下:

没有 hyperref 的 MWE:

\documentclass{article}

\usepackage{filecontents}
\usepackage{listings}
%\usepackage{hyperref}

\begin{document}

\begin{filecontents*}{\jobname.temp}
Line of code
\end{filecontents*}

Without hyperref:

\fboxsep=0pt\fbox{\lstinputlisting[nolol]{\jobname.temp}}

\end{document}

带有 hyperref 的 MWE:

\documentclass{article}

\usepackage{filecontents}
\usepackage{listings}
\usepackage{hyperref}

\begin{document}

\begin{filecontents*}{\jobname.temp}
Line of code
\end{filecontents*}

With hyperref:

\fboxsep=0pt\fbox{\lstinputlisting[nolol]{\jobname.temp}}

\end{document}

我尝试了很多设置,甚至listings稍微修改了包代码,但我还是无法弄清楚如何摆脱这个空间。我希望hyperref使用相同的源代码,无论是否加载,都能获得相同的输出。

答案1

hyperref必须将锚点(链接目标)放在某处。插入的 whatsit 节点不能完全不可见。

至少对于这种情况有一个解决方法。它将目标设置移出\fbox之前垂直模式。然后它禁用以下标题内容listings

\documentclass{article}

\usepackage{filecontents}
\usepackage{listings}

\usepackage{hyperref}

\begin{document}

\begin{filecontents*}{\jobname.temp}
Line of code
\end{filecontents*}

With hyperref:

\begingroup
  \makeatletter
  \lst@HRefStepCounter{lstlisting}%
  \let\lst@MakeCaption\@gobble
  \setlength{\fboxsep}{0pt}%
  \fbox{%
    \lstinputlisting[nolol]{\jobname.temp}%
  }%
\endgroup

\end{document}

结果

相关内容