\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}