如何防止 \url 删除路径中的空格?

如何防止 \url 删除路径中的空格?

下面的代码

\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}在底部,以便处理可能正在调用urlhyperref

相关内容