
當我想在腳註中排版一個長網址(足夠長以填充兩行)時,我遇到了 \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}
在網路上搜尋之後,這個帖子建議\RaggedRight
從ragged2e
包裝使用。但我認為\RaggedRight
並沒有「真正」解決這個問題,它只是隱藏了「underfull \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\#}}
。警告消失。但產生的腳註(在我看來)與以前相同,請參見下圖:
我的問題是,如何「真正」解決這個問題?在我天真的想法中,為什麼 LaTeX 不將第二行中的一些字元(例如字元“+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\#}}