![如何防止 \url 删除路径中的空格?](https://linux22.com/image/256852/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%20%5Curl%20%E5%88%A0%E9%99%A4%E8%B7%AF%E5%BE%84%E4%B8%AD%E7%9A%84%E7%A9%BA%E6%A0%BC%EF%BC%9F.png)
下面的代码
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{"a b c.tex"}
one
two
\end{filecontents*}
\usepackage{listings}
\usepackage{hyperref}
\begin{document}
\lstinputlisting[caption={\url{a b c.tex}}]{"a b c.tex"}
\end{document}
生成路径中带有抑制空格的超链接。
如何防止\url
删除路径中的空格?
答案1
将以下加载顺序添加到您的序言中:
\usepackage[obeyspaces]{url}% http://ctan.org/pkg/url
\usepackage{hyperref}% http://ctan.org/pkg/hyperref
请参阅 TeX 常见问题解答条目排版 URL. 或者,因为hyperref
负载url
默认情况下,可能与其他包选项一起使用:
\PassOptionsToPackage{obeyspaces}{url}% ~ \usepackage[...,obeyspaces]{url}
\usepackage{hyperref}% http://ctan.org/pkg/hyperref
看软件包选项冲突,也来自 TeX FAQ。
答案2
基于@Werner 的回答,我发现序言中有必要包含以下内容...
\usepackage[obeyspaces]{url}
\PassOptionsToPackage{obeyspaces}{url}
% Other packages which might use the url package.
\usepackage{hyperref}
也就是说,实际上需要\PassOptionsToPackage
在您想要保护的包之后使用,而不是在您怀疑导致问题的冲突包之前使用(在此示例中为 hyperref)。换句话说,我必须移动...
\usepackage[obeyspaces]{url}
\PassOptionsToPackage{obeyspaces}{url}
... 向着序言的顶部,保持\usepackage{hyperref}
在底部,以便处理可能正在调用url
或hyperref