URL:启用空间来指示可能的断点?

URL:启用空间来指示可能的断点?

使用url.sty,我想在 URL 中使用空格来指示可能的换行点,但实际上不会在输出中显示空格。这个想法实际上是受url.sty包文档中的这段话启发的:

请注意,允许唯一的选项“[spaces]”让输入空格指示断点,但不在输出中显示它们,这似乎是合乎逻辑的。这很容易实现,但是为了避免混淆而被省略了。

嗯,那么如何我会实现它吗?:)

(请注意,原文中的问号是……)

梅威瑟:

\documentclass{article}
\usepackage{url}

\begin{document}
So, here we go: 
\url{http://www.this-is-a-long.com/long long long long long long
long/domain/name?with=a &lot=variables &that=I &would=like &to=be &able=to
&break=at &space=characters}
\end{document}

编辑1:

我做什么不是想要的是空格真的出现在显示的 URL 中。这就是为什么不能使用obeyspaces包选项的原因url.sty。我的意思是在源代码中使用空格只是为了指示可能的断点,而不让它们出现在输出中。

激活空格作为断点正是该选项的目的spaces。因此,使用

\usepackage[spaces]{url} 

实现我想要的功能:空格作为断点但不显示在输出中。但是,正如文档第 2 页所述,该spaces选项只能与结合使用,obeyspaces而不能单独使用,这将是我想要的功能的逻辑配置。请参阅手册中的上述引文,其中表明故意停用不使用obeyspaces但使用spaces以“避免”混淆,尽管这很容易实现。

所以我的问题是:如何才能“轻松”地实现它?

答案1

这种组合似乎有效。obeyspaces选项激活了空格处理,重新定义则为其提供了所需的输出/操作。该spaces选项给出了\Url@sppen一个“可破坏”的值,但实际上并不需要。例如\def\Url@space{\penalty\UrlBreakPenalty}也可以。

\documentclass{article}
\usepackage[obeyspaces,spaces]{url}

\textwidth1cm
\makeatletter
\def\Url@space{\penalty\Url@sppen}
\makeatother
\begin{document}
So, here we go:


\url{http://www.this-is-a-long.com/long long long long long long
long/domain/name?with=a &lot=variables &that=I &would=like &to=be &able=to
&break=at &space=characters}
\end{document}

在此处输入图片描述

答案2

比 Ulrike Fischer 做的要严格一点:

\documentclass{article}
\usepackage[obeyspaces]{url}


\makeatletter
\def\Url@space{\penalty10}
\def\UrlBreakPenalty{100000}
\def\UrlBigBreakPenalty{100000}
\makeatother

\begin{document}
So, here we go: 
\url{http://www.this-is-a-long.com/long long long long long long
long/domain/name?with=a &lot=variables &that=I &would=like &to=be &able=to
&break=at &space=characters}
\end{document}

这应该允许仅于空格处休息(也许我忘记了一两个惩罚)。

我没有使用该spaces选项,因为我将惩罚设置为绝对值,并且没有使用任何url内部变量,例如使用时\Url@sppen设置为的变量。因此该选项不会改变我的答案中的任何内容。\UrlBreakPenaltyspacesspaces

相关内容