如何“真正”解决脚注排版url时“\hbox未满”的问题

如何“真正”解决脚注排版url时“\hbox未满”的问题

当我要在脚注中排版一个较长的 URL(长度足以填满两行)时,我遇到了 \hbox 未满的问题。这是我的 MWE:

\documentclass{article}
\usepackage{hyperref}
\usepackage{ragged2e}

\begin{document}

We use this dataset
\footnote{\url{http://archive.ics.uci.edu/ml/datasets/Parkinson+Speech+Dataset+with++Multiple+Types+of+Sound+Recordings\#}}
for experimentation.
\end{document} 

在网上搜索后,这个帖子建议\RaggedRightragged2e包中使用。但我认为这\RaggedRight并没有“真正”解决这个问题,它只是隐藏了“\hbox 未满”警告。下面是上述 MWE 生成的脚注: 在此处输入图片描述

使用该\RaggedRight命令后,即从

\footnote{\url{http://archive.ics.uci.edu/ml/datasets/Parkinson+Speech+Dataset+with++Multiple+Types+of+Sound+Recordings\#}}

在 MWE 中

\footnote{\RaggedRight\url{http://archive.ics.uci.edu/ml/datasets/Parkinson+Speech+Dataset+with++Multiple+Types+of+Sound+Recordings\#}}

。警告消失了。但产生的脚注(在我看来)与以前相同,见下图: 在此处输入图片描述

我的问题是,如何“真正”解决这个问题?我天真地认为,为什么不把第二行的一些字符,比如“+Multipl”这些字符,移到第一行末尾的空白处呢?毕竟,url 只是一系列字符,为什么不把第二行的一些字符塞进第一行以充分利用第一行呢?或者这其中隐藏着一些非常复杂的事实?

任何答案或者指向答案的指针都将受到赞赏!

答案1

你可以通过在分隔符周围重新引入一些可拉伸的空间(这里),而不是在单词中间进行分隔,./使用

\Urlmuskip=0mu  plus 10mu

在这种情况下,这提供了足够的灵活性。

在此处输入图片描述

\documentclass{article}
\usepackage{hyperref}

\Urlmuskip=0mu  plus 10mu
\begin{document}

We use this dataset
\footnote{\url{http://archive.ics.uci.edu/ml/datasets/Parkinson+Speech+Dataset+with++Multiple+Types+of+Sound+Recordings\#}}
for experimentation.

\vfill

\noindent X\dotfill X
\end{document} 

答案2

\url尽量只在“合理”的地方中断 url。但是如果你不喜欢这样,你可以允许 \url 在任何地方中断:

\documentclass{article}
\usepackage{hyperref}

\makeatletter
\g@addto@macro{\UrlBreaks}{%
\do\/\do\a\do\b\do\c\do\d\do\e\do\f%
\do\g\do\h\do\i\do\j\do\k\do\l\do\m%
\do\n\do\o\do\p\do\q\do\r\do\s\do\t%
\do\u\do\v\do\w\do\x\do\y\do\z%
\do\A\do\B\do\C\do\D\do\E\do\F\do\G%
\do\H\do\I\do\J\do\K\do\L\do\M\do\N%
\do\O\do\P\do\Q\do\R\do\S\do\T\do\U%
\do\V\do\W\do\X\do\Y\do\Z}
\makeatother
\begin{document}

We use this dataset
\footnote{\url{http://archive.ics.uci.edu/ml/datasets/Parkinson+Speech+Dataset+with++Multiple+Types+of+Sound+Recordings\#}}
for experimentation.
\end{document} 

在此处输入图片描述

请注意,由于没有可拉伸的空间,因此线路仍然有点不足。

答案3

对我而言,一个有效的解决方案是用 替换\url\href但是,如果您的 URL 不包含任何可拆分字符(例如-),则您必须通过\hspace{0pt}在战略位置插入一些(零宽度空格)来帮助它找到。

在您的情况下,我在每个“+”后面都添加了一个。

\footnote{\href{http://archive.ics.uci.edu/ml/datasets/Parkinson+Speech+Dataset+with+Multiple+Types+of+Sound+Recordings\#}{http://archive.ics.uci.edu/ml/datasets/Parkinson+\hspace{0pt}Speech+\hspace{0pt}Dataset+\hspace{0pt}with+\hspace{0pt}Multiple+\hspace{0pt}Types+\hspace{0pt}of+\hspace{0pt}Sound+\hspace{0pt}Recordings\#}}

相关内容